--- gcc-8-8.3.0.orig/debian/NEWS.gcc +++ gcc-8-8.3.0/debian/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. --- gcc-8-8.3.0.orig/debian/NEWS.html +++ gcc-8-8.3.0/debian/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

+
    +
  • +
+ + + + + + + + + + + + + + + + + + --- gcc-8-8.3.0.orig/debian/README.Bugs.m4 +++ gcc-8-8.3.0/debian/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 ...] --- gcc-8-8.3.0.orig/debian/README.C++ +++ gcc-8-8.3.0/debian/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. --- gcc-8-8.3.0.orig/debian/README.Debian +++ gcc-8-8.3.0/debian/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) + +=============================================================================== + --- gcc-8-8.3.0.orig/debian/README.cross +++ gcc-8-8.3.0/debian/README.cross @@ -0,0 +1,20 @@ +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-defaults + - gcc-defaults-ports + +Issues about the cross toolchains should be filed for one of the +above source packages. --- gcc-8-8.3.0.orig/debian/README.gnat +++ gcc-8-8.3.0/debian/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. --- gcc-8-8.3.0.orig/debian/README.libstdc++-baseline.in +++ gcc-8-8.3.0/debian/README.libstdc++-baseline.in @@ -0,0 +1,2 @@ +The libstdc++ baseline file is a list of symbols exported by the +libstdc++ library. --- gcc-8-8.3.0.orig/debian/README.maintainers +++ gcc-8-8.3.0/debian/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. --- gcc-8-8.3.0.orig/debian/README.snapshot +++ gcc-8-8.3.0/debian/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. --- gcc-8-8.3.0.orig/debian/README.source +++ gcc-8-8.3.0/debian/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. --- gcc-8-8.3.0.orig/debian/README.ssp +++ gcc-8-8.3.0/debian/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/ --- gcc-8-8.3.0.orig/debian/TODO +++ gcc-8-8.3.0/debian/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 --- gcc-8-8.3.0.orig/debian/acats-killer.sh +++ gcc-8-8.3.0/debian/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 --- gcc-8-8.3.0.orig/debian/ada/confirm_debian_bugs.py +++ gcc-8-8.3.0/debian/ada/confirm_debian_bugs.py @@ -0,0 +1,943 @@ +#!/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 = "8" + +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 system.ads:156:5", + 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; +"""),)) + +try: + os.rmdir (workspace) +except: + print ("Some unconfirmed, not removing directory {}.".format (workspace)) --- gcc-8-8.3.0.orig/debian/ada/debian_packaging.mk +++ gcc-8-8.3.0/debian/ada/debian_packaging.mk @@ -0,0 +1,134 @@ +# Common settings for Ada Debian packaging. +# +# Copyright (C) 2012-2018 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,--as-needed -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 + + +# Modifying LDFLAGS directly is confusing and deprecated, +# but we keep the old behaviour during the transition period +# because some bug work-arounds rely on --as-needed. + +# Avoid dpkg-shlibdeps warning about depending on a library from which +# no symbol is used, see http://wiki.debian.org/ToolChain/DSOLinking. +# Gnatmake users must upgrade to >= 4.6.4-1 to circumvent #680292. +comma := , +ifeq (,$(filter -Wl$(comma)--as-needed,$(LDFLAGS))) + $(warning adding -Wl,--as-needed to LDFLAGS for compatibility, \ + but please use DEB_LDFLAGS_MAINT_APPEND instead.) + LDFLAGS += -Wl,--as-needed + ifdef DPKG_EXPORT_BUILDFLAGS + export LDFLAGS + endif +endif + +# Warn during build time if undefined symbols. +ifeq (,$(filter -Wl$(comma)-z$(comma)defs -Wl$(comma)--no-undefined,$(LDFLAGS))) + $(warning adding -Wl,--no-undefined to LDFLAGS for compatibility, \ + but please use DEB_LDFLAGS_MAINT_APPEND instead.) + LDFLAGS += -Wl,--no-undefined + ifdef DPKG_EXPORT_BUILDFLAGS + export LDFLAGS + endif +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 ("export CC" is enough for dh_auto_configure with a +# normal ./configure). + +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)) +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))) +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. --- gcc-8-8.3.0.orig/debian/bin-wrapper.in +++ gcc-8-8.3.0/debian/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) "$@" --- gcc-8-8.3.0.orig/debian/changelog +++ gcc-8-8.3.0/debian/changelog @@ -0,0 +1,4499 @@ +gcc-8 (8.3.0-25ubuntu3) focal; urgency=medium + + * Update to SVN 20191127 (r278756) from the gcc-8-branch. + - Fix PR fortran/92100. + * Stop building -dbg packages, keep building the libstc++6-8-dbg package + containing just the libstdc++ debug build. + + -- Matthias Klose Wed, 27 Nov 2019 08:35:51 +0100 + +gcc-8 (8.3.0-25ubuntu2) focal; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + * Fix applying the Linaro branch. + + -- Matthias Klose Tue, 26 Nov 2019 08:51:41 +0100 + +gcc-8 (8.3.0-25) unstable; urgency=medium + + * Update to SVN 20191126 (r278718) from the gcc-8-branch. + - Fix PR c/91401, PR tree-optimization/91355, PR middle-end/90840, + PR target/90867 (x86), PR c/90898, PR middle-end/91450, + PR c++/92384, PR tree-optimization/92056, PR tree-optimization/91665, + PR middle-end/91001, PR middle-end/91105, PR middle-end/91106, + PR middle-end/91623, PR other/92090, PR target/92389 (x86), + PR target/87833 (x86), PR target/92095 (SPARC), PR fortran/92113, + PR tree-optimization/85887, PR c++/92201, PR c++/91974, + PR preprocessor/92296, PR fortran/92569, PR ada/92575. + + -- Matthias Klose Tue, 26 Nov 2019 08:34:48 +0100 + +gcc-8 (8.3.0-24ubuntu1) focal; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Thu, 07 Nov 2019 18:27:01 +0100 + +gcc-8 (8.3.0-24) unstable; urgency=medium + + * Update to SVN 20191107 (r277923) from the gcc-8-branch. + - Fix PR target/91275 (PPC), PR fortran/84487, PR libstdc++/92143, + PR libstdc++/92059, PR target/86487, PR target/65342 (PPC), + PR target/70010 (PPC), PR target/88167 (ARM), PR debug/91887, + PR tree-optimization/91812, PR debug/91772, PR tree-optimization/92131, + PR target/86040 (AVR), PR rtl-optimization/89721, PR target/89400 (ARM), + PR target/92022 (ALPHA), PR target/88630 (SH), PR c++/88075, + PR c++/92106, PR ada/91995, PR fortran/86248, PR fortran/69455, + PR rtl-optimization/85458, PR target/91289 (PPC). + + -- Matthias Klose Thu, 07 Nov 2019 18:09:26 +0100 + +gcc-8 (8.3.0-23ubuntu2) eoan; urgency=medium + + * Update to SVN 20191008 (r276700) from the gcc-8-branch. + - Fix PR target/91275 (PPC), PR fortran/84487. + + -- Matthias Klose Tue, 08 Oct 2019 17:21:04 +0200 + +gcc-8 (8.3.0-23ubuntu1) eoan; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Wed, 02 Oct 2019 08:10:16 +0200 + +gcc-8 (8.3.0-23) unstable; urgency=medium + + * Update to SVN 20191002 (r276439) from the gcc-8-branch. + - Fix PR target/86712 (SH), PR target/88562 (SH), PR target/91854 (SPARC), + PR target/80672 (SH), PR target/85993 (SH), PR rtl-optimization/88751, + PR rtl-optimization/89795, PR fortran/91588, PR fortran/91550, + PR fortran/91557. + * Bump standards version. + + -- Matthias Klose Wed, 02 Oct 2019 08:08:49 +0200 + +gcc-8 (8.3.0-22ubuntu2) eoan; urgency=medium + + * Disable lto builds on armhf and arm64, too slow, or ftbfs on the buildds. + + -- Matthias Klose Tue, 10 Sep 2019 18:51:27 +0200 + +gcc-8 (8.3.0-22ubuntu1) eoan; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Mon, 09 Sep 2019 19:29:41 +0200 + +gcc-8 (8.3.0-22) unstable; urgency=medium + + * Update to SVN 20190909 (r275519) from the gcc-8-branch. + - Fix PR libgomp/90585, PR libstdc++/91308, PR libstdc++/51333, + PR libstdc++/78179, PR libstdc++/90770, PR libstdc++/85965, PR pch/61250, + PR c/90474, PR sanitizer/90954, PR debug/90197, PR pch/90326, + PR target/81800 (AArch64), PR target/91472 (SPARC), + PR tree-optimization/90930, PR tree-optimization/90637, + PR tree-optimization/91108, PR target/91481 (PPC), PR middle-end/88567, + PR tree-optimization/88315, PR debug/90900, PR tree-optimization/90278, + PR middle-end/90194, PR lto/91375, PR tree-optimization/91293, + PR tree-optimization/91280, PR tree-optimization/91200, + PR middle-end/91162, PR middle-end/91131, PR tree-optimization/91126, + PR tree-optimization/90328, PR middle-end/89578, PR middle-end/87609, + PR tree-optimization/87609, PR tree-optimization/87609, + PR tree-optimization/91137, PR tree-optimization/90006, + PR tree-optimization/89725, PR tree-optimization/81740, + PR middle-end/90213, PR tree-optimization/90020, PR bootstrap/87030, + PR target/91150 (x86), PR middle-end/78884, PR rtl-optimization/90756, + PR c/90760, PR debug/90733, PR middle-end/90139, PR target/91533 (x86), + PR rtl-optimization/91347, PR pch/90326, PR middle-end/89392, + PR c++/90950, PR debug/90197, PR fortran/91660, PR target/83531, + PR target/87853 (x86), PR target/91704 (x86). + * Configure --without-target-system-zlib for gdc cross builds. + * any_archs: Remove mips and powerpcspe, add riscv64. + * libstdc++: Fix GCC_LINUX_FUTEX to work with C99 compilers, taken from + the trunk. + + -- Matthias Klose Mon, 09 Sep 2019 17:28:17 +0200 + +gcc-8 (8.3.0-21ubuntu1) eoan; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Sat, 17 Aug 2019 12:08:33 +0200 + +gcc-8 (8.3.0-21) unstable; urgency=medium + + * Update to SVN 20190817 (r274599) from the gcc-8-branch. + - Fix PR lto/90924, PR c/53633, PR rtl-optimization/91173, PR debug/91231, + PR driver/91172, PR c++/82081, PR target/89222 (ARM), + PR target/89190 (ARM), PR target/85711 (ARM), PR rtl-optimization/91136, + PR c++/91436, PR c++/86098, PR fortran/90563, PR fortran/90786, + PR fortran/90813, PR fortran/91414. + * Bump standards version. + + -- Matthias Klose Sat, 17 Aug 2019 11:32:17 +0200 + +gcc-8 (8.3.0-19ubuntu1) eoan; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Tue, 09 Jul 2019 16:08:17 +0200 + +gcc-8 (8.3.0-19) unstable; urgency=medium + + * Update to SVN 20190709 (r273305) from the gcc-8-branch. + - Fix PR fortran/91077. + * Make the lto-verbose-linker patch more robust for hppa (Dave Anglin). + * Avoid building stuff which is not needed for architecture independent + packages. Closes: #900554. + * Disable the LTO builds for armel/armhf, too slow on the buildds. + + -- Matthias Klose Tue, 09 Jul 2019 15:27:27 +0200 + +gcc-8 (8.3.0-18) unstable; urgency=medium + + * Update to SVN 20190704 (r273090) from the gcc-8-branch. + - Fix PR middle-end/90899. + * Increase the timeouts for the LTO link builds. + * Dump config files on failed jit and nvptx builds. + * Disable the LTO builds on architectures where the buildds can't keep up. + + -- Matthias Klose Thu, 04 Jul 2019 19:16:27 +0200 + +gcc-8 (8.3.0-17) experimental; urgency=medium + + * 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 18:53:45 +0200 + +gcc-8 (8.3.0-16ubuntu3) eoan; urgency=low + + * Disable the LTO build on arm64, timing out on the buildds. + + -- Matthias Klose Wed, 03 Jul 2019 08:25:45 +0200 + +gcc-8 (8.3.0-16ubuntu2) eoan; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Tue, 02 Jul 2019 15:46:55 +0200 + +gcc-8 (8.3.0-16) experimental; urgency=medium + + * Update to SVN 20190702 (r272936) from the gcc-8-branch. + - Fix PR tree-optimization/90949, PR ipa/90939. + * 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. + * Don't try to use dwz on LTO optimized binaries prior to dwz 2019. + See #931319. + + -- Matthias Klose Tue, 02 Jul 2019 15:34:41 +0200 + +gcc-8 (8.3.0-15) experimental; urgency=medium + + * Update to SVN 20190625 (r272643) from the gcc-8-branch. + - Fix PR middle-end/64242 (PARISC), PR fortran/90937, PR fortran/90744. + * Apply proposed fix for PR libgcc/90714 (ia64 only). Closes: #930119. + + -- Matthias Klose Tue, 25 Jun 2019 12:45:57 +0200 + +gcc-8 (8.3.0-14ubuntu1) eoan; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Wed, 12 Jun 2019 16:17:10 +0200 + +gcc-8 (8.3.0-14) experimental; urgency=medium + + * Update to SVN 20190612 (r272183) from the gcc-8-branch. + - Fix PR c++/90532, PR libstdc++/90299, PR libstdc++/90454, PR c++/90532, + PR target/89765 (PPC), PR target/61976 (PPC), PR libstdc++/89466, + PR libstdc++/90220, PR libstdc++/90220, PR c++/85400, PR target/90530, + PR sanitizer/90570, PR target/90547 (x86), PR target/90811 (nvptx), + PR libstdc++/90634, PR libstdc++/90634, PR target/90751 (PARISC), + PR target/82920 (x86), PR fortran/90329, PR fortran/90329, PR c++/90810, + PR fortran/90498, PR fortran/57284, PR fortran/90329, PR bootstrap/89864. + * Turn on -fstack-clash-protection and -fcf-protection in Ubuntu 19.10 on + supported architectures. + * Turn on profiled bootstrap. + + -- Matthias Klose Wed, 12 Jun 2019 16:08:58 +0200 + +gcc-8 (8.3.0-13ubuntu2) eoan; urgency=medium + + * Update to SVN 20190521 (r271463) from the gcc-8-branch. + - Fix PR c++/90532, PR libstdc++/90299, PR libstdc++/90454, PR c++/90532, + PR target/89765 (PPC), PR target/61976 (PPC). + * Turn on -fstack-clash-protection and -fcf-protection in Ubuntu 19.10 on + supported architectures. + + -- Matthias Klose Tue, 21 May 2019 15:01:50 +0200 + +gcc-8 (8.3.0-13ubuntu1) eoan; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Tue, 14 May 2019 14:25:44 +0200 + +gcc-8 (8.3.0-13) experimental; urgency=medium + + * Update to SVN 20190514 (r271166) from the gcc-8-branch. + - Fix PR gcov-profile/90380, PR libstdc++/81266, PR libstdc++/89102 + (partial), PR libstdc++/88740, PR libstdc++/90165, PR libstdc++/90105, + PR libstdc++/85965, PR libstdc++/89629, PR target/89424 (PPC), + PR c++/88857, PR c++/89214, PR c++/89511, PR c++/89705, PR c++/89876. + * Ignore any distro default flags for the hppa64 cross build. + + -- Matthias Klose Tue, 14 May 2019 14:21:41 +0200 + +gcc-8 (8.3.0-12ubuntu1) eoan; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + - Don't built common libraries now build from GCC 9. + + -- Matthias Klose Mon, 06 May 2019 19:26:13 +0200 + +gcc-8 (8.3.0-12) experimental; urgency=medium + + * Update to SVN 20190506 (r270919) from the gcc-8-branch. + - Fix the profiled bootstrap on arm64. PR bootstrap/90359. + + -- Matthias Klose Mon, 06 May 2019 19:15:58 +0200 + +gcc-8 (8.3.0-11) experimental; urgency=medium + + * Stop building packages built by gcc-9. + * Update from the gcc-8 ARM/Linaro branch. + + -- Matthias Klose Sun, 05 May 2019 17:57:34 +0200 + +gcc-8 (8.3.0-10ubuntu3) eoan; urgency=medium + + * Update from the gcc-8 ARM/Linaro branch. + + -- Matthias Klose Sun, 05 May 2019 16:30:12 +0200 + +gcc-8 (8.3.0-10ubuntu1) eoan; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + - Don't built common libraries now build from GCC 9. + + -- Matthias Klose Sun, 05 May 2019 15:58:44 +0200 + +gcc-8 (8.3.0-10) experimental; urgency=medium + + * Update to SVN 20190505 (r270881) from the gcc-8-branch. + - Fix PR c/89946, PR c++/90108, PR c/89933, PR c/89734, + PR target/90193, PR target/90187 (x86), PR tree-optimization/90208, + PR rtl-optimization/90082, PR tree-optimization/90090, + PR rtl-optimization/89965, PR c/89946, PR rtl-optimization/90026, + PR rtl-optimization/89965, PR c++/90010, PR tree-optimization/89998, + PR c/89872, PR middle-end/89621, PR target/89752, PR target/89752, + PR rtl-optimization/89768, PR target/89726 (x86), PR debug/89704, + PR ipa/89684, PR rtl-optimization/89679, PR tree-optimization/89703, + PR debug/89498, PR middle-end/88588, PR middle-end/89663, PR c/88568, + PR target/89587 (PPC), PR middle-end/89590, PR middle-end/89412, + PR c/89520, PR middle-end/89091, PR middle-end/88074, PR middle-end/89415, + PR middle-end/88074, PR target/86538 (AArch64), PR target/37369 (AArch64), + PR middle-end/89037, PR target/85910 (AArch64), PR debug/89631, + PR c++/90108, PR c/89933, PR sanitizer/89869, PR c++/89796, + PR c++/60702, PR c++/89767, PR c++/89512, PR c++/87148, PR c++/89403, + PR c++/89405, PR fortran/89651, PR middle-end/89698, + PR tree-optimization/89595, PR tree-optimization/89710, + PR tree-optimization/90071, PR target/86984 (alpha), + PR target/89711 (x86). + * Merge some hardening defaults patches into one patch set. + * Turn on -fasynchronous-unwind-tables by default on supported architectures + for bullseye. + + -- Matthias Klose Sun, 05 May 2019 15:54:05 +0200 + +gcc-8 (8.3.0-7ubuntu1) eoan; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + - Don't built common libraries now build from GCC 9. + + -- Matthias Klose Sun, 28 Apr 2019 09:51:11 +0200 + +gcc-8 (8.3.0-7) unstable; urgency=medium + + * Update to SVN 20190428 (r270630) from the gcc-8-branch. + - Fix PR target/89877 (ARC), PR target/84369 (PPC), + PR tree-optimization/85762, PR tree-optimization/87008, + PR tree-optimization/85459, PR target/87532 (PPC), + PR target/87532 (PPC), PR ipa/89693, PR middle-end/88587, + PR tree-optimization/90018, PR target/90024 (ARM), + PR target/89945 (ARM), PR fortran/87352, PR fortran/89981, + PR fortran/89904, PR libgfortran/79540, PR fortran/87127, + PR rtl-optimization/87979, PR rtl-optimization/84032. + * Fix PR c++/90050, always link with libstdc++fs.a. LP: #1824721. + * Fix PR bootstrap/87338 on ia64 (James Clarke). Closes: #927976. + + -- Matthias Klose Sun, 28 Apr 2019 09:43:41 +0200 + +gcc-8 (8.3.0-6ubuntu1) disco; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + - Don't built common libraries now build from GCC 9. + + -- Matthias Klose Sat, 06 Apr 2019 17:04:43 +0200 + +gcc-8 (8.3.0-6) unstable; urgency=medium + + * Update to SVN 20190406 (r270182) from the gcc-8-branch. + - Fix PR middle-end/89934, PR lto/89896. + * Fix PR fortran/89981, taken from the trunk. + + -- Matthias Klose Sat, 06 Apr 2019 16:44:55 +0200 + +gcc-8 (8.3.0-5ubuntu1) disco; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + - Don't built common libraries now build from GCC 9. + + -- Matthias Klose Wed, 03 Apr 2019 03:09:43 +0200 + +gcc-8 (8.3.0-5) unstable; urgency=medium + + * Update to SVN 20190403 (r270110) from the gcc-8-branch. + - Fix PR target/89902 (x86), PR target/89903 (x86), + PR rtl-optimization/89862, PR target/89848 (x86), PR web/87829, + PR target/89827 (x86), PR fortran/83515, PR fortran/85797, + PR fortran/78865. + * Revert the fix for PC c++/88419, causing PR c++/89906. Closes: #926234. + * Mark gcc-8-source as M-A: foreign. + + -- Matthias Klose Wed, 03 Apr 2019 03:05:37 +0200 + +gcc-8 (8.3.0-4ubuntu1) disco; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + - Don't built common libraries now build from GCC 9. + + -- Matthias Klose Tue, 26 Mar 2019 12:54:56 +0100 + +gcc-8 (8.3.0-4) unstable; urgency=medium + + * Update to SVN 20190326 (r269936) from the gcc-8-branch. + - Fix PR tree-optimization/89546, PR target/89523 (x86), PR fortran/84394, + PR fortran/66089, PR fortran/66695, PR fortran/77746, PR fortran/79485, + PR libgcc/60790, PR target/89775 (S390), PR debug/88389, + PR rtl-optimization/89753, PR middle-end/88273, PR fortran/71861, + PR fortran/68009. + * gcc-8-base: Breaks gnat-6 (<< 6.4) to ease upgrades. Closes: #924911. + * Fix cross building gdc (Helmut Grohne). Closes: #925040. + * Fix package descriptions for cross packages. + * Fix PR jit/87808: Don't rely on the gcc driver. Let libgccjit0 + depend on binutils and libgcc-dev. Closes: #911668. + * Fix stripping the gcc-hppa64 package. + + -- Matthias Klose Tue, 26 Mar 2019 11:56:40 +0100 + +gcc-8 (8.3.0-3ubuntu1) disco; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + - Don't built common libraries now build from GCC 9. + + -- Matthias Klose Sat, 16 Mar 2019 11:58:24 +0100 + +gcc-8 (8.3.0-3) unstable; urgency=medium + + * Update to SVN 20190316 (r269720) from the gcc-8-branch. + - Fix PR tree-optimization/89505, PR target/89517 (AArch64), + PR bootstrap/89539, PR debug/88878, PR debug/89514, + PR tree-optimization/89536, PR target/88100 (PPC), PR target/89397 (x86), + PR target/89361 (S390), PR c++/89212, PR fortran/89077, + PR fortran/77583, PR fortran/89174, PR fortran/87689, PR fortran/84387, + PR fortran/89516, PR fortran/89492, PR fortran/89266, PR fortran/88326, + PR libfortran/89020, PR target/88530 (AArch64), PR target/88530 (AArch64), + PR ipa/88235, PR c++/88820, PR c++/88869, PR c++/88419, PR c++/88690, + PR c++/87921, PR c++/89381, PR c++/89576, PR c++/89422, PR c++/87513, + PR c++/88183, PR c++/89585, PR fortran/71544, PR fortran/87734, + PR fortran/71203, PR fortran/72714, PR middle-end/89572, PR target/85860, + PR middle-end/89677, PR middle-end/89497, PR tree-optimization/89296, + PR tree-optimization/89664, PR rtl-optimization/89588, PR lto/88147, + PR target/86952 (x86), PR lto/88147, PR fortran/87673, PR c++/89383, + PR lto/87525, PR other/89712, PR testsuite/85368. + * Backport libgo patches for the Hurd from the trunk (Svante Signell). + * Add some more breaks to libstdc++6. Closes: #866354. + + -- Matthias Klose Sat, 16 Mar 2019 11:41:45 +0100 + +gcc-8 (8.3.0-2ubuntu2) disco; urgency=medium + + * Update to SVN 20190306 (r269421) from the gcc-8-branch. + - Fix PR tree-optimization/89505, PR target/89517 (AArch64), + PR bootstrap/89539, PR debug/88878, PR debug/89514, + PR tree-optimization/89536, PR target/88100 (PPC), PR target/89397 (x86), + PR target/89361 (S390), PR c++/89212, PR fortran/89077, + PR fortran/77583, PR fortran/89174, PR fortran/87689, PR fortran/84387, + PR fortran/89516, PR fortran/89492, PR fortran/89266, PR fortran/88326, + PR libfortran/89020, PR target/88530 (AArch64), PR target/88530 (AArch64). + + -- Matthias Klose Tue, 26 Feb 2019 09:31:52 +0100 + +gcc-8 (8.3.0-2ubuntu1) disco; urgency=medium + + * GCC 8.3.0 release. + + -- Matthias Klose Tue, 26 Feb 2019 09:31:52 +0100 + +gcc-8 (8.3.0-2) unstable; urgency=medium + + * Fix the nvptx build. + + -- Matthias Klose Tue, 26 Feb 2019 09:26:57 +0100 + +gcc-8 (8.3.0-1) unstable; urgency=medium + + * GCC 8.3.0 release. + * Update newlib to newlib-3.1.0.20181231. + * Refresh patches. + * Fix PR middle-end/89412, patch taken from the trunk. Closes: #922683. + + -- Matthias Klose Mon, 25 Feb 2019 09:03:00 +0100 + +gcc-8 (8.2.0-21ubuntu1) disco; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + - Don't built common libraries now build from GCC 9. + + -- Matthias Klose Fri, 15 Feb 2019 14:38:29 +0100 + +gcc-8 (8.2.0-21) unstable; urgency=medium + + * GCC 8.3.0 release candidate. + * Update to SVN 20190215 (r268938) from the gcc-8-branch. + - Fix PR middle-end/89303, PR lto/88858, PR ipa/89009, + PR tree-optimization/89314, PR middle-end/89281, PR target/89290 (x86), + PR middle-end/89246, PR tree-optimization/86554, PR lto/89260, + PR tree-optimization/89253, PR middle-end/89223, PR c++/89267, + PR tree-optimization/88739, PR target/88648 (ARM), PR target/89112 (PPC), + PR fortran/89077, PR fortran/71237, PR tree-optimization/89278, + PR other/89342, PR c++/88795, PR rtl-optimization/89354, + PR target/86684 (PPC), PR target/87149 (PPC), PR target/88892 (PPC), + PR rtl-optimization/85805, PR rtl-optimization/89242. + * Build-depend on locales-all instead of locales, don't generate locales + during the build, and attribute test dependencies with . + * Remove the linaro-macros test for Linaro builds. + * gdc-8: Include again the libgphobos spec file, accidentally dropped in -18. + + -- Matthias Klose Fri, 15 Feb 2019 14:31:06 +0100 + +gcc-8 (8.2.0-20ubuntu1) disco; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + - Don't built common libraries now build from GCC 9. + * Remove the linaro-macros test for Linaro builds. + + -- Matthias Klose Sat, 09 Feb 2019 18:01:31 +0100 + +gcc-8 (8.2.0-20) unstable; urgency=medium + + * Update to SVN 20190209 (r268721) from the gcc-8-branch. + - Fix PR libstdc++/88066, PR libstdc++/87787, PR libstdc++/65229, + PR libstdc++/87308, PR libstdc++/89128, PR libstdc++/88119, + PR libstdc++/83511, PR libstdc++/88084, PR libstdc++/86910, + PR libstdc++/87846, PR libstdc++/86595, PR libstdc++/89117, + PR target/88861, PR rtl-optimization/89234, PR target/88343 (PPC), + PR tree-optimization/86991, PR debug/87295, PR debug/87295, PR lto/86736, + PR lto/87187, PR debug/88046, PR lto/87229, PR lto/88112, + PR target/85596, PR tree-optimization/88427, PR tree-optimization/88217, + PR tree-optimization/88149, PR c++/88761, PR c++/88752, PR c++/86943. + - Undo reverting the fix for PR c++/86610. + * Update the gcc-linaro-doc patch. + * Fix the libphobos multilib cross builds. + + -- Matthias Klose Sat, 09 Feb 2019 17:58:52 +0100 + +gcc-8 (8.2.0-19ubuntu1) disco; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + - Don't built common libraries now build from GCC 9. + + -- Matthias Klose Thu, 07 Feb 2019 22:04:19 +0100 + +gcc-8 (8.2.0-18) unstable; urgency=medium + + * Update to SVN 20190207 (r268611) from the gcc-8-branch. + - Fix PR target/88856 (S390X). Addresses: #915738. LP: #1815057. + - Fix PR target/87064 (PPC), PR c++/89083, c++/80864, PR fortran/67679, + PR tree-optimization/88105, PR tree-optimization/88223, + PR middle-end/88448, PR middle-end/88415, PR tree-optimization/88030, + PR tree-optimization/87929, PR tree-optimization/89135, + PR tree-optimization/88903, PR c++/89158, PR c++/88983, PR c++/89119, + PR c++/89024, PR c++/88988, PR middle-end/89002, PR middle-end/88968, + PR c/89211, PR target/89188, PR rtl-optimization/89195, PR target/89186, + PR middle-end/87887, PR tree-optimization/88107, PR sanitizer/89124, + PR c++/89105, PR c++/66676, PR ipa/89104, PR middle-end/89002, + PR target/89073, PR target/87214, PR tree-optimization/88964, + PR tree-optimization/88964, PR target/88965, PR target/88905, + PR rtl-optimization/49429, PR target/49454, PR rtl-optimization/86334, + PR target/88906, PR target/88734, PR rtl-optimization/88870, + PR bootstrap/88714, PR c/88568, PR debug/88723, PR debug/88635, + PR c++/89187, PR c++/88988, PR c++/88976, PR c++/88949, + PR sanitizer/88901, PR fortran/83246, PR fortran/89084, + PR fortran/88902. + * Update the support to build without packages being built by GCC 9. + + -- Matthias Klose Thu, 07 Feb 2019 21:56:01 +0100 + +gcc-8 (8.2.0-17ubuntu6) disco; urgency=medium + + * Stop building packages now built from GCC 9. + * Build using the ARM/Linaro branch on armhf and arm64. + + -- Matthias Klose Tue, 05 Feb 2019 21:57:33 +0100 + +gcc-8 (8.2.0-17) unstable; urgency=medium + + * Update to SVN 20190204 (r268512) from the gcc-8-branch. + - Fix PR rtl-optimization/89115 (compile time part). Addresses: #918329. + - Fix PR tree-optimization/89008, PR tree-optimization/87022, + PR tree-optimization/88932, PR fortran/88393, PR fortran/88980, + PR fortran/88685, PR fortran/88298, PR fortran/57048, PR libfortran/88678. + * Backport libffi RISC-V go closures. Closes: #920939. + * Add support to build from the gcc-8 ARM/Linaro branch. + + -- Matthias Klose Mon, 04 Feb 2019 14:58:52 +0100 + +gcc-8 (8.2.0-16ubuntu1) disco; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Wed, 30 Jan 2019 18:25:55 +0100 + +gcc-8 (8.2.0-16) unstable; urgency=medium + + * Update to SVN 20190130 (r268398) from the gcc-8-branch. + - Fix PR tree-optimization/86865, PR tree-optimization/86865, + PR target/88948, PR c++/86740, PR c++/87075, + PR fortran/56386, PR fortran/58906, PR fortran/77385, PR fortran/80260, + PR fortran/82077, PR fortran/87336. + * Revert the fix for PR c++/86610, causing PR c++/88995. Closes: #920821. + + -- Matthias Klose Wed, 30 Jan 2019 18:21:01 +0100 + +gcc-8 (8.2.0-15ubuntu1) disco; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Fri, 25 Jan 2019 09:43:23 +0100 + +gcc-8 (8.2.0-15) unstable; urgency=medium + + * Update to SVN 20190125 (r268257) from the gcc-8-branch. + - Fix PR libstdc++/80762, PR libstdc++/80762, PR libstdc++/87855, + PR libstdc++/87514, PR libstdc++/87520, PR libstdc++/88782, + PR libstdc++/87855, PR c/88720, PR c/88726, PR ipa/88214, + PR ipa/85574, PR tree-optimization/85574, PR target/84010 (SPARC), + PR target/88938 (x86), PR target/88799 (ARM), PR tree-optimization/89008, + PR c++/86610, PR fortran/81849, PR fortran/88803, PR fortran/35031, + PR libfortran/88776, PR target/88998 (x86), PR target/88469 (ARM). + * Turn on profiled bootstrap on x86, ARM32, AArch64, PPC64 and s390x + architectures for native builds. + * Relax the shlibs dependency for libgnat-8. Closes: #920246. + + -- Matthias Klose Fri, 25 Jan 2019 09:36:26 +0100 + +gcc-8 (8.2.0-14ubuntu1) disco; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Tue, 08 Jan 2019 13:10:57 +0100 + +gcc-8 (8.2.0-14) unstable; urgency=medium + + * Update to SVN 20190108 (r267721) from the gcc-8-branch. + - Fix PR fortran/88463, PR libstdc++/64883, PR c++/88215, + PR sanitizer/88426, PR inline-asm/55681, PR middle-end/82564, + PR target/88620, PR target/88594 (x86), PR debug/88644, + PR middle-end/85594, PR middle-end/88553, PR target/88522 (x86), + PR rtl-optimization/88563, PR target/88541 (x86), PR c++/82294, + PR c++/87436, PR rtl-optimization/88470, PR rtl-optimization/88416, + PR target/85593, PR target/87598 (AArch64), PR tree-optimization/87360, + PR target/88234 (PPC), PR c++/86900, PR target/85644 (x86), + PR target/86832 (x86), PR tree-optimization/87895, + PR tree-optimization/88071, PR debug/87039, PR rtl-optimization/87475, + PR rtl-optimization/88018, PR tree-optimization/87898, PR lto/88130, + PR lto/86517, PR lto/88185, PR inline-asm/55681, PR ipa/88561, + PR c++/87380, PR target/88418 (x86), PR target/88213 (PPC), + PR c++/88180, PR c++/87934, PR c++/88410, PR c++/82294, PR c++/87436, + PR c++/86669, PR c++/87506, PR c++/88103, PR c++/88181, PR c++/88122, + PR inline-asm/55681, PR fortran/88463, PR fortran/88377, + PR fortran/77703, PR fortran/77325, PR fortran/85798, PR fortran/85544, + PR fortran/88169, PR fortran/87359. + * Bump standards version. + + -- Matthias Klose Tue, 08 Jan 2019 12:43:13 +0100 + +gcc-8 (8.2.0-13ubuntu1) disco; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Tue, 18 Dec 2018 07:29:34 +0100 + +gcc-8 (8.2.0-13) unstable; urgency=medium + + * Update to SVN 20181218 (r267225) from the gcc-8-branch. + - Fix PR target/87853, PR target/87496 (PPC), PR c++/87531, + PR fortran/88155, PR fortran/88249, PR fortran/87922, PR fortran/88269, + PR fortran/88205, PR fortran/88206, PR fortran/88228, PR fortran/88138, + PR fortran/88116, PR fortran/88467, PR target/88224 (ARM), + PR rtl-optimization/88001, PR rtl-optimization/88253. + * gcc-8-source: Depend on lsb-release. + * Disable broken selective scheduling on ia64 (Adrian Glaubitz). + See PR rtl-optimization/85412. Closes: #916591. + * Fix PR sanitizer/88426, taken from the trunk. Closes: #916388. + * Fix perl shebang for the gnathtml binary. + * Lower priority of libgcc[124] and libstdc++6 packages. + * Don't add the libstdc++6 breaks for releases newer than stretch. + * libgccjit-doc: Install image files. + * Stop building gnat on powerpcspe. Closes: #912649. + * Don't provide -compiler names for cross compiler packages. + Addresses: #916376. Not a final solution. + + -- Matthias Klose Tue, 18 Dec 2018 07:25:34 +0100 + +gcc-8 (8.2.0-12ubuntu2) disco; urgency=medium + + * Update to SVN 20181215 (r267180) from the gcc-8-branch. + - Fix PR target/87853, PR target/87496 (PPC), PR c++/87531, + PR fortran/88155, PR fortran/88249, PR fortran/87922, PR fortran/88269, + PR fortran/88205, PR fortran/88206, PR fortran/88228, PR fortran/88138, + PR rtl-optimization/88001, PR target/88224 (ARM). + * gcc-8-source: Depend on lsb-release. + + -- Matthias Klose Sun, 16 Dec 2018 01:32:49 +0100 + +gcc-8 (8.2.0-12ubuntu1) disco; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Sun, 09 Dec 2018 11:08:44 +0100 + +gcc-8 (8.2.0-12) unstable; urgency=medium + + * Update to SVN 20181209 (r266918) from the gcc-8-branch. + - Fix PR fortran/88048, PR fortran/88025. + * Back-out the fix for PR c++/87531. Closes: #915980. + + -- Matthias Klose Sun, 09 Dec 2018 11:02:40 +0100 + +gcc-8 (8.2.0-11ubuntu1) disco; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Fri, 07 Dec 2018 00:15:55 +0100 + +gcc-8 (8.2.0-11) unstable; urgency=medium + + * Update to SVN 20181206 (r266855) from the gcc-8-branch. + - Fix PR libstdc++/70694, PR libstdc++/88199, PR tree-optimization/87288, + PR target/81685, PR target/87496 (PPC), PR tree-optimization/79351, + PR tree-optimization/88229, PR target/84711 (ARM), PR c++/88120, + PR c++/87531, PR fortran/88073, PR fortran/88143, PR libfortran/88137, + PR libfortran/88137. + * Back-out the gcc-search-prefixed-as-ld patch. See #915194. + + -- Matthias Klose Fri, 07 Dec 2018 00:06:23 +0100 + +gcc-8 (8.2.0-10ubuntu1) disco; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Fri, 23 Nov 2018 09:52:25 +0100 + +gcc-8 (8.2.0-10) unstable; urgency=medium + + * Update to SVN 20181123 (r266402) from the gcc-8-branch. + - Fix PR libstdc++/87822, PR libstdc++/87809, PR rtl-optimization/85925, + PR gcov-profile/88045, PR target/87928 (x86), PR debug/88006, + PR debug/87462, PR target/85968 (ARC), PR middle-end/58372, + PR target/87867 (ARM), PR tree-optimization/87859, PR sanitizer/87837, + PR middle-end/87647, PR middle-end/85488, PR middle-end/87649, + PR c++/86246, PR c++/87989, PR c++/86288, PR fortran/87725, + PR fortran/87597, PR lto/88077, PR libfortran/78351, + PR libstdc++/85930, PR libstdc++/87520, PR target/88051 (x86). + + [ Matthias Klose ] + * Fix VCS attribute in the control file. Addresses: #912405. + * Update the Linaro support to the 8-2018.08 snapshot. + * Fix binutils dependency for Ubuntu trusty. + + [ Nicolas Boulenguez ] + * Stop writing -f*-prefix-map options to Ada Library Information files. + * Drop obsolete Ada patches. + * Fix autogen syntax in ada-armel-libatomic.diff. + + -- Matthias Klose Fri, 23 Nov 2018 09:33:03 +0100 + +gcc-8 (8.2.0-9ubuntu1) disco; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Tue, 30 Oct 2018 11:56:03 +0100 + +gcc-8 (8.2.0-9) unstable; urgency=medium + + * Update to SVN 20181029 (r265595) from the gcc-8-branch. + - Fix PR middle-end/87087, PR middle-end/87623, PR libstdc++/87641, + PR middle-end/87645, PR libstdc++/87749, PR libstdc++/87704, + PR other/86198, PR debug/87428, PR debug/87362, PR bootstrap/81033, + PR target/81733, PR target/52795, PR target/85669, + PR tree-optimization/87473, PR tree-optimization/87665, + PR tree-optimization/87745, PR tree-optimization/87665, + PR tree-optimization/87700, PR debug/86687. + * 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. + * gcc-8-base: Break gnat (<< 7). Closes: #911633. + + [ Nicolas Boulenguez ] + * Update ada patches. + + -- Matthias Klose Tue, 30 Oct 2018 10:50:43 +0100 + +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-7ubuntu1) cosmic; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Mon, 17 Sep 2018 18:15:05 +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-6ubuntu1) cosmic; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Sun, 09 Sep 2018 14:48:00 +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-5ubuntu2) cosmic; 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. + + -- Matthias Klose Sat, 08 Sep 2018 16:06:58 +0200 + +gcc-8 (8.2.0-5ubuntu1) cosmic; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Tue, 04 Sep 2018 09:16:07 +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-4ubuntu1) cosmic; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Tue, 14 Aug 2018 13:15:46 +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-3ubuntu1) cosmic; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Fri, 03 Aug 2018 12:48:07 +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). + Closes: #904998. + + -- Matthias Klose Thu, 02 Aug 2018 05:59:26 +0200 + +gcc-8 (8.2.0-1ubuntu2) cosmic; urgency=medium + + * Update to SVN 20180727 (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. + * Update cross-build patches for GCC 8.2. + * Refresh patches. + + -- Matthias Klose Sat, 28 Jul 2018 07:53:29 +0200 + +gcc-8 (8.2.0-1ubuntu1) cosmic; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Thu, 26 Jul 2018 13:48:50 +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-12ubuntu1) cosmic; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Thu, 19 Jul 2018 19:53:24 +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-11ubuntu1) cosmic; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Tue, 17 Jul 2018 12:32:11 +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-10ubuntu1) cosmic; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Thu, 12 Jul 2018 10:08:29 +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-9ubuntu1) cosmic; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Tue, 26 Jun 2018 13:03:48 +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 Sun, 17 Jun 2018 12:56:15 +0200 + +gcc-8 (8.1.0-8ubuntu1) cosmic; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Sun, 17 Jun 2018 06:04:02 +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 05:36:24 +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-5ubuntu1) cosmic; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Thu, 31 May 2018 15:22:24 +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-3ubuntu2) cosmic; urgency=medium + + * Update to SVN 20180514 (r260228) from the gcc-8-branch. + - Fix PR fortran/85742, PR fortran/85542. + * gnat-*: Don't search the target dirs when calling dh_shlibdeps. + + -- Matthias Klose Mon, 14 May 2018 11:25:01 -0400 + +gcc-8 (8.1.0-3ubuntu1) cosmic; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Sat, 12 May 2018 10:51:15 -0400 + +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-2ubuntu1) cosmic; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Thu, 10 May 2018 21:09:35 -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-1ubuntu3) cosmic; urgency=medium + + * Update to SVN 20180506 (r253978) from the gcc-7-branch. + - Fix PR go/85630, PR target/85519 (nvptx), PR libstdc++/85642, + PR libstdc++/84769, PR libstdc++/85632, PR target/85512 (AArch64), + PR c++/85305, PR ada/85635, PR ada/85540. + * 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. + + -- Matthias Klose Sun, 06 May 2018 14:41:38 +0200 + +gcc-8 (8.1.0-1ubuntu2) cosmic; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Thu, 03 May 2018 16:02:58 +0200 + +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-1ubuntu1) bionic; urgency=medium + + * GCC 8 snapshot, taken from the trunk 20180425 (r259628). + + -- Matthias Klose Wed, 25 Apr 2018 07:36:57 +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-20180423-0ubuntu1) bionic; urgency=medium + + * GCC 8 snapshot, taken from the trunk 20180423 (r259558). + + -- Matthias Klose Mon, 23 Apr 2018 13:17:46 +0200 + +gcc-8 (8-20180414-1ubuntu2) bionic; urgency=medium + + * Run the testsuite during the build. + + -- Matthias Klose Mon, 16 Apr 2018 17:06:33 +0200 + +gcc-8 (8-20180414-1ubuntu1) bionic; urgency=medium + + * GCC 8 snapshot, taken from the trunk 20180408 (r259224). + * Strip the binaries for the upcoming release. + + -- Matthias Klose Sat, 14 Apr 2018 07:29:59 +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-20180408-0ubuntu1) bionic; urgency=medium + + * GCC 8 snapshot, taken from the trunk 20180408 (r259224). + + -- Matthias Klose Sun, 08 Apr 2018 20:41:47 +0200 + +gcc-8 (8-20180406-0ubuntu1) bionic; urgency=medium + + * GCC 8 snapshot, taken from the trunk 20180405 (r259166). + * Update GDC to 20180406. + * 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. + + -- Matthias Klose Fri, 06 Apr 2018 13:25:06 +0200 + +gcc-8 (8-20180402-1ubuntu1) bionic; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Mon, 02 Apr 2018 10:12:59 +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-1ubuntu1) bionic; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Sat, 31 Mar 2018 16:39:17 +0800 + +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-1ubuntu1) bionic; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Wed, 21 Mar 2018 19:56:38 +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-1ubuntu2) bionic; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Mon, 19 Mar 2018 02:25:22 +0800 + +gcc-8 (8-20180319-1) unstable; urgency=medium + + [ 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-2ubuntu1) bionic; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Mon, 12 Mar 2018 12:37:59 +0100 + +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-20180309-0ubuntu1) bionic; urgency=medium + + * GCC 8 snapshot, taken from the trunk 20180309 (r258378). + * Build libasan and libubsan packages on s390x. + * Update libasan symbols files for s390x. + + -- Matthias Klose Fri, 09 Mar 2018 14:42:20 +0700 + +gcc-8 (8-20180308-1ubuntu1) bionic; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Thu, 08 Mar 2018 16:54:39 +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-1ubuntu1) bionic; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Sun, 18 Feb 2018 21:04:19 +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-20180208-0ubuntu1) bionic; urgency=medium + + * GCC 8 snapshot, taken from the trunk 20180208 (r257477). + * Store basename only in gfortran .mod files. Addresses: #889133. + * Disable go on the hurd, patches are out of date. + + -- Matthias Klose Wed, 07 Feb 2018 12:12:42 +0100 + +gcc-8 (8-20180207-2ubuntu1) bionic; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Wed, 07 Feb 2018 12:12:42 +0100 + +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 12:04:18 +0100 + +gcc-8 (8-20180207-1ubuntu1) bionic; urgency=medium + + * GCC 8 snapshot, taken from the trunk 20180207 (r257477). + + -- Matthias Klose Wed, 07 Feb 2018 01:47:13 +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-20180206-0ubuntu1) bionic; urgency=medium + + * GCC 8 snapshot, taken from the trunk 20180206 (r257477). + + -- Matthias Klose Tue, 06 Feb 2018 10:23:56 +0100 + +gcc-8 (8-20180206-1) experimental; urgency=medium + + * GCC 8 snapshot, taken from the trunk 20180206 (r257404). + * Update GDC to 20180204. + * Refresh patches. + * Disable go on m68k again. Closes: #886103. + * Ignore bootstrap comparison failures in gcc/d on alpha. Addresses: #888951. + + -- Matthias Klose Tue, 06 Feb 2018 05:53:53 +0100 + +gcc-8 (8-20180110-1ubuntu1) bionic; urgency=medium + + * GCC 8 snapshot, taken from the trunk 20180110 (r256425). + + -- Matthias Klose Wed, 10 Jan 2018 12:24:18 +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-20180104-0ubuntu1) bionic; urgency=medium + + * GCC 8 snapshot, taken from the trunk 20180104. + + -- Matthias Klose Thu, 04 Jan 2018 15:04:04 +0100 + +gcc-8 (8-20180102-0ubuntu1) bionic; urgency=medium + + * GCC 8 snapshot, taken from the trunk 20180102. + + -- Matthias Klose Tue, 02 Jan 2018 07:31:35 +0100 + +gcc-8 (8-20171222-0ubuntu2) bionic; urgency=medium + + * GCC 8 snapshot, taken from the trunk 20171222. + + -- Matthias Klose Fri, 22 Dec 2017 14:20:41 +0100 + +gcc-8 (8-20171221-1ubuntu2) bionic; urgency=medium + + * Disable nvptx for now. + + -- Matthias Klose Thu, 21 Dec 2017 09:12:41 +0100 + +gcc-8 (8-20171221-1ubuntu1) bionic; urgency=medium + + * GCC 8 snapshot, taken from the trunk 20171219. + * Update GDC to 20171221. + + -- Matthias Klose Thu, 21 Dec 2017 07:21:49 +0100 + +gcc-8 (8-20171219-0ubuntu2) bionic; urgency=medium + + * GCC 8 snapshot, taken from the trunk 20171219. + + -- Matthias Klose Tue, 19 Dec 2017 15:38:49 +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-1ubuntu2) artful; urgency=medium + + * Fix lsan/tsan symbols files for arm64 and ppc64el. + + -- Matthias Klose Thu, 28 Sep 2017 03:09:21 +0200 + +gcc-8 (8-20170923-1ubuntu1) artful; urgency=medium + + * Disable the ARM32 multilib support for now. + + -- Matthias Klose Wed, 27 Sep 2017 22:09:27 +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-7ubuntu1) artful; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Sat, 23 Sep 2017 11:42:38 +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-6ubuntu1) artful; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Wed, 20 Sep 2017 11:21:01 +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-5ubuntu1) artful; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Fri, 15 Sep 2017 12:19:48 +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-4ubuntu2) artful; urgency=medium + + * Update to SVN 20170912 (r251998) 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. + + -- Matthias Klose Tue, 12 Sep 2017 11:38:01 +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-4ubuntu1) artful; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Wed, 06 Sep 2017 11:07:43 +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-3ubuntu1) artful; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Sat, 02 Sep 2017 14:02:06 +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-2ubuntu1) artful; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Wed, 30 Aug 2017 12:23:25 +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-1ubuntu2) artful; urgency=medium + + * Update to SVN 20170824 (r251336) 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. + * Update the Linaro support to the 7-2017.08 snapshot. + + -- Matthias Klose Thu, 24 Aug 2017 17:33:34 +0200 + +gcc-7 (7.2.0-1ubuntu1) artful; urgency=medium + + * Update to SVN 20170818 (r251184) from the gcc-7-branch. + + -- Matthias Klose Fri, 18 Aug 2017 18:54:43 +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-13ubuntu1) artful; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Tue, 08 Aug 2017 11:43:39 -0400 + +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-12ubuntu1) artful; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Thu, 03 Aug 2017 09:57:19 -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-11ubuntu1) artful; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Mon, 31 Jul 2017 23:34:35 +0200 + +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-10ubuntu1) artful; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Mon, 24 Jul 2017 10:55:47 +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-9ubuntu1) artful; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Wed, 05 Jul 2017 19:28:21 +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-8ubuntu2) artful; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Thu, 29 Jun 2017 17:42:16 +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-7ubuntu1) artful; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Tue, 20 Jun 2017 14:19:39 +0200 + +gcc-7 (7.1.0-7) unstable; urgency=medium + + * Update to SVN 20170618 (r249347) from the gcc-7-branch. + + [ Matthias Klose ] + * Update to SVN 20170524 (r248432) from the gcc-7-branch. + * 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-6ubuntu2) artful; urgency=medium + + * Update to SVN 20170524 (r248432) from the gcc-7-branch. + * Don't build libada with -O3 (ftbfs on ppc64el). + * Restore building gnattools sequentially. Reopens #857831. + + -- Matthias Klose Wed, 24 May 2017 15:18:49 -0700 + +gcc-7 (7.1.0-6ubuntu1) artful; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Mon, 22 May 2017 16:38:40 -0700 + +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-5ubuntu2) artful; urgency=medium + + * Update to SVN 20170519 (r248295) 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. + * Starting with 17.10, enable PIE on armhf, arm64 and i386. + * Build from the Linaro gcc-7 branch on armhf and arm64. + * 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. + + -- Matthias Klose Fri, 19 May 2017 12:07:42 -0700 + +gcc-7 (7.1.0-5ubuntu1) artful; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Sun, 14 May 2017 09:15:57 -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-4ubuntu1) artful; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Fri, 05 May 2017 11:57:06 +0200 + +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-3ubuntu1) artful; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Thu, 04 May 2017 00:02:42 +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-1ubuntu2) artful; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Tue, 02 May 2017 18:13:00 +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-0ubuntu2) zesty; urgency=medium + + * GCC 7 snapshot build, taken from the trunk 20170407. + + -- Matthias Klose Fri, 07 Apr 2017 13:40:05 +0200 + +gcc-7 (7-20170322-0ubuntu1) zesty; urgency=medium + + * GCC 7 snapshot build, taken from the trunk 20170322. + + -- Matthias Klose Wed, 22 Mar 2017 09:08:47 +0100 + +gcc-7 (7-20170316-1ubuntu3) zesty; urgency=medium + + * GCC 7 snapshot build, taken from the trunk 20170316. + + -- Matthias Klose Thu, 16 Mar 2017 22:18:58 +0100 + +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-20170303-0ubuntu2) zesty; urgency=medium + + * GCC 7 snapshot build, taken from the trunk 20170303. + + -- Matthias Klose Fri, 03 Mar 2017 10:27:49 +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-1ubuntu1) zesty; urgency=medium + + * GCC 7 snapshot build, taken from the trunk 20170121. + + -- Matthias Klose Sun, 26 Feb 2017 17:21:13 +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 Clark). + 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-1ubuntu1) zesty; urgency=medium + + * GCC 7 snapshot build, taken from the trunk 20170121. + + -- Matthias Klose Sat, 21 Jan 2017 21:03:01 +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 20:34:04 +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 Clark). + * 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-20170105-1ubuntu1) zesty; urgency=medium + + * GCC 7 snapshot build, taken from the trunk 20170105. + + -- Matthias Klose Thu, 05 Jan 2017 14:41:15 +0100 + +gcc-7 (7-20170105-1) experimental; urgency=medium + + * GCC 7 snapshot build, taken from the trunk 20170105. + * Update zlib to 1.2.10. + * Always configure sparc builds --with-cpu-32=ultrasparc (James Clark). + + -- Matthias Klose Thu, 05 Jan 2017 14:19:02 +0100 + +gcc-7 (7-20161229-1ubuntu2) zesty; urgency=medium + + * GCC 7 snapshot build, taken from the trunk 20161229. + + -- Matthias Klose Thu, 29 Dec 2016 07:57:28 +0100 + +gcc-7 (7-20161229-1) experimental; urgency=medium + + * GCC 7 snapshot build, taken from the trunk 20161229. + * Update gdc to trunk 20161229. + * 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. + + -- Matthias Klose Thu, 29 Dec 2016 07:38:54 +0100 + +gcc-7 (7-20161217-0ubuntu1) zesty; urgency=medium + + * GCC 7 snapshot build, taken from the trunk 20161217. + + -- Matthias Klose Sat, 17 Dec 2016 14:09:52 +0100 + +gcc-7 (7-20161212-0ubuntu2) zesty; urgency=medium + + * GCC 7 snapshot build, taken from the trunk 20161212. + * Apply proposed patch for PR target/78748. + + -- Matthias Klose Mon, 12 Dec 2016 17:08:48 +0100 + +gcc-7 (7-20161208-0ubuntu1) zesty; urgency=medium + + * GCC 7 snapshot build, taken from the trunk 20161208. + - Revert r243346, breaking bootstrap on AArch64. + * 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. + + -- Matthias Klose Thu, 08 Dec 2016 12:08:40 +0100 + +gcc-7 (7-20161203-0ubuntu2) zesty; urgency=medium + + * GCC 7 snapshot build, taken from the trunk 20161203. + + -- Matthias Klose Sat, 03 Dec 2016 12:00:35 +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-1ubuntu1) zesty; urgency=medium + + * GCC 7 snapshot build, taken from the trunk 20161125. + + [ Matthias Klose ] + + [ Svante Signell ] + * GNU/Hurd port for gccgo. + + -- Matthias Klose Fri, 25 Nov 2016 13:30:48 +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-20161123-0ubuntu1) zesty; urgency=medium + + * GCC 7 snapshot build, taken from the trunk 20161117. + * Disable x32 multilib builds (broken in libgo). + * Disable go on powerpc and s390x (broken in libgo). + + -- Matthias Klose Tue, 22 Nov 2016 16:51:14 +0100 + +gcc-7 (7-20161117-0ubuntu1) zesty; urgency=medium + + * GCC 7 snapshot build, taken from the trunk 20161117. + + -- Matthias Klose Thu, 17 Nov 2016 14:18:21 +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-1ubuntu1) zesty; urgency=medium + + * GCC 7 snapshot build, taken from the trunk 20161115. + + -- Matthias Klose Tue, 15 Nov 2016 15:23:57 +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-1ubuntu2) zesty; urgency=medium + + * GCC 7 snapshot build, taken from the trunk 20161112. + + -- Matthias Klose Sat, 12 Nov 2016 13:21:36 +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-13ubuntu1) zesty; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Wed, 09 Nov 2016 21:04:13 +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-11ubuntu1) zesty; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Thu, 03 Nov 2016 15:27:16 +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-10ubuntu1) zesty; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Thu, 27 Oct 2016 22:12:20 +0200 + +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 Clark). + * 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-8ubuntu1) zesty; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Wed, 19 Oct 2016 18:47:57 +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 Clark). 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-7ubuntu11) zesty; urgency=medium + + * Build using the Linaro branch on armhf and arm64. + + -- Matthias Klose Tue, 18 Oct 2016 09:09:47 +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-5ubuntu12) yakkety; urgency=medium + + * Update to SVN 20161005 (r240765, 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. + * Really fix gij installation on hppa. Closes: #838111. + * Strip again the compiler binaries. + + -- Matthias Klose Wed, 05 Oct 2016 09:01:56 +0200 + +gcc-6 (6.2.0-5ubuntu11) yakkety; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Wed, 28 Sep 2016 15:58:48 +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-3ubuntu15) yakkety; urgency=medium + + * Update to SVN 20160914 (r240133, 6.2.1) from the gcc-6-branch. + - PR c++/77427. + * Fix updating gcj-6-jdk. LP: #1623337. + + -- Matthias Klose Wed, 14 Sep 2016 13:33:20 +0200 + +gcc-6 (6.2.0-3ubuntu14) yakkety; urgency=medium + + * Update to SVN 20160910 (r240069, 6.2.1) from the gcc-6-branch. + - Fix PR rtl-optimization/77452. + * gcj: Depend on the ecj1 standalone binary. + * Configure native builds using --with-program-prefix. + * Fix ICE in gdc symbol mangling (Iain Buclaw). LP: #1620681. + * Restore the AArch64 vulcan support for non Linaro builds. + + -- Matthias Klose Sun, 11 Sep 2016 12:50:59 +0200 + +gcc-6 (6.2.0-3ubuntu11) yakkety; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Sun, 04 Sep 2016 13:28:31 +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-2ubuntu11) yakkety; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Wed, 31 Aug 2016 12:38:54 +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-1ubuntu12) yakkety; urgency=medium + + * Update to SVN 20160824 (r239726, 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, + * Call default_file_start from s390_asm_file_start, taken from the trunk. + + -- Matthias Klose Wed, 24 Aug 2016 08:12:10 +0200 + +gcc-6 (6.2.0-1ubuntu11) yakkety; urgency=medium + + * GCC 6.2 release. + + -- Matthias Klose Mon, 22 Aug 2016 15:23:46 +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-12ubuntu11) yakkety; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Mon, 15 Aug 2016 17:56:19 +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-11ubuntu12) yakkety; urgency=medium + + * Update to SVN 20160805 (r239167, 6.1.1) from the gcc-6-branch. + Fix PR target/71869 (PPC), PR target/72805 (x86), PR target/70677 (AVR), + PR c++/72415. + + * Fix running the libjava testsuite. + * Revert fix for PR target/55947, causing PR libstdc++/72813. LP: #1610220. + + -- Matthias Klose Fri, 05 Aug 2016 15:09:39 +0200 + +gcc-6 (6.1.1-11ubuntu11) yakkety; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Wed, 03 Aug 2016 21:55:46 +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-10ubuntu11) yakkety; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Sun, 24 Jul 2016 20:28:46 +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-9ubuntu11) yakkety; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Tue, 05 Jul 2016 15:15:56 +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-8ubuntu11) yakkety; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Thu, 30 Jun 2016 15:41:06 +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-7ubuntu11) yakkety; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Mon, 20 Jun 2016 20:27:58 +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-6ubuntu11) yakkety; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Thu, 09 Jun 2016 19:27:27 +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-5ubuntu11) yakkety; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Fri, 03 Jun 2016 19:46:59 +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-4ubuntu11) yakkety; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Thu, 19 May 2016 17:24:36 +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-3ubuntu11) yakkety; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Thu, 12 May 2016 02:33:19 +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-2ubuntu12) yakkety; urgency=medium + + * Fix package replacements with gccgo-6 packages. LP: #1578247, #1578250. + + -- Matthias Klose Tue, 10 May 2016 14:31:52 +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.1.1-0ubuntu12) yakkety; urgency=medium + + * GCC 6.1.0 release. + - Fix PR bootstrap/70704, PR tree-optimization/70780, PR libgfortran/70684. + * Update to SVN 20160428 (r235548, 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. + * 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. + * Re-enable running the tests. + + -- Matthias Klose Thu, 28 Apr 2016 10:33:38 +0200 + +gcc-6 (6.0.1-2ubuntu12) yakkety; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Sat, 23 Apr 2016 18:24:49 +0200 + +gcc-6 (6.0.1-2) unstable; urgency=medium + + * GCC 6.1 release candidate 2. + * Update gdc to the trunk 20160423. + + -- Matthias Klose Sat, 23 Apr 2016 17:56:52 +0200 + +gcc-6 (6.0.1-1ubuntu11) xenial; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Fri, 15 Apr 2016 18:38:06 +0200 + +gcc-6 (6.0.1-1) experimental; urgency=medium + + * GCC 6 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-0ubuntu1) xenial; urgency=medium + + * GCC 6 snapshot build, taken from the trunk 20160405. + + -- Matthias Klose Tue, 05 Apr 2016 17:10:35 +0200 + +gcc-6 (6-20160319-0ubuntu11) xenial; urgency=medium + + * GCC 6 snapshot build, taken from the trunk 20160319. + + -- Matthias Klose Sat, 19 Mar 2016 12:17:24 +0100 + +gcc-6 (6-20160313-0ubuntu11) xenial; urgency=medium + + * GCC 6 snapshot build, taken from the trunk 20160313. + + -- Matthias Klose Sun, 13 Mar 2016 10:19:12 +0100 + +gcc-6 (6-20160227-0ubuntu11) xenial; urgency=medium + + * GCC 6 snapshot build, taken from the trunk 20160227. + + -- Matthias Klose Sat, 27 Feb 2016 11:02:40 +0100 + +gcc-6 (6-20160225-0ubuntu11) xenial; urgency=medium + + * GCC 6 snapshot build, taken from the trunk 20160225. + + -- Matthias Klose Thu, 25 Feb 2016 02:09:51 +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-0ubuntu11) xenial; urgency=medium + + * GCC 6 snapshot build, taken from the trunk 20160220. + + -- Matthias Klose Sat, 20 Feb 2016 04:38:26 +0100 + +gcc-6 (6-20160206-0ubuntu11) xenial; urgency=medium + + * GCC 6 snapshot build, taken from the trunk 20160206. + + -- Matthias Klose Sat, 06 Feb 2016 12:07:51 +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-1ubuntu1) xenial; urgency=medium + + * GCC 6 snapshot build, taken from the trunk 20160117. + + -- Matthias Klose Sun, 17 Jan 2016 12:34:33 +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-1ubuntu1) xenial; urgency=medium + + * GCC 6 snapshot build, taken from the trunk 20160109. + + -- Matthias Klose Sat, 09 Jan 2016 12:03:28 +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-20160105-0ubuntu1) xenial; urgency=medium + + * GCC 6 snapshot build, taken from the trunk 20160105. + * Install new header file pkuintrin.h. Closes: #809807. + * Fix libgcc1-0 dependency for cross compilers. + + -- Matthias Klose Sat, 02 Jan 2016 15:55:27 +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-0ubuntu2) xenial; urgency=medium + + * Bump the libgcj version. + + -- Matthias Klose Sat, 02 Jan 2016 15:55:27 +0100 + +gcc-6 (6-20160101-0ubuntu1) xenial; urgency=medium + + * GCC 6 snapshot build, taken from the trunk 20160101. + + -- Matthias Klose Fri, 01 Jan 2016 21:40:43 +0100 + +gcc-6 (6-20151221-0ubuntu1) xenial; urgency=medium + + * GCC 6 snapshot build, taken from the trunk 20151220. + + -- Matthias Klose Mon, 21 Dec 2015 15:56:05 +0100 + +gcc-6 (6-20151220-1ubuntu1) xenial; urgency=medium + + * Test build for xenial. + + -- Matthias Klose Sun, 20 Dec 2015 14:11:14 +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-20151219-1) experimental; urgency=medium + + * GCC 6 snapshot build, taken from the trunk 20151219. + * Update libstdc++-dbg conflicts. Closes: #807885. + * Set target tools and build dependencies for cross builds. + + -- Matthias Klose Sat, 19 Dec 2015 10:17:25 +0100 + +gcc-6 (6-20151213-1ubuntu2) xenial; urgency=medium + + * Test build for xenial. + + -- Matthias Klose Sun, 13 Dec 2015 15:04:49 +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 13:24:55 +0100 + +gcc-6 (6-20151211-1ubuntu3) xenial; urgency=medium + + * Test build for xenial. + + -- Matthias Klose Fri, 11 Dec 2015 17:42:35 +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-3ubuntu1) xenial; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + - Build using GCC Linaro on armhf and arm64. + + -- Matthias Klose Tue, 08 Dec 2015 02:21:55 +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-2ubuntu2) xenial; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + - Build using GCC Linaro on armhf and arm64. + + -- Matthias Klose Mon, 07 Dec 2015 00:00:19 +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-1ubuntu1) xenial; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + - Build using GCC Linaro on armhf and arm64. + + -- Matthias Klose Sat, 05 Dec 2015 11:40:27 +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 11:36:26 +0100 + +gcc-5 (5.3.1-0ubuntu2) xenial; urgency=medium + + * Update libgcc symbols file. + + -- Matthias Klose Fri, 04 Dec 2015 18:52:20 +0100 + +gcc-5 (5.3.1-0ubuntu1) xenial; urgency=medium + + * Update to SVN 20151204 (r231267, 5.3.1) from the gcc-5-branch. + * Build using GCC Linaro on armhf and arm64. + + -- Matthias Klose Fri, 04 Dec 2015 15:04:01 +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-27ubuntu1) xenial; urgency=medium + + * Configure with --enable-default-pie on s390x. + + -- Matthias Klose Mon, 30 Nov 2015 00:49:40 +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-26ubuntu1) xenial; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Wed, 25 Nov 2015 17:29:15 +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-25ubuntu1) xenial; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Mon, 23 Nov 2015 06:06:11 +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-24ubuntu3) xenial; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Sat, 21 Nov 2015 12:21:06 +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-23ubuntu1) xenial; urgency=medium + + * Again, configure with --enable-targets=powerpcle-linux on ppc64el. + + -- Matthias Klose Wed, 28 Oct 2015 12:18:49 +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-22ubuntu5) xenial; urgency=medium + + * Revert the fix for PR ipa/67056, causing an ICE. + + -- Matthias Klose Fri, 23 Oct 2015 19:13:51 +0200 + +gcc-5 (5.2.1-22ubuntu4) xenial; urgency=medium + + * Update to SVN 20151022 (r229176, 5.2.1) from the gcc-5-branch. + * Fix PR ipa/67056, taken from the trunk. Closes: #788299. + * Target POWER8 on ppc64el. + * Again, don't strip the compiler binaries for more verbose ICEs. + + -- Matthias Klose Thu, 22 Oct 2015 17:32:47 +0200 + +gcc-5 (5.2.1-22ubuntu2) wily; urgency=medium + + * Strip the compiler binaries for the release. + + -- Matthias Klose Fri, 16 Oct 2015 12:17:17 +0200 + +gcc-5 (5.2.1-22ubuntu1) wily; urgency=medium + + * gcj: On ppc64el, use the same jvm archdir name as for openjdk (ppc64le). + + -- Matthias Klose Sun, 11 Oct 2015 10:13:52 +0200 + +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-21ubuntu2) wily; urgency=medium + + * Restore the work around for PR libstdc++/65913, still needed at least + for powerpc. + + -- Matthias Klose Sun, 04 Oct 2015 02:21:30 +0200 + +gcc-5 (5.2.1-21ubuntu1) wily; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Sat, 03 Oct 2015 21:30:44 +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-20ubuntu1) wily; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Fri, 02 Oct 2015 11:35:22 +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-19ubuntu1) wily; urgency=medium + + * Configure --with-arch=zEC12 on s390x Ubuntu. + + -- Matthias Klose Wed, 30 Sep 2015 22:55:14 +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-18ubuntu1) wily; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Wed, 23 Sep 2015 03:10:37 +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-17ubuntu5) wily; urgency=medium + + * Don't assume --push-state/--pop-state being available for every linker. + LP: #1496743. + + -- Matthias Klose Tue, 22 Sep 2015 20:54:29 +0200 + +gcc-5 (5.2.1-17ubuntu4) wily; urgency=medium + + * gcc-5-plugin-dev: Depend on libmpc-dev. Closes: #798997. + * Work around PR c++/65913, link with -latomic when linking with -lstdc++. + Closes: #797577. + + -- Matthias Klose Tue, 15 Sep 2015 17:57:31 +0200 + +gcc-5 (5.2.1-17ubuntu1) wily; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Fri, 11 Sep 2015 03:24:48 +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-16ubuntu1) wily; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Thu, 03 Sep 2015 16:00:26 +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-15ubuntu5) wily; urgency=medium + + * Fix libstdc++-breaks (add version for the clustalx breaks). + + -- Matthias Klose Tue, 25 Aug 2015 17:56:26 +0200 + +gcc-5 (5.2.1-15ubuntu3) wily; urgency=medium + + * Update to SVN 20150825 (r227166, 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. + * Add the PR libstdc++/66145 breaks for wily. + + -- Matthias Klose Tue, 25 Aug 2015 15:56:11 +0200 + +gcc-5 (5.2.1-15ubuntu1) wily; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Sun, 09 Aug 2015 13:20: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-12ubuntu2) wily; urgency=medium + + * Update to SVN 20150729 (r226354, 5.2.1) from the gcc-5-branch. + - Fix PR libstdc++/67015. Closes: #793784. + + -- Matthias Klose Wed, 29 Jul 2015 17:59:18 +0200 + +gcc-5 (5.2.1-12ubuntu1) wily; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Wed, 22 Jul 2015 21:17:54 +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-11ubuntu1) wily; urgency=medium + + * Configure without --disable-libstdcxx-dual-abi. + * Configure with --with-default-libstdcxx-abi=new. + + -- Matthias Klose Fri, 17 Jul 2015 08:14:56 +0200 + +gcc-5 (5.2.1-1ubuntu1) wily; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Thu, 16 Jul 2015 16:58:50 +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-14ubuntu1) wily; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Sat, 11 Jul 2015 13:00:26 +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-13ubuntu1) wily; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Tue, 07 Jul 2015 14:29:11 +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-12ubuntu1) wily; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Tue, 23 Jun 2015 12:53:45 +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-11ubuntu1) wily; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Wed, 17 Jun 2015 14:38:38 +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-9ubuntu2) wily; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Wed, 03 Jun 2015 01:02:23 +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-8ubuntu1) wily; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Thu, 28 May 2015 12:51:48 +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-6ubuntu1) wily; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + * Fix dependencies for stage1 and stage2 builds. + * Disable building gdc on sh4. + + -- Matthias Klose Tue, 19 May 2015 18:29:02 +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-5ubuntu4) wily; urgency=medium + + * Update to SVN 20150513 (r223155, 5.1.1) from the gcc-5-branch. + * Don't build gdc-multilib on armel. + + -- Matthias Klose Wed, 13 May 2015 14:36:20 +0200 + +gcc-5 (5.1.1-5ubuntu3) wily; urgency=medium + + * Fix gnat build dependencies. + + -- Matthias Klose Sun, 10 May 2015 02:46:32 +0200 + +gcc-5 (5.1.1-5ubuntu2) wily; urgency=medium + + * Update to SVN 20150509 (r222970, 5.1.1) from the gcc-5-branch. + * 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 Sat, 09 May 2015 19:24:57 +0200 + +gcc-5 (5.1.1-5ubuntu1) wily; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Tue, 05 May 2015 17:52:14 +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.0-0ubuntu11) vivid; urgency=medium + + * GCC 5.1.0 release. + * Update NEWS files. + * gccgo: Implement escape analysis (taken from the trunk). Turned off + by default, enable with -fgo-optimize-alloc. + + -- Matthias Klose Wed, 22 Apr 2015 14:54:11 +0200 + +gcc-5 (5.1~rc2-0ubuntu12) vivid; urgency=medium + + * Fix libasan symbols. + + -- Matthias Klose Wed, 22 Apr 2015 00:12:03 +0200 + +gcc-5 (5.1~rc2-0ubuntu11) vivid; urgency=medium + + * GCC 5.1 release candidate 2. + * Update to SVN 20150421 (r222253) from the gcc-5-branch. + + -- Matthias Klose Tue, 21 Apr 2015 18:53:06 +0200 + +gcc-5 (5.1~rc1-0ubuntu12) vivid; urgency=medium + + * Update to SVN 20150419 (r222218) from the gcc-5-branch. + * 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. + * Ignore bootstrap comparison failure on ia64. Filed upstream as + PR middle-end/65874. + + -- Matthias Klose Sun, 19 Apr 2015 15:57:49 +0200 + +gcc-5 (5.1~rc1-0ubuntu11) vivid; 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 03:01:02 +0200 + +gcc-5 (5-20150410-0ubuntu11) vivid; urgency=medium + + * Update to SVN 20150410. + * Fix /usr/include/c++/5.0.0 symlink. + * Re-enable building the D frontend. Closes: #782254. + * gccgo: Install libnetgo. + + -- Matthias Klose Sat, 11 Apr 2015 02:21:24 +0200 + +gcc-5 (5-20150404-0ubuntu11) vivid; 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. + + -- Matthias Klose Sat, 04 Apr 2015 23:34:58 +0200 + +gcc-5 (5-20150401-0ubuntu12) vivid; urgency=medium + + * Update to SVN 20150401. + * 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 Wed, 01 Apr 2015 11:27:39 +0200 + +gcc-5 (5-20150329-1ubuntu11) vivid; urgency=medium + + * Update to SVN 20150329. + + -- Matthias Klose Sun, 29 Mar 2015 19:13:54 +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-20150328-0ubuntu11) vivid; urgency=medium + + * Update to SVN 20150328. + * Fix building the gnat-5-doc package. + * 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 Sat, 28 Mar 2015 15:08:55 +0100 + +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-1ubuntu12) vivid; urgency=medium + + * Update to SVN 20150321. + * Move the libcc1plugin from the gcc-5-plugin-dev package into the + gcc-5 package. + * Configure with --enable-checking=yes (instead of =release). + + -- Matthias Klose Sat, 21 Mar 2015 15:28:30 +0100 + +gcc-5 (5-20150316-1ubuntu11) vivid; urgency=medium + + * Update to SVN 20150316. + + -- Matthias Klose Mon, 16 Mar 2015 11:56:03 +0100 + +gcc-5 (5-20150314-1ubuntu11) vivid; urgency=medium + + * Update to SVN 20150314. + + -- Matthias Klose Sat, 14 Mar 2015 14:29:28 +0100 + +gcc-5 (5-20150312-1ubuntu11) vivid; urgency=medium + + * Update to SVN 20150312. + - PR go/65404, enable cgo on arm64 and powerpc. LP: #1431032. + * Fix libmpx multilib builds. + + -- Matthias Klose Thu, 12 Mar 2015 23:11:21 +0100 + +gcc-5 (5-20150311-1ubuntu12) vivid; urgency=medium + + * Update to SVN 20150311. + - libgo: Add arm64 to the pointer size map (Michael Hudson). + - libgo: Add ppc to the pointer size map. + * Enable libmpx builds on amd64 and i386. + * Update the gcc-multiarch patch for mips64 (YunQiang Su). + Closes: #776402, #780271. + + -- Matthias Klose Wed, 11 Mar 2015 19:56:38 +0100 + +gcc-5 (5-20150307-1ubuntu11) vivid; 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:36:40 +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-0ubuntu11) vivid; urgency=medium + + * Update to SVN 20150205. + + -- Matthias Klose Thu, 05 Feb 2015 01:57:43 +0100 + +gcc-5 (5-20150203-0ubuntu12) vivid; urgency=medium + + * Don't disable bootstrap mode for the jit build on arm64, gets + miscompiled. + + -- Matthias Klose Tue, 03 Feb 2015 13:39:02 +0100 + +gcc-5 (5-20150203-0ubuntu11) vivid; urgency=medium + + * Update to SVN 20150203. + + -- Matthias Klose Tue, 03 Feb 2015 13:39:02 +0100 + +gcc-5 (5-20150129-0ubuntu2) vivid; urgency=medium + + * Fix the libstdc++ build. + + -- Matthias Klose Thu, 29 Jan 2015 19:09:16 +0100 + +gcc-5 (5-20150129-0ubuntu1) vivid; urgency=medium + + * Update to SVN 20150129. + * Configure --with-default-libstdcxx-abi=c++11 for development, + --with-default-libstdcxx-abi=c++98 for backports. + + -- Matthias Klose Thu, 29 Jan 2015 17:47:03 +0100 + +gcc-5 (5-20150128-0ubuntu1) vivid; urgency=medium + + * Update to SVN 20150128. + * Update GDC for GCC 5. + * Build GDC multilib packages. + * Update cross-install-location.diff for gcc-5. Closes: #776100. + * Re-enable libgccjit on AArch64. + + -- Matthias Klose Wed, 28 Jan 2015 23:30:09 +0100 + +gcc-5 (5-20150127-0ubuntu2) vivid; urgency=medium + + * Disable libgccjit on AArch64, compiler issue + + -- Matthias Klose Tue, 27 Jan 2015 18:05:12 +0100 + +gcc-5 (5-20150127-0ubuntu1) vivid; urgency=medium + + * Update to SVN 20150127. + * Disable libgccjit on AArch64. + + -- Matthias Klose Tue, 27 Jan 2015 14:39:03 +0100 + +gcc-5 (5-20150126-0ubuntu3) vivid; urgency=medium + + * Update to SVN 20150126. + * More symbol file updates. + * Fix libbacktrace and libsanitizer multilib builds. + * Fix libssp builds on 64bit architectures. + + -- Matthias Klose Mon, 26 Jan 2015 18:22:53 +0100 + +gcc-5 (5-20150121-0ubuntu2) vivid; urgency=medium + + * GCC 5. + * Build new binary packages libcc1-0, libgccjit0, libgccjit-5-dev, + libgccjit-5-dbg, libgccjit-5-doc. + * Update symbols files (still incomplete). + + -- Matthias Klose Tue, 20 Jan 2015 12:45:13 +0100 + +gcc-4.9 (4.9.2-10ubuntu2) vivid; urgency=medium + + * Update to SVN 20150116 (r219730) from the gcc-4_9-branch. + - Fix PR libstdc++/64476, PR libstdc++/60966, PR libstdc++/64239, + 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 Fri, 16 Jan 2015 14:28:09 +0100 + +gcc-4.9 (4.9.2-10ubuntu1) vivid; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Wed, 31 Dec 2014 04:54:06 +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-7ubuntu3) vivid; urgency=medium + + * Fix the powerpc build. + + -- Matthias Klose Thu, 11 Dec 2014 15:52:15 +0100 + +gcc-4.9 (4.9.2-7ubuntu2) vivid; urgency=medium + + * Update to SVN 20141211 (r218620) from the gcc-4_9-branch. + - Fix PR tree-optimization/62021 (ice), PR middle-end/64225 (missed + optimization). + * Don't build libphobos multilibs, there is no gdc-multilib built. + * Really disable the sanitizer libs on powerpc, ppc64 and ppc64el. + * Paste config.log files to stdout in case of build errors. + + -- Matthias Klose Thu, 11 Dec 2014 12:04:13 +0100 + +gcc-4.9 (4.9.2-7ubuntu1) vivid; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Wed, 10 Dec 2014 15:27:33 +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-6ubuntu1) vivid; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream sources. + + -- Matthias Klose Tue, 09 Dec 2014 13:47:24 +0100 + +# For older changelog entries, run 'apt-get changelog gcc-4.9-base' --- gcc-8-8.3.0.orig/debian/compat +++ gcc-8-8.3.0/debian/compat @@ -0,0 +1 @@ +9 --- gcc-8-8.3.0.orig/debian/control +++ gcc-8-8.3.0/debian/control @@ -0,0 +1,1266 @@ +Source: gcc-8 +Section: devel +Priority: optional +Maintainer: Ubuntu Core developers +XSBC-Original-Maintainer: Debian GCC Maintainers +Uploaders: Matthias Klose +Standards-Version: 4.4.1 +Build-Depends: debhelper (>= 9.20141010), dpkg-dev (>= 1.17.14), g++-multilib [amd64 armel armhf 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-0ubuntu6) [alpha ia64] | libc0.3-dev (>= 2.13-0ubuntu6) [hurd-i386] | libc0.1-dev (>= 2.13-0ubuntu6) [kfreebsd-i386 kfreebsd-amd64] | libc6-dev (>= 2.13-0ubuntu6), 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-dev-armhf [armel], libhfgcc1 [armel], libc6-dev-armel [armhf], libsfgcc1 [armhf], 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, autoconf2.64, gcc-9-base, + gawk, dwz (>= 0.12.20190702), libunwind8-dev [ia64], libatomic-ops-dev [ia64], + lzma, xz-utils, patchutils, + zlib1g-dev, systemtap-sdt-dev [linux-any kfreebsd-any hurd-any], + binutils:native (>= 2.30) | binutils-multiarch:native (>= 2.30), binutils-hppa64-linux-gnu:native (>= 2.30) [hppa amd64 i386 x32], + gperf (>= 3.0.1), bison (>= 1:2.3), flex, gettext, + gdb:native [!riscv64], nvptx-tools [amd64], + texinfo (>= 4.3), locales-all, sharutils, + procps, gnat-8:native [!m32r !riscv64 !sh3 !sh3eb !sh4eb !m68k !powerpcspe], g++-8:native, netbase, + libisl-dev, libmpc-dev (>= 1.0), libmpfr-dev (>= 3.0.0-9~), libgmp-dev (>= 2:5.0.1~), lib32z1-dev [amd64 kfreebsd-amd64], lib64z1-dev [i386], libx32z1-dev [amd64 kfreebsd-amd64 i386], + dejagnu [!m68k !hurd-amd64 !hurd-i386 !hurd-alpha !kfreebsd-amd64 !kfreebsd-i386 !kfreebsd-alpha] , coreutils (>= 2.26) | realpath (>= 1.9.12), chrpath, lsb-release, quilt, + pkg-config, libgc-dev, + g++-8-alpha-linux-gnu [alpha] , gobjc-8-alpha-linux-gnu [alpha] , gfortran-8-alpha-linux-gnu [alpha] , gdc-8-alpha-linux-gnu [alpha] , gccgo-8-alpha-linux-gnu [alpha] , gnat-8-alpha-linux-gnu [alpha] , g++-8-x86-64-linux-gnu [amd64] , gobjc-8-x86-64-linux-gnu [amd64] , gfortran-8-x86-64-linux-gnu [amd64] , gdc-8-x86-64-linux-gnu [amd64] , gccgo-8-x86-64-linux-gnu [amd64] , gnat-8-x86-64-linux-gnu [amd64] , g++-8-arm-linux-gnueabi [armel] , gobjc-8-arm-linux-gnueabi [armel] , gfortran-8-arm-linux-gnueabi [armel] , gdc-8-arm-linux-gnueabi [armel] , gccgo-8-arm-linux-gnueabi [armel] , gnat-8-arm-linux-gnueabi [armel] , g++-8-arm-linux-gnueabihf [armhf] , gobjc-8-arm-linux-gnueabihf [armhf] , gfortran-8-arm-linux-gnueabihf [armhf] , gdc-8-arm-linux-gnueabihf [armhf] , gccgo-8-arm-linux-gnueabihf [armhf] , gnat-8-arm-linux-gnueabihf [armhf] , g++-8-aarch64-linux-gnu [arm64] , gobjc-8-aarch64-linux-gnu [arm64] , gfortran-8-aarch64-linux-gnu [arm64] , gdc-8-aarch64-linux-gnu [arm64] , gccgo-8-aarch64-linux-gnu [arm64] , gnat-8-aarch64-linux-gnu [arm64] , g++-8-i686-linux-gnu [i386] , gobjc-8-i686-linux-gnu [i386] , gfortran-8-i686-linux-gnu [i386] , gdc-8-i686-linux-gnu [i386] , gccgo-8-i686-linux-gnu [i386] , gnat-8-i686-linux-gnu [i386] , g++-8-mipsel-linux-gnu [mipsel] , gobjc-8-mipsel-linux-gnu [mipsel] , gfortran-8-mipsel-linux-gnu [mipsel] , gdc-8-mipsel-linux-gnu [mipsel] , gccgo-8-mipsel-linux-gnu [mipsel] , gnat-8-mipsel-linux-gnu [mipsel] , g++-8-mips64-linux-gnuabi64 [mips64] , gobjc-8-mips64-linux-gnuabi64 [mips64] , gfortran-8-mips64-linux-gnuabi64 [mips64] , gdc-8-mips64-linux-gnuabi64 [mips64] , gccgo-8-mips64-linux-gnuabi64 [mips64] , gnat-8-mips64-linux-gnuabi64 [mips64] , g++-8-mips64el-linux-gnuabi64 [mips64el] , gobjc-8-mips64el-linux-gnuabi64 [mips64el] , gfortran-8-mips64el-linux-gnuabi64 [mips64el] , gdc-8-mips64el-linux-gnuabi64 [mips64el] , gccgo-8-mips64el-linux-gnuabi64 [mips64el] , gnat-8-mips64el-linux-gnuabi64 [mips64el] , g++-8-mips64-linux-gnuabin32 [mipsn32] , gobjc-8-mips64-linux-gnuabin32 [mipsn32] , gfortran-8-mips64-linux-gnuabin32 [mipsn32] , gdc-8-mips64-linux-gnuabin32 [mipsn32] , gccgo-8-mips64-linux-gnuabin32 [mipsn32] , gnat-8-mips64-linux-gnuabin32 [mipsn32] , g++-8-powerpc-linux-gnu [powerpc] , gobjc-8-powerpc-linux-gnu [powerpc] , gfortran-8-powerpc-linux-gnu [powerpc] , gdc-8-powerpc-linux-gnu [powerpc] , gccgo-8-powerpc-linux-gnu [powerpc] , gnat-8-powerpc-linux-gnu [powerpc] , g++-8-powerpc64-linux-gnu [ppc64] , gobjc-8-powerpc64-linux-gnu [ppc64] , gfortran-8-powerpc64-linux-gnu [ppc64] , gdc-8-powerpc64-linux-gnu [ppc64] , gccgo-8-powerpc64-linux-gnu [ppc64] , gnat-8-powerpc64-linux-gnu [ppc64] , g++-8-powerpc64le-linux-gnu [ppc64el] , gobjc-8-powerpc64le-linux-gnu [ppc64el] , gfortran-8-powerpc64le-linux-gnu [ppc64el] , gdc-8-powerpc64le-linux-gnu [ppc64el] , gccgo-8-powerpc64le-linux-gnu [ppc64el] , gnat-8-powerpc64le-linux-gnu [ppc64el] , g++-8-m68k-linux-gnu [m68k] , gobjc-8-m68k-linux-gnu [m68k] , gfortran-8-m68k-linux-gnu [m68k] , gdc-8-m68k-linux-gnu [m68k] , g++-8-riscv64-linux-gnu [riscv64] , gobjc-8-riscv64-linux-gnu [riscv64] , gfortran-8-riscv64-linux-gnu [riscv64] , gdc-8-riscv64-linux-gnu [riscv64] , gccgo-8-riscv64-linux-gnu [riscv64] , gnat-8-riscv64-linux-gnu [riscv64] , g++-8-sh4-linux-gnu [sh4] , gobjc-8-sh4-linux-gnu [sh4] , gfortran-8-sh4-linux-gnu [sh4] , gnat-8-sh4-linux-gnu [sh4] , g++-8-sparc64-linux-gnu [sparc64] , gobjc-8-sparc64-linux-gnu [sparc64] , gfortran-8-sparc64-linux-gnu [sparc64] , gdc-8-sparc64-linux-gnu [sparc64] , gccgo-8-sparc64-linux-gnu [sparc64] , gnat-8-sparc64-linux-gnu [sparc64] , g++-8-s390x-linux-gnu [s390x] , gobjc-8-s390x-linux-gnu [s390x] , gfortran-8-s390x-linux-gnu [s390x] , gdc-8-s390x-linux-gnu [s390x] , gccgo-8-s390x-linux-gnu [s390x] , gnat-8-s390x-linux-gnu [s390x] , g++-8-x86-64-linux-gnux32 [x32] , gobjc-8-x86-64-linux-gnux32 [x32] , gfortran-8-x86-64-linux-gnux32 [x32] , gdc-8-x86-64-linux-gnux32 [x32] , gccgo-8-x86-64-linux-gnux32 [x32] , gnat-8-x86-64-linux-gnux32 [x32] , g++-8-mips64el-linux-gnuabin32 [mipsn32el] , gobjc-8-mips64el-linux-gnuabin32 [mipsn32el] , gfortran-8-mips64el-linux-gnuabin32 [mipsn32el] , gdc-8-mips64el-linux-gnuabin32 [mipsn32el] , gccgo-8-mips64el-linux-gnuabin32 [mipsn32el] , gnat-8-mips64el-linux-gnuabin32 [mipsn32el] , g++-8-mipsisa32r6-linux-gnu [mipsr6] , gobjc-8-mipsisa32r6-linux-gnu [mipsr6] , gfortran-8-mipsisa32r6-linux-gnu [mipsr6] , gdc-8-mipsisa32r6-linux-gnu [mipsr6] , gccgo-8-mipsisa32r6-linux-gnu [mipsr6] , gnat-8-mipsisa32r6-linux-gnu [mipsr6] , g++-8-mipsisa32r6el-linux-gnu [mipsr6el] , gobjc-8-mipsisa32r6el-linux-gnu [mipsr6el] , gfortran-8-mipsisa32r6el-linux-gnu [mipsr6el] , gdc-8-mipsisa32r6el-linux-gnu [mipsr6el] , gccgo-8-mipsisa32r6el-linux-gnu [mipsr6el] , gnat-8-mipsisa32r6el-linux-gnu [mipsr6el] , g++-8-mipsisa64r6-linux-gnuabi64 [mips64r6] , gobjc-8-mipsisa64r6-linux-gnuabi64 [mips64r6] , gfortran-8-mipsisa64r6-linux-gnuabi64 [mips64r6] , gdc-8-mipsisa64r6-linux-gnuabi64 [mips64r6] , gccgo-8-mipsisa64r6-linux-gnuabi64 [mips64r6] , gnat-8-mipsisa64r6-linux-gnuabi64 [mips64r6] , g++-8-mipsisa64r6el-linux-gnuabi64 [mips64r6el] , gobjc-8-mipsisa64r6el-linux-gnuabi64 [mips64r6el] , gfortran-8-mipsisa64r6el-linux-gnuabi64 [mips64r6el] , gdc-8-mipsisa64r6el-linux-gnuabi64 [mips64r6el] , gccgo-8-mipsisa64r6el-linux-gnuabi64 [mips64r6el] , gnat-8-mipsisa64r6el-linux-gnuabi64 [mips64r6el] , g++-8-mipsisa64r6-linux-gnuabin32 [mipsn32r6] , gobjc-8-mipsisa64r6-linux-gnuabin32 [mipsn32r6] , gfortran-8-mipsisa64r6-linux-gnuabin32 [mipsn32r6] , gdc-8-mipsisa64r6-linux-gnuabin32 [mipsn32r6] , gccgo-8-mipsisa64r6-linux-gnuabin32 [mipsn32r6] , gnat-8-mipsisa64r6-linux-gnuabin32 [mipsn32r6] , g++-8-mipsisa64r6el-linux-gnuabin32 [mipsn32r6el] , gobjc-8-mipsisa64r6el-linux-gnuabin32 [mipsn32r6el] , gfortran-8-mipsisa64r6el-linux-gnuabin32 [mipsn32r6el] , gdc-8-mipsisa64r6el-linux-gnuabin32 [mipsn32r6el] , gccgo-8-mipsisa64r6el-linux-gnuabin32 [mipsn32r6el] , gnat-8-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/tree/gcc-8-debian +Vcs-Git: https://salsa.debian.org/toolchain-team/gcc.git -b gcc-8-debian +XS-Testsuite: autopkgtest + +Package: gcc-8-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: libgcc-8-dev +X-DH-Build-For-Type: target +Architecture: any +Section: libdevel +Priority: optional +Recommends: ${dep:libcdev} +Depends: gcc-8-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:libmpx}, + ${dep:libqmath}, ${dep:libunwinddev}, ${shlibs:Depends}, ${misc:Depends} +Multi-Arch: same +Replaces: gccgo-8 (<< ${gcc:Version}) +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-8-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: lib64gcc-8-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-8-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:libmpxbiarch}, + ${dep:libqmathbiarch}, ${shlibs:Depends}, ${misc:Depends} +Replaces: gccgo-8-multilib (<< ${gcc:Version}) +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: lib32gcc-8-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-8-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:libmpxbiarch}, + ${dep:libqmathbiarch}, ${shlibs:Depends}, ${misc:Depends} +Replaces: gccgo-8-multilib (<< ${gcc:Version}) +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: libhfgcc-8-dev +X-DH-Build-For-Type: target +Architecture: armel +Section: libdevel +Priority: optional +Recommends: ${dep:libcdev} +Depends: gcc-8-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:libmpxbiarch}, + ${dep:libqmathbiarch}, ${shlibs:Depends}, ${misc:Depends} +Replaces: gccgo-8-multilib (<< ${gcc:Version}) +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. + +Package: libsfgcc-8-dev +X-DH-Build-For-Type: target +Architecture: armhf +Section: libdevel +Priority: optional +Recommends: ${dep:libcdev} +Depends: gcc-8-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:libmpxbiarch}, + ${dep:libqmathbiarch}, ${shlibs:Depends}, ${misc:Depends} +Replaces: gccgo-8-multilib (<< ${gcc:Version}) +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. + +Package: libn32gcc-8-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-8-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:libmpxbiarch}, + ${dep:libqmathbiarch}, ${shlibs:Depends}, ${misc:Depends} +Replaces: gccgo-8-multilib (<< ${gcc:Version}) +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: libx32gcc-8-dev +X-DH-Build-For-Type: target +Architecture: amd64 i386 +Section: libdevel +Priority: optional +Recommends: ${dep:libcdev} +Depends: gcc-8-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:libmpxbiarch}, + ${dep:libqmathbiarch}, ${shlibs:Depends}, ${misc:Depends} +Replaces: gccgo-8-multilib (<< ${gcc:Version}) +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-8 +Architecture: any +Section: devel +Priority: optional +Depends: cpp-8 (= ${gcc:Version}), gcc-8-base (= ${gcc:Version}), + ${dep:libcc1}, + binutils (>= ${binutils:Version}), + ${dep:libgccdev}, ${shlibs:Depends}, ${misc:Depends} +Recommends: ${dep:libcdev} +Replaces: gccgo-8 (<< ${gcc:Version}), cpp-8 (<< 7.1.1-8) +Suggests: ${gcc:multilib}, gcc-8-doc (>= ${gcc:SoftVersion}), + gcc-8-locales (>= ${gcc:SoftVersion}), +Provides: c-compiler +Description: GNU C compiler + This is the GNU C compiler, a fairly portable optimizing compiler for C. + +Package: gcc-8-multilib +Architecture: amd64 armel armhf 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-8-base (= ${gcc:Version}), gcc-8 (= ${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-8-test-results +Architecture: any +Section: devel +Priority: optional +Depends: gcc-8-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-8-plugin-dev +Architecture: any +Section: devel +Priority: optional +Depends: gcc-8-base (= ${gcc:Version}), gcc-8 (= ${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-8-hppa64-linux-gnu +Architecture: hppa amd64 i386 x32 +Section: devel +Priority: optional +Depends: gcc-8-base (= ${gcc:Version}), gcc-8 (= ${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-8 +Architecture: any +Section: interpreters +Priority: optional +Depends: gcc-8-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Suggests: gcc-8-locales (>= ${gcc:SoftVersion}) +Replaces: gccgo-8 (<< ${gcc:Version}) +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: cpp-8-doc +Architecture: all +Section: doc +Priority: optional +Depends: gcc-8-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. + +Package: gcc-8-locales +Architecture: all +Section: devel +Priority: optional +Depends: gcc-8-base (>= ${gcc:SoftVersion}), cpp-8 (>= ${gcc:SoftVersion}), ${misc:Depends} +Recommends: gcc-8 (>= ${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++-8 +Architecture: any +Section: devel +Priority: optional +Depends: gcc-8-base (= ${gcc:Version}), gcc-8 (= ${gcc:Version}), libstdc++-8-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Provides: c++-compiler, c++abi2-dev +Suggests: ${gxx:multilib}, gcc-8-doc (>= ${gcc:SoftVersion}), , +Description: GNU C++ compiler + This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. + +Package: g++-8-multilib +Architecture: amd64 armel armhf 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-8-base (= ${gcc:Version}), g++-8 (= ${gcc:Version}), gcc-8-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-8-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: 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-8-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: 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-8-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: libn32gomp1 +X-DH-Build-For-Type: target +Section: libs +Architecture: mips mipsel mips64 mips64el mipsr6 mipsr6el mips64r6 mips64r6el +Priority: optional +Depends: gcc-8-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: libmpx2 +X-DH-Build-For-Type: target +Section: libs +Architecture: any +Provides: libmpx2-armel [armel], libmpx2-armhf [armhf] +Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +Priority: optional +Depends: gcc-8-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Replaces: libmpx0 (<< 6-20160120-1) +Description: Intel memory protection extensions (runtime) + Intel MPX is a set of processor features which, with compiler, + runtime library and OS support, brings increased robustness to + software by checking pointer references whose compile time normal + intentions are usurped at runtime due to buffer overflow. + +Package: lib32mpx2 +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-8-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Conflicts: ${confl:lib32} +Replaces: lib32mpx0 (<< 6-20160120-1) +Description: Intel memory protection extensions (32bit) + Intel MPX is a set of processor features which, with compiler, + runtime library and OS support, brings increased robustness to + software by checking pointer references whose compile time normal + intentions are usurped at runtime due to buffer overflow. + +Package: lib64mpx2 +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-8-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Replaces: lib64mpx0 (<< 6-20160120-1) +Description: Intel memory protection extensions (64bit) + Intel MPX is a set of processor features which, with compiler, + runtime library and OS support, brings increased robustness to + software by checking pointer references whose compile time normal + intentions are usurped at runtime due to buffer overflow. + +Package: libgccjit-8-doc +Section: doc +Architecture: all +Priority: optional +Depends: gcc-8-base (= ${gcc:Version}), ${misc:Depends} +Conflicts: libgccjit-5-doc, libgccjit-6-doc, libgccjit-7-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-8-dev +Section: libdevel +Architecture: any +Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +Priority: optional +Depends: gcc-8-base (= ${gcc:Version}), libgccjit0 (>= ${gcc:Version}), + ${shlibs:Depends}, ${misc:Depends} +Suggests: libgccjit-8-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++-8 +Architecture: any +Priority: optional +Depends: gcc-8-base (= ${gcc:Version}), gobjc-8 (= ${gcc:Version}), g++-8 (= ${gcc:Version}), ${shlibs:Depends}, libobjc-8-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: ${gobjcxx:multilib}, gcc-8-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++-8-multilib +Architecture: amd64 armel armhf 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-8-base (= ${gcc:Version}), gobjc++-8 (= ${gcc:Version}), g++-8-multilib (= ${gcc:Version}), gobjc-8-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-8 +Architecture: any +Priority: optional +Depends: gcc-8-base (= ${gcc:Version}), gcc-8 (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, libobjc-8-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: ${gobjc:multilib}, gcc-8-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-8-multilib +Architecture: amd64 armel armhf 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-8-base (= ${gcc:Version}), gobjc-8 (= ${gcc:Version}), gcc-8-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-8-dev +X-DH-Build-For-Type: target +Architecture: any +Section: libdevel +Priority: optional +Depends: gcc-8-base (= ${gcc:Version}), libgcc-8-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-8-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-8-base (= ${gcc:Version}), lib64gcc-8-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-8-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-8-base (= ${gcc:Version}), lib32gcc-8-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-8-dev +X-DH-Build-For-Type: target +Architecture: mips mipsel mips64 mips64el mipsr6 mipsr6el mips64r6 mips64r6el +Section: libdevel +Priority: optional +Depends: gcc-8-base (= ${gcc:Version}), libn32gcc-8-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-8-dev +X-DH-Build-For-Type: target +Architecture: amd64 i386 +Section: libdevel +Priority: optional +Depends: gcc-8-base (= ${gcc:Version}), libx32gcc-8-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: libhfobjc-8-dev +X-DH-Build-For-Type: target +Architecture: armel +Section: libdevel +Priority: optional +Depends: gcc-8-base (= ${gcc:Version}), libhfgcc-8-dev (= ${gcc:Version}), libhfobjc4 (>= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +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. + +Package: libsfobjc-8-dev +X-DH-Build-For-Type: target +Architecture: armhf +Section: libdevel +Priority: optional +Depends: gcc-8-base (= ${gcc:Version}), libsfgcc-8-dev (= ${gcc:Version}), libsfobjc4 (>= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +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. + +Package: gfortran-8 +Architecture: any +Priority: optional +Depends: gcc-8-base (= ${gcc:Version}), gcc-8 (= ${gcc:Version}), libgfortran-8-dev (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Provides: fortran95-compiler, ${fortran:mod-version} +Suggests: ${gfortran:multilib}, gfortran-8-doc, + 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-8-multilib +Architecture: amd64 armel armhf 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-8-base (= ${gcc:Version}), gfortran-8 (= ${gcc:Version}), gcc-8-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: gfortran-8-doc +Architecture: all +Section: doc +Priority: optional +Depends: gcc-8-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. + +Package: libgfortran-8-dev +X-DH-Build-For-Type: target +Architecture: any +Section: libdevel +Priority: optional +Depends: gcc-8-base (= ${gcc:Version}), libgcc-8-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-8-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-8-base (= ${gcc:Version}), lib64gcc-8-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-8-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-8-base (= ${gcc:Version}), lib32gcc-8-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-8-dev +X-DH-Build-For-Type: target +Architecture: mips mipsel mips64 mips64el mipsr6 mipsr6el mips64r6 mips64r6el +Section: libdevel +Priority: optional +Depends: gcc-8-base (= ${gcc:Version}), libn32gcc-8-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-8-dev +X-DH-Build-For-Type: target +Architecture: amd64 i386 +Section: libdevel +Priority: optional +Depends: gcc-8-base (= ${gcc:Version}), libx32gcc-8-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: libhfgfortran-8-dev +X-DH-Build-For-Type: target +Architecture: armel +Section: libdevel +Priority: optional +Depends: gcc-8-base (= ${gcc:Version}), libhfgcc-8-dev (= ${gcc:Version}), libhfgfortran5 (>= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +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. + +Package: libsfgfortran-8-dev +X-DH-Build-For-Type: target +Architecture: armhf +Section: libdevel +Priority: optional +Depends: gcc-8-base (= ${gcc:Version}), libsfgcc-8-dev (= ${gcc:Version}), libsfgfortran5 (>= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +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. + +Package: gccgo-8 +Architecture: any +Priority: optional +Depends: gcc-8-base (= ${gcc:Version}), gcc-8 (= ${gcc:Version}), libgo13 (>= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Provides: go-compiler +Suggests: ${go:multilib}, gccgo-8-doc, , +Conflicts: ${golang:Conflicts} +Breaks: libgo12 (<< 8-20171209-2) +Replaces: libgo12 (<< 8-20171209-2) +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-8-multilib +Architecture: amd64 armel armhf 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-8-base (= ${gcc:Version}), gccgo-8 (= ${gcc:Version}), gcc-8-multilib (= ${gcc:Version}), ${dep:libgobiarch}, ${shlibs:Depends}, ${misc:Depends} +Suggests: ${dep:libgobiarchdbg} +Breaks: lib32go12 (<< 8-20171209-2), + libn32go12 (<< 8-20171209-2), + libx32go12 (<< 8-20171209-2), + lib64go12 (<< 8-20171209-2) +Replaces: lib32go12 (<< 8-20171209-2), + libn32go12 (<< 8-20171209-2), + libx32go12 (<< 8-20171209-2), + lib64go12 (<< 8-20171209-2) +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: gccgo-8-doc +Architecture: all +Section: doc +Priority: optional +Depends: gcc-8-base (>= ${gcc:SoftVersion}), dpkg (>= 1.15.4) | install-info, ${misc:Depends} +Description: Documentation for the GNU Go compiler (gccgo) + Documentation for the GNU Go compiler in info format. + +Package: libgo13 +X-DH-Build-For-Type: target +Section: libs +Architecture: any +Provides: libgo13-armel [armel], libgo13-armhf [armhf] +Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +Priority: optional +Depends: gcc-8-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: lib64go13 +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-8-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: lib32go13 +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-8-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: libn32go13 +X-DH-Build-For-Type: target +Section: libs +Architecture: mips mipsel mips64 mips64el mipsr6 mipsr6el mips64r6 mips64r6el +Priority: optional +Depends: gcc-8-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: libx32go13 +X-DH-Build-For-Type: target +Section: libs +Architecture: amd64 i386 +Priority: optional +Depends: gcc-8-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: libstdc++-8-dev +X-DH-Build-For-Type: target +Architecture: any +Multi-Arch: same +Section: libdevel +Priority: optional +Depends: gcc-8-base (= ${gcc:Version}), libgcc-8-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++-8-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++-8-pic +X-DH-Build-For-Type: target +Architecture: any +Multi-Arch: same +Section: libdevel +Priority: optional +Depends: gcc-8-base (= ${gcc:Version}), libstdc++6 (>= ${gcc:Version}), + libstdc++-8-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-8-dbg +X-DH-Build-For-Type: target +Architecture: any +Section: debug +Priority: optional +Depends: gcc-8-base (= ${gcc:Version}), libstdc++6 (>= ${gcc:Version}), + , ${shlibs:Depends}, ${misc:Depends} +Provides: libstdc++6-8-dbg-armel [armel], libstdc++6-8-dbg-armhf [armhf] +Multi-Arch: same +Recommends: libstdc++-8-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 +Description: GNU Standard C++ Library v3 (debug build) + This package contains a debug build of the shared libstdc++ library. The debug + symbols for the default build can be found in the libstdc++6-dbgsym package. + +Package: lib32stdc++-8-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-8-base (= ${gcc:Version}), lib32gcc-8-dev (= ${gcc:Version}), + lib32stdc++6 (>= ${gcc:Version}), libstdc++-8-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-8-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-8-base (= ${gcc:Version}), lib32stdc++6 (>= ${gcc:Version}), + libstdc++-8-dev (= ${gcc:Version}), , + ${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 +Description: GNU Standard C++ Library v3 (debug build) + This package contains a debug build of the shared libstdc++ library. The debug + symbols for the default build can be found in the libstdc++6-dbgsym package. + +Package: lib64stdc++-8-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-8-base (= ${gcc:Version}), lib64gcc-8-dev (= ${gcc:Version}), + lib64stdc++6 (>= ${gcc:Version}), libstdc++-8-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-8-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-8-base (= ${gcc:Version}), lib64stdc++6 (>= ${gcc:Version}), + libstdc++-8-dev (= ${gcc:Version}), , + ${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, +Description: GNU Standard C++ Library v3 (debug build) + This package contains a debug build of the shared libstdc++ library. The debug + symbols for the default build can be found in the libstdc++6-dbgsym package. + +Package: libn32stdc++-8-dev +X-DH-Build-For-Type: target +Architecture: mips mipsel mips64 mips64el mipsr6 mipsr6el mips64r6 mips64r6el +Section: libdevel +Priority: optional +Depends: gcc-8-base (= ${gcc:Version}), libn32gcc-8-dev (= ${gcc:Version}), + libn32stdc++6 (>= ${gcc:Version}), libstdc++-8-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-8-dbg +X-DH-Build-For-Type: target +Architecture: mips mipsel mips64 mips64el mipsr6 mipsr6el mips64r6 mips64r6el +Section: debug +Priority: optional +Depends: gcc-8-base (= ${gcc:Version}), libn32stdc++6 (>= ${gcc:Version}), + libstdc++-8-dev (= ${gcc:Version}), , + ${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, +Description: GNU Standard C++ Library v3 (debug build) + This package contains a debug build of the shared libstdc++ library. The debug + symbols for the default build can be found in the libstdc++6-dbgsym package. + +Package: libx32stdc++-8-dev +X-DH-Build-For-Type: target +Architecture: amd64 i386 +Section: libdevel +Priority: optional +Depends: gcc-8-base (= ${gcc:Version}), libx32gcc-8-dev (= ${gcc:Version}), libx32stdc++6 (>= ${gcc:Version}), + libstdc++-8-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-8-dbg +X-DH-Build-For-Type: target +Architecture: amd64 i386 +Section: debug +Priority: optional +Depends: gcc-8-base (= ${gcc:Version}), libx32stdc++6 (>= ${gcc:Version}), + libstdc++-8-dev (= ${gcc:Version}), , + ${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, +Description: GNU Standard C++ Library v3 (debug build) + This package contains a debug build of the shared libstdc++ library. The debug + symbols for the default build can be found in the libstdc++6-dbgsym package. + +Package: libhfstdc++-8-dev +X-DH-Build-For-Type: target +Architecture: armel +Section: libdevel +Priority: optional +Depends: gcc-8-base (= ${gcc:Version}), libhfgcc-8-dev (= ${gcc:Version}), + libhfstdc++6 (>= ${gcc:Version}), libstdc++-8-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: libhfstdc++6-8-dbg +X-DH-Build-For-Type: target +Architecture: armel +Section: debug +Priority: optional +Depends: gcc-8-base (= ${gcc:Version}), libhfstdc++6 (>= ${gcc:Version}), + libstdc++-8-dev (= ${gcc:Version}), , + ${shlibs:Depends}, ${misc:Depends} +Conflicts: libhfstdc++6-dbg, libhfstdc++6-4.3-dbg, libhfstdc++6-4.4-dbg, libhfstdc++6-4.5-dbg, libhfstdc++6-4.6-dbg, libhfstdc++6-4.7-dbg, libhfstdc++6-4.8-dbg, libhfstdc++6-4.9-dbg, libhfstdc++6-5-dbg, libhfstdc++6-6-dbg, libhfstdc++6-7-dbg, libstdc++6-armhf [armel] +Description: GNU Standard C++ Library v3 (debug build) + This package contains a debug build of the shared libstdc++ library. The debug + symbols for the default build can be found in the libstdc++6-dbgsym package. + +Package: libsfstdc++-8-dev +X-DH-Build-For-Type: target +Architecture: armhf +Section: libdevel +Priority: optional +Depends: gcc-8-base (= ${gcc:Version}), libsfgcc-8-dev (= ${gcc:Version}), + libsfstdc++6 (>= ${gcc:Version}), libstdc++-8-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: libsfstdc++6-8-dbg +X-DH-Build-For-Type: target +Architecture: armhf +Section: debug +Priority: optional +Depends: gcc-8-base (= ${gcc:Version}), libsfstdc++6 (>= ${gcc:Version}), + libstdc++-8-dev (= ${gcc:Version}), , + ${shlibs:Depends}, ${misc:Depends} +Conflicts: libsfstdc++6-dbg, libsfstdc++6-4.3-dbg, libsfstdc++6-4.4-dbg, libsfstdc++6-4.5-dbg, libsfstdc++6-4.6-dbg, libsfstdc++6-4.7-dbg, libsfstdc++6-4.8-dbg, libsfstdc++6-4.9-dbg, libsfstdc++6-5-dbg, libhfstdc++6-6-dbg, libhfstdc++6-7-dbg, libstdc++6-armel [armhf] +Description: GNU Standard C++ Library v3 (debug build) + This package contains a debug build of the shared libstdc++ library. The debug + symbols for the default build can be found in the libstdc++6-dbgsym package. + +Package: libstdc++-8-doc +Architecture: all +Section: doc +Priority: optional +Depends: gcc-8-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, +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-8 +Architecture: any +Priority: optional +Pre-Depends: ${misc:Pre-Depends} +Depends: gcc-8-base (= ${gcc:Version}), gcc-8 (>= ${gcc:SoftVersion}), ${dep:libgnat}, ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gnat-8-doc, ada-reference-manual-2012, gnat-8-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, +# 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: gnat-8-sjlj +Architecture: any +Priority: optional +Pre-Depends: ${misc:Pre-Depends} +Depends: gcc-8-base (= ${gcc:Version}), gnat-8 (= ${gnat:Version}), ${misc:Depends} +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. + +Package: libgnat-8 +X-DH-Build-For-Type: target +Section: libs +Architecture: any +Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +Priority: optional +Depends: gcc-8-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: libgnatvsn8-dev +X-DH-Build-For-Type: target +Section: libdevel +Architecture: any +Priority: optional +Depends: gcc-8-base (= ${gcc:Version}), gnat-8 (= ${gnat:Version}), + libgnatvsn8 (= ${gnat:Version}), ${misc:Depends} +Conflicts: libgnatvsn-dev (<< 8), + 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: libgnatvsn8 +X-DH-Build-For-Type: target +Architecture: any +Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +Priority: optional +Section: libs +Depends: gcc-8-base (= ${gcc:Version}), libgnat-8 (= ${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: gnat-8-doc +Architecture: all +Section: doc +Priority: optional +Depends: dpkg (>= 1.15.4) | install-info, ${misc:Depends} +Suggests: gnat-8 +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, +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. + +Package: gdc-8 +Architecture: any +Priority: optional +Depends: gcc-8-base (>= ${gcc:SoftVersion}), g++-8 (>= ${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-8-multilib +Architecture: any +Priority: optional +Depends: gcc-8-base (>= ${gcc:SoftVersion}), gdc-8 (= ${gcc:Version}), gcc-8-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-8-dev +X-DH-Build-For-Type: target +Architecture: amd64 arm64 armel armhf i386 x32 kfreebsd-amd64 kfreebsd-i386 +Multi-Arch: same +Section: libdevel +Priority: optional +Depends: gcc-8-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-8-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-8-base (= ${gcc:Version}), lib64gphobos76 (>= ${gdc:Version}), + lib64gcc-8-dev (= ${gcc:Version}), lib64z1-dev, ${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-8-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-8-base (= ${gcc:Version}), lib32gphobos76 (>= ${gdc:Version}), + lib32gcc-8-dev (= ${gcc:Version}), lib32z1-dev, ${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: libx32gphobos-8-dev +X-DH-Build-For-Type: target +Architecture: amd64 i386 +Section: libdevel +Priority: optional +Depends: gcc-8-base (= ${gcc:Version}), libx32gphobos76 (>= ${gdc:Version}), + libx32gcc-8-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: libhfgphobos-8-dev +X-DH-Build-For-Type: target +Architecture: armel +Section: libdevel +Priority: optional +Depends: gcc-8-base (= ${gcc:Version}), libhfgphobos76 (>= ${gdc:Version}), + libhfgcc-8-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +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-8-dev +X-DH-Build-For-Type: target +Architecture: armhf +Section: libdevel +Priority: optional +Depends: gcc-8-base (= ${gcc:Version}), libsfgphobos76 (>= ${gdc:Version}), + libsfgcc-8-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +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/ + +Package: gccbrig-8 +Architecture: any +Priority: optional +Depends: gcc-8-base (= ${gcc:Version}), gcc-8 (= ${gcc:Version}), ${dep:libcdev}, + hsail-tools, + ${shlibs:Depends}, libhsail-rt-8-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: ${gccbrig:multilib}, +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-8-dev +X-DH-Build-For-Type: target +Architecture: any +Section: libdevel +Priority: optional +Depends: gcc-8-base (= ${gcc:Version}), libgcc-8-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: 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-8-doc +Architecture: all +Section: doc +Priority: optional +Depends: gcc-8-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. + +Package: gcc-8-offload-nvptx +Architecture: amd64 +Priority: optional +Depends: gcc-8-base (= ${gcc:Version}), gcc-8 (= ${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 +Multi-Arch: same +Section: libs +Depends: gcc-8-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: gcc-8-source +Multi-Arch: foreign +Architecture: all +Priority: optional +Depends: make, quilt, patchutils, sharutils, gawk, lsb-release, m4, libtool, autoconf2.64, + ${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). --- gcc-8-8.3.0.orig/debian/control.m4 +++ gcc-8-8.3.0/debian/control.m4 @@ -0,0 +1,5959 @@ +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'))') +')') +ifelse(index(enabled_languages, `libdbg'), -1, ` +define(`libdbgdep', `') +',` +define(`libdbgdep', `lib$2$1`'LS`'AQ (ifelse(`$3',`',`>=',`$3') ifelse(`$4',`',`${gcc:Version}',`$4'))') +')`'dnl libdbg + +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.1 +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], + gawk, 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, 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 + gawk, DWZ, libunwind8-dev [ia64], libatomic-ops-dev [ia64], + 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 + 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/tree/gcc-8-debian +Vcs-Git: https://salsa.debian.org/toolchain-team/gcc.git -b gcc-8-debian +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}, ${dep:ecj}, python, ${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 + +ifenabled(`libdbg',` +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 +')`'dnl libdbg + +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 + +ifenabled(`libdbg',` +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 libdbg +')`'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:libmpx}, + ${dep:libqmath}, ${dep:libunwinddev}, ${shlibs:Depends}, ${misc:Depends} +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +Replaces: gccgo-8 (<< ${gcc:Version}) +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 + +ifenabled(`libdbg',` +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 +')`'dnl libdbg + +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 + +ifenabled(`libdbg',` +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 libdbg +')`'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:libmpxbiarch}, + ${dep:libqmathbiarch}, ${shlibs:Depends}, ${misc:Depends} +Replaces: gccgo-8-multilib (<< ${gcc:Version}) +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 + +ifenabled(`libdbg',` +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 libdbg +')`'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:libmpxbiarch}, + ${dep:libqmathbiarch}, ${shlibs:Depends}, ${misc:Depends} +Replaces: gccgo-8-multilib (<< ${gcc:Version}) +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 + +ifenabled(`libdbg',` +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 libdbg +')`'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:libmpxbiarch}, + ${dep:libqmathbiarch}, ${shlibs:Depends}, ${misc:Depends} +Replaces: gccgo-8-multilib (<< ${gcc:Version}) +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 + +ifenabled(`libdbg',` +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 libdbg +')`'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:libmpxbiarch}, + ${dep:libqmathbiarch}, ${shlibs:Depends}, ${misc:Depends} +Replaces: gccgo-8-multilib (<< ${gcc:Version}) +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 + +ifenabled(`libdbg',` +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 libdbg +')`'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:libmpxbiarch}, + ${dep:libqmathbiarch}, ${shlibs:Depends}, ${misc:Depends} +Replaces: gccgo-8-multilib (<< ${gcc:Version}) +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 + +ifenabled(`libdbg',` +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 libdbg +')`'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:libmpxbiarch}, + ${dep:libqmathbiarch}, ${shlibs:Depends}, ${misc:Depends} +Replaces: gccgo-8-multilib (<< ${gcc:Version}) +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: gccgo-8 (<< ${gcc:Version}), 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(mpx`'MPX_SO-dbg,), + 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}) +Replaces: gccgo-8 (<< ${gcc:Version}) +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. + +ifenabled(`libdbg',` +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. +')`'dnl libdbg + +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. + +ifenabled(`libdbg',` +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. +')`'dnl libdbg + +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. + +ifenabled(`libdbg',` +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. +')`'dnl libdbg + +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. + +ifenabled(`libdbg',` +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 +')`'dnl libdbg + +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. + +ifenabled(`libdbg',` +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 libdbg +')`'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. + +ifenabled(`libdbg',` +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 libdbg +')`'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. + +ifenabled(`libdbg',` +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 libdbg +')`'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. + +ifenabled(`libdbg',` +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. +')`'dnl libdbg + +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. + +ifenabled(`libdbg',` +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. +')`'dnl libdbg + +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. + +ifenabled(`libdbg',` +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. +')`'dnl libdbg + +#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. + +ifenabled(`libdbg',` +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 libdbg +')`'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. + +ifenabled(`libdbg',` +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 libdbg +')`'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. + +ifenabled(`libdbg',` +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 libdbg +')`'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. + +ifenabled(`libdbg',` +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. +')`'dnl libdbg + +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. + +ifenabled(`libdbg',` +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. +')`'dnl libdbg + +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. + +ifenabled(`libdbg',` +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. +')`'dnl libdbg + +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. + +ifenabled(`libdbg',` +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. +')`'dnl libdbg + +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. + +ifenabled(`libdbg',` +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 libdbg +')`'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. + +ifenabled(`libdbg',` +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 libdbg +')`'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. + +ifenabled(`libdbg',` +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 libdbg +')`'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. + +ifenabled(`libdbg',` +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. +')`'dnl libdbg + +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. + +ifenabled(`libdbg',` +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. +')`'dnl libdbg + +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. + +ifenabled(`libdbg',` +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. +')`'dnl libdbg + +#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. + +ifenabled(`libdbg',` +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 libdbg +')`'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. + +ifenabled(`libdbg',` +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 libdbg +')`'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. + +ifenabled(`libdbg',` +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 libdbg +')`'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. + +ifenabled(`libdbg',` +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. +')`'dnl libdbg + +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). + +ifenabled(`libdbg',` +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 libdbg +')`'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. + +ifenabled(`libdbg',` +#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 libdbg +')`'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. + +ifenabled(`libdbg',` +#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 libdbg +')`'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). + +ifenabled(`libdbg',` +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 libdbg +')`'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. + +ifenabled(`libdbg',` +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 libdbg +')`'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. + +ifenabled(`libdbg',` +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 libdbg +')`'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. + +ifenabled(`libdbg',` +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. +')`'dnl libdbg + +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. + +ifenabled(`libdbg',` +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 libdbg +')`'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. + +ifenabled(`libdbg',` +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 libdbg +')`'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. + +ifenabled(`libdbg',` +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 libdbg +')`'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. + +ifenabled(`libdbg',` +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 libdbg +')`'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. + +ifenabled(`libdbg',` +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 libdbg +')`'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. + +ifenabled(`libdbg',` +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 libdbg +')`'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++. + +ifenabled(`libdbg',` +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++. +')`'dnl libdbg + +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++. + +ifenabled(`libdbg',` +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 libdbg +')`'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++. + +ifenabled(`libdbg',` +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 libdbg +')`'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++. + +ifenabled(`libdbg',` +#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 libdbg +')`'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++. + +ifenabled(`libdbg',` +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 libdbg +')`'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++. + +ifenabled(`libdbg',` +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 libdbg +')`'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++. + +ifenabled(`libdbg',` +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 libdbg +')`'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. + +ifenabled(`libdbg',` +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. +')`'dnl libdbg + +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. + +ifenabled(`libdbg',` +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 libdbg +')`'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. + +ifenabled(`libdbg',` +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 libdbg +')`'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. + +ifenabled(`libdbg',` +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 libdbg +')`'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. + +ifenabled(`libdbg',` +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 libdbg +')`'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. + +ifenabled(`libdbg',` +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 libdbg +')`'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. + +ifenabled(`libdbg',` +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 libdbg +')`'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(`libmpx',` +Package: libmpx`'MPX_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`TARGET',`',`Provides: libmpx'MPX_SO`-armel [armel], libmpx'MPX_SO`-armhf [armhf] +')`'dnl +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +')`'dnl +Priority: optional +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +Replaces: libmpx0 (<< 6-20160120-1) +BUILT_USING`'dnl +Description: Intel memory protection extensions (runtime) + Intel MPX is a set of processor features which, with compiler, + runtime library and OS support, brings increased robustness to + software by checking pointer references whose compile time normal + intentions are usurped at runtime due to buffer overflow. + +ifenabled(`libdbg',` +Package: libmpx`'MPX_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(mpx`'MPX_SO,,=), ${misc:Depends} +ifdef(`TARGET',`',`Provides: libmpx'MPX_SO`-dbg-armel [armel], libmpx'MPX_SO`-dbg-armhf [armhf] +')`'dnl +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +BUILT_USING`'dnl +Description: Intel memory protection extensions (debug symbols) + Intel MPX is a set of processor features which, with compiler, + runtime library and OS support, brings increased robustness to + software by checking pointer references whose compile time normal + intentions are usurped at runtime due to buffer overflow. +')`'dnl libdbg + +ifenabled(`lib32mpx',` +Package: lib32mpx`'MPX_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: lib32mpx0 (<< 6-20160120-1) +BUILT_USING`'dnl +Description: Intel memory protection extensions (32bit) + Intel MPX is a set of processor features which, with compiler, + runtime library and OS support, brings increased robustness to + software by checking pointer references whose compile time normal + intentions are usurped at runtime due to buffer overflow. + +ifenabled(`libdbg',` +Package: lib32mpx`'MPX_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(mpx`'MPX_SO,32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: Intel memory protection extensions (32 bit debug symbols) + Intel MPX is a set of processor features which, with compiler, + runtime library and OS support, brings increased robustness to + software by checking pointer references whose compile time normal + intentions are usurped at runtime due to buffer overflow. +')`'dnl libdbg +')`'dnl lib32mpx + +ifenabled(`lib64mpx',` +Package: lib64mpx`'MPX_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: lib64mpx0 (<< 6-20160120-1) +BUILT_USING`'dnl +Description: Intel memory protection extensions (64bit) + Intel MPX is a set of processor features which, with compiler, + runtime library and OS support, brings increased robustness to + software by checking pointer references whose compile time normal + intentions are usurped at runtime due to buffer overflow. + +ifenabled(`libdbg',` +Package: lib64mpx`'MPX_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(mpx`'MPX_SO,64,=), ${misc:Depends} +BUILT_USING`'dnl +Description: Intel memory protection extensions (64bit debug symbols) + Intel MPX is a set of processor features which, with compiler, + runtime library and OS support, brings increased robustness to + software by checking pointer references whose compile time normal + intentions are usurped at runtime due to buffer overflow. +')`'dnl libdbg +')`'dnl lib64mpx + +ifenabled(`libn32mpx',` +Package: libn32mpx`'MPX_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: Intel memory protection extensions (n32) + Intel MPX is a set of processor features which, with compiler, + runtime library and OS support, brings increased robustness to + software by checking pointer references whose compile time normal + intentions are usurped at runtime due to buffer overflow. + +ifenabled(`libdbg',` +Package: libn32mpx`'MPX_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(mpx`'MPX_SO,n32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: Intel memory protection extensions (n32 debug symbols) + Intel MPX is a set of processor features which, with compiler, + runtime library and OS support, brings increased robustness to + software by checking pointer references whose compile time normal + intentions are usurped at runtime due to buffer overflow. +')`'dnl libdbg +')`'dnl libn32mpx + +ifenabled(`libx32mpx',` +Package: libx32mpx`'MPX_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: Intel memory protection extensions (x32) + Intel MPX is a set of processor features which, with compiler, + runtime library and OS support, brings increased robustness to + software by checking pointer references whose compile time normal + intentions are usurped at runtime due to buffer overflow. + +ifenabled(`libdbg',` +Package: libx32mpx`'MPX_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(mpx`'MPX_SO,x32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: Intel memory protection extensions (x32 debug symbols) + Intel MPX is a set of processor features which, with compiler, + runtime library and OS support, brings increased robustness to + software by checking pointer references whose compile time normal + intentions are usurped at runtime due to buffer overflow. +')`'dnl libdbg +')`'dnl libx32mpx + +ifenabled(`libhfmpx',` +Package: libhfmpx`'MPX_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: libmpx'MPX_SO`-armhf [biarchhf_archs]') +BUILT_USING`'dnl +Description: Intel memory protection extensions (hard float ABI) + Intel MPX is a set of processor features which, with compiler, + runtime library and OS support, brings increased robustness to + software by checking pointer references whose compile time normal + intentions are usurped at runtime due to buffer overflow. + +ifenabled(`libdbg',` +Package: libhfmpx`'MPX_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(mpx`'MPX_SO,hf,=), ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: libmpx'MPX_SO`-armel [biarchsf_archs]') +BUILT_USING`'dnl +Description: Intel memory protection extensions (hard float ABI debug symbols) + Intel MPX is a set of processor features which, with compiler, + runtime library and OS support, brings increased robustness to + software by checking pointer references whose compile time normal + intentions are usurped at runtime due to buffer overflow. +')`'dnl libdbg +')`'dnl libhfmpx + +ifenabled(`libsfmpx',` +Package: libsfmpx`'MPX_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: Intel memory protection extensions (soft float ABI) + Intel MPX is a set of processor features which, with compiler, + runtime library and OS support, brings increased robustness to + software by checking pointer references whose compile time normal + intentions are usurped at runtime due to buffer overflow. + +ifenabled(`libdbg',` +Package: libsfmpx`'MPX_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(mpx`'MPX_SO,sf,=), ${misc:Depends} +BUILT_USING`'dnl +Description: Intel memory protection extensions (soft float ABI debug symbols) + Intel MPX is a set of processor features which, with compiler, + runtime library and OS support, brings increased robustness to + software by checking pointer references whose compile time normal + intentions are usurped at runtime due to buffer overflow. +')`'dnl libdbg +')`'dnl libsfmpx +')`'dnl libmpx + +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. + +ifenabled(`libdbg',` +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. +')`'dnl libdbg + +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. + +ifenabled(`libdbg',` +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. +')`'dnl libdbg + +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. + +ifenabled(`libdbg',` +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. +')`'dnl libdbg + +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. + +ifenabled(`libdbg',` +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. +')`'dnl libdbg + +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. + +ifenabled(`libdbg',` +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 libdbg +')`'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. + +ifenabled(`libdbg',` +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 libdbg +')`'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. + +ifenabled(`libdbg',` +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 libdbg +')`'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. + +ifenabled(`libdbg',` +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. +')`'dnl libdbg + +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. + +ifenabled(`libdbg',` +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. +')`'dnl libdbg + +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. + +ifenabled(`libdbg',` +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. +')`'dnl libdbg + +#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. + +ifenabled(`libdbg',` +#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. +')`'dnl libdbg + +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. + +ifenabled(`libdbg',` +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 libdbg +')`'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. + +ifenabled(`libdbg',` +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 libdbg +')`'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. + +ifenabled(`libdbg',` +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 libdbg +')`'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. + +ifenabled(`libdbg',` +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} +Breaks: libgccjit-5-dbg, libgccjit-6-dbg +Replaces: libgccjit-5-dbg, libgccjit-6-dbg +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 libdbg +')`'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 +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. + +ifenabled(`libdbg',` +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 libdbg +')`'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. + +ifenabled(`libdbg',` +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 libdbg +')`'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. + +ifenabled(`libdbg',` +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 libdbg +')`'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. + +ifenabled(`libdbg',` +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 libdbg +')`'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. + +ifenabled(`libdbg',` +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 libdbg +')`'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. + +ifenabled(`libdbg',` +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 libdbg +')`'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. + +ifenabled(`libdbg',` +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 libdbg +')`'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. + +ifenabled(`libdbg',` +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 libdbg +')`'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. + +ifenabled(`libdbg',` +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 libdbg +')`'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. + +ifenabled(`libdbg',` +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 libdbg +')`'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. + +ifenabled(`libdbg',` +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 libdbg +')`'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. + +ifenabled(`libdbg',` +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 libdbg +')`'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. + +ifenabled(`libdbg',` +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 libdbg +')`'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. + +ifenabled(`libdbg',` +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 libdbg +')`'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`'GO_SO,,>=), ${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} +Breaks: libgo12`'LS (<< 8-20171209-2) +Replaces: libgo12`'LS (<< 8-20171209-2) +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:libgobiarch}, ${shlibs:Depends}, ${misc:Depends} +Suggests: ${dep:libgobiarchdbg} +Breaks: lib32go12 (<< 8-20171209-2), + libn32go12`'LS (<< 8-20171209-2), + libx32go12`'LS (<< 8-20171209-2), + lib64go12`'LS (<< 8-20171209-2) +Replaces: lib32go12`'LS (<< 8-20171209-2), + libn32go12`'LS (<< 8-20171209-2), + libx32go12`'LS (<< 8-20171209-2), + lib64go12`'LS (<< 8-20171209-2) +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 +')`'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. + +ifenabled(`libdbg',` +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 libdbg +')`'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. + +ifenabled(`libdbg',` +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 libdbg +')`'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. + +ifenabled(`libdbg',` +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 libdbg +')`'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. + +ifenabled(`libdbg',` +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 libdbg +')`'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. + +ifenabled(`libdbg',` +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 libdbg +')`'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}, PR66145BREAKS +')`'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 +BUILT_USING`'dnl +ifelse(index(enabled_languages, `libdbg'), -1, `dnl +Description: GNU Standard C++ Library v3 (debug build)`'ifdef(`TARGET',` (TARGET)', `') + This package contains a debug build of the shared libstdc++ library. The debug + symbols for the default build can be found in the libstdc++6-dbgsym package. +',`dnl +Description: GNU Standard C++ Library v3 (debugging files)`'ifdef(`TARGET',` (TARGET)', `') + This package contains the shared library of libstdc++ compiled with + debugging symbols. +')`'dnl +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 +BUILT_USING`'dnl +ifelse(index(enabled_languages, `libdbg'), -1, `dnl +Description: GNU Standard C++ Library v3 (debug build)`'ifdef(`TARGET',` (TARGET)', `') + This package contains a debug build of the shared libstdc++ library. The debug + symbols for the default build can be found in the libstdc++6-dbgsym package. +',`dnl +Description: GNU Standard C++ Library v3 (debugging files)`'ifdef(`TARGET',` (TARGET)', `') + This package contains the shared library of libstdc++ compiled with + debugging symbols. +')`'dnl +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, +BUILT_USING`'dnl +ifelse(index(enabled_languages, `libdbg'), -1, `dnl +Description: GNU Standard C++ Library v3 (debug build)`'ifdef(`TARGET',` (TARGET)', `') + This package contains a debug build of the shared libstdc++ library. The debug + symbols for the default build can be found in the libstdc++6-dbgsym package. +',`dnl +Description: GNU Standard C++ Library v3 (debugging files)`'ifdef(`TARGET',` (TARGET)', `') + This package contains the shared library of libstdc++ compiled with + debugging symbols. +')`'dnl +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, +BUILT_USING`'dnl +ifelse(index(enabled_languages, `libdbg'), -1, `dnl +Description: GNU Standard C++ Library v3 (debug build)`'ifdef(`TARGET',` (TARGET)', `') + This package contains a debug build of the shared libstdc++ library. The debug + symbols for the default build can be found in the libstdc++6-dbgsym package. +',`dnl +Description: GNU Standard C++ Library v3 (debugging files)`'ifdef(`TARGET',` (TARGET)', `') + This package contains the shared library of libstdc++ compiled with + debugging symbols. +')`'dnl +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, +BUILT_USING`'dnl +ifelse(index(enabled_languages, `libdbg'), -1, `dnl +Description: GNU Standard C++ Library v3 (debug build)`'ifdef(`TARGET',` (TARGET)', `') + This package contains a debug build of the shared libstdc++ library. The debug + symbols for the default build can be found in the libstdc++6-dbgsym package. +',`dnl +Description: GNU Standard C++ Library v3 (debugging files)`'ifdef(`TARGET',` (TARGET)', `') + This package contains the shared library of libstdc++ compiled with + debugging symbols. +')`'dnl +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 +ifelse(index(enabled_languages, `libdbg'), -1, `dnl +Description: GNU Standard C++ Library v3 (debug build)`'ifdef(`TARGET',` (TARGET)', `') + This package contains a debug build of the shared libstdc++ library. The debug + symbols for the default build can be found in the libstdc++6-dbgsym package. +',`dnl +Description: GNU Standard C++ Library v3 (debugging files)`'ifdef(`TARGET',` (TARGET)', `') + This package contains the shared library of libstdc++ compiled with + debugging symbols. +')`'dnl +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 +ifelse(index(enabled_languages, `libdbg'), -1, `dnl +Description: GNU Standard C++ Library v3 (debug build)`'ifdef(`TARGET',` (TARGET)', `') + This package contains a debug build of the shared libstdc++ library. The debug + symbols for the default build can be found in the libstdc++6-dbgsym package. +',`dnl +Description: GNU Standard C++ Library v3 (debugging files)`'ifdef(`TARGET',` (TARGET)', `') + This package contains the shared library of libstdc++ compiled with + debugging symbols. +')`'dnl +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, +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, +# 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. + +ifenabled(`libdbg',` +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. +')`'dnl libdbg + +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. + +ifenabled(`libdbg',` +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 libdbg +')`'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, +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,') ${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,') ${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,') ${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 +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/ + +ifenabled(`libdbg',` +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/ +')`'dnl libdbg + +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/ + +ifenabled(`libdbg',` +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/ +')`'dnl libdbg + +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/ + +ifenabled(`libdbg',` +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/ +')`'dnl libdbg + +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/ + +ifenabled(`libdbg',` +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 libdbg +')`'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/ + +ifenabled(`libdbg',` +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 libdbg +')`'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/ + +ifenabled(`libdbg',` +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/ +')`'dnl libdbg + +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/ + +ifenabled(`libdbg',` +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 libdbg +')`'dnl armml +')`'dnl libphobos +')`'dnl d + +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. + +ifenabled(`libdbg',` +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 libdbg +')`'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. + +ifenabled(`libdbg',` +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 libdbg +')`'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. + +ifenabled(`libdbg',` +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 libdbg +')`'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. + +ifenabled(`libdbg',` +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 libdbg +')`'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. + +ifenabled(`libdbg',` +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 libdbg +')`'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. + +ifenabled(`libdbg',` +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 libdbg +')`'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. + +ifenabled(`libdbg',` +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 libdbg +')`'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(`fixincl',` +Package: fixincludes +Architecture: any +Priority: PRI(optional) +Depends: BASEDEP, gcc`'PV (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Fix non-ANSI header files + FixIncludes was created to fix non-ANSI system header files. Many + system manufacturers supply proprietary headers that are not ANSI compliant. + The GNU compilers cannot compile non-ANSI headers. Consequently, the + FixIncludes shell script was written to fix the header files. + . + Not all packages with header files are installed on the system, when the + package is built, so we make fixincludes available at build time of other + packages, such that checking tools like lintian can make use of it. +')`'dnl fixincl + +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 +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 +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 + +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 --- gcc-8-8.3.0.orig/debian/copyright +++ gcc-8-8.3.0/debian/copyright @@ -0,0 +1,1404 @@ +This is the Debian GNU/Linux prepackaged version of the GNU compiler +collection, containing Ada, C, C++, Fortran 95, Objective-C, +Objective-C++, and Treelang compilers, documentation, and support +libraries. In addition, Debian provides the gdc 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) + http://bitbucket.org/goshawk/gdc (for D) + https://github.com/MentorEmbedded/nvptx-newlib/ (for newlib-nvptx) + +The current gcc-8 source package is taken from the SVN gcc-8-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-8 libgnat-8 gnat-8-doc +BRIG gccbrig-8 libhsail-rt0 +C gcc-8 gcc-8-doc +C++ g++-8 libstdc++6 libstdc++6-8-doc +D gdc-8 +Fortran 95 gfortran-8 libgfortran3 gfortran-8-doc +Go gccgo-8 libgo0 +Objective C gobjc-8 libobjc2 +Objective C++ gobjc++-8 + +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-8-dbg libstdc++6-8-pic +D libphobos-8-dev + +Additional packages include: + +All languages: +libgcc1, libgcc2, libgcc4 GCC intrinsics (platform-dependent) +gcc-8-base Base files common to all compilers +gcc-8-soft-float Software floating point (ARM only) +gcc-8-source The sources with patches + +Ada: +libgnatvsn-dev, libgnatvsn8 GNAT version library + +C: +cpp-8, cpp-8-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 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-8 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. + + +libmpx: + Copyright (C) 2009-2014, Intel Corporation + 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 Intel Corporation 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 + HOLDER 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-8 GNU D Compiler +libphobos-8-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 + . + +newlib-nvptx-20yymmdd/: + +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. --- gcc-8-8.3.0.orig/debian/copyright.in +++ gcc-8-8.3.0/debian/copyright.in @@ -0,0 +1,1404 @@ +This is the Debian GNU/Linux prepackaged version of the GNU compiler +collection, containing Ada, C, C++, Fortran 95, Objective-C, +Objective-C++, and Treelang compilers, documentation, and support +libraries. In addition, Debian provides the gdc 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) + http://bitbucket.org/goshawk/gdc (for D) + https://github.com/MentorEmbedded/nvptx-newlib/ (for newlib-nvptx) + +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@ + +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 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. + + +libmpx: + Copyright (C) 2009-2014, Intel Corporation + 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 Intel Corporation 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 + HOLDER 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 + . + +newlib-nvptx-20yymmdd/: + +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. --- gcc-8-8.3.0.orig/debian/cpp-BV-CRB.preinst.in +++ gcc-8-8.3.0/debian/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 --- gcc-8-8.3.0.orig/debian/cpp-BV-doc.doc-base.cpp +++ gcc-8-8.3.0/debian/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@* --- gcc-8-8.3.0.orig/debian/cpp-BV-doc.doc-base.cppint +++ gcc-8-8.3.0/debian/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@* --- gcc-8-8.3.0.orig/debian/dh_doclink +++ gcc-8-8.3.0/debian/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 --- gcc-8-8.3.0.orig/debian/dh_rmemptydirs +++ gcc-8-8.3.0/debian/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 --- gcc-8-8.3.0.orig/debian/dummy-man.1 +++ gcc-8-8.3.0/debian/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. --- gcc-8-8.3.0.orig/debian/dummy.texi +++ gcc-8-8.3.0/debian/dummy.texi @@ -0,0 +1 @@ +@c This file is empty because the original one has a non DFSG free license (GFDL) --- gcc-8-8.3.0.orig/debian/fixincludes.in +++ gcc-8-8.3.0/debian/fixincludes.in @@ -0,0 +1,8 @@ +#! /bin/sh + +PATH="/@LIBEXECDIR@/install-tools:$PATH" + +TARGET_MACHINE=`dpkg-architecture -qDEB_HOST_GNU_TYPE` +export TARGET_MACHINE + +exec fixinc.sh "$@" --- gcc-8-8.3.0.orig/debian/g++-BV-CRB.preinst.in +++ gcc-8-8.3.0/debian/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 --- gcc-8-8.3.0.orig/debian/gcc-BV-CRB.preinst.in +++ gcc-8-8.3.0/debian/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 --- gcc-8-8.3.0.orig/debian/gcc-BV-doc.doc-base.gcc +++ gcc-8-8.3.0/debian/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@* --- gcc-8-8.3.0.orig/debian/gcc-BV-doc.doc-base.gccint +++ gcc-8-8.3.0/debian/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@* --- gcc-8-8.3.0.orig/debian/gcc-BV-doc.doc-base.gomp +++ gcc-8-8.3.0/debian/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@* --- gcc-8-8.3.0.orig/debian/gcc-BV-doc.doc-base.itm +++ gcc-8-8.3.0/debian/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@* --- gcc-8-8.3.0.orig/debian/gcc-BV-doc.doc-base.qmath +++ gcc-8-8.3.0/debian/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@* --- gcc-8-8.3.0.orig/debian/gcc-BV-hppa64-linux-gnu.overrides +++ gcc-8-8.3.0/debian/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 --- gcc-8-8.3.0.orig/debian/gcc-BV-multilib.overrides +++ gcc-8-8.3.0/debian/gcc-BV-multilib.overrides @@ -0,0 +1 @@ +gcc-@BV@-multilib binary: binary-from-other-architecture --- gcc-8-8.3.0.orig/debian/gcc-BV-source.overrides +++ gcc-8-8.3.0/debian/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 --- gcc-8-8.3.0.orig/debian/gcc-XX-BV.1 +++ gcc-8-8.3.0/debian/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) --- gcc-8-8.3.0.orig/debian/gcc-dummy.texi +++ gcc-8-8.3.0/debian/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 --- gcc-8-8.3.0.orig/debian/gcc-snapshot.overrides +++ gcc-8-8.3.0/debian/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 --- gcc-8-8.3.0.orig/debian/gcc-snapshot.prerm +++ gcc-8-8.3.0/debian/gcc-snapshot.prerm @@ -0,0 +1,5 @@ +#! /bin/sh -e + +rm -f /usr/lib/gcc-snapshot/share/python/*.py[co] + +#DEBHELPER# --- gcc-8-8.3.0.orig/debian/gcc.css +++ gcc-8-8.3.0/debian/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; } --- gcc-8-8.3.0.orig/debian/gccgo-BV-doc.doc-base +++ gcc-8-8.3.0/debian/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@* --- gcc-8-8.3.0.orig/debian/gen-libstdc-breaks.sh +++ gcc-8-8.3.0/debian/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 --- gcc-8-8.3.0.orig/debian/gfortran-BV-CRB.preinst.in +++ gcc-8-8.3.0/debian/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 --- gcc-8-8.3.0.orig/debian/gfortran-BV-doc.doc-base +++ gcc-8-8.3.0/debian/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@* --- gcc-8-8.3.0.orig/debian/gnat-BV-doc.doc-base.rm +++ gcc-8-8.3.0/debian/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@* --- gcc-8-8.3.0.orig/debian/gnat-BV-doc.doc-base.style +++ gcc-8-8.3.0/debian/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@* --- gcc-8-8.3.0.orig/debian/gnat-BV-doc.doc-base.ug +++ gcc-8-8.3.0/debian/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@* --- gcc-8-8.3.0.orig/debian/gnat.1 +++ gcc-8-8.3.0/debian/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. --- gcc-8-8.3.0.orig/debian/lib32asan5.overrides +++ gcc-8-8.3.0/debian/lib32asan5.overrides @@ -0,0 +1,2 @@ +# automake gets it wrong for the multilib build +lib32asan5 binary: binary-or-shlib-defines-rpath --- gcc-8-8.3.0.orig/debian/lib32asan5.symbols +++ gcc-8-8.3.0/debian/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 --- gcc-8-8.3.0.orig/debian/lib32gccLC.postinst +++ gcc-8-8.3.0/debian/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# --- gcc-8-8.3.0.orig/debian/lib32gphobos68.lintian-overrides +++ gcc-8-8.3.0/debian/lib32gphobos68.lintian-overrides @@ -0,0 +1,2 @@ +# no usable zconf.h header in lib32z1-dev +lib32gphobos68 binary: embedded-library --- gcc-8-8.3.0.orig/debian/lib32stdc++6.symbols.amd64 +++ gcc-8-8.3.0/debian/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 --- gcc-8-8.3.0.orig/debian/lib32stdc++6.symbols.kfreebsd-amd64 +++ gcc-8-8.3.0/debian/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 --- gcc-8-8.3.0.orig/debian/lib32stdc++6.symbols.ppc64 +++ gcc-8-8.3.0/debian/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 --- gcc-8-8.3.0.orig/debian/lib32stdc++6.symbols.s390x +++ gcc-8-8.3.0/debian/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 --- gcc-8-8.3.0.orig/debian/lib32stdc++6.symbols.sparc64 +++ gcc-8-8.3.0/debian/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 --- gcc-8-8.3.0.orig/debian/lib32stdc++CXX.postinst +++ gcc-8-8.3.0/debian/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# --- gcc-8-8.3.0.orig/debian/lib64asan5.overrides +++ gcc-8-8.3.0/debian/lib64asan5.overrides @@ -0,0 +1,2 @@ +# automake gets it wrong for the multilib build +lib64asan5 binary: binary-or-shlib-defines-rpath --- gcc-8-8.3.0.orig/debian/lib64asan5.symbols +++ gcc-8-8.3.0/debian/lib64asan5.symbols @@ -0,0 +1,3 @@ +libasan.so.5 lib64asan5 #MINVER# +#include "libasan.symbols.common" +#include "libasan.symbols.64" --- gcc-8-8.3.0.orig/debian/lib64gccLC.postinst +++ gcc-8-8.3.0/debian/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# --- gcc-8-8.3.0.orig/debian/lib64gphobos68.lintian-overrides +++ gcc-8-8.3.0/debian/lib64gphobos68.lintian-overrides @@ -0,0 +1,2 @@ +# no usable zconf.h header in lib64z1-dev +lib64gphobos68 binary: embedded-library --- gcc-8-8.3.0.orig/debian/lib64stdc++6.symbols.i386 +++ gcc-8-8.3.0/debian/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 --- gcc-8-8.3.0.orig/debian/lib64stdc++6.symbols.powerpc +++ gcc-8-8.3.0/debian/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 --- gcc-8-8.3.0.orig/debian/lib64stdc++6.symbols.s390 +++ gcc-8-8.3.0/debian/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 --- gcc-8-8.3.0.orig/debian/lib64stdc++6.symbols.sparc +++ gcc-8-8.3.0/debian/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 --- gcc-8-8.3.0.orig/debian/lib64stdc++CXX.postinst +++ gcc-8-8.3.0/debian/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# --- gcc-8-8.3.0.orig/debian/libasan.symbols.16 +++ gcc-8-8.3.0/debian/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 --- gcc-8-8.3.0.orig/debian/libasan.symbols.32 +++ gcc-8-8.3.0/debian/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 --- gcc-8-8.3.0.orig/debian/libasan.symbols.64 +++ gcc-8-8.3.0/debian/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 --- gcc-8-8.3.0.orig/debian/libasan.symbols.common +++ gcc-8-8.3.0/debian/libasan.symbols.common @@ -0,0 +1,1716 @@ + OnPrint@Base 8 + _ZN11__sanitizer11CheckFailedEPKciS1_yy@Base 4.8 + _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_throw@Base 4.8 + __getdelim@Base 5 + __interceptor___cxa_atexit@Base 4.9 + __interceptor___cxa_throw@Base 4.8 + __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___strdup@Base 7 + __interceptor___strndup@Base 8 + __interceptor___uflow@Base 5 + __interceptor___underflow@Base 5 + __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_fgetxattr@Base 5 + __interceptor_flistxattr@Base 5 + __interceptor_fmemopen@Base 5 + __interceptor_fopen64@Base 5 + __interceptor_fopen@Base 5 + __interceptor_fopencookie@Base 6.2 + __interceptor_fork@Base 5 + __interceptor_fprintf@Base 5 + __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_modf@Base 4.9 + __interceptor_modff@Base 4.9 + __interceptor_modfl@Base 4.9 + __interceptor_mprobe@Base 8 + __interceptor_munlock@Base 4.8 + __interceptor_munlockall@Base 4.8 + __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_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_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_readv@Base 4.9 + __interceptor_realloc@Base 4.8 + __interceptor_realpath@Base 4.9 + __interceptor_recv@Base 7 + __interceptor_recvfrom@Base 7 + __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_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_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_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 + __sancov_default_options@Base 8 + __sancov_lowest_stack@Base 8 + __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_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 + __strdup@Base 7 + __strndup@Base 8 + __uflow@Base 5 + __underflow@Base 5 + __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 + fgetxattr@Base 5 + flistxattr@Base 5 + fmemopen@Base 5 + fopen64@Base 5 + fopen@Base 5 + fopencookie@Base 6.2 + fork@Base 5 + fprintf@Base 5 + 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 + modf@Base 4.9 + modff@Base 4.9 + modfl@Base 4.9 + mprobe@Base 8 + munlock@Base 4.8 + munlockall@Base 4.8 + 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_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 + 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 + readv@Base 4.9 + realloc@Base 4.8 + realpath@Base 4.9 + recv@Base 7 + recvfrom@Base 7 + 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 + 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 + 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 + 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 --- gcc-8-8.3.0.orig/debian/libasan5.symbols +++ gcc-8-8.3.0/debian/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 --- gcc-8-8.3.0.orig/debian/libatomic.symbols +++ gcc-8-8.3.0/debian/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 --- gcc-8-8.3.0.orig/debian/libcc1-0.symbols +++ gcc-8-8.3.0/debian/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 --- gcc-8-8.3.0.orig/debian/libgcc.symbols +++ gcc-8-8.3.0/debian/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)GCC_4.4.0 1:4.4 + (symver|arch=arm64 any-i386 mipsn32 mips64 mips64el)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 --- gcc-8-8.3.0.orig/debian/libgcc.symbols.aeabi +++ gcc-8-8.3.0/debian/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 --- gcc-8-8.3.0.orig/debian/libgcc2.symbols.m68k +++ gcc-8-8.3.0/debian/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 --- gcc-8-8.3.0.orig/debian/libgcc4.symbols.hppa +++ gcc-8-8.3.0/debian/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 --- gcc-8-8.3.0.orig/debian/libgccLC.postinst +++ gcc-8-8.3.0/debian/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# --- gcc-8-8.3.0.orig/debian/libgccjit0.symbols +++ gcc-8-8.3.0/debian/libgccjit0.symbols @@ -0,0 +1,12 @@ +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 --- gcc-8-8.3.0.orig/debian/libgfortran.symbols +++ gcc-8-8.3.0/debian/libgfortran.symbols @@ -0,0 +1,4 @@ +libgfortran.so.5 #PACKAGE# #MINVER# + (symver)GFORTRAN_8 8 + (symver)GFORTRAN_C99_8 8 + (symver)GFORTRAN_F2C_8 8 --- gcc-8-8.3.0.orig/debian/libgomp.symbols +++ gcc-8-8.3.0/debian/libgomp.symbols @@ -0,0 +1,19 @@ +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_PLUGIN_1.0 5 + (symver)GOMP_PLUGIN_1.1 6 + (symver)OACC_2.0 5 + (symver)OACC_2.0.1 8 + (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 --- gcc-8-8.3.0.orig/debian/libhsail-rt.symbols +++ gcc-8-8.3.0/debian/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 --- gcc-8-8.3.0.orig/debian/libitm.symbols +++ gcc-8-8.3.0/debian/libitm.symbols @@ -0,0 +1,3 @@ +libitm.so.1 #PACKAGE# #MINVER# + (symver)LIBITM_1.0 4.7 + (symver)LIBITM_1.1 6 --- gcc-8-8.3.0.orig/debian/liblsan0.symbols +++ gcc-8-8.3.0/debian/liblsan0.symbols @@ -0,0 +1,157 @@ +liblsan.so.0 liblsan0 #MINVER# + OnPrint@Base 8 + _ZN11__sanitizer11CheckFailedEPKciS1_yy@Base 4.9 + _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_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 --- gcc-8-8.3.0.orig/debian/libmpx.symbols +++ gcc-8-8.3.0/debian/libmpx.symbols @@ -0,0 +1,5 @@ +libmpx.so.2 #PACKAGE# #MINVER# + (symver)LIBMPX_1.0 5 + (symver)LIBMPX_2.0 6 +libmpxwrappers.so.2 #PACKAGE# #MINVER# + (symver)LIBMPXWRAPPERS_1.0 5 --- gcc-8-8.3.0.orig/debian/libobjc.symbols +++ gcc-8-8.3.0/debian/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 --- gcc-8-8.3.0.orig/debian/libobjc.symbols.common +++ gcc-8-8.3.0/debian/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 --- gcc-8-8.3.0.orig/debian/libobjc.symbols.gc +++ gcc-8-8.3.0/debian/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 --- gcc-8-8.3.0.orig/debian/libquadmath.symbols +++ gcc-8-8.3.0/debian/libquadmath.symbols @@ -0,0 +1,3 @@ +libquadmath.so.0 #PACKAGE# #MINVER# + (symver)QUADMATH_1.0 4.6 + (symver)QUADMATH_1.1 6 --- gcc-8-8.3.0.orig/debian/libstdc++-BV-doc.doc-base +++ gcc-8-8.3.0/debian/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++/* --- gcc-8-8.3.0.orig/debian/libstdc++-BV-doc.overrides +++ gcc-8-8.3.0/debian/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 --- gcc-8-8.3.0.orig/debian/libstdc++-breaks.Debian +++ gcc-8-8.3.0/debian/libstdc++-breaks.Debian @@ -0,0 +1,109 @@ +libantlr-dev (<= 2.7.7+dfsg-6), +libaqsis1 (<= 1.8.2-1), +libassimp3 (<= 3.0~dfsg-4), +blockattack (<= 1.4.1+ds1-2.1+b2), +boo (<= 0.9.5~git20110729.r1.202a430-2), +libboost-date-time1.54.0, +libboost-date-time1.55.0, +libcpprest2.4 (<= 2.4.0-2), +printer-driver-brlaser (<= 3-3), +c++-annotations (<= 10.2.0-1), +clustalx (<= 2.1+lgpl-3), +libdavix0 (<= 0.4.0-1+b1), +libdballe6 (<= 6.8-1), +dff (<= 1.3.0+dfsg.1-4.1+b3), +libdiet-sed2.8 (<= 2.8.0-1+b3), +libdiet-client2.8 (<= 2.8.0-1+b3), +libdiet-admin2.8 (<= 2.8.0-1+b3), +digikam-private-libs (<= 4:4.4.0-1.1+b2), +emscripten (<= 1.22.1-1), +ergo (<= 3.4.0-1), +fceux (<= 2.2.2+dfsg0-1), +flush (<= 0.9.12-3.1), +libfreefem++ (<= 3.37.1-1), +freeorion (<= 0.4.4+git20150327-2), +fslview (<= 4.0.1-4), +fwbuilder (<= 5.1.0-4), +libgazebo5 (<= 5.0.1+dfsg-2.1), +libgetfem4++ (<= 4.2.1~beta1~svn4635~dfsg-3+b1), +libgmsh2 (<= 2.9.3+dfsg1-1), +gnote (<= 3.16.2-1), +gnudatalanguage (<= 0.9.5-2+b2), +python-healpy (<= 1.8.1-1+b1), +innoextract (<= 1.4-1+b1), +libinsighttoolkit4.7 (<= 4.7.2-2), +libdap17 (<= 3.14.0-2), +libdapclient6 (<= 3.14.0-2), +libdapserver7 (<= 3.14.0-2), +libkolabxml1 (<= 1.1.0-3), +libpqxx-4.0 (<= 4.0.1+dfsg-3), +libreoffice-core (<= 1:4.4.5-2), +librime1 (<= 1.2+dfsg-2), +libwibble-dev (<= 1.1-1), +lightspark (<= 0.7.2+git20150512-2+b1), +libmarisa0 (<= 0.2.4-8), +mira-assembler (<= 4.9.5-1), +mongodb (<= 1:2.4.14-2), +mongodb-server (<= 1:2.4.14-2), +ncbi-blast+ (<= 2.2.30-4), +libogre-1.8.0 (<= 1.8.0+dfsg1-7+b1), +libogre-1.9.0 (<= 1.9.0+dfsg1-4), +openscad (<= 2014.03+dfsg-1+b1), +libopenwalnut1 (<= 1.4.0~rc1+hg3a3147463ee2-1+b1), +passepartout (<= 0.7.1-1.1), +pdf2djvu (<= 0.7.21-2), +photoprint (<= 0.4.2~pre2-2.3+b2), +plastimatch (<= 1.6.2+dfsg-1), +plee-the-bear (<= 0.6.0-3.1), +povray (<= 1:3.7.0.0-8), +powertop (<= 2.6.1-1), +psi4 (<= 4.0~beta5+dfsg-2+b1), +python3-taglib (<= 0.3.6+dfsg-2+b2), +realtimebattle (<= 1.0.8-14), +ruby-passenger (<= 5.0.7-1), +libapache2-mod-passenger (<= 5.0.7-1), +schroot (<= 1.6.10-1+b1), +sqlitebrowser (<= 3.5.1-3), +tecnoballz (<= 0.93.1-6), +wesnoth-1.12-core (<= 1:1.12.4-1), +widelands (<= 1:18-3+b1), +libwreport2 (<= 2.14-1), +xflr5 (<= 6.09.06-2), +libxmltooling6 (<= 1.5.3-2.1), +libchemps2-1 (<= 1.5-1), +python-fiona (<= 1.5.1-2), +python3-fiona (<= 1.5.1-2), +fiona (<= 1.5.1-2), +python-guiqwt (<= 2.3.1-1), +python-htseq (<= 0.5.4p3-2), +python-imposm (<= 2.5.0-3+b2), +python-pysph (<= 0~20150606.gitfa26de9-5), +python3-taglib (<= 0.3.6+dfsg-2+b2), +python-scipy (<= 0.14.1-1), +python3-scipy (<= 0.14.1-1), +python-sfml (<= 2.2~git20150611.196c88+dfsg-1+b1), +python3-sfml (<= 2.2~git20150611.196c88+dfsg-1+b1), +python-rasterio (<= 0.24.0-1), +libktoblzcheck1c2a, +libaqbanking34-plugins, +liblhapdf0, +libpythia8, +libxapian30 (<= 1.4.1-1~bpo8+1), +dnsdist (<< 1.3.3-3), +lambda-align (<< 1.0.3-5), +libllvm3.8, +libllvm3.9, +libllvm4.0, +mednafen (<< 1.22.1+dfsg-1), +nghttp2-proxy (<< 1.36.0-2), +osm2pgsql (<< 0.96.0+ds-2), +osmcoastline (<< 2.2.4-1), +osmium-tool (<< 1.10.0-1), +pdns-recursor (<< 4.1.11-1), +poedit (<< 2.2.1-2), +python-pyosmium (<< 2.15.1-1), +python3-pyosmium (<< 2.15.1-1), +seer (<< 1.1.4-2), +libsimgrid3.14, +undertaker (<< 1.6.1-4.2), +libusbguard0 (<< 0.7.4+ds-1), --- gcc-8-8.3.0.orig/debian/libstdc++-breaks.Ubuntu +++ gcc-8-8.3.0/debian/libstdc++-breaks.Ubuntu @@ -0,0 +1,73 @@ +libantlr-dev (<= 2.7.7+dfsg-6), +libaqsis1 (<= 1.8.2-1), +libassimp3 (<= 3.0~dfsg-4), +blockattack (<= 1.4.1+ds1-2.1build2), +boo (<= 0.9.5~git20110729.r1.202a430-2), +libboost-date-time1.55.0, +libcpprest2.2 (<= 2.2.0-1), +printer-driver-brlaser (<= 3-3), +c++-annotations (<= 10.2.0-1), +chromium-browser (<= 43.0.2357.130-0ubuntu2), +clustalx (<= 2.1+lgpl-2), +libdavix0 (<= 0.4.0-1build1), +libdballe6 (<= 6.8-1), +dff (<= 1.3.0+dfsg.1-4.1build2), +libdiet-sed2.8 (<= 2.8.0-1build3), +libdiet-client2.8 (<= 2.8.0-1build3), +libdiet-admin2.8 (<= 2.8.0-1build3), +libkgeomap2 (<= 4:15.04.2-0ubuntu1), +libmediawiki1 (<= 1.0~digikam4.10.0-0ubuntu2), +libkvkontakte1 (<= 1.0~digikam4.10.0-0ubuntu2), +emscripten (<= 1.22.1-1), +ergo (<= 3.4.0-1), +fceux (<= 2.2.2+dfsg0-1), +flush (<= 0.9.12-3.1ubuntu1), +libfreefem++ (<= 3.37.1-1), +freeorion (<= 0.4.4+git20150327-2), +fslview (<= 4.0.1-4), +fwbuilder (<= 5.1.0-4), +libgazebo5 (<= 5.0.1+dfsg-2.1), +libgetfem4++ (<= 4.2.1~beta1~svn4482~dfsg-3ubuntu3), +libgmsh2 (<= 2.8.5+dfsg-1.1ubuntu1), +gnote (<= 3.16.2-1), +gnudatalanguage (<= 0.9.5-2build1), +python-healpy (<= 1.8.1-1), +innoextract (<= 1.4-1build1), +libinsighttoolkit4.6 (<= 4.6.0-3ubuntu3), +libdap17 (<= 3.14.0-2), +libdapclient6 (<= 3.14.0-2), +libdapserver7 (<= 3.14.0-2), +libkolabxml1 (<= 1.1.0-3), +libpqxx-4.0 (<= 4.0.1+dfsg-3ubuntu1), +libreoffice-core (<= 1:4.4.4~rc3-0ubuntu1), +librime1 (<= 1.2+dfsg-2), +libwibble-dev (<= 1.1-1), +lightspark (<= 0.7.2+git20150512-2), +libmarisa0 (<= 0.2.4-8build1), +mira-assembler (<= 4.9.5-1), +mongodb (<= 1:2.6.3-0ubuntu7), +mongodb-server (<= 1:2.6.3-0ubuntu7), +ncbi-blast+ (<= 2.2.30-4), +libogre-1.8.0 (<= 1.8.1+dfsg-0ubuntu5), +libogre-1.9.0 (<= 1.9.0+dfsg1-4), +openscad (<= 2014.03+dfsg-1build1), +libopenwalnut1 (<= 1.4.0~rc1+hg3a3147463ee2-1ubuntu2), +passepartout (<= 0.7.1-1.1), +pdf2djvu (<= 0.7.19-1ubuntu2), +photoprint (<= 0.4.2~pre2-2.3), +plastimatch (<= 1.6.2+dfsg-1), +plee-the-bear (<= 0.6.0-3.1), +povray (<= 1:3.7.0.0-8), +powertop (<= 2.6.1-1), +psi4 (<= 4.0~beta5+dfsg-2build1), +python3-taglib (<= 0.3.6+dfsg-2build2), +realtimebattle (<= 1.0.8-14), +ruby-passenger (<= 4.0.53-1), +libapache2-mod-passenger (<= 4.0.53-1), +sqlitebrowser (<= 3.5.1-3), +tecnoballz (<= 0.93.1-6), +wesnoth-1.12-core (<= 1:1.12.4-1), +widelands (<= 1:18-3build1), +libwreport2 (<= 2.14-1), +xflr5 (<= 6.09.06-2), +libxmltooling6 (<= 1.5.3-2.1), --- gcc-8-8.3.0.orig/debian/libstdc++6.symbols.128bit +++ gcc-8-8.3.0/debian/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 --- gcc-8-8.3.0.orig/debian/libstdc++6.symbols.32bit +++ gcc-8-8.3.0/debian/libstdc++6.symbols.32bit @@ -0,0 +1,612 @@ +#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 + _ZNKSt7codecvtIDic11__mbstate_tE9do_lengthERS0_PKcS4_j@GLIBCXX_3.4.21 5 + _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 + _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_bynameIcEC2EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt14collate_bynameIwEC1EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt14collate_bynameIwEC2EPKcj@GLIBCXX_3.4 4.1.1 + (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 + _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 --- gcc-8-8.3.0.orig/debian/libstdc++6.symbols.32bit.cxx11 +++ gcc-8-8.3.0/debian/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 --- gcc-8-8.3.0.orig/debian/libstdc++6.symbols.32bit.hurd +++ gcc-8-8.3.0/debian/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 --- gcc-8-8.3.0.orig/debian/libstdc++6.symbols.64bit +++ gcc-8-8.3.0/debian/libstdc++6.symbols.64bit @@ -0,0 +1,624 @@ +#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 + _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 + _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_bynameIcEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt14collate_bynameIwEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt14collate_bynameIwEC2EPKcm@GLIBCXX_3.4 4.1.1 + (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 + _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 --- gcc-8-8.3.0.orig/debian/libstdc++6.symbols.64bit.cxx11 +++ gcc-8-8.3.0/debian/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 --- gcc-8-8.3.0.orig/debian/libstdc++6.symbols.alpha +++ gcc-8-8.3.0/debian/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 --- gcc-8-8.3.0.orig/debian/libstdc++6.symbols.amd64 +++ gcc-8-8.3.0/debian/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 --- gcc-8-8.3.0.orig/debian/libstdc++6.symbols.arm +++ gcc-8-8.3.0/debian/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 --- gcc-8-8.3.0.orig/debian/libstdc++6.symbols.arm64 +++ gcc-8-8.3.0/debian/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 --- gcc-8-8.3.0.orig/debian/libstdc++6.symbols.armel +++ gcc-8-8.3.0/debian/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 --- gcc-8-8.3.0.orig/debian/libstdc++6.symbols.armhf +++ gcc-8-8.3.0/debian/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 --- gcc-8-8.3.0.orig/debian/libstdc++6.symbols.common +++ gcc-8-8.3.0/debian/libstdc++6.symbols.common @@ -0,0 +1,3472 @@ + 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@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.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_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 + _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 + _ZNKSt10bad_typeid4whatEv@GLIBCXX_3.4.9 4.2.1 + _ZNKSt10error_code23default_error_conditionEv@GLIBCXX_3.4.11 4.4.0 + _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 + _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 + _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_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_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_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_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_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_traitsIwESaIwEEC1EOS2_@GLIBCXX_3.4.14 4.5 + _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_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_traitsIwESaIwEEC2EOS2_@GLIBCXX_3.4.15 4.6 + _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_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 + _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 + _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 + _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 + _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 + _ZNSsC1EOSs@GLIBCXX_3.4.14 4.5 + _ZNSsC1EPKcRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsC1ERKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsC1ERKSs@GLIBCXX_3.4 4.1.1 + _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 + _ZNSsC2EOSs@GLIBCXX_3.4.15 4.6 + _ZNSsC2EPKcRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsC2ERKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsC2ERKSs@GLIBCXX_3.4 4.1.1 + _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 + _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_errorC1EPKc@GLIBCXX_3.4.21 5 + _ZNSt11logic_errorC1ERKS_@GLIBCXX_3.4.21 5 + _ZNSt11logic_errorC1ERKSs@GLIBCXX_3.4 4.1.1 + _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_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 + _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_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_errorC1ERKSs@GLIBCXX_3.4 4.1.1 + _ZNSt13runtime_errorC2ERKSs@GLIBCXX_3.4 4.1.1 + _ZNSt13runtime_errorD0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt13runtime_errorD1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt13runtime_errorD2Ev@GLIBCXX_3.4 4.1.1 + _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_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_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _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_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _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_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_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_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_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__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_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_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_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_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_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_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_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_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 + _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 + _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 + _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_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 + _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 + _ZTINSt3_V214error_categoryE@GLIBCXX_3.4.21 5 + _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 + _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 + _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 + _ZTISt7codecvtIDic11__mbstate_tE@GLIBCXX_3.4.21 5 + _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 + _ZTSSt7codecvtIDic11__mbstate_tE@GLIBCXX_3.4.21 5 + _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 + _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 + _ZTVSt7codecvtIDic11__mbstate_tE@GLIBCXX_3.4.21 5 + _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 --- gcc-8-8.3.0.orig/debian/libstdc++6.symbols.common.cxx11 +++ gcc-8-8.3.0/debian/libstdc++6.symbols.common.cxx11 @@ -0,0 +1,884 @@ + (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_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__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)_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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 --- gcc-8-8.3.0.orig/debian/libstdc++6.symbols.excprop +++ gcc-8-8.3.0/debian/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 --- gcc-8-8.3.0.orig/debian/libstdc++6.symbols.float128 +++ gcc-8-8.3.0/debian/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 --- gcc-8-8.3.0.orig/debian/libstdc++6.symbols.glibcxxmath +++ gcc-8-8.3.0/debian/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 --- gcc-8-8.3.0.orig/debian/libstdc++6.symbols.hppa +++ gcc-8-8.3.0/debian/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 --- gcc-8-8.3.0.orig/debian/libstdc++6.symbols.hurd-i386 +++ gcc-8-8.3.0/debian/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 --- gcc-8-8.3.0.orig/debian/libstdc++6.symbols.i386 +++ gcc-8-8.3.0/debian/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 --- gcc-8-8.3.0.orig/debian/libstdc++6.symbols.ia64 +++ gcc-8-8.3.0/debian/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 --- gcc-8-8.3.0.orig/debian/libstdc++6.symbols.kfreebsd-amd64 +++ gcc-8-8.3.0/debian/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 --- gcc-8-8.3.0.orig/debian/libstdc++6.symbols.kfreebsd-i386 +++ gcc-8-8.3.0/debian/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 --- gcc-8-8.3.0.orig/debian/libstdc++6.symbols.ldbl.32bit +++ gcc-8-8.3.0/debian/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 --- gcc-8-8.3.0.orig/debian/libstdc++6.symbols.ldbl.32bit.s390 +++ gcc-8-8.3.0/debian/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 --- gcc-8-8.3.0.orig/debian/libstdc++6.symbols.ldbl.64bit +++ gcc-8-8.3.0/debian/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 --- gcc-8-8.3.0.orig/debian/libstdc++6.symbols.m68k +++ gcc-8-8.3.0/debian/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 --- gcc-8-8.3.0.orig/debian/libstdc++6.symbols.mips +++ gcc-8-8.3.0/debian/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 --- gcc-8-8.3.0.orig/debian/libstdc++6.symbols.mips64 +++ gcc-8-8.3.0/debian/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 --- gcc-8-8.3.0.orig/debian/libstdc++6.symbols.mips64el +++ gcc-8-8.3.0/debian/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 --- gcc-8-8.3.0.orig/debian/libstdc++6.symbols.mips64r6 +++ gcc-8-8.3.0/debian/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 --- gcc-8-8.3.0.orig/debian/libstdc++6.symbols.mips64r6el +++ gcc-8-8.3.0/debian/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 --- gcc-8-8.3.0.orig/debian/libstdc++6.symbols.mipsel +++ gcc-8-8.3.0/debian/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 --- gcc-8-8.3.0.orig/debian/libstdc++6.symbols.mipsr6 +++ gcc-8-8.3.0/debian/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 --- gcc-8-8.3.0.orig/debian/libstdc++6.symbols.mipsr6el +++ gcc-8-8.3.0/debian/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 --- gcc-8-8.3.0.orig/debian/libstdc++6.symbols.money.f128 +++ gcc-8-8.3.0/debian/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 --- gcc-8-8.3.0.orig/debian/libstdc++6.symbols.money.ldbl +++ gcc-8-8.3.0/debian/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 --- gcc-8-8.3.0.orig/debian/libstdc++6.symbols.not-armel +++ gcc-8-8.3.0/debian/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 --- gcc-8-8.3.0.orig/debian/libstdc++6.symbols.powerpc +++ gcc-8-8.3.0/debian/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 --- gcc-8-8.3.0.orig/debian/libstdc++6.symbols.powerpcspe +++ gcc-8-8.3.0/debian/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 --- gcc-8-8.3.0.orig/debian/libstdc++6.symbols.ppc64 +++ gcc-8-8.3.0/debian/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 --- gcc-8-8.3.0.orig/debian/libstdc++6.symbols.ppc64el +++ gcc-8-8.3.0/debian/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 --- gcc-8-8.3.0.orig/debian/libstdc++6.symbols.s390 +++ gcc-8-8.3.0/debian/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 --- gcc-8-8.3.0.orig/debian/libstdc++6.symbols.s390x +++ gcc-8-8.3.0/debian/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 --- gcc-8-8.3.0.orig/debian/libstdc++6.symbols.sh4 +++ gcc-8-8.3.0/debian/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 --- gcc-8-8.3.0.orig/debian/libstdc++6.symbols.sparc +++ gcc-8-8.3.0/debian/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 --- gcc-8-8.3.0.orig/debian/libstdc++6.symbols.sparc64 +++ gcc-8-8.3.0/debian/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 --- gcc-8-8.3.0.orig/debian/libstdc++6.symbols.x32 +++ gcc-8-8.3.0/debian/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 --- gcc-8-8.3.0.orig/debian/libstdc++CXX.postinst +++ gcc-8-8.3.0/debian/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# --- gcc-8-8.3.0.orig/debian/libstdc++CXX.prerm +++ gcc-8-8.3.0/debian/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# --- gcc-8-8.3.0.orig/debian/libtsan0.symbols +++ gcc-8-8.3.0/debian/libtsan0.symbols @@ -0,0 +1,1886 @@ +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 + _ZN11__sanitizer11CheckFailedEPKciS1_yy@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 + _ZdlPv@Base 4.9 + _ZdlPvRKSt9nothrow_t@Base 4.9 + _Znam@Base 4.9 + _ZnamRKSt9nothrow_t@Base 4.9 + _Znwm@Base 4.9 + _ZnwmRKSt9nothrow_t@Base 4.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 + __fxstat64@Base 4.9 + __fxstat@Base 4.9 + __getdelim@Base 5 + __interceptor___close@Base 4.9 + __interceptor___cxa_atexit@Base 4.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___res_iclose@Base 4.9 + __interceptor___sigsetjmp@Base 4.9 + __interceptor___strndup@Base 8 + __interceptor___tls_get_addr@Base 6 + __interceptor___uflow@Base 5 + __interceptor___underflow@Base 5 + __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_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_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_munlock@Base 4.9 + __interceptor_munlockall@Base 4.9 + __interceptor_munmap@Base 4.9 + __interceptor_nanosleep@Base 4.9 + __interceptor_on_exit@Base 4.9 + __interceptor_open64@Base 4.9 + __interceptor_open@Base 4.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_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_readv@Base 4.9 + __interceptor_realloc@Base 4.9 + __interceptor_realpath@Base 4.9 + __interceptor_recv@Base 4.9 + __interceptor_recvfrom@Base 7 + __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_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_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_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 + __res_iclose@Base 4.9 + __sancov_default_options@Base 8 + __sancov_lowest_stack@Base 8 +#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 + __strndup@Base 8 + __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_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_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 + __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 + 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 + 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 + munlock@Base 4.9 + munlockall@Base 4.9 + munmap@Base 4.9 + nanosleep@Base 4.9 + on_exit@Base 4.9 + open64@Base 4.9 + open@Base 4.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_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 + readv@Base 4.9 + realloc@Base 4.9 + realpath@Base 4.9 + recv@Base 4.9 + recvfrom@Base 7 + 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 + 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 + 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 + 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 --- gcc-8-8.3.0.orig/debian/libubsan1.symbols +++ gcc-8-8.3.0/debian/libubsan1.symbols @@ -0,0 +1,122 @@ +libubsan.so.1 libubsan1 #MINVER# + OnPrint@Base 8 + _ZN11__sanitizer11CheckFailedEPKciS1_yy@Base 4.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_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_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_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_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_vptr_type_cache@Base 4.9 + (arch=base-any-any-amd64 any-mips any-mipsel)internal_sigreturn@Base 7 --- gcc-8-8.3.0.orig/debian/libvtv0.symbols +++ gcc-8-8.3.0/debian/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 --- gcc-8-8.3.0.orig/debian/libx32asan5.overrides +++ gcc-8-8.3.0/debian/libx32asan5.overrides @@ -0,0 +1,2 @@ +# automake gets it wrong for the multilib build +libx32asan5 binary: binary-or-shlib-defines-rpath --- gcc-8-8.3.0.orig/debian/libx32asan5.symbols +++ gcc-8-8.3.0/debian/libx32asan5.symbols @@ -0,0 +1,4 @@ +libasan.so.5 libx32asan5 #MINVER# +#include "libasan.symbols.common" +#include "libasan.symbols.32" +#include "libasan.symbols.16" --- gcc-8-8.3.0.orig/debian/libx32gphobos68.lintian-overrides +++ gcc-8-8.3.0/debian/libx32gphobos68.lintian-overrides @@ -0,0 +1,2 @@ +# no multilib zlib for x32 +libx32gphobos68 binary: embedded-library --- gcc-8-8.3.0.orig/debian/libx32stdc++6.symbols +++ gcc-8-8.3.0/debian/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 --- gcc-8-8.3.0.orig/debian/locale-gen +++ gcc-8-8.3.0/debian/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 --- gcc-8-8.3.0.orig/debian/patches/ada-749574.diff +++ gcc-8-8.3.0/debian/patches/ada-749574.diff @@ -0,0 +1,116 @@ +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; + +Index: b/src/gcc/ada/gnatlink.adb +=================================================================== +--- 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; +@@ -1253,13 +1256,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: +@@ -1376,6 +1375,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 -- + ----------- +@@ -1888,8 +1898,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) := +@@ -1920,13 +1930,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) := --- gcc-8-8.3.0.orig/debian/patches/ada-arm.diff +++ gcc-8-8.3.0/debian/patches/ada-arm.diff @@ -0,0 +1,18 @@ +DP: Improve support for ZCX on arm. + +Index: b/src/gcc/ada/gcc-interface/Makefile.in +=================================================================== +--- a/src/gcc/ada/gcc-interface/Makefile.in ++++ b/src/gcc/ada/gcc-interface/Makefile.in +@@ -1595,7 +1595,10 @@ ifeq ($(strip $(filter-out arm% linux-gn + ifeq ($(strip $(filter-out arm%b,$(target_cpu))),) + EH_MECHANISM= + else +- EH_MECHANISM=-arm ++ # Special case; the GCC exception mechanism is supported under ++ # another name and with different files than for other ++ # target_cpus. ++ override EH_MECHANISM=-arm + endif + + TOOLS_TARGET_PAIRS = indepsw.adb +Author: Nicolas Boulenguez + +Index: b/src/gcc/ada/gcc-interface/Makefile.in +=================================================================== +--- a/src/gcc/ada/gcc-interface/Makefile.in ++++ b/src/gcc/ada/gcc-interface/Makefile.in +@@ -1580,6 +1580,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 TAGS 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}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ mostlyclean) \ ++ || exit 1 ++ ++@endif target-libgnatvsn ++ ++.PHONY: maybe-clean-target-libgnatvsn clean-target-libgnatvsn ++maybe-clean-target-libgnatvsn: ++@if target-libgnatvsn ++maybe-clean-target-libgnatvsn: clean-target-libgnatvsn ++ ++clean-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 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)/libgnatvsn && \ ++ $(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-libgnatvsn ++ ++.PHONY: maybe-distclean-target-libgnatvsn distclean-target-libgnatvsn ++maybe-distclean-target-libgnatvsn: ++@if target-libgnatvsn ++maybe-distclean-target-libgnatvsn: distclean-target-libgnatvsn ++ ++distclean-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 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)/libgnatvsn && \ ++ $(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-libgnatvsn ++ ++.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-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 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)/libgnatvsn && \ ++ $(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-libgnatvsn ++ ++ ++ ++ ++ ++.PHONY: configure-target-libada-sjlj maybe-configure-target-libada-sjlj ++maybe-configure-target-libada-sjlj: ++@if gcc-bootstrap ++configure-target-libada-sjlj: stage_current ++@endif gcc-bootstrap ++@if target-libada-sjlj ++maybe-configure-target-libada-sjlj: configure-target-libada-sjlj ++configure-target-libada-sjlj: ++ @: $(MAKE); $(unstage) ++ @r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ echo "Checking multilib configuration for libada-sjlj..."; \ ++ $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libada-sjlj; \ ++ $(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libada-sjlj/multilib.tmp 2> /dev/null; \ ++ if test -r $(TARGET_SUBDIR)/libada-sjlj/multilib.out; then \ ++ if cmp -s $(TARGET_SUBDIR)/libada-sjlj/multilib.tmp $(TARGET_SUBDIR)/libada-sjlj/multilib.out; then \ ++ rm -f $(TARGET_SUBDIR)/libada-sjlj/multilib.tmp; \ ++ else \ ++ rm -f $(TARGET_SUBDIR)/libada-sjlj/Makefile; \ ++ mv $(TARGET_SUBDIR)/libada-sjlj/multilib.tmp $(TARGET_SUBDIR)/libada-sjlj/multilib.out; \ ++ fi; \ ++ else \ ++ mv $(TARGET_SUBDIR)/libada-sjlj/multilib.tmp $(TARGET_SUBDIR)/libada-sjlj/multilib.out; \ ++ fi; \ ++ test ! -f $(TARGET_SUBDIR)/libada-sjlj/Makefile || exit 0; \ ++ $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libada-sjlj; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo Configuring in $(TARGET_SUBDIR)/libada-sjlj; \ ++ cd "$(TARGET_SUBDIR)/libada-sjlj" || exit 1; \ ++ case $(srcdir) in \ ++ /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ ++ *) topdir=`echo $(TARGET_SUBDIR)/libada-sjlj/ | \ ++ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ ++ esac; \ ++ module_srcdir=libada-sjlj; \ ++ 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-libada-sjlj ++ ++ ++ ++ ++ ++.PHONY: all-target-libada-sjlj maybe-all-target-libada-sjlj ++maybe-all-target-libada-sjlj: ++@if gcc-bootstrap ++all-target-libada-sjlj: stage_current ++@endif gcc-bootstrap ++@if target-libada-sjlj ++TARGET-target-libada-sjlj=all ++maybe-all-target-libada-sjlj: all-target-libada-sjlj ++all-target-libada-sjlj: configure-target-libada-sjlj ++ @: $(MAKE); $(unstage) ++ @r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ (cd $(TARGET_SUBDIR)/libada-sjlj && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS) \ ++ $(TARGET-target-libada-sjlj)) ++@endif target-libada-sjlj ++ ++ ++ ++ ++ ++.PHONY: check-target-libada-sjlj maybe-check-target-libada-sjlj ++maybe-check-target-libada-sjlj: ++@if target-libada-sjlj ++maybe-check-target-libada-sjlj: check-target-libada-sjlj ++ ++check-target-libada-sjlj: ++ @: $(MAKE); $(unstage) ++ @r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ (cd $(TARGET_SUBDIR)/libada-sjlj && \ ++ $(MAKE) $(TARGET_FLAGS_TO_PASS) check) ++ ++@endif target-libada-sjlj ++ ++.PHONY: install-target-libada-sjlj maybe-install-target-libada-sjlj ++maybe-install-target-libada-sjlj: ++@if target-libada-sjlj ++maybe-install-target-libada-sjlj: install-target-libada-sjlj ++ ++install-target-libada-sjlj: installdirs ++ @: $(MAKE); $(unstage) ++ @r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ (cd $(TARGET_SUBDIR)/libada-sjlj && \ ++ $(MAKE) $(TARGET_FLAGS_TO_PASS) install) ++ ++@endif target-libada-sjlj ++ ++.PHONY: install-strip-target-libada-sjlj maybe-install-strip-target-libada-sjlj ++maybe-install-strip-target-libada-sjlj: ++@if target-libada-sjlj ++maybe-install-strip-target-libada-sjlj: install-strip-target-libada-sjlj ++ ++install-strip-target-libada-sjlj: installdirs ++ @: $(MAKE); $(unstage) ++ @r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ (cd $(TARGET_SUBDIR)/libada-sjlj && \ ++ $(MAKE) $(TARGET_FLAGS_TO_PASS) install-strip) ++ ++@endif target-libada-sjlj ++ ++# Other targets (info, dvi, pdf, etc.) ++ ++.PHONY: maybe-info-target-libada-sjlj info-target-libada-sjlj ++maybe-info-target-libada-sjlj: ++@if target-libada-sjlj ++maybe-info-target-libada-sjlj: info-target-libada-sjlj ++ ++info-target-libada-sjlj: \ ++ configure-target-libada-sjlj ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libada-sjlj/Makefile ] || exit 0; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing info in $(TARGET_SUBDIR)/libada-sjlj"; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libada-sjlj && \ ++ $(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-libada-sjlj ++ ++.PHONY: maybe-dvi-target-libada-sjlj dvi-target-libada-sjlj ++maybe-dvi-target-libada-sjlj: ++@if target-libada-sjlj ++maybe-dvi-target-libada-sjlj: dvi-target-libada-sjlj ++ ++dvi-target-libada-sjlj: \ ++ configure-target-libada-sjlj ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libada-sjlj/Makefile ] || exit 0; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing dvi in $(TARGET_SUBDIR)/libada-sjlj"; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libada-sjlj && \ ++ $(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-libada-sjlj ++ ++.PHONY: maybe-pdf-target-libada-sjlj pdf-target-libada-sjlj ++maybe-pdf-target-libada-sjlj: ++@if target-libada-sjlj ++maybe-pdf-target-libada-sjlj: pdf-target-libada-sjlj ++ ++pdf-target-libada-sjlj: \ ++ configure-target-libada-sjlj ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libada-sjlj/Makefile ] || exit 0; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing pdf in $(TARGET_SUBDIR)/libada-sjlj"; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libada-sjlj && \ ++ $(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-libada-sjlj ++ ++.PHONY: maybe-html-target-libada-sjlj html-target-libada-sjlj ++maybe-html-target-libada-sjlj: ++@if target-libada-sjlj ++maybe-html-target-libada-sjlj: html-target-libada-sjlj ++ ++html-target-libada-sjlj: \ ++ configure-target-libada-sjlj ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libada-sjlj/Makefile ] || exit 0; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing html in $(TARGET_SUBDIR)/libada-sjlj"; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libada-sjlj && \ ++ $(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-libada-sjlj ++ ++.PHONY: maybe-TAGS-target-libada-sjlj TAGS-target-libada-sjlj ++maybe-TAGS-target-libada-sjlj: ++@if target-libada-sjlj ++maybe-TAGS-target-libada-sjlj: TAGS-target-libada-sjlj ++ ++TAGS-target-libada-sjlj: \ ++ configure-target-libada-sjlj ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libada-sjlj/Makefile ] || exit 0; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing TAGS in $(TARGET_SUBDIR)/libada-sjlj"; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libada-sjlj && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ + "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ + "RANLIB=$${RANLIB}" \ +@@ -51603,26 +52088,26 @@ TAGS-target-libada: \ + TAGS) \ + || exit 1 + +-@endif target-libada ++@endif target-libada-sjlj + +-.PHONY: maybe-install-info-target-libada install-info-target-libada +-maybe-install-info-target-libada: +-@if target-libada +-maybe-install-info-target-libada: install-info-target-libada ++.PHONY: maybe-install-info-target-libada-sjlj install-info-target-libada-sjlj ++maybe-install-info-target-libada-sjlj: ++@if target-libada-sjlj ++maybe-install-info-target-libada-sjlj: install-info-target-libada-sjlj + +-install-info-target-libada: \ +- configure-target-libada \ +- info-target-libada ++install-info-target-libada-sjlj: \ ++ configure-target-libada-sjlj \ ++ info-target-libada-sjlj + @: $(MAKE); $(unstage) +- @[ -f $(TARGET_SUBDIR)/libada/Makefile ] || exit 0; \ ++ @[ -f $(TARGET_SUBDIR)/libada-sjlj/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)/libada"; \ ++ echo "Doing install-info in $(TARGET_SUBDIR)/libada-sjlj"; \ + 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)/libada-sjlj && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ + "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ + "RANLIB=$${RANLIB}" \ +@@ -51630,26 +52115,26 @@ install-info-target-libada: \ + install-info) \ + || exit 1 + +-@endif target-libada ++@endif target-libada-sjlj + +-.PHONY: maybe-install-pdf-target-libada install-pdf-target-libada +-maybe-install-pdf-target-libada: +-@if target-libada +-maybe-install-pdf-target-libada: install-pdf-target-libada ++.PHONY: maybe-install-pdf-target-libada-sjlj install-pdf-target-libada-sjlj ++maybe-install-pdf-target-libada-sjlj: ++@if target-libada-sjlj ++maybe-install-pdf-target-libada-sjlj: install-pdf-target-libada-sjlj + +-install-pdf-target-libada: \ +- configure-target-libada \ +- pdf-target-libada ++install-pdf-target-libada-sjlj: \ ++ configure-target-libada-sjlj \ ++ pdf-target-libada-sjlj + @: $(MAKE); $(unstage) +- @[ -f $(TARGET_SUBDIR)/libada/Makefile ] || exit 0; \ ++ @[ -f $(TARGET_SUBDIR)/libada-sjlj/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)/libada"; \ ++ echo "Doing install-pdf in $(TARGET_SUBDIR)/libada-sjlj"; \ + 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)/libada-sjlj && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ + "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ + "RANLIB=$${RANLIB}" \ +@@ -51657,26 +52142,26 @@ install-pdf-target-libada: \ + install-pdf) \ + || exit 1 + +-@endif target-libada ++@endif target-libada-sjlj + +-.PHONY: maybe-install-html-target-libada install-html-target-libada +-maybe-install-html-target-libada: +-@if target-libada +-maybe-install-html-target-libada: install-html-target-libada ++.PHONY: maybe-install-html-target-libada-sjlj install-html-target-libada-sjlj ++maybe-install-html-target-libada-sjlj: ++@if target-libada-sjlj ++maybe-install-html-target-libada-sjlj: install-html-target-libada-sjlj + +-install-html-target-libada: \ +- configure-target-libada \ +- html-target-libada ++install-html-target-libada-sjlj: \ ++ configure-target-libada-sjlj \ ++ html-target-libada-sjlj + @: $(MAKE); $(unstage) +- @[ -f $(TARGET_SUBDIR)/libada/Makefile ] || exit 0; \ ++ @[ -f $(TARGET_SUBDIR)/libada-sjlj/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)/libada"; \ ++ echo "Doing install-html in $(TARGET_SUBDIR)/libada-sjlj"; \ + 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)/libada-sjlj && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ + "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ + "RANLIB=$${RANLIB}" \ +@@ -51684,25 +52169,25 @@ install-html-target-libada: \ + install-html) \ + || exit 1 + +-@endif target-libada ++@endif target-libada-sjlj + +-.PHONY: maybe-installcheck-target-libada installcheck-target-libada +-maybe-installcheck-target-libada: +-@if target-libada +-maybe-installcheck-target-libada: installcheck-target-libada ++.PHONY: maybe-installcheck-target-libada-sjlj installcheck-target-libada-sjlj ++maybe-installcheck-target-libada-sjlj: ++@if target-libada-sjlj ++maybe-installcheck-target-libada-sjlj: installcheck-target-libada-sjlj + +-installcheck-target-libada: \ +- configure-target-libada ++installcheck-target-libada-sjlj: \ ++ configure-target-libada-sjlj + @: $(MAKE); $(unstage) +- @[ -f $(TARGET_SUBDIR)/libada/Makefile ] || exit 0; \ ++ @[ -f $(TARGET_SUBDIR)/libada-sjlj/Makefile ] || exit 0; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(NORMAL_TARGET_EXPORTS) \ +- echo "Doing installcheck in $(TARGET_SUBDIR)/libada"; \ ++ echo "Doing installcheck in $(TARGET_SUBDIR)/libada-sjlj"; \ + 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)/libada-sjlj && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ + "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ + "RANLIB=$${RANLIB}" \ +@@ -51710,24 +52195,24 @@ installcheck-target-libada: \ + installcheck) \ + || exit 1 + +-@endif target-libada ++@endif target-libada-sjlj + +-.PHONY: maybe-mostlyclean-target-libada mostlyclean-target-libada +-maybe-mostlyclean-target-libada: +-@if target-libada +-maybe-mostlyclean-target-libada: mostlyclean-target-libada ++.PHONY: maybe-mostlyclean-target-libada-sjlj mostlyclean-target-libada-sjlj ++maybe-mostlyclean-target-libada-sjlj: ++@if target-libada-sjlj ++maybe-mostlyclean-target-libada-sjlj: mostlyclean-target-libada-sjlj + +-mostlyclean-target-libada: ++mostlyclean-target-libada-sjlj: + @: $(MAKE); $(unstage) +- @[ -f $(TARGET_SUBDIR)/libada/Makefile ] || exit 0; \ ++ @[ -f $(TARGET_SUBDIR)/libada-sjlj/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)/libada-sjlj"; \ + 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)/libada-sjlj && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ + "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ + "RANLIB=$${RANLIB}" \ +@@ -51735,24 +52220,24 @@ mostlyclean-target-libada: + mostlyclean) \ + || exit 1 + +-@endif target-libada ++@endif target-libada-sjlj + +-.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-libada-sjlj clean-target-libada-sjlj ++maybe-clean-target-libada-sjlj: ++@if target-libada-sjlj ++maybe-clean-target-libada-sjlj: clean-target-libada-sjlj + +-clean-target-libada: ++clean-target-libada-sjlj: + @: $(MAKE); $(unstage) +- @[ -f $(TARGET_SUBDIR)/libada/Makefile ] || exit 0; \ ++ @[ -f $(TARGET_SUBDIR)/libada-sjlj/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)/libada-sjlj"; \ + 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)/libada-sjlj && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ + "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ + "RANLIB=$${RANLIB}" \ +@@ -51760,24 +52245,24 @@ clean-target-libada: + clean) \ + || exit 1 + +-@endif target-libada ++@endif target-libada-sjlj + +-.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-libada-sjlj distclean-target-libada-sjlj ++maybe-distclean-target-libada-sjlj: ++@if target-libada-sjlj ++maybe-distclean-target-libada-sjlj: distclean-target-libada-sjlj + +-distclean-target-libada: ++distclean-target-libada-sjlj: + @: $(MAKE); $(unstage) +- @[ -f $(TARGET_SUBDIR)/libada/Makefile ] || exit 0; \ ++ @[ -f $(TARGET_SUBDIR)/libada-sjlj/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)/libada-sjlj"; \ + 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)/libada-sjlj && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ + "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ + "RANLIB=$${RANLIB}" \ +@@ -51785,24 +52270,24 @@ distclean-target-libada: + distclean) \ + || exit 1 + +-@endif target-libada ++@endif target-libada-sjlj + +-.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-libada-sjlj maintainer-clean-target-libada-sjlj ++maybe-maintainer-clean-target-libada-sjlj: ++@if target-libada-sjlj ++maybe-maintainer-clean-target-libada-sjlj: maintainer-clean-target-libada-sjlj + +-maintainer-clean-target-libada: ++maintainer-clean-target-libada-sjlj: + @: $(MAKE); $(unstage) +- @[ -f $(TARGET_SUBDIR)/libada/Makefile ] || exit 0; \ ++ @[ -f $(TARGET_SUBDIR)/libada-sjlj/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)/libada-sjlj"; \ + 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)/libada-sjlj && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ + "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ + "RANLIB=$${RANLIB}" \ +@@ -51810,7 +52295,7 @@ maintainer-clean-target-libada: + maintainer-clean) \ + || exit 1 + +-@endif target-libada ++@endif target-libada-sjlj + + + +@@ -57288,6 +57773,8 @@ 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-libada-sjlj: 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 +@@ -57324,6 +57811,8 @@ 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-libada-sjlj: maybe-all-gcc + configure-target-libgomp: maybe-all-gcc + configure-target-libitm: maybe-all-gcc + configure-target-libatomic: maybe-all-gcc +@@ -57821,8 +58310,13 @@ all-stagetrain-fixincludes: maybe-all-st + all-stagefeedback-fixincludes: maybe-all-stagefeedback-libiberty + all-stageautoprofile-fixincludes: maybe-all-stageautoprofile-libiberty + all-stageautofeedback-fixincludes: maybe-all-stageautofeedback-libiberty ++all-target-libada: maybe-all-gcc ++all-target-libada-sjlj: maybe-all-target-libada + all-gnattools: maybe-all-target-libada + all-gnattools: maybe-all-target-libstdc++-v3 ++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 +@@ -58580,6 +59074,8 @@ 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-libada-sjlj: 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 +@@ -58629,6 +59125,10 @@ 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-libada-sjlj: 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 --- gcc-8-8.3.0.orig/debian/patches/ada-drop-termio-h.diff +++ gcc-8-8.3.0/debian/patches/ada-drop-termio-h.diff @@ -0,0 +1,42 @@ +Description: ada/terminals.c: remove obsolete termio.h + On all architectures, the terminals.c source file #includes + and declares variables with type struct termios. + . + Some platforms provide a compatibility termio.h, which only defines + the termio structure. + . + terminals.c also #includes , probably for historical + reasons since no termio structure is ever used. + . + Drop the #include instead of maintaining a list of architectures. +Author: Nicolas Boulenguez +Bug-Debian: https://bugs.debian.org/845159 +Forwarded: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81103 + +Index: b/src/gcc/ada/terminals.c +=================================================================== +--- a/src/gcc/ada/terminals.c ++++ b/src/gcc/ada/terminals.c +@@ -1107,14 +1107,6 @@ __gnat_setup_winsize (void *desc, int ro + #include + #include + #include +- +-/* On some system termio is either absent or including it will disable termios +- (HP-UX) */ +-#if !defined (__hpux__) && !defined (BSD) && !defined (__APPLE__) \ +- && !defined (__rtems__) && !defined (__QNXNTO__) +-# include +-#endif +- + #include + #include + #include +@@ -1130,7 +1122,6 @@ __gnat_setup_winsize (void *desc, int ro + # include + #endif + #if defined (__hpux__) +-# include + # include + #endif + --- gcc-8-8.3.0.orig/debian/patches/ada-gcc-name.diff +++ gcc-8-8.3.0/debian/patches/ada-gcc-name.diff @@ -0,0 +1,295 @@ +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 @@ + -- 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 +@@ -2205,51 +2205,51 @@ + ------------------ + + 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 Name_Buffer (J) = '/' +- or else Name_Buffer (J) = Directory_Separator +- 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.Heap_Sort_G; + with GNAT.Table; + ++with Osint; + with Switch; use Switch; + with Types; + +@@ -44,12 +45,9 @@ + 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 @@ + 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 @@ + 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 -- + --------------- +@@ -1088,8 +1010,8 @@ + exit; + + when '-' => +- Gcc := new String'(Parameter); +- Gcc_Set := True; ++ Free (Gcc); ++ Gcc := new String'(Parameter); + + when 'c' => + Compilation_Mode := True; +@@ -1767,9 +1689,13 @@ + + -- 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; + --- gcc-8-8.3.0.orig/debian/patches/ada-gnattools-cross.diff +++ gcc-8-8.3.0/debian/patches/ada-gnattools-cross.diff @@ -0,0 +1,270 @@ +* 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/gcc-interface/Makefile.in ++++ b/src/gcc/ada/gcc-interface/Makefile.in +@@ -1286,6 +1286,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 = \ +@@ -2265,6 +2270,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 +@@ -2314,14 +2333,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); \ +@@ -2346,8 +2361,7 @@ install-gnatlib: ../stamp-gnatlib-$(RTSD + touch ../stamp-gnatlib2-$(RTSDIR) + $(RM) ../stamp-gnatlib-$(RTSDIR) + +-../stamp-gnatlib1-$(RTSDIR): Makefile ../stamp-gnatlib2-$(RTSDIR) +- $(RMDIR) $(RTSDIR) ++../stamp-gnatlib1-$(RTSDIR): Makefile + $(MKDIR) $(RTSDIR) + $(CHMOD) u+w $(RTSDIR) + # Copy target independent sources +@@ -2411,7 +2425,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) \ +@@ -2445,36 +2459,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) +@@ -2485,6 +2514,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) \ +@@ -2493,21 +2524,15 @@ gnatlib-shared-dual: + GNATLIBCFLAGS_FOR_C="$(GNATLIBCFLAGS_FOR_C)" \ + 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) \ +@@ -2517,17 +2542,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 +@@ -76,15 +76,21 @@ CXX_LFLAGS = \ + -L../../../$(target_noncanonical)/libstdc++-v3/libsupc++/.libs + + # Variables for gnattools, native ++rtsdir := $(abspath ../gcc/ada/rts) ++vsndir := $(abspath ../$(target_noncanonical)/libgnatvsn) + 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 +196,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 invokated. + gnattools-native: $(GCC_DIR)/stamp-tools $(GCC_DIR)/stamp-gnatlib-rts + # gnattools1 + $(MAKE) -C $(GCC_DIR)/ada/tools -f ../Makefile \ +@@ -198,6 +208,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 --- gcc-8-8.3.0.orig/debian/patches/ada-kfreebsd.diff +++ gcc-8-8.3.0/debian/patches/ada-kfreebsd.diff @@ -0,0 +1,106 @@ +Description: add support for GNU/kFreeBSD. + GNU/kFreeBSD does not support Thread Priority Protection or Thread + Priority Inheritance and lacks some pthread_mutexattr_* functions. + Replace them with dummy versions. +Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=642128 +Author: Ludovic Brenta +Author: Nicolas Boulenguez + +Index: b/src/gcc/ada/libgnarl/s-osinte__kfreebsd-gnu.ads +=================================================================== +--- 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; +@@ -206,9 +207,7 @@ package System.OS_Interface is + function nanosleep (rqtp, rmtp : access timespec) return int; + pragma Import (C, nanosleep, "nanosleep"); + +- type clockid_t is private; +- +- CLOCK_REALTIME : constant clockid_t; ++ type clockid_t is new int; + + function clock_gettime + (clock_id : clockid_t; +@@ -441,31 +440,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"); ++ 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"); ++ 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"); ++ 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"); ++ prioceiling : access int) return int is (0); + + type struct_sched_param is record + sched_priority : int; -- scheduling priority +@@ -610,9 +603,6 @@ private + end record; + pragma Convention (C, timespec); + +- type clockid_t is new int; +- CLOCK_REALTIME : constant clockid_t := 0; +- + type pthread_attr_t is record + detachstate : int; + schedpolicy : int; +Index: b/src/gcc/ada/gsocket.h +=================================================================== +--- a/src/gcc/ada/gsocket.h ++++ b/src/gcc/ada/gsocket.h +@@ -244,6 +244,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 +Index: b/src/gcc/ada/s-oscons-tmplt.c +=================================================================== +--- a/src/gcc/ada/s-oscons-tmplt.c ++++ b/src/gcc/ada/s-oscons-tmplt.c +@@ -1443,7 +1443,7 @@ CND(CLOCK_THREAD_CPUTIME_ID, "Thread CPU + + #if defined(__linux__) || defined(__FreeBSD__) \ + || (defined(_AIX) && defined(_AIXVERSION_530)) \ +- || defined(__DragonFly__) || defined(__QNX__) ++ || defined(__DragonFly__) || defined(__QNX__) || defined(__FreeBSD_kernel__) + /** On these platforms use system provided monotonic clock instead of + ** the default CLOCK_REALTIME. We then need to set up cond var attributes + ** appropriately (see thread.c). --- gcc-8-8.3.0.orig/debian/patches/ada-lib-info-file-prefix-map.diff +++ gcc-8-8.3.0/debian/patches/ada-lib-info-file-prefix-map.diff @@ -0,0 +1,36 @@ +Description: remove -f*-prefix-map options from .ali files + The -f(file|debug|macro)-prefix-map=OLD=NEW options + added by revision 256847 + explicitly ask that OLD is never written. +Forwarded: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87972 +Author: Nicolas Boulenguez + +--- a/src/gcc/ada/lib-writ.adb ++++ b/src/gcc/ada/lib-writ.adb +@@ -1223,10 +1223,22 @@ package body Lib.Writ is + -- Write command argument ('A') lines + + for A in 1 .. Compilation_Switches.Last loop +- Write_Info_Initiate ('A'); +- Write_Info_Char (' '); +- Write_Info_Str (Compilation_Switches.Table (A).all); +- Write_Info_Terminate; ++ -- The -f(file|debug|macro)-prefix-map=OLD=NEW options ++ -- explicitly ask that OLD is never written. ++ declare ++ S : String renames Compilation_Switches.Table (A).all; ++ begin ++ if S'Length < 19 -- ++ or else (S (S'First .. S'First + 18) /= "-fdebug-prefix-map=" ++ and S (S'First .. S'First + 17) /= "-ffile-prefix-map=" ++ and S (S'First .. S'First + 18) /= "-fmacro-prefix-map=") ++ then ++ Write_Info_Initiate ('A'); ++ Write_Info_Char (' '); ++ Write_Info_Str (S); ++ Write_Info_Terminate; ++ end if; ++ end; + end loop; + + -- Output parameters ('P') line --- gcc-8-8.3.0.orig/debian/patches/ada-lib-info-source-date-epoch.diff +++ gcc-8-8.3.0/debian/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 +@@ -1552,7 +1552,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 +@@ -1680,6 +1680,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 +@@ -664,6 +664,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 +@@ -1153,6 +1153,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 -- + ---------------- --- gcc-8-8.3.0.orig/debian/patches/ada-libgnatvsn.diff +++ gcc-8-8.3.0/debian/patches/ada-libgnatvsn.diff @@ -0,0 +1,330 @@ +# DP: - Introduce a new shared library named libgnatvsn, containing +# DP: common components of GNAT under the GNAT-Modified GPL, for +# DP: use in GNAT tools, ASIS, GLADE and GPS. Link the gnat tools +# DP: against this new library. + +# 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 +@@ -0,0 +1,34 @@ ++#!/bin/sh ++ ++# Minimal configure script for libgnatvsn. We're only interested in ++# a few parameters. ++ ++{ ++ ++for arg in $*; do ++ case ${arg} in ++ --prefix=*) ++ prefix=`expr ${arg} : '--prefix=\(.\+\)'`;; ++ --srcdir=*) ++ srcdir=`expr ${arg} : '--srcdir=\(.\+\)'`;; ++ --libdir=*) ++ libdir=`expr ${arg} : '--libdir=\(.\+\)'`;; ++ --with-pkgversion=*) ++ pkgversion=`expr ${arg} : '--with-pkgversion=\(.\+\)'`;; ++ --with-bugurl=*) ++ bugurl=`expr ${arg} : '--with-bugurl=\(.\+\)'`;; ++ *) ++ echo "Warning: ignoring option: ${arg}" ++ esac ++done ++ ++sed_script= ++for name in prefix srcdir libdir pkgversion bugurl; do ++ eval value=\$$name ++ echo "$name: $value" ++ sed_script="$sed_script;s,@$name@,$value," ++done ++echo "Creating Makefile..." ++sed "$sed_script" "$srcdir/Makefile.in" > Makefile ++ ++} | tee -a config.log +--- /dev/null ++++ b/src/libgnatvsn/gnatvsn.gpr.sed +@@ -0,0 +1,8 @@ ++library project Gnatvsn is ++ for Library_Name use "gnatvsn"; ++ for Library_Kind use "dynamic"; ++ for Library_Dir use "lib_inst_dir"; ++ for Source_Dirs use ("src_inst_dir"); ++ for Library_ALI_Dir use "ali_inst_dir"; ++ for Externally_Built use "true"; ++end Gnatvsn; +--- /dev/null ++++ b/src/libgnatvsn/Makefile.in +@@ -0,0 +1,161 @@ ++# Makefile for libgnatvsn. ++# Copyright (c) 2006 Ludovic Brenta ++# Copyright (c) 2017 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 ++ ++# Parameters substituted by configure during Makefile generation ++prefix := @prefix@ ++srcdir := @srcdir@ ++libdir := @libdir@ ++pkgversion := @pkgversion@ ++bugurl := @bugurl@ ++ ++# Parameters expected in environment or command line ++$(foreach v, \ ++ ADA_CFLAGS ADAFLAGS CC CFLAGS CPPFLAGS DESTDIR INSTALL INSTALL_DATA LDFLAGS \ ++ ,$(info $(v) ($(origin $(v))) = $($(v)))) ++# It seems that both CFLAGS/ADA_CFLAGS should affect both Ada/C. ++ ++# Parameters read from external files ++BASEVER := $(shell cat $(srcdir)/../gcc/BASE-VER) ++DEVPHASE := $(shell cat $(srcdir)/../gcc/DEV-PHASE) ++DATESTAMP := $(shell cat $(srcdir)/../gcc/DATESTAMP) ++ ++# Public and default targets ++.PHONY: all install clean ++all: ++ ++###################################################################### ++ ++LIB_VERSION := $(shell expr '$(BASEVER)' : '\([0-9]\+\)') ++ ++src_inst_dir := $(prefix)/share/ada/adainclude/gnatvsn ++gpr_inst_dir := $(prefix)/share/gpr ++ali_inst_dir := $(libdir)/ada/adalib/gnatvsn ++lib_inst_dir := $(libdir) ++ ++# Initial value of variables accumulationg build flags. ++adaflags := -gnatn ++cflags := ++cppflags := ++ldflags := -Wl,--as-needed -Wl,-z,defs ++ldlibs := ++ ++# For use in version.c - double quoted strings, with appropriate ++# surrounding punctuation and spaces, and with the datestamp and ++# development phase collapsed to the empty string in release mode ++# (i.e. if DEVPHASE_c is empty). The space immediately after the ++# comma in the $(if ...) constructs is significant - do not remove it. ++cppflags += \ ++ -DBASEVER="\"$(BASEVER)\"" \ ++ -DDATESTAMP="\"$(if $(DEVPHASE), $(DATESTAMP))\"" \ ++ -DDEVPHASE="\"$(if $(DEVPHASE), ($(DEVPHASE)))\"" \ ++ -DPKGVERSION="\"$(pkgversion)\"" \ ++ -DBUGURL="\"$(bugurl)\"" \ ++ -DREVISION= ++ ++# Include and link freshly built target RTL instead of the default. ++RTL_DIR := ../libada ++adaflags += -nostdinc -I$(RTL_DIR)/adainclude ++ldlibs += -L$(RTL_DIR)/adalib -lgnat-$(LIB_VERSION) ++ ++# Append user settings last, allowing them to take precedence. ++adaflags += $(CFLAGS) $(ADA_CFLAGS) $(ADAFLAGS) ++cflags += $(CFLAGS) $(ADA_CFLAGS) ++cppflags += $(CPPFLAGS) ++ldflags += $(LDFLAGS) ++ ++# Link wanted Ada sources from source tree, so that gnat fails when new ++# dependencies are missing in the current directory, instead of silently ++# using the ones in the distant directory. ++# Let Make create all symlinks before first ada compilation, ++# because they depend on each other. ++# snames.ad[bs] is generated in the build tree. ++ ++UNITS_BOTH := aspects atree casing csets debug einfo elists fname \ ++ gnatvsn krunch lib namet nlists opt output repinfo scans sem_aux \ ++ sinfo sinput stand stringt table tree_in tree_io types uintp \ ++ uname urealp widechar xutil ++UNITS_SPEC := alloc hostparm rident ++SEPARATES := lib-list lib-sort ++ADA_SRC := $(addsuffix .ads, $(UNITS_BOTH) $(UNITS_SPEC)) \ ++ $(addsuffix .adb, $(UNITS_BOTH) $(SEPARATES)) ++OBJECTS := $(addsuffix .o, $(UNITS_BOTH) snames $(UNITS_SPEC) version) ++ ++all: libgnatvsn.a libgnatvsn.so.$(LIB_VERSION) gnatvsn.gpr ++ ++libgnatvsn.so.$(LIB_VERSION): $(addprefix obj-shared/,$(OBJECTS)) ++ $(CC) -o $@ -shared -fPIC -Wl,--soname,$@ $^ $(ldflags) $(ldlibs) ++ ln -fs libgnatvsn.so.$(LIB_VERSION) libgnatvsn.so ++ chmod a=r obj-shared/*.ali ++# Make the .ali files, but not the .o files, visible to the gnat tools. ++ cp -lp obj-shared/*.ali . ++ ++$(foreach u, $(UNITS_BOTH) snames, obj-shared/$(u).o): \ ++obj-shared/%.o: %.adb $(ADA_SRC) snames.adb snames.ads | obj-shared ++ $(CC) -c -fPIC $(adaflags) $< -o $@ ++ ++$(foreach u, $(UNITS_SPEC), obj-shared/$(u).o): \ ++obj-shared/%.o: %.ads $(ADA_SRC) snames.adb snames.ads | obj-shared ++ $(CC) -c -fPIC $(adaflags) $< -o $@ ++ ++obj-shared/version.o: version.c version.h | obj-shared ++ $(CC) -c -fPIC $(cflags) $(cppflags) $< -o $@ ++ ++libgnatvsn.a: $(addprefix obj-static/,$(OBJECTS)) ++ ar rc $@ $^ ++ ranlib $@ ++ ++$(foreach u, $(UNITS_BOTH) snames, obj-static/$(u).o): \ ++obj-static/%.o: %.adb $(ADA_SRC) snames.adb snames.ads | obj-static ++ $(CC) -c $(adaflags) $< -o $@ ++ ++$(foreach u, $(UNITS_SPEC), obj-static/$(u).o): \ ++obj-static/%.o: %.ads $(ADA_SRC) snames.adb snames.ads | obj-static ++ $(CC) -c $(adaflags) $< -o $@ ++ ++obj-static/version.o: version.c version.h | obj-static ++ $(CC) -c $(cflags) $(cppflags) $< -o $@ ++ ++obj-shared obj-static: ++ mkdir $@ ++ ++$(ADA_SRC): ++ ln -s $(srcdir)/../gcc/ada/$@ ++version.c version.h: ++ ln -s $(srcdir)/../gcc/$@ ++snames.adb snames.ads: ++ ln -s ../../gcc/ada/$@ ++ ++gnatvsn.gpr: $(srcdir)/gnatvsn.gpr.sed ++ sed '$(foreach v,src ali lib,s|$(v)_inst_dir|$($(v)_inst_dir)|;)' \ ++ $< > $@ ++ ++install: all ++ mkdir -p $(DESTDIR)$(gpr_inst_dir) ++ $(INSTALL_DATA) gnatvsn.gpr $(DESTDIR)$(gpr_inst_dir) ++ mkdir -p $(DESTDIR)$(lib_inst_dir) ++ $(INSTALL_DATA) libgnatvsn.a libgnatvsn.so.* $(DESTDIR)$(lib_inst_dir) ++ cd $(DESTDIR)$(lib_inst_dir) && ln -sf libgnatvsn.so.$(LIB_VERSION) libgnatvsn.so ++ mkdir -p $(DESTDIR)$(src_inst_dir) ++ $(INSTALL_DATA) *.adb *.ads *.c *.h $(DESTDIR)$(src_inst_dir) ++ mkdir -p $(DESTDIR)$(ali_inst_dir) ++ $(INSTALL) -m 0444 *.ali $(DESTDIR)$(ali_inst_dir) ++ ++clean: ++ rm -fr obj-static obj-shared ++ rm -f *.ali libgnatvsn* *.adb *.ads *.c *.h gnatvsn.gpr ++ rm -f Makefile config.log +--- a/src/Makefile.def ++++ b/src/Makefile.def +@@ -185,6 +185,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= libgomp; bootstrap= true; lib_path=.libs; }; + target_modules = { module= libitm; lib_path=.libs; }; + target_modules = { module= libatomic; lib_path=.libs; }; +@@ -383,6 +393,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. +--- a/src/configure.ac ++++ b/src/configure.ac +@@ -170,6 +170,7 @@ target_libraries="target-libgcc \ + target-libobjc \ + target-libada \ + ${target_libiberty} \ ++ target-libgnatvsn \ + target-libgo" + + # these tools are built using the target libraries, and are intended to +@@ -454,7 +455,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(libssp, +--- a/src/gcc/ada/gcc-interface/config-lang.in ++++ b/src/gcc/ada/gcc-interface/config-lang.in +@@ -34,7 +34,7 @@ gtfiles="\$(srcdir)/ada/gcc-interface/ad + + outputs="ada/gcc-interface/Makefile ada/Makefile" + +-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 ++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" + } else { + set rtsdir "[get_multilibs]/libada" ++ set vsndir "[get_multilibs]/libgnatvsn" + } + 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 + } + } --- gcc-8-8.3.0.orig/debian/patches/ada-link-lib.diff +++ gcc-8-8.3.0/debian/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 +@@ -35,7 +35,7 @@ gtfiles="\$(srcdir)/ada/gcc-interface/ad + outputs="ada/gcc-interface/Makefile ada/Makefile" + + 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 +@@ -78,10 +78,10 @@ ADA_RTS_SUBDIR=./rts$(subst /,_,$(MULTIS + # 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@'; }; +@@ -166,7 +175,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= libgomp; bootstrap= true; lib_path=.libs; }; + target_modules = { module= libitm; lib_path=.libs; }; + target_modules = { module= libatomic; lib_path=.libs; }; +@@ -362,6 +380,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 +@@ -142,6 +142,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. +@@ -164,6 +169,7 @@ target_libraries="target-libgcc \ + target-libffi \ + target-libobjc \ + target-libada \ ++ ${target_libiberty} \ + target-libgo" + + # these tools are built using the target libraries, and are intended to +--- 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" --- gcc-8-8.3.0.orig/debian/patches/ada-nobiarch-check.diff +++ gcc-8-8.3.0/debian/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-$* --- gcc-8-8.3.0.orig/debian/patches/ada-perl-shebang.diff +++ gcc-8-8.3.0/debian/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 + + #----------------------------------------------------------------------------- + #- -- --- gcc-8-8.3.0.orig/debian/patches/ada-sjlj.diff +++ gcc-8-8.3.0/debian/patches/ada-sjlj.diff @@ -0,0 +1,507 @@ +# Please read ada-changes-in-autogen-output.diff about src/Makefile.def. + +# !!! Must be applied after ada-libgnatvsn.diff + +Index: b/src/libada-sjlj/Makefile.in +=================================================================== +--- /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: +Index: b/src/libada-sjlj/configure.ac +=================================================================== +--- /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 +Index: b/src/Makefile.def +=================================================================== +--- a/src/Makefile.def ++++ b/src/Makefile.def +@@ -195,6 +195,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; }; +@@ -391,6 +392,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; }; +Index: b/src/configure.ac +=================================================================== +--- a/src/configure.ac ++++ b/src/configure.ac +@@ -169,6 +169,7 @@ target_libraries="target-libgcc \ + target-libffi \ + target-libobjc \ + target-libada \ ++ target-libada-sjlj \ + ${target_libiberty} \ + target-libgnatvsn \ + target-libgo" +@@ -455,7 +456,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, +Index: b/src/gcc/ada/gcc-interface/Makefile.in +=================================================================== +--- a/src/gcc/ada/gcc-interface/Makefile.in ++++ b/src/gcc/ada/gcc-interface/Makefile.in +@@ -190,7 +190,7 @@ TOOLSCASE = + + # 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 +@@ -2349,6 +2349,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) +@@ -2630,7 +2650,7 @@ gnatlib-shared: + # commenting the pragma instead of deleting the line, as the latter might + # result in getting multiple blank lines, hence possible style check errors. + gnatlib-sjlj: +- $(MAKE) $(FLAGS_TO_PASS) EH_MECHANISM="" \ ++ $(MAKE) $(FLAGS_TO_PASS) EH_MECHANISM="-gcc" RTSDIR="$(RTSDIR)" \ + THREAD_KIND="$(THREAD_KIND)" ../stamp-gnatlib1-$(RTSDIR) + sed \ + -e 's/Frontend_Exceptions.*/Frontend_Exceptions : constant Boolean := True;/' \ +@@ -2639,6 +2659,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)" \ +@@ -2690,6 +2711,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 + +Index: b/src/gcc/ada/gcc-interface/config-lang.in +=================================================================== +--- a/src/gcc/ada/gcc-interface/config-lang.in ++++ b/src/gcc/ada/gcc-interface/config-lang.in +@@ -34,8 +34,8 @@ gtfiles="\$(srcdir)/ada/gcc-interface/ad + + outputs="ada/gcc-interface/Makefile ada/Makefile" + +-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 +Index: b/src/gcc/ada/gcc-interface/Make-lang.in +=================================================================== +--- a/src/gcc/ada/gcc-interface/Make-lang.in ++++ b/src/gcc/ada/gcc-interface/Make-lang.in +@@ -844,6 +844,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 --- gcc-8-8.3.0.orig/debian/patches/ada-tools-move-ldflags.diff +++ gcc-8-8.3.0/debian/patches/ada-tools-move-ldflags.diff @@ -0,0 +1,42 @@ +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 + +Index: b/src/gcc/ada/gcc-interface/Makefile.in +=================================================================== +--- a/src/gcc/ada/gcc-interface/Makefile.in ++++ b/src/gcc/ada/gcc-interface/Makefile.in +@@ -247,7 +247,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) + +@@ -2150,7 +2150,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 +@@ -2250,7 +2250,7 @@ common-tools: ../stamp-tools + $(GNATMAKE) -c $(ADA_INCLUDES) vxaddr2line --GCC="$(CC) $(ALL_ADAFLAGS)" + $(GNATBIND) $(ADA_INCLUDES) $(GNATBIND_FLAGS) vxaddr2line + $(GNATLINK) -v vxaddr2line -o $@ \ +- --GCC="$(CC) $(ADA_INCLUDES)" --LINK="$(GCC_LINK)" ../targext.o $(CLIB) ++ --GCC="$(CC) $(ADA_INCLUDES)" --LINK="$(GCC_LINK)" ../targext.o $(CLIB) $(LDFLAGS) + + gnatmake-re: ../stamp-tools + $(GNATMAKE) -j0 $(ADA_INCLUDES) -u sdefault --GCC="$(CC) $(MOST_ADA_FLAGS)" --- gcc-8-8.3.0.orig/debian/patches/ada-verbose.diff +++ gcc-8-8.3.0/debian/patches/ada-verbose.diff @@ -0,0 +1,65 @@ +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 + +Index: b/src/gcc/ada/Make-generated.in +=================================================================== +--- 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 +Index: b/src/gcc/ada/gcc-interface/Makefile.in +=================================================================== +--- a/src/gcc/ada/gcc-interface/Makefile.in ++++ b/src/gcc/ada/gcc-interface/Makefile.in +@@ -2402,7 +2402,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 --- gcc-8-8.3.0.orig/debian/patches/add-gnu-to-libgo-headers.diff +++ gcc-8-8.3.0/debian/patches/add-gnu-to-libgo-headers.diff @@ -0,0 +1,1211 @@ +Index: b/src/libgo/go/cmd/go/internal/base/signal_unix.go +=================================================================== +--- a/src/libgo/go/cmd/go/internal/base/signal_unix.go ++++ b/src/libgo/go/cmd/go/internal/base/signal_unix.go +@@ -1,8 +1,9 @@ ++ + // Copyright 2012 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. + +-// +build aix darwin dragonfly freebsd linux nacl netbsd openbsd solaris ++// +build aix darwin dragonfly freebsd gnu linux nacl netbsd openbsd solaris + + package base + +Index: b/src/libgo/go/crypto/x509/root_unix.go +=================================================================== +--- a/src/libgo/go/crypto/x509/root_unix.go ++++ b/src/libgo/go/crypto/x509/root_unix.go +@@ -2,7 +2,7 @@ + // Use of this source code is governed by a BSD-style + // license that can be found in the LICENSE file. + +-// +build aix dragonfly freebsd linux nacl netbsd openbsd solaris ++// +build aix dragonfly freebsd gnu linux nacl netbsd openbsd solaris + + package x509 + +Index: b/src/libgo/go/net/interface_stub.go +=================================================================== +--- a/src/libgo/go/net/interface_stub.go ++++ b/src/libgo/go/net/interface_stub.go +@@ -2,7 +2,7 @@ + // Use of this source code is governed by a BSD-style + // license that can be found in the LICENSE file. + +-// +build aix nacl ++// +build aix nacl gnu + + package net + +Index: b/src/libgo/go/net/internal/socktest/switch_unix.go +=================================================================== +--- a/src/libgo/go/net/internal/socktest/switch_unix.go ++++ b/src/libgo/go/net/internal/socktest/switch_unix.go +@@ -2,7 +2,7 @@ + // Use of this source code is governed by a BSD-style + // license that can be found in the LICENSE file. + +-// +build aix darwin dragonfly freebsd linux nacl netbsd openbsd solaris ++// +build aix darwin dragonfly freebsd gnu linux nacl netbsd openbsd solaris + + package socktest + +Index: b/src/libgo/go/net/port_unix.go +=================================================================== +--- a/src/libgo/go/net/port_unix.go ++++ b/src/libgo/go/net/port_unix.go +@@ -2,7 +2,7 @@ + // Use of this source code is governed by a BSD-style + // license that can be found in the LICENSE file. + +-// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris nacl ++// +build aix darwin dragonfly freebsd gnu linux netbsd openbsd solaris nacl + + // Read system port mappings from /etc/services + +Index: b/src/libgo/go/os/dir_largefile.go +=================================================================== +--- a/src/libgo/go/os/dir_largefile.go ++++ b/src/libgo/go/os/dir_largefile.go +@@ -5,7 +5,7 @@ + // Use of this source code is governed by a BSD-style + // license that can be found in the LICENSE file. + +-// +build aix linux solaris,386 solaris,sparc ++// +build aix gnu linux solaris,386 solaris,sparc + + package os + +Index: b/src/libgo/go/os/dir_regfile.go +=================================================================== +--- a/src/libgo/go/os/dir_regfile.go ++++ b/src/libgo/go/os/dir_regfile.go +@@ -6,6 +6,7 @@ + // license that can be found in the LICENSE file. + + // +build !aix ++// +build !gnu + // +build !linux + // +build !solaris !386 + // +build !solaris !sparc +Index: b/src/libgo/go/os/dir_unix.go +=================================================================== +--- a/src/libgo/go/os/dir_unix.go ++++ b/src/libgo/go/os/dir_unix.go +@@ -2,7 +2,7 @@ + // Use of this source code is governed by a BSD-style + // license that can be found in the LICENSE file. + +-// +build aix darwin dragonfly freebsd linux nacl netbsd openbsd solaris ++// +build aix darwin dragonfly freebsd gnu linux nacl netbsd openbsd solaris + + package os + +Index: b/src/libgo/go/os/exec_unix.go +=================================================================== +--- a/src/libgo/go/os/exec_unix.go ++++ b/src/libgo/go/os/exec_unix.go +@@ -2,7 +2,7 @@ + // Use of this source code is governed by a BSD-style + // license that can be found in the LICENSE file. + +-// +build aix darwin dragonfly freebsd linux nacl netbsd openbsd solaris ++// +build aix darwin dragonfly freebsd gnu linux nacl netbsd openbsd solaris + + package os + +Index: b/src/libgo/go/os/stat_atim.go +=================================================================== +--- a/src/libgo/go/os/stat_atim.go ++++ b/src/libgo/go/os/stat_atim.go +@@ -2,7 +2,7 @@ + // Use of this source code is governed by a BSD-style + // license that can be found in the LICENSE file. + +-// +build linux openbsd solaristag ++// +build gnu linux openbsd solaristag + + package os + +Index: b/src/libgo/go/os/stat_unix.go +=================================================================== +--- a/src/libgo/go/os/stat_unix.go ++++ b/src/libgo/go/os/stat_unix.go +@@ -2,7 +2,7 @@ + // Use of this source code is governed by a BSD-style + // license that can be found in the LICENSE file. + +-// +build aix darwin dragonfly freebsd linux nacl netbsd openbsd solaris ++// +build aix darwin dragonfly freebsd gnu linux nacl netbsd openbsd solaris + + package os + +Index: b/src/libgo/go/os/sys_uname.go +=================================================================== +--- a/src/libgo/go/os/sys_uname.go ++++ b/src/libgo/go/os/sys_uname.go +@@ -4,7 +4,7 @@ + + // For systems which only store the hostname in uname (Solaris). + +-// +build aix solaris irix rtems ++// +build aix gnu solaris irix rtems + + package os + +Index: b/src/libgo/go/os/user/listgroups_unix.go +=================================================================== +--- a/src/libgo/go/os/user/listgroups_unix.go ++++ b/src/libgo/go/os/user/listgroups_unix.go +@@ -2,7 +2,7 @@ + // Use of this source code is governed by a BSD-style + // license that can be found in the LICENSE file. + +-// +build dragonfly darwin freebsd !android,linux netbsd openbsd ++// +build dragonfly darwin freebsd gnu !android,linux netbsd openbsd + + package user + +Index: b/src/libgo/go/os/wait_unimp.go +=================================================================== +--- a/src/libgo/go/os/wait_unimp.go ++++ b/src/libgo/go/os/wait_unimp.go +@@ -2,7 +2,7 @@ + // Use of this source code is governed by a BSD-style + // license that can be found in the LICENSE file. + +-// +build aix darwin dragonfly nacl netbsd openbsd solaris ++// +build aix darwin dragonfly gnu nacl netbsd openbsd solaris + + package os + +Index: b/src/libgo/go/path/filepath/path_unix.go +=================================================================== +--- a/src/libgo/go/path/filepath/path_unix.go ++++ b/src/libgo/go/path/filepath/path_unix.go +@@ -2,7 +2,7 @@ + // Use of this source code is governed by a BSD-style + // license that can be found in the LICENSE file. + +-// +build aix darwin dragonfly freebsd linux nacl netbsd openbsd solaris ++// +build aix darwin dragonfly freebsd gnu linux nacl netbsd openbsd solaris + + package filepath + +Index: b/src/libgo/go/runtime/env_posix.go +=================================================================== +--- a/src/libgo/go/runtime/env_posix.go ++++ b/src/libgo/go/runtime/env_posix.go +@@ -2,7 +2,7 @@ + // Use of this source code is governed by a BSD-style + // license that can be found in the LICENSE file. + +-// +build aix darwin dragonfly freebsd linux nacl netbsd openbsd solaris windows ++// +build aix darwin dragonfly freebsd gnu linux nacl netbsd openbsd solaris windows + + package runtime + +Index: b/src/libgo/go/runtime/lock_sema.go +=================================================================== +--- a/src/libgo/go/runtime/lock_sema.go ++++ b/src/libgo/go/runtime/lock_sema.go +@@ -2,7 +2,7 @@ + // Use of this source code is governed by a BSD-style + // license that can be found in the LICENSE file. + +-// +build aix darwin nacl netbsd openbsd plan9 solaris windows ++// +build aix darwin gnu nacl netbsd openbsd plan9 solaris windows + + package runtime + +Index: b/src/libgo/go/runtime/netpoll.go +=================================================================== +--- a/src/libgo/go/runtime/netpoll.go ++++ b/src/libgo/go/runtime/netpoll.go +@@ -2,7 +2,7 @@ + // Use of this source code is governed by a BSD-style + // license that can be found in the LICENSE file. + +-// +build aix darwin dragonfly freebsd linux nacl netbsd openbsd solaris windows ++// +build aix darwin dragonfly freebsd gnu linux nacl netbsd openbsd solaris windows + + package runtime + +Index: b/src/libgo/go/runtime/signal_gccgo.go +=================================================================== +--- a/src/libgo/go/runtime/signal_gccgo.go ++++ b/src/libgo/go/runtime/signal_gccgo.go +@@ -2,7 +2,7 @@ + // Use of this source code is governed by a BSD-style + // license that can be found in the LICENSE file. + +-// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris ++// +build aix darwin dragonfly freebsd gnu linux netbsd openbsd solaris + + package runtime + +Index: b/src/libgo/go/runtime/signal_sighandler.go +=================================================================== +--- a/src/libgo/go/runtime/signal_sighandler.go ++++ b/src/libgo/go/runtime/signal_sighandler.go +@@ -2,7 +2,7 @@ + // Use of this source code is governed by a BSD-style + // license that can be found in the LICENSE file. + +-// +build aix darwin dragonfly freebsd linux nacl netbsd openbsd solaris ++// +build aix darwin dragonfly freebsd gnu linux nacl netbsd openbsd solaris + + package runtime + +Index: b/src/libgo/go/syscall/errstr.go +=================================================================== +--- a/src/libgo/go/syscall/errstr.go ++++ b/src/libgo/go/syscall/errstr.go +@@ -4,6 +4,7 @@ + // Use of this source code is governed by a BSD-style + // license that can be found in the LICENSE file. + ++// +build !gnu + // +build !linux + + package syscall +Index: b/src/libgo/go/syscall/libcall_posix.go +=================================================================== +--- a/src/libgo/go/syscall/libcall_posix.go ++++ b/src/libgo/go/syscall/libcall_posix.go +@@ -9,6 +9,8 @@ + // Note that sometimes we use a lowercase //sys name and + // wrap it in our own nicer implementation. + ++// +build !gnu ++ + package syscall + + import "unsafe" +Index: b/src/libgo/go/syscall/libcall_posix_largefile.go +=================================================================== +--- a/src/libgo/go/syscall/libcall_posix_largefile.go ++++ b/src/libgo/go/syscall/libcall_posix_largefile.go +@@ -2,7 +2,7 @@ + // Use of this source code is governed by a BSD-style + // license that can be found in the LICENSE file. + +-// +build aix linux solaris,386 solaris,sparc ++// +build aix gnu linux solaris,386 solaris,sparc + + // POSIX library calls on systems which use the largefile interface. + +Index: b/src/libgo/go/syscall/libcall_posix_regfile.go +=================================================================== +--- a/src/libgo/go/syscall/libcall_posix_regfile.go ++++ b/src/libgo/go/syscall/libcall_posix_regfile.go +@@ -3,6 +3,7 @@ + // license that can be found in the LICENSE file. + + // +build !aix ++// +build !gnu + // +build !linux + // +build !solaris !386 + // +build !solaris !sparc +Index: b/src/libgo/go/syscall/libcall_posix_utimesnano.go +=================================================================== +--- a/src/libgo/go/syscall/libcall_posix_utimesnano.go ++++ b/src/libgo/go/syscall/libcall_posix_utimesnano.go +@@ -2,7 +2,7 @@ + // Use of this source code is governed by a BSD-style + // license that can be found in the LICENSE file. + +-// +build aix darwin dragonfly freebsd openbsd netbsd solaris ++// +build aix darwin dragonfly freebsd gnu openbsd netbsd solaris + + // General POSIX version of UtimesNano. + +Index: b/src/libgo/go/net/cgo_resnew.go +=================================================================== +--- a/src/libgo/go/net/cgo_resnew.go ++++ b/src/libgo/go/net/cgo_resnew.go +@@ -3,7 +3,7 @@ + // license that can be found in the LICENSE file. + + // +build cgo,!netgo +-// +build aix darwin linux,!android netbsd solaris ++// +build aix darwin gnu linux,!android netbsd solaris + + package net + +Index: b/src/libgo/go/net/cgo_sockold.go +=================================================================== +--- a/src/libgo/go/net/cgo_sockold.go ++++ b/src/libgo/go/net/cgo_sockold.go +@@ -3,7 +3,7 @@ + // license that can be found in the LICENSE file. + + // +build cgo,!netgo +-// +build aix darwin dragonfly freebsd netbsd openbsd ++// +build aix darwin dragonfly freebsd gnu netbsd openbsd + + package net + +Index: b/src/libgo/go/internal/poll/fd_poll_runtime.go +=================================================================== +--- a/src/libgo/go/internal/poll/fd_poll_runtime.go ++++ b/src/libgo/go/internal/poll/fd_poll_runtime.go +@@ -2,7 +2,7 @@ + // Use of this source code is governed by a BSD-style + // license that can be found in the LICENSE file. + +-// +build aix darwin dragonfly freebsd linux netbsd openbsd windows solaris ++// +build aix darwin dragonfly freebsd gnu linux netbsd openbsd windows solaris + + package poll + +Index: b/src/libgo/go/internal/poll/hook_cloexec.go +=================================================================== +--- a/src/libgo/go/internal/poll/hook_cloexec.go ++++ b/src/libgo/go/internal/poll/hook_cloexec.go +@@ -2,7 +2,7 @@ + // Use of this source code is governed by a BSD-style + // license that can be found in the LICENSE file. + +-// +build dragonfly freebsd linux ++// +build dragonfly freebsd gnu linux + + package poll + +Index: b/src/libgo/go/internal/poll/fd_posix.go +=================================================================== +--- a/src/libgo/go/internal/poll/fd_posix.go ++++ b/src/libgo/go/internal/poll/fd_posix.go +@@ -2,7 +2,7 @@ + // Use of this source code is governed by a BSD-style + // license that can be found in the LICENSE file. + +-// +build aix darwin dragonfly freebsd linux nacl netbsd openbsd solaris windows ++// +build aix darwin dragonfly freebsd gnu linux nacl netbsd openbsd solaris windows + + package poll + +Index: b/src/libgo/go/net/sock_cloexec.go +=================================================================== +--- a/src/libgo/go/net/sock_cloexec.go ++++ b/src/libgo/go/net/sock_cloexec.go +@@ -5,7 +5,7 @@ + // This file implements sysSocket and accept for platforms that + // provide a fast path for setting SetNonblock and CloseOnExec. + +-// +build dragonfly freebsd linux ++// +build dragonfly freebsd gnu linux + + package net + +Index: b/src/libgo/go/syscall/exec_unix.go +=================================================================== +--- a/src/libgo/go/syscall/exec_unix.go ++++ b/src/libgo/go/syscall/exec_unix.go +@@ -2,7 +2,7 @@ + // Use of this source code is governed by a BSD-style + // license that can be found in the LICENSE file. + +-// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris ++// +build aix darwin dragonfly freebsd gnu linux netbsd openbsd solaris + + // Fork, exec, wait, etc. + +Index: b/src/libgo/go/os/exec/lp_unix.go +=================================================================== +--- a/src/libgo/go/os/exec/lp_unix.go ++++ b/src/libgo/go/os/exec/lp_unix.go +@@ -2,7 +2,7 @@ + // Use of this source code is governed by a BSD-style + // license that can be found in the LICENSE file. + +-// +build aix darwin dragonfly freebsd linux nacl netbsd openbsd solaris ++// +build aix darwin dragonfly freebsd gnu linux nacl netbsd openbsd solaris + + package exec + +Index: b/src/libgo/go/os/signal/signal_unix.go +=================================================================== +--- a/src/libgo/go/os/signal/signal_unix.go ++++ b/src/libgo/go/os/signal/signal_unix.go +@@ -2,7 +2,7 @@ + // Use of this source code is governed by a BSD-style + // license that can be found in the LICENSE file. + +-// +build aix darwin dragonfly freebsd linux nacl netbsd openbsd solaris windows ++// +build aix darwin dragonfly freebsd gnu linux nacl netbsd openbsd solaris windows + + package signal + +Index: b/src/libgo/go/os/error_unix.go +=================================================================== +--- a/src/libgo/go/os/error_unix.go ++++ b/src/libgo/go/os/error_unix.go +@@ -2,7 +2,7 @@ + // Use of this source code is governed by a BSD-style + // license that can be found in the LICENSE file. + +-// +build aix darwin dragonfly freebsd linux nacl netbsd openbsd solaris ++// +build aix darwin dragonfly freebsd gnu linux nacl netbsd openbsd solaris + + package os + +Index: b/src/libgo/go/os/file_posix.go +=================================================================== +--- a/src/libgo/go/os/file_posix.go ++++ b/src/libgo/go/os/file_posix.go +@@ -2,7 +2,7 @@ + // Use of this source code is governed by a BSD-style + // license that can be found in the LICENSE file. + +-// +build aix darwin dragonfly freebsd linux nacl netbsd openbsd solaris windows ++// +build aix darwin dragonfly freebsd gnu linux nacl netbsd openbsd solaris windows + + package os + +Index: b/src/libgo/go/os/path_unix.go +=================================================================== +--- a/src/libgo/go/os/path_unix.go ++++ b/src/libgo/go/os/path_unix.go +@@ -2,7 +2,7 @@ + // Use of this source code is governed by a BSD-style + // license that can be found in the LICENSE file. + +-// +build aix darwin dragonfly freebsd linux nacl netbsd openbsd solaris ++// +build aix darwin dragonfly freebsd gnu linux nacl netbsd openbsd solaris + + package os + +Index: b/src/libgo/go/os/sys_unix.go +=================================================================== +--- a/src/libgo/go/os/sys_unix.go ++++ b/src/libgo/go/os/sys_unix.go +@@ -2,7 +2,7 @@ + // Use of this source code is governed by a BSD-style + // license that can be found in the LICENSE file. + +-// +build aix dragonfly linux netbsd openbsd solaris ++// +build aix dragonfly gnu linux netbsd openbsd solaris + + package os + +Index: b/src/libgo/go/os/user/decls_unix.go +=================================================================== +--- a/src/libgo/go/os/user/decls_unix.go ++++ b/src/libgo/go/os/user/decls_unix.go +@@ -2,7 +2,7 @@ + // Use of this source code is governed by a BSD-style + // license that can be found in the LICENSE file. + +-// +build darwin dragonfly freebsd linux netbsd openbsd ++// +build darwin dragonfly freebsd gnu linux netbsd openbsd + // +build cgo + + package user +Index: b/src/libgo/go/os/user/lookup_unix.go +=================================================================== +--- a/src/libgo/go/os/user/lookup_unix.go ++++ b/src/libgo/go/os/user/lookup_unix.go +@@ -2,7 +2,7 @@ + // Use of this source code is governed by a BSD-style + // license that can be found in the LICENSE file. + +-// +build darwin dragonfly freebsd !android,linux nacl netbsd openbsd solaris ++// +build darwin dragonfly freebsd gnu !android,linux nacl netbsd openbsd solaris + // +build !cgo + + package user +Index: b/src/libgo/go/syscall/env_unix.go +=================================================================== +--- a/src/libgo/go/syscall/env_unix.go ++++ b/src/libgo/go/syscall/env_unix.go +@@ -2,7 +2,7 @@ + // Use of this source code is governed by a BSD-style + // license that can be found in the LICENSE file. + +-// +build aix darwin dragonfly freebsd linux nacl netbsd openbsd solaris ++// +build aix darwin dragonfly freebsd gnu linux nacl netbsd openbsd solaris + + // Unix environment variables. + +Index: b/src/libgo/go/syscall/exec_bsd.go +=================================================================== +--- a/src/libgo/go/syscall/exec_bsd.go ++++ b/src/libgo/go/syscall/exec_bsd.go +@@ -2,7 +2,7 @@ + // Use of this source code is governed by a BSD-style + // license that can be found in the LICENSE file. + +-// +build aix darwin dragonfly freebsd netbsd openbsd solaris ++// +build aix darwin dragonfly freebsd gnu netbsd openbsd solaris + + package syscall + +Index: b/src/libgo/go/syscall/sockcmsg_unix.go +=================================================================== +--- a/src/libgo/go/syscall/sockcmsg_unix.go ++++ b/src/libgo/go/syscall/sockcmsg_unix.go +@@ -2,7 +2,7 @@ + // Use of this source code is governed by a BSD-style + // license that can be found in the LICENSE file. + +-// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris ++// +build aix darwin dragonfly freebsd gnu linux netbsd openbsd solaris + + // Socket control messages + +Index: b/src/libgo/go/syscall/syscall_unix.go +=================================================================== +--- a/src/libgo/go/syscall/syscall_unix.go ++++ b/src/libgo/go/syscall/syscall_unix.go +@@ -2,7 +2,7 @@ + // Use of this source code is governed by a BSD-style + // license that can be found in the LICENSE file. + +-// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris ++// +build aix darwin dragonfly freebsd gnu linux netbsd openbsd solaris + + package syscall + +Index: b/src/libgo/go/time/sys_unix.go +=================================================================== +--- a/src/libgo/go/time/sys_unix.go ++++ b/src/libgo/go/time/sys_unix.go +@@ -2,7 +2,7 @@ + // Use of this source code is governed by a BSD-style + // license that can be found in the LICENSE file. + +-// +build aix darwin dragonfly freebsd linux nacl netbsd openbsd solaris ++// +build aix darwin dragonfly freebsd gnu linux nacl netbsd openbsd solaris + + package time + +Index: b/src/libgo/go/time/zoneinfo_unix.go +=================================================================== +--- a/src/libgo/go/time/zoneinfo_unix.go ++++ b/src/libgo/go/time/zoneinfo_unix.go +@@ -2,7 +2,7 @@ + // Use of this source code is governed by a BSD-style + // license that can be found in the LICENSE file. + +-// +build aix darwin,386 darwin,amd64 dragonfly freebsd linux,!android nacl netbsd openbsd solaris ++// +build aix darwin,386 darwin,amd64 dragonfly freebsd gnu linux,!android nacl netbsd openbsd solaris + + // Parse "zoneinfo" time zone file. + // This is a fairly standard file format used on OS X, Linux, BSD, Sun, and others. +Index: b/src/libgo/go/net/addrselect.go +=================================================================== +--- a/src/libgo/go/net/addrselect.go ++++ b/src/libgo/go/net/addrselect.go +@@ -2,7 +2,7 @@ + // Use of this source code is governed by a BSD-style + // license that can be found in the LICENSE file. + +-// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris ++// +build aix darwin dragonfly freebsd gnu linux netbsd openbsd solaris + + // Minimal RFC 6724 address selection. + +Index: b/src/libgo/go/net/conf.go +=================================================================== +--- a/src/libgo/go/net/conf.go ++++ b/src/libgo/go/net/conf.go +@@ -2,7 +2,7 @@ + // Use of this source code is governed by a BSD-style + // license that can be found in the LICENSE file. + +-// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris ++// +build aix darwin dragonfly freebsd gnu linux netbsd openbsd solaris + + package net + +Index: b/src/libgo/go/net/dnsclient_unix.go +=================================================================== +--- a/src/libgo/go/net/dnsclient_unix.go ++++ b/src/libgo/go/net/dnsclient_unix.go +@@ -2,7 +2,7 @@ + // Use of this source code is governed by a BSD-style + // license that can be found in the LICENSE file. + +-// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris ++// +build aix darwin dragonfly freebsd gnu linux netbsd openbsd solaris + + // DNS client: see RFC 1035. + // Has to be linked into package net for Dial. +Index: b/src/libgo/go/net/dnsconfig_unix.go +=================================================================== +--- a/src/libgo/go/net/dnsconfig_unix.go ++++ b/src/libgo/go/net/dnsconfig_unix.go +@@ -2,7 +2,7 @@ + // Use of this source code is governed by a BSD-style + // license that can be found in the LICENSE file. + +-// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris ++// +build aix darwin dragonfly freebsd gnu linux netbsd openbsd solaris + + // Read system DNS config from /etc/resolv.conf + +Index: b/src/libgo/go/net/fd_unix.go +=================================================================== +--- a/src/libgo/go/net/fd_unix.go ++++ b/src/libgo/go/net/fd_unix.go +@@ -2,7 +2,7 @@ + // Use of this source code is governed by a BSD-style + // license that can be found in the LICENSE file. + +-// +build aix darwin dragonfly freebsd linux nacl netbsd openbsd solaris ++// +build aix darwin dragonfly freebsd gnu linux nacl netbsd openbsd solaris + + package net + +Index: b/src/libgo/go/net/file_unix.go +=================================================================== +--- a/src/libgo/go/net/file_unix.go ++++ b/src/libgo/go/net/file_unix.go +@@ -2,7 +2,7 @@ + // Use of this source code is governed by a BSD-style + // license that can be found in the LICENSE file. + +-// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris ++// +build aix darwin dragonfly freebsd gnu linux netbsd openbsd solaris + + package net + +Index: b/src/libgo/go/net/hook_unix.go +=================================================================== +--- a/src/libgo/go/net/hook_unix.go ++++ b/src/libgo/go/net/hook_unix.go +@@ -2,7 +2,7 @@ + // Use of this source code is governed by a BSD-style + // license that can be found in the LICENSE file. + +-// +build aix darwin dragonfly freebsd linux nacl netbsd openbsd solaris ++// +build aix darwin dragonfly freebsd gnu linux nacl netbsd openbsd solaris + + package net + +Index: b/src/libgo/go/net/iprawsock_posix.go +=================================================================== +--- a/src/libgo/go/net/iprawsock_posix.go ++++ b/src/libgo/go/net/iprawsock_posix.go +@@ -2,7 +2,7 @@ + // Use of this source code is governed by a BSD-style + // license that can be found in the LICENSE file. + +-// +build aix darwin dragonfly freebsd linux nacl netbsd openbsd solaris windows ++// +build aix darwin dragonfly freebsd gnu linux nacl netbsd openbsd solaris windows + + package net + +Index: b/src/libgo/go/net/ipsock_posix.go +=================================================================== +--- a/src/libgo/go/net/ipsock_posix.go ++++ b/src/libgo/go/net/ipsock_posix.go +@@ -2,7 +2,7 @@ + // Use of this source code is governed by a BSD-style + // license that can be found in the LICENSE file. + +-// +build aix darwin dragonfly freebsd linux nacl netbsd openbsd solaris windows ++// +build aix darwin dragonfly freebsd gnu linux nacl netbsd openbsd solaris windows + + package net + +Index: b/src/libgo/go/net/lookup_unix.go +=================================================================== +--- a/src/libgo/go/net/lookup_unix.go ++++ b/src/libgo/go/net/lookup_unix.go +@@ -2,7 +2,7 @@ + // Use of this source code is governed by a BSD-style + // license that can be found in the LICENSE file. + +-// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris ++// +build aix darwin dragonfly freebsd gnu linux netbsd openbsd solaris + + package net + +Index: b/src/libgo/go/net/nss.go +=================================================================== +--- a/src/libgo/go/net/nss.go ++++ b/src/libgo/go/net/nss.go +@@ -2,7 +2,7 @@ + // Use of this source code is governed by a BSD-style + // license that can be found in the LICENSE file. + +-// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris ++// +build aix darwin dragonfly freebsd gnu linux netbsd openbsd solaris + + package net + +Index: b/src/libgo/go/net/sockopt_posix.go +=================================================================== +--- a/src/libgo/go/net/sockopt_posix.go ++++ b/src/libgo/go/net/sockopt_posix.go +@@ -2,7 +2,7 @@ + // Use of this source code is governed by a BSD-style + // license that can be found in the LICENSE file. + +-// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris windows ++// +build aix darwin dragonfly freebsd gnu linux netbsd openbsd solaris windows + + package net + +Index: b/src/libgo/go/net/sock_posix.go +=================================================================== +--- a/src/libgo/go/net/sock_posix.go ++++ b/src/libgo/go/net/sock_posix.go +@@ -2,7 +2,7 @@ + // Use of this source code is governed by a BSD-style + // license that can be found in the LICENSE file. + +-// +build aix darwin dragonfly freebsd linux nacl netbsd openbsd solaris windows ++// +build aix darwin dragonfly freebsd gnu linux nacl netbsd openbsd solaris windows + + package net + +Index: b/src/libgo/go/net/tcpsockopt_posix.go +=================================================================== +--- a/src/libgo/go/net/tcpsockopt_posix.go ++++ b/src/libgo/go/net/tcpsockopt_posix.go +@@ -2,7 +2,7 @@ + // Use of this source code is governed by a BSD-style + // license that can be found in the LICENSE file. + +-// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris windows ++// +build aix darwin dragonfly freebsd gnu linux netbsd openbsd solaris windows + + package net + +Index: b/src/libgo/go/net/tcpsockopt_unix.go +=================================================================== +--- a/src/libgo/go/net/tcpsockopt_unix.go ++++ b/src/libgo/go/net/tcpsockopt_unix.go +@@ -2,7 +2,7 @@ + // Use of this source code is governed by a BSD-style + // license that can be found in the LICENSE file. + +-// +build aix freebsd linux netbsd ++// +build aix freebsd gnu linux netbsd + + package net + +Index: b/src/libgo/go/net/tcpsock_posix.go +=================================================================== +--- a/src/libgo/go/net/tcpsock_posix.go ++++ b/src/libgo/go/net/tcpsock_posix.go +@@ -2,7 +2,7 @@ + // Use of this source code is governed by a BSD-style + // license that can be found in the LICENSE file. + +-// +build aix darwin dragonfly freebsd linux nacl netbsd openbsd solaris windows ++// +build aix darwin dragonfly freebsd gnu linux nacl netbsd openbsd solaris windows + + package net + +Index: b/src/libgo/go/net/udpsock_posix.go +=================================================================== +--- a/src/libgo/go/net/udpsock_posix.go ++++ b/src/libgo/go/net/udpsock_posix.go +@@ -2,7 +2,7 @@ + // Use of this source code is governed by a BSD-style + // license that can be found in the LICENSE file. + +-// +build aix darwin dragonfly freebsd linux nacl netbsd openbsd solaris windows ++// +build aix darwin dragonfly freebsd gnu linux nacl netbsd openbsd solaris windows + + package net + +Index: b/src/libgo/go/net/unixsock_posix.go +=================================================================== +--- a/src/libgo/go/net/unixsock_posix.go ++++ b/src/libgo/go/net/unixsock_posix.go +@@ -2,7 +2,7 @@ + // Use of this source code is governed by a BSD-style + // license that can be found in the LICENSE file. + +-// +build aix darwin dragonfly freebsd linux nacl netbsd openbsd solaris windows ++// +build aix darwin dragonfly freebsd gnu linux nacl netbsd openbsd solaris windows + + package net + +Index: b/src/libgo/go/os/exec_posix.go +=================================================================== +--- a/src/libgo/go/os/exec_posix.go ++++ b/src/libgo/go/os/exec_posix.go +@@ -2,7 +2,7 @@ + // Use of this source code is governed by a BSD-style + // license that can be found in the LICENSE file. + +-// +build aix darwin dragonfly freebsd linux nacl netbsd openbsd solaris windows ++// +build aix darwin dragonfly freebsd gnu linux nacl netbsd openbsd solaris windows + + package os + +Index: b/src/libgo/go/os/file_unix.go +=================================================================== +--- a/src/libgo/go/os/file_unix.go ++++ b/src/libgo/go/os/file_unix.go +@@ -2,7 +2,7 @@ + // Use of this source code is governed by a BSD-style + // license that can be found in the LICENSE file. + +-// +build aix darwin dragonfly freebsd linux nacl netbsd openbsd solaris ++// +build aix darwin dragonfly freebsd gnu linux nacl netbsd openbsd solaris + + package os + +Index: b/src/libgo/go/os/executable_procfs.go +=================================================================== +--- a/src/libgo/go/os/executable_procfs.go ++++ b/src/libgo/go/os/executable_procfs.go +@@ -2,7 +2,7 @@ + // Use of this source code is governed by a BSD-style + // license that can be found in the LICENSE file. + +-// +build linux netbsd dragonfly nacl ++// +build gnu linux netbsd dragonfly nacl + + package os + +Index: b/src/libgo/go/syscall/timestruct.go +=================================================================== +--- a/src/libgo/go/syscall/timestruct.go ++++ b/src/libgo/go/syscall/timestruct.go +@@ -2,7 +2,7 @@ + // Use of this source code is governed by a BSD-style + // license that can be found in the LICENSE file. + +-// +build aix darwin dragonfly freebsd linux nacl netbsd openbsd solaris ++// +build aix darwin dragonfly freebsd gnu linux nacl netbsd openbsd solaris + + package syscall + +Index: b/src/libgo/go/net/cgo_unix.go +=================================================================== +--- a/src/libgo/go/net/cgo_unix.go ++++ b/src/libgo/go/net/cgo_unix.go +@@ -3,7 +3,7 @@ + // license that can be found in the LICENSE file. + + // +build cgo,!netgo +-// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris ++// +build aix darwin dragonfly freebsd gnu linux netbsd openbsd solaris + + package net + +Index: b/src/libgo/go/archive/tar/stat_unix.go +=================================================================== +--- a/src/libgo/go/archive/tar/stat_unix.go ++++ b/src/libgo/go/archive/tar/stat_unix.go +@@ -2,7 +2,7 @@ + // Use of this source code is governed by a BSD-style + // license that can be found in the LICENSE file. + +-// +build aix linux darwin dragonfly freebsd openbsd netbsd solaris ++// +build aix gnu linux darwin dragonfly freebsd openbsd netbsd solaris + + package tar + +Index: b/src/libgo/go/crypto/rand/eagain.go +=================================================================== +--- a/src/libgo/go/crypto/rand/eagain.go ++++ b/src/libgo/go/crypto/rand/eagain.go +@@ -2,7 +2,7 @@ + // Use of this source code is governed by a BSD-style + // license that can be found in the LICENSE file. + +-// +build aix darwin dragonfly freebsd linux nacl netbsd openbsd solaris ++// +build aix darwin dragonfly freebsd gnu linux nacl netbsd openbsd solaris + + package rand + +Index: b/src/libgo/go/crypto/rand/rand_unix.go +=================================================================== +--- a/src/libgo/go/crypto/rand/rand_unix.go ++++ b/src/libgo/go/crypto/rand/rand_unix.go +@@ -2,7 +2,7 @@ + // Use of this source code is governed by a BSD-style + // license that can be found in the LICENSE file. + +-// +build aix darwin dragonfly freebsd linux nacl netbsd openbsd plan9 solaris ++// +build aix darwin dragonfly freebsd gnu linux nacl netbsd openbsd plan9 solaris + + // Unix cryptographically secure pseudorandom number + // generator. +Index: b/src/libgo/go/mime/type_unix.go +=================================================================== +--- a/src/libgo/go/mime/type_unix.go ++++ b/src/libgo/go/mime/type_unix.go +@@ -2,7 +2,7 @@ + // Use of this source code is governed by a BSD-style + // license that can be found in the LICENSE file. + +-// +build aix darwin dragonfly freebsd linux nacl netbsd openbsd solaris ++// +build aix darwin dragonfly freebsd gnu linux nacl netbsd openbsd solaris + + package mime + +Index: b/src/libgo/go/plugin/plugin_dlopen.go +=================================================================== +--- a/src/libgo/go/plugin/plugin_dlopen.go ++++ b/src/libgo/go/plugin/plugin_dlopen.go +@@ -2,7 +2,7 @@ + // Use of this source code is governed by a BSD-style + // license that can be found in the LICENSE file. + +-// +build linux,cgo darwin,cgo ++// +build linux,cgo darwin,cgo gnu,cgo + + package plugin + +Index: b/src/libgo/go/syscall/dirent.go +=================================================================== +--- a/src/libgo/go/syscall/dirent.go ++++ b/src/libgo/go/syscall/dirent.go +@@ -2,7 +2,7 @@ + // Use of this source code is governed by a BSD-style + // license that can be found in the LICENSE file. + +-// +build aix darwin dragonfly freebsd linux nacl netbsd openbsd solaris ++// +build aix darwin dragonfly freebsd gnu linux nacl netbsd openbsd solaris + + package syscall + +Index: b/src/libgo/runtime/env_posix.c +=================================================================== +--- a/src/libgo/runtime/env_posix.c ++++ b/src/libgo/runtime/env_posix.c +@@ -2,7 +2,7 @@ + // Use of this source code is governed by a BSD-style + // license that can be found in the LICENSE file. + +-// +build darwin dragonfly freebsd linux nacl netbsd openbsd solaris windows ++// +build darwin dragonfly freebsd gnu linux nacl netbsd openbsd solaris windows + + #include "runtime.h" + #include "array.h" +Index: b/src/libgo/go/net/internal/socktest/sys_unix.go +=================================================================== +--- a/src/libgo/go/net/internal/socktest/sys_unix.go ++++ b/src/libgo/go/net/internal/socktest/sys_unix.go +@@ -2,7 +2,7 @@ + // Use of this source code is governed by a BSD-style + // license that can be found in the LICENSE file. + +-// +build aix darwin dragonfly freebsd linux nacl netbsd openbsd solaris ++// +build aix darwin dragonfly freebsd gnu linux nacl netbsd openbsd solaris + + package socktest + +Index: b/src/libgo/go/plugin/plugin_stubs.go +=================================================================== +--- a/src/libgo/go/plugin/plugin_stubs.go ++++ b/src/libgo/go/plugin/plugin_stubs.go +@@ -2,7 +2,7 @@ + // Use of this source code is governed by a BSD-style + // license that can be found in the LICENSE file. + +-// +build !linux,!darwin !cgo ++// +build !gnu !linux,!darwin !cgo + + package plugin + +Index: b/src/libgo/go/net/internal/socktest/sys_cloexec.go +=================================================================== +--- a/src/libgo/go/net/internal/socktest/sys_cloexec.go ++++ b/src/libgo/go/net/internal/socktest/sys_cloexec.go +@@ -2,7 +2,7 @@ + // Use of this source code is governed by a BSD-style + // license that can be found in the LICENSE file. + +-// +build dragonfly freebsd linux ++// +build dragonfly freebsd gnu linux + + package socktest + +Index: b/src/libgo/go/os/user/cgo_lookup_unix.go +=================================================================== +--- a/src/libgo/go/os/user/cgo_lookup_unix.go ++++ b/src/libgo/go/os/user/cgo_lookup_unix.go +@@ -2,7 +2,7 @@ + // Use of this source code is governed by a BSD-style + // license that can be found in the LICENSE file. + +-// +build aix darwin dragonfly freebsd !android,linux netbsd openbsd solaris ++// +build aix darwin dragonfly freebsd gnu !android,linux netbsd openbsd solaris + // +build cgo + + package user +Index: b/src/libgo/go/net/error_posix.go +=================================================================== +--- a/src/libgo/go/net/error_posix.go ++++ b/src/libgo/go/net/error_posix.go +@@ -2,7 +2,7 @@ + // Use of this source code is governed by a BSD-style + // license that can be found in the LICENSE file. + +-// +build aix darwin dragonfly freebsd linux nacl netbsd openbsd solaris windows ++// +build aix darwin dragonfly freebsd gnu linux nacl netbsd openbsd solaris windows + + package net + +Index: b/src/libgo/go/internal/poll/fd_unix.go +=================================================================== +--- a/src/libgo/go/internal/poll/fd_unix.go ++++ b/src/libgo/go/internal/poll/fd_unix.go +@@ -2,7 +2,7 @@ + // Use of this source code is governed by a BSD-style + // license that can be found in the LICENSE file. + +-// +build aix darwin dragonfly freebsd linux nacl netbsd openbsd solaris ++// +build aix darwin dragonfly freebsd gnu linux nacl netbsd openbsd solaris + + package poll + +Index: b/src/libgo/go/syscall/forkpipe_bsd.go +=================================================================== +--- a/src/libgo/go/syscall/forkpipe_bsd.go ++++ b/src/libgo/go/syscall/forkpipe_bsd.go +@@ -2,7 +2,7 @@ + // Use of this source code is governed by a BSD-style + // license that can be found in the LICENSE file. + +-// +build aix darwin dragonfly netbsd openbsd solaris ++// +build aix darwin dragonfly gnu netbsd openbsd solaris + + package syscall + +Index: b/src/libgo/go/internal/poll/hook_unix.go +=================================================================== +--- a/src/libgo/go/internal/poll/hook_unix.go ++++ b/src/libgo/go/internal/poll/hook_unix.go +@@ -2,7 +2,7 @@ + // Use of this source code is governed by a BSD-style + // license that can be found in the LICENSE file. + +-// +build aix darwin dragonfly freebsd linux nacl netbsd openbsd solaris ++// +build aix darwin dragonfly freebsd gnu linux nacl netbsd openbsd solaris + + package poll + +Index: b/src/libgo/go/internal/poll/sock_cloexec.go +=================================================================== +--- a/src/libgo/go/internal/poll/sock_cloexec.go ++++ b/src/libgo/go/internal/poll/sock_cloexec.go +@@ -5,7 +5,7 @@ + // This file implements sysSocket and accept for platforms that + // provide a fast path for setting SetNonblock and CloseOnExec. + +-// +build dragonfly freebsd linux ++// +build dragonfly freebsd gnu linux + + package poll + +Index: b/src/libgo/go/internal/poll/sockopt.go +=================================================================== +--- a/src/libgo/go/internal/poll/sockopt.go ++++ b/src/libgo/go/internal/poll/sockopt.go +@@ -2,7 +2,7 @@ + // Use of this source code is governed by a BSD-style + // license that can be found in the LICENSE file. + +-// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris windows ++// +build aix darwin dragonfly freebsd gnu linux netbsd openbsd solaris windows + + package poll + +Index: b/src/libgo/go/internal/poll/sockoptip.go +=================================================================== +--- a/src/libgo/go/internal/poll/sockoptip.go ++++ b/src/libgo/go/internal/poll/sockoptip.go +@@ -2,7 +2,7 @@ + // Use of this source code is governed by a BSD-style + // license that can be found in the LICENSE file. + +-// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris windows ++// +build aix darwin dragonfly freebsd gnu linux netbsd openbsd solaris windows + + package poll + +Index: b/src/libgo/go/internal/poll/sockopt_unix.go +=================================================================== +--- a/src/libgo/go/internal/poll/sockopt_unix.go ++++ b/src/libgo/go/internal/poll/sockopt_unix.go +@@ -2,7 +2,7 @@ + // Use of this source code is governed by a BSD-style + // license that can be found in the LICENSE file. + +-// +build darwin dragonfly freebsd linux netbsd openbsd solaris ++// +build darwin dragonfly freebsd gnu linux netbsd openbsd solaris + + package poll + +Index: b/src/libgo/go/archive/tar/stat_actime1.go +=================================================================== +--- a/src/libgo/go/archive/tar/stat_actime1.go ++++ b/src/libgo/go/archive/tar/stat_actime1.go +@@ -2,7 +2,7 @@ + // Use of this source code is governed by a BSD-style + // license that can be found in the LICENSE file. + +-// +build aix linux dragonfly openbsd solaris ++// +build aix gnu linux dragonfly openbsd solaris + + package tar + +--- a/src/libgo/go/golang_org/x/net/internal/nettest/helper_nobsd.go 2018-01-10 11:13:47.000000000 +0100 ++++ b/src/libgo/go/golang_org/x/net/internal/nettest/helper_nobsd.go 2018-03-02 13:37:11.000000000 +0100 +@@ -2,7 +2,7 @@ + // Use of this source code is governed by a BSD-style + // license that can be found in the LICENSE file. + +-// +build aix linux solaris ++// +build aix gnu linux solaris + + package nettest + +--- a/src/libgo/go/golang_org/x/net/internal/nettest/helper_posix.go 2018-01-10 11:13:47.000000000 +0100 ++++ b/src/libgo/go/golang_org/x/net/internal/nettest/helper_posix.go 2018-03-01 23:01:22.000000000 +0100 +@@ -2,7 +2,7 @@ + // Use of this source code is governed by a BSD-style + // license that can be found in the LICENSE file. + +-// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris windows ++// +build aix darwin dragonfly freebsd gnu linux netbsd openbsd solaris windows + + package nettest + +--- a/src/libgo/go/golang_org/x/net/internal/nettest/helper_unix.go 2018-01-10 11:13:47.000000000 +0100 ++++ b/src/libgo/go/golang_org/x/net/internal/nettest/helper_unix.go 2018-03-02 13:40:42.000000000 +0100 +@@ -2,7 +2,7 @@ + // Use of this source code is governed by a BSD-style + // license that can be found in the LICENSE file. + +-// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris ++// +build aix darwin dragonfly freebsd gnu linux netbsd openbsd solaris + + package nettest + +--- a/src/libgo/go/net/sockoptip_posix.go 2018-01-09 04:04:37.000000000 +0100 ++++ b/src/libgo/go/net/sockoptip_posix.go 2018-03-01 22:55:56.000000000 +0100 +@@ -2,7 +2,7 @@ + // Use of this source code is governed by a BSD-style + // license that can be found in the LICENSE file. + +-// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris windows ++// +build aix darwin dragonfly freebsd gnu linux netbsd openbsd solaris windows + + package net + +--- a/src/libgo/go/os/signal/internal/pty/pty.go 2018-02-08 18:22:43.000000000 +0100 ++++ b/src/libgo/go/os/signal/internal/pty/pty.go 2018-03-01 23:09:21.000000000 +0100 +@@ -2,7 +2,7 @@ + // Use of this source code is governed by a BSD-style + // license that can be found in the LICENSE file. + +-// +build aix darwin dragonfly freebsd linux,!android netbsd openbsd solaris ++// +build aix darwin dragonfly freebsd gnu linux,!android netbsd openbsd solaris + + // Package pty is a simple pseudo-terminal package for Unix systems, + // implemented by calling C functions via cgo. --- gcc-8-8.3.0.orig/debian/patches/add-gnu-to-libgo-test-headers.diff +++ gcc-8-8.3.0/debian/patches/add-gnu-to-libgo-test-headers.diff @@ -0,0 +1,301 @@ +Index: gcc-8-8-20171108-1.1/src/libgo/go/net/main_unix_test.go +=================================================================== +--- gcc-8-8-20171108-1.1.orig/src/libgo/go/net/main_unix_test.go ++++ gcc-8-8-20171108-1.1/src/libgo/go/net/main_unix_test.go +@@ -2,7 +2,7 @@ + // Use of this source code is governed by a BSD-style + // license that can be found in the LICENSE file. + +-// +build aix darwin dragonfly freebsd linux nacl netbsd openbsd solaris ++// +build aix darwin dragonfly freebsd gnu linux nacl netbsd openbsd solaris + + package net + +Index: gcc-8-8-20171108-1.1/src/libgo/go/os/exec/lp_unix_test.go +=================================================================== +--- gcc-8-8-20171108-1.1.orig/src/libgo/go/os/exec/lp_unix_test.go ++++ gcc-8-8-20171108-1.1/src/libgo/go/os/exec/lp_unix_test.go +@@ -2,7 +2,7 @@ + // Use of this source code is governed by a BSD-style + // license that can be found in the LICENSE file. + +-// +build darwin dragonfly freebsd linux netbsd openbsd solaris ++// +build darwin dragonfly freebsd gnu linux netbsd openbsd solaris + + package exec + +Index: gcc-8-8-20171108-1.1/src/libgo/go/os/os_unix_test.go +=================================================================== +--- gcc-8-8-20171108-1.1.orig/src/libgo/go/os/os_unix_test.go ++++ gcc-8-8-20171108-1.1/src/libgo/go/os/os_unix_test.go +@@ -2,7 +2,7 @@ + // Use of this source code is governed by a BSD-style + // license that can be found in the LICENSE file. + +-// +build darwin dragonfly freebsd linux netbsd openbsd solaris ++// +build darwin dragonfly freebsd gnu linux netbsd openbsd solaris + + package os_test + +Index: gcc-8-8-20171108-1.1/src/libgo/go/os/signal/signal_test.go +=================================================================== +--- gcc-8-8-20171108-1.1.orig/src/libgo/go/os/signal/signal_test.go ++++ gcc-8-8-20171108-1.1/src/libgo/go/os/signal/signal_test.go +@@ -2,7 +2,7 @@ + // Use of this source code is governed by a BSD-style + // license that can be found in the LICENSE file. + +-// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris ++// +build aix darwin dragonfly freebsd gnu linux netbsd openbsd solaris + + package signal + +Index: gcc-8-8-20171108-1.1/src/libgo/go/runtime/crash_unix_test.go +=================================================================== +--- gcc-8-8-20171108-1.1.orig/src/libgo/go/runtime/crash_unix_test.go ++++ gcc-8-8-20171108-1.1/src/libgo/go/runtime/crash_unix_test.go +@@ -2,7 +2,7 @@ + // Use of this source code is governed by a BSD-style + // license that can be found in the LICENSE file. + +-// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris ++// +build aix darwin dragonfly freebsd gnu linux netbsd openbsd solaris + + package runtime_test + +Index: gcc-8-8-20171108-1.1/src/libgo/go/syscall/exec_unix_test.go +=================================================================== +--- gcc-8-8-20171108-1.1.orig/src/libgo/go/syscall/exec_unix_test.go ++++ gcc-8-8-20171108-1.1/src/libgo/go/syscall/exec_unix_test.go +@@ -2,7 +2,7 @@ + // Use of this source code is governed by a BSD-style + // license that can be found in the LICENSE file. + +-// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris ++// +build aix darwin dragonfly freebsd gnu linux netbsd openbsd solaris + + package syscall_test + +Index: gcc-8-8-20171108-1.1/src/libgo/go/runtime/runtime_unix_test.go +=================================================================== +--- gcc-8-8-20171108-1.1.orig/src/libgo/go/runtime/runtime_unix_test.go ++++ gcc-8-8-20171108-1.1/src/libgo/go/runtime/runtime_unix_test.go +@@ -6,7 +6,7 @@ + // We need a fast system call to provoke the race, + // and Close(-1) is nearly universally fast. + +-// +build aix darwin dragonfly freebsd linux netbsd openbsd plan9 ++// +build aix darwin dragonfly freebsd gnu linux netbsd openbsd plan9 + + package runtime_test + +Index: gcc-8-8-20171108-1.1/src/libgo/go/syscall/export_unix_test.go +=================================================================== +--- gcc-8-8-20171108-1.1.orig/src/libgo/go/syscall/export_unix_test.go ++++ gcc-8-8-20171108-1.1/src/libgo/go/syscall/export_unix_test.go +@@ -2,7 +2,7 @@ + // Use of this source code is governed by a BSD-style + // license that can be found in the LICENSE file. + +-// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris ++// +build aix darwin dragonfly freebsd gnu linux netbsd openbsd solaris + + package syscall + +Index: gcc-8-8-20171108-1.1/src/libgo/go/syscall/mmap_unix_test.go +=================================================================== +--- gcc-8-8-20171108-1.1.orig/src/libgo/go/syscall/mmap_unix_test.go ++++ gcc-8-8-20171108-1.1/src/libgo/go/syscall/mmap_unix_test.go +@@ -2,7 +2,7 @@ + // Use of this source code is governed by a BSD-style + // license that can be found in the LICENSE file. + +-// +build aix darwin dragonfly freebsd linux netbsd openbsd ++// +build aix darwin dragonfly freebsd gnu linux netbsd openbsd + + package syscall_test + +Index: gcc-8-8-20171108-1.1/src/libgo/go/net/addrselect_test.go +=================================================================== +--- gcc-8-8-20171108-1.1.orig/src/libgo/go/net/addrselect_test.go ++++ gcc-8-8-20171108-1.1/src/libgo/go/net/addrselect_test.go +@@ -2,7 +2,7 @@ + // Use of this source code is governed by a BSD-style + // license that can be found in the LICENSE file. + +-// +build darwin dragonfly freebsd linux netbsd openbsd solaris ++// +build darwin dragonfly freebsd gnu linux netbsd openbsd solaris + + package net + +Index: gcc-8-8-20171108-1.1/src/libgo/go/net/cgo_unix_test.go +=================================================================== +--- gcc-8-8-20171108-1.1.orig/src/libgo/go/net/cgo_unix_test.go ++++ gcc-8-8-20171108-1.1/src/libgo/go/net/cgo_unix_test.go +@@ -3,7 +3,7 @@ + // license that can be found in the LICENSE file. + + // +build cgo,!netgo +-// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris ++// +build aix darwin dragonfly freebsd gnu linux netbsd openbsd solaris + + package net + +Index: gcc-8-8-20171108-1.1/src/libgo/go/net/conf_test.go +=================================================================== +--- gcc-8-8-20171108-1.1.orig/src/libgo/go/net/conf_test.go ++++ gcc-8-8-20171108-1.1/src/libgo/go/net/conf_test.go +@@ -2,7 +2,7 @@ + // Use of this source code is governed by a BSD-style + // license that can be found in the LICENSE file. + +-// +build darwin dragonfly freebsd linux netbsd openbsd solaris ++// +build darwin dragonfly freebsd gnu linux netbsd openbsd solaris + + package net + +Index: gcc-8-8-20171108-1.1/src/libgo/go/net/dnsconfig_unix_test.go +=================================================================== +--- gcc-8-8-20171108-1.1.orig/src/libgo/go/net/dnsconfig_unix_test.go ++++ gcc-8-8-20171108-1.1/src/libgo/go/net/dnsconfig_unix_test.go +@@ -2,7 +2,7 @@ + // Use of this source code is governed by a BSD-style + // license that can be found in the LICENSE file. + +-// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris ++// +build aix darwin dragonfly freebsd gnu linux netbsd openbsd solaris + + package net + +Index: gcc-8-8-20171108-1.1/src/libgo/go/net/nss_test.go +=================================================================== +--- gcc-8-8-20171108-1.1.orig/src/libgo/go/net/nss_test.go ++++ gcc-8-8-20171108-1.1/src/libgo/go/net/nss_test.go +@@ -2,7 +2,7 @@ + // Use of this source code is governed by a BSD-style + // license that can be found in the LICENSE file. + +-// +build darwin dragonfly freebsd linux netbsd openbsd solaris ++// +build darwin dragonfly freebsd gnu linux netbsd openbsd solaris + + package net + +Index: gcc-8-8-20171108-1.1/src/libgo/go/cmd/go/go_unix_test.go +=================================================================== +--- gcc-8-8-20171108-1.1.orig/src/libgo/go/cmd/go/go_unix_test.go ++++ gcc-8-8-20171108-1.1/src/libgo/go/cmd/go/go_unix_test.go +@@ -2,7 +2,7 @@ + // Use of this source code is governed by a BSD-style + // license that can be found in the LICENSE file. + +-// +build darwin dragonfly freebsd linux netbsd openbsd solaris ++// +build darwin dragonfly freebsd gnu linux netbsd openbsd solaris + + package main_test + +Index: gcc-8-8-20171108-1.1/src/libgo/go/net/dial_unix_test.go +=================================================================== +--- gcc-8-8-20171108-1.1.orig/src/libgo/go/net/dial_unix_test.go ++++ gcc-8-8-20171108-1.1/src/libgo/go/net/dial_unix_test.go +@@ -2,7 +2,7 @@ + // Use of this source code is governed by a BSD-style + // license that can be found in the LICENSE file. + +-// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris ++// +build aix darwin dragonfly freebsd gnu linux netbsd openbsd solaris + + package net + +Index: gcc-8-8-20171108-1.1/src/libgo/go/net/main_cloexec_test.go +=================================================================== +--- gcc-8-8-20171108-1.1.orig/src/libgo/go/net/main_cloexec_test.go ++++ gcc-8-8-20171108-1.1/src/libgo/go/net/main_cloexec_test.go +@@ -2,7 +2,7 @@ + // Use of this source code is governed by a BSD-style + // license that can be found in the LICENSE file. + +-// +build dragonfly freebsd linux ++// +build dragonfly freebsd gnu linux + + package net + +Index: gcc-8-8-20171108-1.1/src/libgo/go/net/dnsclient_unix_test.go +=================================================================== +--- gcc-8-8-20171108-1.1.orig/src/libgo/go/net/dnsclient_unix_test.go ++++ gcc-8-8-20171108-1.1/src/libgo/go/net/dnsclient_unix_test.go +@@ -2,7 +2,7 @@ + // Use of this source code is governed by a BSD-style + // license that can be found in the LICENSE file. + +-// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris ++// +build aix darwin dragonfly freebsd gnu linux netbsd openbsd solaris + + package net + +Index: gcc-8-8-20171108-1.1/src/libgo/go/os/env_unix_test.go +=================================================================== +--- gcc-8-8-20171108-1.1.orig/src/libgo/go/os/env_unix_test.go ++++ gcc-8-8-20171108-1.1/src/libgo/go/os/env_unix_test.go +@@ -2,7 +2,7 @@ + // Use of this source code is governed by a BSD-style + // license that can be found in the LICENSE file. + +-// +build darwin dragonfly freebsd linux netbsd openbsd solaris ++// +build darwin dragonfly freebsd gnu linux netbsd openbsd solaris + + package os_test + +Index: gcc-8-8-20171108-1.1/src/libgo/go/os/error_unix_test.go +=================================================================== +--- gcc-8-8-20171108-1.1.orig/src/libgo/go/os/error_unix_test.go ++++ gcc-8-8-20171108-1.1/src/libgo/go/os/error_unix_test.go +@@ -2,7 +2,7 @@ + // Use of this source code is governed by a BSD-style + // license that can be found in the LICENSE file. + +-// +build darwin dragonfly freebsd linux nacl netbsd openbsd solaris ++// +build darwin dragonfly freebsd gnu linux nacl netbsd openbsd solaris + + package os_test + +Index: gcc-8-8-20171108-1.1/src/libgo/go/internal/poll/export_posix_test.go +=================================================================== +--- gcc-8-8-20171108-1.1.orig/src/libgo/go/internal/poll/export_posix_test.go ++++ gcc-8-8-20171108-1.1/src/libgo/go/internal/poll/export_posix_test.go +@@ -2,7 +2,7 @@ + // Use of this source code is governed by a BSD-style + // license that can be found in the LICENSE file. + +-// +build aix darwin dragonfly freebsd linux nacl netbsd openbsd solaris windows ++// +build aix darwin dragonfly freebsd gnu linux nacl netbsd openbsd solaris windows + + // Export guts for testing on posix. + // Since testing imports os and os imports internal/poll, +Index: gcc-8-8-20171108-1.1/src/libgo/go/runtime/export_unix_test.go +=================================================================== +--- gcc-8-8-20171108-1.1.orig/src/libgo/go/runtime/export_unix_test.go ++++ gcc-8-8-20171108-1.1/src/libgo/go/runtime/export_unix_test.go +@@ -1,8 +1,9 @@ ++ + // Copyright 2017 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. + +-// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris ++// +build aix darwin dragonfly freebsd gnu linux netbsd openbsd solaris + + package runtime + +Index: gcc-8-8-20171108-1.1/src/libgo/go/internal/poll/fd_posix_test.go +=================================================================== +--- gcc-8-8-20171108-1.1.orig/src/libgo/go/internal/poll/fd_posix_test.go ++++ gcc-8-8-20171108-1.1/src/libgo/go/internal/poll/fd_posix_test.go +@@ -2,7 +2,7 @@ + // Use of this source code is governed by a BSD-style + // license that can be found in the LICENSE file. + +-// +build aix darwin dragonfly freebsd linux nacl netbsd openbsd solaris windows ++// +build aix darwin dragonfly freebsd gnu linux nacl netbsd openbsd solaris windows + + package poll_test + --- gcc-8-8.3.0.orig/debian/patches/alpha-ieee-doc.diff +++ gcc-8-8.3.0/debian/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 --- gcc-8-8.3.0.orig/debian/patches/alpha-ieee.diff +++ gcc-8-8.3.0/debian/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 --- gcc-8-8.3.0.orig/debian/patches/alpha-no-ev4-directive.diff +++ gcc-8-8.3.0/debian/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 +@@ -9536,7 +9536,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"; +@@ -9546,10 +9546,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); + } + } + --- gcc-8-8.3.0.orig/debian/patches/arm-multilib-defaults.diff +++ gcc-8-8.3.0/debian/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 +@@ -3865,10 +3865,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 +@@ -3902,6 +3910,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 --- gcc-8-8.3.0.orig/debian/patches/arm-multilib-soft-cross.diff +++ gcc-8-8.3.0/debian/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* --- gcc-8-8.3.0.orig/debian/patches/arm-multilib-soft-float.diff +++ gcc-8-8.3.0/debian/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* --- gcc-8-8.3.0.orig/debian/patches/arm-multilib-soft.diff +++ gcc-8-8.3.0/debian/patches/arm-multilib-soft.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 = 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* --- gcc-8-8.3.0.orig/debian/patches/arm-multilib-softfp-cross.diff +++ gcc-8-8.3.0/debian/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* --- gcc-8-8.3.0.orig/debian/patches/arm-multilib-softfp.diff +++ gcc-8-8.3.0/debian/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* --- gcc-8-8.3.0.orig/debian/patches/bind_now_when_pie.diff +++ gcc-8-8.3.0/debian/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 "" --- gcc-8-8.3.0.orig/debian/patches/bootstrap-no-unneeded-libs.diff +++ gcc-8-8.3.0/debian/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; }; --- gcc-8-8.3.0.orig/debian/patches/canonical-cpppath.diff +++ gcc-8-8.3.0/debian/patches/canonical-cpppath.diff @@ -0,0 +1,36 @@ +# DP: Don't use any relative path names for the standard include paths. + +Index: b/src/gcc/incpath.c +=================================================================== +--- 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); + } --- gcc-8-8.3.0.orig/debian/patches/config-ml.diff +++ gcc-8-8.3.0/debian/patches/config-ml.diff @@ -0,0 +1,54 @@ +# DP: - Disable some biarch libraries for biarch builds. +# DP: - Fix multilib builds on kernels which don't support all multilibs. + +Index: b/src/config-ml.in +=================================================================== +--- 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 --- gcc-8-8.3.0.orig/debian/patches/cross-biarch.diff +++ gcc-8-8.3.0/debian/patches/cross-biarch.diff @@ -0,0 +1,82 @@ +# DP: Fix the location of target's libs in cross-build for biarch + +Index: b/src/config-ml.in +=================================================================== +--- 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"`' ' ;; + *) --- gcc-8-8.3.0.orig/debian/patches/cross-fixes.diff +++ gcc-8-8.3.0/debian/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 *); --- gcc-8-8.3.0.orig/debian/patches/cross-install-location.diff +++ gcc-8-8.3.0/debian/patches/cross-install-location.diff @@ -0,0 +1,378 @@ +Index: b/src/fixincludes/Makefile.in +=================================================================== +--- 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 +Index: b/src/libgfortran/Makefile.in +=================================================================== +--- a/src/libgfortran/Makefile.in ++++ b/src/libgfortran/Makefile.in +@@ -629,12 +629,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) \ +Index: b/src/libgfortran/Makefile.am +=================================================================== +--- a/src/libgfortran/Makefile.am ++++ b/src/libgfortran/Makefile.am +@@ -44,14 +44,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 + +Index: b/src/lto-plugin/Makefile.in +=================================================================== +--- a/src/lto-plugin/Makefile.in ++++ b/src/lto-plugin/Makefile.in +@@ -256,7 +256,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@ +Index: b/src/lto-plugin/Makefile.am +=================================================================== +--- 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@ +Index: b/src/libitm/Makefile.in +=================================================================== +--- a/src/libitm/Makefile.in ++++ b/src/libitm/Makefile.in +@@ -336,8 +336,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 \ +Index: b/src/libitm/Makefile.am +=================================================================== +--- a/src/libitm/Makefile.am ++++ b/src/libitm/Makefile.am +@@ -11,8 +11,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)) + +Index: b/src/gcc/gcc.c +=================================================================== +--- a/src/gcc/gcc.c ++++ b/src/gcc/gcc.c +@@ -4265,7 +4265,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); +@@ -4291,15 +4291,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); +Index: b/src/gcc/Makefile.in +=================================================================== +--- a/src/gcc/Makefile.in ++++ b/src/gcc/Makefile.in +@@ -615,9 +615,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 +@@ -2199,8 +2199,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)\" \ +@@ -2888,7 +2888,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) +Index: b/src/libssp/Makefile.in +=================================================================== +--- a/src/libssp/Makefile.in ++++ b/src/libssp/Makefile.in +@@ -291,7 +291,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 \ +Index: b/src/libssp/Makefile.am +=================================================================== +--- 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 = \ +Index: b/src/libquadmath/Makefile.in +=================================================================== +--- a/src/libquadmath/Makefile.in ++++ b/src/libquadmath/Makefile.in +@@ -358,7 +358,7 @@ AUTOMAKE_OPTIONS = 1.8 foreign + + @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/isinf_nsq.c math/acoshq.c math/fmodq.c \ + @BUILD_LIBQUADMATH_TRUE@ math/acosq.c math/frexpq.c \ +Index: b/src/libquadmath/Makefile.am +=================================================================== +--- a/src/libquadmath/Makefile.am ++++ b/src/libquadmath/Makefile.am +@@ -42,7 +42,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/isinf_nsq.c math/acoshq.c math/fmodq.c \ +Index: b/src/libobjc/Makefile.in +=================================================================== +--- 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 = +Index: b/src/libada/Makefile.in +=================================================================== +--- 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)) + ADA_RTS_SUBDIR=./rts$(subst /,_,$(MULTISUBDIR)) + +Index: b/src/libgomp/Makefile.in +=================================================================== +--- a/src/libgomp/Makefile.in ++++ b/src/libgomp/Makefile.in +@@ -406,8 +406,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) +Index: b/src/libgomp/Makefile.am +=================================================================== +--- a/src/libgomp/Makefile.am ++++ b/src/libgomp/Makefile.am +@@ -10,8 +10,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)) + +Index: b/src/libgcc/Makefile.in +=================================================================== +--- a/src/libgcc/Makefile.in ++++ b/src/libgcc/Makefile.in +@@ -197,7 +197,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. +Index: b/src/libffi/include/Makefile.am +=================================================================== +--- 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 +Index: b/src/libffi/include/Makefile.in +=================================================================== +--- a/src/libffi/include/Makefile.in ++++ b/src/libffi/include/Makefile.in +@@ -254,7 +254,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 + +Index: b/src/libcc1/Makefile.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 +Index: b/src/libcc1/Makefile.in +=================================================================== +--- a/src/libcc1/Makefile.in ++++ b/src/libcc1/Makefile.in +@@ -303,7 +303,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 +Index: b/src/libsanitizer/Makefile.am +=================================================================== +--- 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 = + +Index: b/src/libsanitizer/Makefile.in +=================================================================== +--- a/src/libsanitizer/Makefile.in ++++ b/src/libsanitizer/Makefile.in +@@ -291,7 +291,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 \ --- gcc-8-8.3.0.orig/debian/patches/cross-no-locale-include.diff +++ gcc-8-8.3.0/debian/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 --- gcc-8-8.3.0.orig/debian/patches/cuda-float128.diff +++ gcc-8-8.3.0/debian/patches/cuda-float128.diff @@ -0,0 +1,28 @@ +# Mask __float128 types from CUDA compilers (LP: #1717257) + +Index: b/src/libstdc++-v3/include/std/type_traits +=================================================================== +--- a/src/libstdc++-v3/include/std/type_traits ++++ b/src/libstdc++-v3/include/std/type_traits +@@ -330,7 +330,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 { }; +Index: b/src/libstdc++-v3/include/bits/std_abs.h +=================================================================== +--- a/src/libstdc++-v3/include/bits/std_abs.h ++++ b/src/libstdc++-v3/include/bits/std_abs.h +@@ -96,7 +96,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) --- gcc-8-8.3.0.orig/debian/patches/disable-gdc-tests.diff +++ gcc-8-8.3.0/debian/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. + --- gcc-8-8.3.0.orig/debian/patches/g++-multiarch-incdir.diff +++ gcc-8-8.3.0/debian/patches/g++-multiarch-incdir.diff @@ -0,0 +1,119 @@ +# DP: Use /usr/include//c++/4.x as the include directory +# DP: for host dependent c++ header files. + +Index: b/src/libstdc++-v3/include/Makefile.am +=================================================================== +--- a/src/libstdc++-v3/include/Makefile.am ++++ b/src/libstdc++-v3/include/Makefile.am +@@ -929,7 +929,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 \ +Index: b/src/libstdc++-v3/include/Makefile.in +=================================================================== +--- a/src/libstdc++-v3/include/Makefile.in ++++ b/src/libstdc++-v3/include/Makefile.in +@@ -1215,7 +1215,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 \ +Index: b/src/gcc/Makefile.in +=================================================================== +--- a/src/gcc/Makefile.in ++++ b/src/gcc/Makefile.in +@@ -1170,6 +1170,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)" \ +@@ -1718,6 +1719,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 +@@ -2881,7 +2890,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)\" \ +Index: b/src/gcc/cppdefault.c +=================================================================== +--- 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. */ +Index: b/src/gcc/incpath.c +=================================================================== +--- 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); --- gcc-8-8.3.0.orig/debian/patches/gcc-alpha-bs-ignore.diff +++ gcc-8-8.3.0/debian/patches/gcc-alpha-bs-ignore.diff @@ -0,0 +1,14 @@ +# DP: Ignore bootstrap comparison failures in gcc/d on alpha + +Index: b/src/configure.ac +=================================================================== +--- a/src/configure.ac ++++ b/src/configure.ac +@@ -3519,6 +3519,7 @@ case "$target" in + hppa*64*-*-hpux*) ;; + hppa*-*-hpux*) compare_exclusions="gcc/cc*-checksum\$(objext) | */libgcc/lib2funcs* | gcc/ada/*tools/* | gcc/function-tests.o" ;; + powerpc*-ibm-aix*) compare_exclusions="gcc/cc*-checksum\$(objext) | gcc/ada/*tools/* | *libgomp*\$(objext)" ;; ++ alpha*-linux-*) compare_exclusions="gcc/cc*-checksum\$(objext) | gcc/ada/*tools/* | gcc/d/*\$(objext)" ;; + esac + AC_SUBST(compare_exclusions) + --- gcc-8-8.3.0.orig/debian/patches/gcc-as-needed-gold.diff +++ gcc-8-8.3.0/debian/patches/gcc-as-needed-gold.diff @@ -0,0 +1,58 @@ +# DP: Use --push-state/--pop-state for gold as well when linking libtsan. + +Index: b/src/gcc/gcc.c +=================================================================== +--- a/src/gcc/gcc.c ++++ b/src/gcc/gcc.c +@@ -693,10 +693,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 +@@ -714,10 +714,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 +@@ -735,10 +735,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 +@@ -754,10 +754,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 --- gcc-8-8.3.0.orig/debian/patches/gcc-as-needed-push-pop.diff +++ gcc-8-8.3.0/debian/patches/gcc-as-needed-push-pop.diff @@ -0,0 +1,43 @@ +From: Jakub Jelinek +Subject: [PATCH] Use --push-state --as-needed and --pop-state instead of --as-needed and --no-as-needed for libgcc + +As discussed, using --as-needed and --no-as-needed is dangerous, because +it results in --no-as-needed even for libraries after -lgcc_s, even when the +default is --as-needed or --as-needed has been specified earlier on the +command line. + +If the linker supports --push-state/--pop-state, we should IMHO use it. + +2018-04-11 Jakub Jelinek + + * configure.ac (LD_AS_NEEDED_OPTION, LD_NO_AS_NEEDED_OPTION): Use + --push-state --as-needed and --pop-state instead of --as-needed and + --no-as-needed if ld supports it. + * configure: Regenerated. + +Index: b/src/gcc/configure.ac +=================================================================== +--- a/src/gcc/configure.ac ++++ b/src/gcc/configure.ac +@@ -5518,11 +5518,21 @@ if test $in_tree_ld = yes ; then + if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 16 -o "$gcc_cv_gld_major_version" -gt 2 \ + && test $in_tree_ld_is_elf = yes; then + gcc_cv_ld_as_needed=yes ++ if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 28; then ++ gcc_cv_ld_as_needed_option='--push-state --as-needed' ++ gcc_cv_ld_no_as_needed_option='--pop-state' ++ fi + fi + elif test x$gcc_cv_ld != x; then + # Check if linker supports --as-needed and --no-as-needed options + if $gcc_cv_ld --help 2>&1 | grep as-needed > /dev/null; then + gcc_cv_ld_as_needed=yes ++ if $gcc_cv_ld --help 2>&1 | grep push-state > /dev/null; then ++ if $gcc_cv_ld --help 2>&1 | grep pop-state > /dev/null; then ++ gcc_cv_ld_as_needed_option='--push-state --as-needed' ++ gcc_cv_ld_no_as_needed_option='--pop-state' ++ fi ++ fi + fi + case "$target:$gnu_ld" in + *-*-solaris2*:no) --- gcc-8-8.3.0.orig/debian/patches/gcc-as-needed.diff +++ gcc-8-8.3.0/debian/patches/gcc-as-needed.diff @@ -0,0 +1,244 @@ +# DP: On linux targets pass --as-needed by default to the linker, but always +# DP: link the sanitizer libraries with --no-as-needed. + +Index: b/src/gcc/gcc.c +=================================================================== +--- a/src/gcc/gcc.c ++++ b/src/gcc/gcc.c +@@ -692,8 +692,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 +@@ -710,8 +713,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 +@@ -728,8 +734,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 +@@ -744,8 +753,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 +Index: b/src/gcc/config/gnu-user.h +=================================================================== +--- a/src/gcc/config/gnu-user.h ++++ b/src/gcc/config/gnu-user.h +@@ -161,15 +161,15 @@ 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 +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 +@@ -36,6 +36,7 @@ + + #define LINUX_TARGET_LINK_SPEC "%{h*} \ + --hash-style=gnu \ ++ --as-needed \ + %{static:-Bstatic} \ + %{shared:-shared} \ + %{symbolic:-Bsymbolic} \ +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 @@ 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: \ +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 @@ 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: \ +Index: b/src/gcc/config/s390/linux.h +=================================================================== +--- a/src/gcc/config/s390/linux.h ++++ b/src/gcc/config/s390/linux.h +@@ -78,7 +78,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} \ +Index: b/src/gcc/config/rs6000/linux64.h +=================================================================== +--- a/src/gcc/config/rs6000/linux64.h ++++ b/src/gcc/config/rs6000/linux64.h +@@ -490,13 +490,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 "}}} \ +Index: b/src/gcc/config/rs6000/sysv4.h +=================================================================== +--- a/src/gcc/config/rs6000/sysv4.h ++++ b/src/gcc/config/rs6000/sysv4.h +@@ -811,7 +811,7 @@ ENDIAN_SELECT(" -mbig", " -mlittle", DEF + CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER, UCLIBC_DYNAMIC_LINKER, \ + MUSL_DYNAMIC_LINKER) + +-#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 "}}" + +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 +@@ -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: \ +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 @@ 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: \ +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 @@ 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: \ +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 +@@ -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 + +Index: b/src/gcc/config/mips/gnu-user.h +=================================================================== +--- 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} \ +Index: b/src/gcc/config/riscv/linux.h +=================================================================== +--- a/src/gcc/config/riscv/linux.h ++++ b/src/gcc/config/riscv/linux.h +@@ -51,6 +51,7 @@ along with GCC; see the file COPYING3. + + #define LINK_SPEC "\ + -hash-style=gnu \ ++-as-needed \ + -melf" XLEN_SPEC "lriscv \ + %{shared} \ + %{!shared: \ --- gcc-8-8.3.0.orig/debian/patches/gcc-auto-build.diff +++ gcc-8-8.3.0/debian/patches/gcc-auto-build.diff @@ -0,0 +1,15 @@ +# DP: Fix cross building a native compiler. + +Index: b/src/gcc/configure.ac +=================================================================== +--- a/src/gcc/configure.ac ++++ b/src/gcc/configure.ac +@@ -1705,7 +1705,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" \ --- gcc-8-8.3.0.orig/debian/patches/gcc-d-lang.diff +++ gcc-8-8.3.0/debian/patches/gcc-d-lang.diff @@ -0,0 +1,251 @@ +# DP: Add D options and specs for the gcc driver. + +Index: b/src/gcc/d/lang-specs.h +=================================================================== +--- /dev/null ++++ b/src/gcc/d/lang-specs.h +@@ -0,0 +1,31 @@ ++/* lang-specs.h -- D frontend for GCC. ++ Copyright (C) 2011, 2012 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. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . ++*/ ++ ++/* %{!M} probably doesn't make sense because we would need ++ to do that -- -MD and -MMD doesn't sound like a plan for D.... */ ++ ++{".d", "@d", 0, 1, 0 }, ++{".D", "@d", 0, 1, 0 }, ++{".dd", "@d", 0, 1, 0 }, ++{".DD", "@d", 0, 1, 0 }, ++{".di", "@d", 0, 1, 0 }, ++{".DI", "@d", 0, 1, 0 }, ++{"@d", ++ "%{!E:cc1d %i %(cc1_options) %(cc1d) %I %{nostdinc*} %{+e*} %{I*} %{J*}\ ++ %{M} %{MM} %{!fsyntax-only:%(invoke_as)}}", 0, 1, 0 }, ++ +Index: b/src/gcc/d/lang.opt +=================================================================== +--- /dev/null ++++ b/src/gcc/d/lang.opt +@@ -0,0 +1,208 @@ ++; GDC -- D front-end for GCC ++; Copyright (C) 2011, 2012 Free Software Foundation, Inc. ++; ++; 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 GCC; see the file COPYING3. If not see ++; . ++ ++Language ++D ++ ++debuglib= ++Driver Joined ++Debug library to use instead of phobos ++ ++defaultlib= ++Driver Joined ++Default library to use instead of phobos ++ ++fassert ++D ++Permit the use of the assert keyword ++ ++; For D: defaults to on ++fbounds-check ++D ++Generate code to check bounds before indexing arrays ++ ++fbuiltin ++D Var(flag_no_builtin, 0) ++Recognize built-in functions ++ ++fdebug ++D ++Compile in debug code ++ ++fdebug= ++D Joined RejectNegative ++-fdebug,-fdebug=,-fdebug= Compile in debug code, code <= level, or code identified by ident ++ ++fdeps= ++D Joined RejectNegative ++-fdeps= Write module dependencies to filename ++ ++fdoc ++D ++Generate documentation ++ ++fdoc-dir= ++D Joined RejectNegative ++-fdoc-dir= Write documentation file to docdir directory ++ ++fdoc-file= ++D Joined RejectNegative ++-fdoc-file= Write documentation file to filename ++ ++fdoc-inc= ++D Joined RejectNegative ++-fdoc-inc= Include a Ddoc macro file ++ ++fdump-source ++D RejectNegative ++Dump decoded UTF-8 text and source from HTML ++ ++fd-verbose ++D ++Print information about D language processing to stdout ++ ++fd-vtls ++D ++List all variables going into thread local storage ++ ++femit-templates ++D ++-femit-templates Emit templates code and data even if the linker cannot merge multiple copies ++ ++fignore-unknown-pragmas ++D ++Ignore unsupported pragmas ++ ++fin ++D ++Generate runtime code for in() contracts ++ ++fintfc ++Generate D interface files ++ ++fintfc-dir= ++D Joined RejectNegative ++-fintfc-dir= Write D interface files to directory ++ ++fintfc-file= ++D Joined RejectNegative ++-fintfc-file= Write D interface file to ++ ++finvariants ++D ++Generate runtime code for invariant()'s ++ ++fmake-deps= ++D Joined RejectNegative ++-fmake-deps= Write dependency output to the given file ++ ++fmake-mdeps= ++D Joined RejectNegative ++Like -fmake-deps= but ignore system modules ++ ++femit-moduleinfo ++D ++Generate ModuleInfo struct for output module ++ ++fonly= ++D Joined RejectNegative ++Process all modules specified on the command line, but only generate code for the module specified by the argument ++ ++fout ++D ++Generate runtime code for out() contracts ++ ++fproperty ++D ++Enforce property syntax ++ ++frelease ++D ++Compile release version ++ ++fsplit-dynamic-arrays ++D Var(flag_split_darrays) ++Split dynamic arrays into length and pointer when passing to functions ++ ++funittest ++D ++Compile in unittest code ++ ++fversion= ++D Joined RejectNegative ++-fversion= Compile in version code >= or identified by ++ ++fXf= ++D Joined RejectNegative ++-fXf= Write JSON file to ++ ++imultilib ++D Joined Separate ++-imultilib Set to be the multilib include subdirectory ++ ++iprefix ++D Joined Separate ++-iprefix Specify as a prefix for next two options ++ ++isysroot ++D Joined Separate ++-isysroot Set to be the system root directory ++ ++isystem ++D Joined Separate ++-isystem Add to the start of the system include path ++ ++I ++D Joined Separate ++-I Add to the end of the main include path ++ ++J ++D Joined Separate ++-J Put MODULE files in 'directory' ++ ++nophoboslib ++Driver ++Do not link the standard D library in the compilation ++ ++nostdinc ++D ++Do not search standard system include directories (those specified with -isystem will still be used) ++ ++static-libphobos ++Driver ++Link the standard D library statically in the compilation ++ ++Wall ++D ++; Documented in c.opt ++ ++Wcast-result ++D Warning Var(warn_cast_result) ++Warn about casts that will produce a null or nil result ++ ++Wdeprecated ++D ++; Documented in c.opt ++ ++Werror ++D ++; Documented in common.opt ++ ++Wunknown-pragmas ++D ++; Documented in c.opt ++ --- gcc-8-8.3.0.orig/debian/patches/gcc-default-fortify-source.diff +++ gcc-8-8.3.0/debian/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__"); --- gcc-8-8.3.0.orig/debian/patches/gcc-default-relro.diff +++ gcc-8-8.3.0/debian/patches/gcc-default-relro.diff @@ -0,0 +1,45 @@ +# DP: Turn on -Wl,-z,relro by default. + +--- + gcc/doc/invoke.texi | 3 +++ + gcc/gcc.c | 1 + + 2 files changed, 4 insertions(+), 0 deletions(-) + +Index: b/src/gcc/doc/invoke.texi +=================================================================== +--- a/src/gcc/doc/invoke.texi ++++ b/src/gcc/doc/invoke.texi +@@ -11813,6 +11813,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 +Index: b/src/gcc/gcc.c +=================================================================== +--- a/src/gcc/gcc.c ++++ b/src/gcc/gcc.c +@@ -1037,6 +1037,11 @@ proper position among the other output f + /* 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. */ ++#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:\ +@@ -1045,6 +1050,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" +@@ -867,6 +872,69 @@ proper position among the other output f + #define LINK_GCC_C_SEQUENCE_SPEC "%G %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" \ +@@ -1074,6 +1142,7 @@ static const char *cpp_spec = CPP_SPEC; + 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; +@@ -1131,7 +1200,7 @@ static const char *cpp_options = + "%(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. */ +@@ -1313,9 +1382,9 @@ static const struct compiler default_com + %{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}\ +@@ -1329,18 +1398,18 @@ static const struct compiler default_com + %{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}, +@@ -1571,6 +1640,7 @@ static struct spec_list static_specs[] = + 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), +--- a/src/gcc/cp/lang-specs.h ++++ b/src/gcc/cp/lang-specs.h +@@ -46,7 +46,7 @@ along with GCC; see the file COPYING3. + %(cpp_options) %2 -o %{save-temps*:%b.ii} %{!save-temps*:%g.ii} \n}\ + 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}}}}", +@@ -58,11 +58,11 @@ along with GCC; see the file COPYING3. + %(cpp_options) %2 -o %{save-temps*:%b.ii} %{!save-temps*:%g.ii} \n}\ + 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", + "%{!M:%{!MM:%{!E:\ +- cc1plus -fpreprocessed %i %(cc1_options) %2\ ++ cc1plus -fpreprocessed %i %(cc1_options) %(distro_defaults) %2\ + %{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 0}, +--- a/src/gcc/objc/lang-specs.h ++++ b/src/gcc/objc/lang-specs.h +@@ -29,9 +29,9 @@ along with GCC; see the file COPYING3. + %{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 @@ along with GCC; see the file COPYING3. + %{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 @@ along with GCC; see the file COPYING3. + %{!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}, +--- a/src/gcc/objcp/lang-specs.h ++++ b/src/gcc/objcp/lang-specs.h +@@ -36,7 +36,7 @@ along with GCC; see the file COPYING3. + %(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 @@ along with GCC; see the file COPYING3. + %(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}, --- gcc-8-8.3.0.orig/debian/patches/gcc-driver-extra-langs-linaro.diff +++ gcc-8-8.3.0/debian/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@ --- gcc-8-8.3.0.orig/debian/patches/gcc-driver-extra-langs.diff +++ gcc-8-8.3.0/debian/patches/gcc-driver-extra-langs.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 +@@ -563,8 +563,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@ --- gcc-8-8.3.0.orig/debian/patches/gcc-foffload-default.diff +++ gcc-8-8.3.0/debian/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 +@@ -291,6 +291,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. */ + +@@ -4483,7 +4487,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 +@@ -7762,6 +7769,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. */ +@@ -871,8 +872,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; +@@ -885,18 +888,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 +@@ -2514,7 +2514,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, --- gcc-8-8.3.0.orig/debian/patches/gcc-force-cross-layout.diff +++ gcc-8-8.3.0/debian/patches/gcc-force-cross-layout.diff @@ -0,0 +1,53 @@ +# DP: Add FORCE_CROSS_LAYOUT env var to force a cross directory layout. + +Index: b/src/configure.ac +=================================================================== +--- a/src/configure.ac ++++ b/src/configure.ac +@@ -3047,7 +3047,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 + +Index: b/src/gcc/configure.ac +=================================================================== +--- a/src/gcc/configure.ac ++++ b/src/gcc/configure.ac +@@ -2011,14 +2011,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 +@@ -6392,14 +6392,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 --- gcc-8-8.3.0.orig/debian/patches/gcc-fuse-ld-lld-doc.diff +++ gcc-8-8.3.0/debian/patches/gcc-fuse-ld-lld-doc.diff @@ -0,0 +1,17 @@ +# DP: Allow to use lld with -fuse-ld=ld.lld (documentation) + +Index: gcc/doc/invoke.texi +=================================================================== +--- a/src/gcc/doc/invoke.texi (revision 246158) ++++ a/src/gcc/doc/invoke.texi (working copy) +@@ -10501,6 +10501,10 @@ + @opindex fuse-ld=gold + Use the @command{gold} linker instead of the default linker. + ++@item -fuse-ld=lld ++@opindex fuse-ld=lld ++Use the LLVM @command{lld} linker instead of the default linker. ++ + @cindex Libraries + @item -l@var{library} + @itemx -l @var{library} --- gcc-8-8.3.0.orig/debian/patches/gcc-fuse-ld-lld.diff +++ gcc-8-8.3.0/debian/patches/gcc-fuse-ld-lld.diff @@ -0,0 +1,77 @@ +# DP: Allow to use lld with -fuse-ld=ld.lld + +--- a/src/gcc/collect2.c ++++ b/src/gcc/collect2.c +@@ -831,6 +831,7 @@ main (int argc, char **argv) + USE_PLUGIN_LD, + USE_GOLD_LD, + USE_BFD_LD, ++ USE_LLD_LD, + USE_LD_MAX + } selected_linker = USE_DEFAULT_LD; + static const char *const ld_suffixes[USE_LD_MAX] = +@@ -838,7 +839,8 @@ main (int argc, char **argv) + "ld", + PLUGIN_LD_SUFFIX, + "ld.gold", +- "ld.bfd" ++ "ld.bfd", ++ "ld.lld" + }; + static const char *const real_ld_suffix = "real-ld"; + static const char *const collect_ld_suffix = "collect-ld"; +@@ -1007,6 +1009,8 @@ main (int argc, char **argv) + selected_linker = USE_BFD_LD; + else if (strcmp (argv[i], "-fuse-ld=gold") == 0) + selected_linker = USE_GOLD_LD; ++ else if (strcmp (argv[i], "-fuse-ld=lld") == 0) ++ selected_linker = USE_LLD_LD; + + #ifdef COLLECT_EXPORT_LIST + /* These flags are position independent, although their order +@@ -1096,7 +1100,8 @@ main (int argc, char **argv) + /* Maybe we know the right file to use (if not cross). */ + ld_file_name = 0; + #ifdef DEFAULT_LINKER +- if (selected_linker == USE_BFD_LD || selected_linker == USE_GOLD_LD) ++ if (selected_linker == USE_BFD_LD || selected_linker == USE_GOLD_LD || ++ selected_linker == USE_LLD_LD) + { + char *linker_name; + # ifdef HOST_EXECUTABLE_SUFFIX +@@ -1315,7 +1320,7 @@ main (int argc, char **argv) + else if (!use_collect_ld + && strncmp (arg, "-fuse-ld=", 9) == 0) + { +- /* Do not pass -fuse-ld={bfd|gold} to the linker. */ ++ /* Do not pass -fuse-ld={bfd|gold|lld} to the linker. */ + ld1--; + ld2--; + } +--- a/src/gcc/common.opt ++++ b/src/gcc/common.opt +@@ -2712,9 +2712,13 @@ Common Driver Negative(fuse-ld=gold) + Use the bfd linker instead of the default linker. + + fuse-ld=gold +-Common Driver Negative(fuse-ld=bfd) ++Common Driver Negative(fuse-ld=lld) + Use the gold linker instead of the default linker. + ++fuse-ld=lld ++Common Driver Negative(fuse-ld=bfd) ++Use the lld LLVM linker instead of the default linker. ++ + fuse-linker-plugin + Common Undocumented Var(flag_use_linker_plugin) + +--- a/src/gcc/opts.c ++++ b/src/gcc/opts.c +@@ -2481,6 +2481,7 @@ common_handle_option (struct gcc_options + + case OPT_fuse_ld_bfd: + case OPT_fuse_ld_gold: ++ case OPT_fuse_ld_lld: + case OPT_fuse_linker_plugin: + /* No-op. Used by the driver and passed to us because it starts with f.*/ + break; --- gcc-8-8.3.0.orig/debian/patches/gcc-gfdl-build.diff +++ gcc-8-8.3.0/debian/patches/gcc-gfdl-build.diff @@ -0,0 +1,39 @@ +# DP: Build a dummy s-tm-texi without access to the texinfo sources + +Index: b/src/gcc/Makefile.in +=================================================================== +--- a/src/gcc/Makefile.in ++++ b/src/gcc/Makefile.in +@@ -2479,30 +2479,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 \ +- ); 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 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 --- gcc-8-8.3.0.orig/debian/patches/gcc-hash-style-both.diff +++ gcc-8-8.3.0/debian/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: \ --- gcc-8-8.3.0.orig/debian/patches/gcc-hash-style-gnu.diff +++ gcc-8-8.3.0/debian/patches/gcc-hash-style-gnu.diff @@ -0,0 +1,186 @@ +# 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(-) + +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 @@ 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: \ +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 @@ 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: \ +Index: b/src/gcc/config/rs6000/linux64.h +=================================================================== +--- a/src/gcc/config/rs6000/linux64.h ++++ b/src/gcc/config/rs6000/linux64.h +@@ -470,13 +470,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 "}}} \ +Index: b/src/gcc/config/rs6000/sysv4.h +=================================================================== +--- a/src/gcc/config/rs6000/sysv4.h ++++ b/src/gcc/config/rs6000/sysv4.h +@@ -811,7 +811,7 @@ ENDIAN_SELECT(" -mbig", " -mlittle", DEF + CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER, UCLIBC_DYNAMIC_LINKER, \ + MUSL_DYNAMIC_LINKER) + +-#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 "}}" + +Index: b/src/gcc/config/s390/linux.h +=================================================================== +--- a/src/gcc/config/s390/linux.h ++++ b/src/gcc/config/s390/linux.h +@@ -78,7 +78,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} \ +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 @@ 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: \ +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 +@@ -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 + +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 @@ 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: \ +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 @@ 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: \ +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 +@@ -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} \ +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 @@ along with GCC; see the file COPYING3. + #define CPP_SPEC "%{pthread:-D_REENTRANT}" + + #define LINK_SPEC "\ ++-hash-style=gnu \ + -melf" XLEN_SPEC "lriscv \ + %{mno-relax:--no-relax} \ + %{shared} \ --- gcc-8-8.3.0.orig/debian/patches/gcc-ice-apport.diff +++ gcc-8-8.3.0/debian/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 +@@ -6968,6 +6968,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; --- gcc-8-8.3.0.orig/debian/patches/gcc-ice-dump.diff +++ gcc-8-8.3.0/debian/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 +@@ -3187,7 +3187,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)) +@@ -6950,8 +6951,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; --- gcc-8-8.3.0.orig/debian/patches/gcc-linaro-doc.diff +++ gcc-8-8.3.0/debian/patches/gcc-linaro-doc.diff @@ -0,0 +1,244 @@ +# DP: Changes for the Linaro 8-2019.02 snapshot (documentation). + +LANG=C svn diff svn://gcc.gnu.org/svn/gcc/branches/gcc-8-branch@269117 svn://gcc.gnu.org/svn/gcc/branches/ARM/arm-8-branch \ + | sed -r 's,^--- (\S+)\t(\S+)(.*)$,--- a/src/\1\t\2,;s,^\+\+\+ (\S+)\t(\S+)(.*)$,+++ b/src/\1\t\2,' \ + | awk '/^Index:.*\.class/ {skip=1; next} /^Index:/ { skip=0 } skip==0' + +Index: gcc/doc/cpp.texi +=================================================================== +--- a/src/gcc/doc/cpp.texi (.../gcc-8-branch) ++++ b/src/gcc/doc/cpp.texi (.../ARM/arm-8-branch) +@@ -2381,6 +2381,10 @@ + These macros are defined when the target processor supports atomic compare + and swap operations on operands 1, 2, 4, 8 or 16 bytes in length, respectively. + ++@item __HAVE_SPECULATION_SAFE_VALUE ++This macro is defined with the value 1 to show that this version of GCC ++supports @code{__builtin_speculation_safe_value}. ++ + @item __GCC_HAVE_DWARF2_CFI_ASM + This macro is defined when the compiler is emitting DWARF CFI directives + to the assembler. When this is defined, it is possible to emit those same +Index: gcc/doc/extend.texi +=================================================================== +--- a/src/gcc/doc/extend.texi (.../gcc-8-branch) ++++ b/src/gcc/doc/extend.texi (.../ARM/arm-8-branch) +@@ -11370,6 +11370,7 @@ + @findex __builtin_powi + @findex __builtin_powif + @findex __builtin_powil ++@findex __builtin_speculation_safe_value + @findex _Exit + @findex _exit + @findex abort +@@ -12013,6 +12014,96 @@ + + @end deftypefn + ++@deftypefn {Built-in Function} @var{type} __builtin_speculation_safe_value (@var{type} val, @var{type} failval) ++ ++This built-in function can be used to help mitigate against unsafe ++speculative execution. @var{type} may be any integral type or any ++pointer type. ++ ++@enumerate ++@item ++If the CPU is not speculatively executing the code, then @var{val} ++is returned. ++@item ++If the CPU is executing speculatively then either: ++@itemize ++@item ++The function may cause execution to pause until it is known that the ++code is no-longer being executed speculatively (in which case ++@var{val} can be returned, as above); or ++@item ++The function may use target-dependent speculation tracking state to cause ++@var{failval} to be returned when it is known that speculative ++execution has incorrectly predicted a conditional branch operation. ++@end itemize ++@end enumerate ++ ++The second argument, @var{failval}, is optional and defaults to zero ++if omitted. ++ ++GCC defines the preprocessor macro ++@code{__HAVE_BUILTIN_SPECULATION_SAFE_VALUE} for targets that have been ++updated to support this builtin. ++ ++The built-in function can be used where a variable appears to be used in a ++safe way, but the CPU, due to speculative execution may temporarily ignore ++the bounds checks. Consider, for example, the following function: ++ ++@smallexample ++int array[500]; ++int f (unsigned untrusted_index) ++@{ ++ if (untrusted_index < 500) ++ return array[untrusted_index]; ++ return 0; ++@} ++@end smallexample ++ ++If the function is called repeatedly with @code{untrusted_index} less ++than the limit of 500, then a branch predictor will learn that the ++block of code that returns a value stored in @code{array} will be ++executed. If the function is subsequently called with an ++out-of-range value it will still try to execute that block of code ++first until the CPU determines that the prediction was incorrect ++(the CPU will unwind any incorrect operations at that point). ++However, depending on how the result of the function is used, it might be ++possible to leave traces in the cache that can reveal what was stored ++at the out-of-bounds location. The built-in function can be used to ++provide some protection against leaking data in this way by changing ++the code to: ++ ++@smallexample ++int array[500]; ++int f (unsigned untrusted_index) ++@{ ++ if (untrusted_index < 500) ++ return array[__builtin_speculation_safe_value (untrusted_index)]; ++ return 0; ++@} ++@end smallexample ++ ++The built-in function will either cause execution to stall until the ++conditional branch has been fully resolved, or it may permit ++speculative execution to continue, but using 0 instead of ++@code{untrusted_value} if that exceeds the limit. ++ ++If accessing any memory location is potentially unsafe when speculative ++execution is incorrect, then the code can be rewritten as ++ ++@smallexample ++int array[500]; ++int f (unsigned untrusted_index) ++@{ ++ if (untrusted_index < 500) ++ return *__builtin_speculation_safe_value (&array[untrusted_index], NULL); ++ return 0; ++@} ++@end smallexample ++ ++which will cause a @code{NULL} pointer to be used for the unsafe case. ++ ++@end deftypefn ++ + @deftypefn {Built-in Function} int __builtin_types_compatible_p (@var{type1}, @var{type2}) + + You can use the built-in function @code{__builtin_types_compatible_p} to +Index: gcc/doc/tm.texi +=================================================================== +--- a/src/gcc/doc/tm.texi (.../gcc-8-branch) ++++ b/src/gcc/doc/tm.texi (.../ARM/arm-8-branch) +@@ -12010,6 +12010,42 @@ + + @end defmac + ++@deftypefn {Target Hook} bool TARGET_HAVE_SPECULATION_SAFE_VALUE (bool @var{active}) ++This hook is used to determine the level of target support for ++ @code{__builtin_speculation_safe_value}. If called with an argument ++ of false, it returns true if the target has been modified to support ++ this builtin. If called with an argument of true, it returns true ++ if the target requires active mitigation execution might be speculative. ++ ++ The default implementation returns false if the target does not define ++ a pattern named @code{speculation_barrier}. Else it returns true ++ for the first case and whether the pattern is enabled for the current ++ compilation for the second case. ++ ++ For targets that have no processors that can execute instructions ++ speculatively an alternative implemenation of this hook is available: ++ simply redefine this hook to @code{speculation_safe_value_not_needed} ++ along with your other target hooks. ++@end deftypefn ++ ++@deftypefn {Target Hook} rtx TARGET_SPECULATION_SAFE_VALUE (machine_mode @var{mode}, rtx @var{result}, rtx @var{val}, rtx @var{failval}) ++This target hook can be used to generate a target-specific code ++ sequence that implements the @code{__builtin_speculation_safe_value} ++ built-in function. The function must always return @var{val} in ++ @var{result} in mode @var{mode} when the cpu is not executing ++ speculatively, but must never return that when speculating until it ++ is known that the speculation will not be unwound. The hook supports ++ two primary mechanisms for implementing the requirements. The first ++ is to emit a speculation barrier which forces the processor to wait ++ until all prior speculative operations have been resolved; the second ++ is to use a target-specific mechanism that can track the speculation ++ state and to return @var{failval} if it can determine that ++ speculation must be unwound at a later time. ++ ++ The default implementation simply copies @var{val} to @var{result} and ++ emits a @code{speculation_barrier} instruction if that is defined. ++@end deftypefn ++ + @deftypefn {Target Hook} void TARGET_RUN_TARGET_SELFTESTS (void) + If selftests are enabled, run any selftests for this target. + @end deftypefn +Index: gcc/doc/tm.texi.in +=================================================================== +--- a/src/gcc/doc/tm.texi.in (.../gcc-8-branch) ++++ b/src/gcc/doc/tm.texi.in (.../ARM/arm-8-branch) +@@ -8112,4 +8112,8 @@ + + @end defmac + ++@hook TARGET_HAVE_SPECULATION_SAFE_VALUE ++ ++@hook TARGET_SPECULATION_SAFE_VALUE ++ + @hook TARGET_RUN_TARGET_SELFTESTS +Index: gcc/doc/invoke.texi +=================================================================== +--- a/src/gcc/doc/invoke.texi (.../gcc-8-branch) ++++ b/src/gcc/doc/invoke.texi (.../ARM/arm-8-branch) +@@ -605,7 +605,7 @@ + -mpc-relative-literal-loads @gol + -msign-return-address=@var{scope} @gol + -march=@var{name} -mcpu=@var{name} -mtune=@var{name} @gol +--moverride=@var{string} -mverbose-cost-dump} ++-moverride=@var{string} -mverbose-cost-dump -mtrack-speculation} + + @emph{Adapteva Epiphany Options} + @gccoptlist{-mhalf-reg-file -mprefer-short-insn-regs @gol +@@ -14704,6 +14704,14 @@ + precision of division results to about 16 bits for + single precision and to 32 bits for double precision. + ++@item -mtrack-speculation ++@itemx -mno-track-speculation ++Enable or disable generation of additional code to track speculative ++execution through conditional branches. The tracking state can then ++be used by the compiler when expanding calls to ++@code{__builtin_speculation_safe_copy} to permit a more efficient code ++sequence to be generated. ++ + @item -march=@var{name} + @opindex march + Specify the name of the target architecture and, optionally, one or +Index: gcc/doc/md.texi +=================================================================== +--- a/src/gcc/doc/md.texi (.../gcc-8-branch) ++++ b/src/gcc/doc/md.texi (.../ARM/arm-8-branch) +@@ -6955,6 +6955,21 @@ + before the instruction with respect to loads and stores after the instruction. + This pattern has no operands. + ++@cindex @code{speculation_barrier} instruction pattern ++@item @samp{speculation_barrier} ++If the target can support speculative execution, then this pattern should ++be defined to an instruction that will block subsequent execution until ++any prior speculation conditions has been resolved. The pattern must also ++ensure that the compiler cannot move memory operations past the barrier, ++so it needs to be an UNSPEC_VOLATILE pattern. The pattern has no ++operands. ++ ++If this pattern is not defined then the default expansion of ++@code{__builtin_speculation_safe_value} will emit a warning. You can ++suppress this warning by defining this pattern with a final condition ++of @code{0} (zero), which tells the compiler that a speculation ++barrier is not needed for this target. ++ + @cindex @code{sync_compare_and_swap@var{mode}} instruction pattern + @item @samp{sync_compare_and_swap@var{mode}} + This pattern, if defined, emits code for an atomic compare-and-swap --- gcc-8-8.3.0.orig/debian/patches/gcc-linaro-no-macros.diff +++ gcc-8-8.3.0/debian/patches/gcc-linaro-no-macros.diff @@ -0,0 +1,116 @@ +# DP : Don't add the __LINARO_RELEASE__ and __LINARO_SPIN__ macros for distro builds. + +--- 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); +--- a/src/gcc/Makefile.in ++++ b/src/gcc/Makefile.in +@@ -854,12 +854,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 := +@@ -886,7 +884,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@ +@@ -2886,9 +2883,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) + +--- a/src/gcc/LINARO-VERSION ++++ /dev/null +@@ -1 +0,0 @@ +-8.2-2018.08~dev +--- a/src/gcc/testsuite/ChangeLog.arm ++++ b/src/gcc/testsuite/ChangeLog.arm +@@ -3,10 +3,6 @@ + * c-c++-common/spec-barrier-1.c: New test. + * c-c++-common/spec-barrier-2.c: New test. + * gcc.dg/spec-barrier-3.c: New test. +- +-2018-08-14 Yvan Roux +- +- * gcc.dg/cpp/linaro-macros.c: New test. + + Copyright (C) 2018 Free Software Foundation, Inc. + +--- a/src/gcc/testsuite/gcc.dg/cpp/linaro-macros.c ++++ /dev/null +@@ -1,14 +0,0 @@ +-/* Test __LINARO_RELEASE__ and __LINARO_SPIN__. */ +-/* { dg-do compile } */ +- +-#if defined(__LINARO_RELEASE__) && __LINARO_RELEASE__ >= 201808 +-int i; +-#else +-#error "Bad __LINARO_RELEASE__." +-#endif +- +-#if defined(__LINARO_SPIN__) && __LINARO_SPIN__ >= 0 +-int j; +-#else +-#error "Bad __LINARO_SPIN__." +-#endif --- gcc-8-8.3.0.orig/debian/patches/gcc-linaro-revert-r270683.diff +++ gcc-8-8.3.0/debian/patches/gcc-linaro-revert-r270683.diff @@ -0,0 +1,145 @@ +# Revert FSF change, already present on the Linaro branch. + +Index: gcc/testsuite/gcc.target/aarch64/pr90075.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/aarch64/pr90075.c (revision 270683) ++++ a/src/gcc/testsuite/gcc.target/aarch64/pr90075.c (nonexistent) +@@ -1,21 +0,0 @@ +-/* { dg-do compile } */ +-/* { dg-additional-options "-O1" } */ +- +-typedef struct { +- float one, two; +-} twofloats; +- +-float +-bug (twofloats tf) +-{ +- float f1, f2; +- union { +- twofloats tfloats; +- float arr[2]; +- } utfloats; +- +- utfloats.tfloats = tf; +- f1 = utfloats.arr[1]; +- f2 = __builtin_copysignf (0, f1); +- return f2; +-} +Index: gcc/config/aarch64/iterators.md +=================================================================== +--- a/src/gcc/config/aarch64/iterators.md (revision 270683) ++++ a/src/gcc/config/aarch64/iterators.md (revision 270670) +@@ -578,8 +578,7 @@ + (define_mode_attr sizen [(QI "8") (HI "16") (SI "32") (DI "64")]) + + ;; Give the ordinal of the MSB in the mode +-(define_mode_attr sizem1 [(QI "#7") (HI "#15") (SI "#31") (DI "#63") +- (HF "#15") (SF "#31") (DF "#63")]) ++(define_mode_attr sizem1 [(QI "#7") (HI "#15") (SI "#31") (DI "#63")]) + + ;; Attribute to describe constants acceptable in logical operations + (define_mode_attr lconst [(SI "K") (DI "L")]) +@@ -665,7 +664,7 @@ + (V8HF "16b") (V2SF "8b") + (V4SF "16b") (V2DF "16b") + (DI "8b") (DF "8b") +- (SI "8b") (SF "8b")]) ++ (SI "8b")]) + + ;; Define element mode for each vector mode. + (define_mode_attr VEL [(V8QI "QI") (V16QI "QI") (VNx16QI "QI") +Index: gcc/config/aarch64/aarch64.md +=================================================================== +--- a/src/gcc/config/aarch64/aarch64.md (revision 270683) ++++ a/src/gcc/config/aarch64/aarch64.md (revision 270670) +@@ -189,7 +189,6 @@ + UNSPEC_CLASTB + UNSPEC_FADDA + UNSPEC_REV_SUBREG +- UNSPEC_COPYSIGN + ]) + + (define_c_enum "unspecv" [ +@@ -5428,48 +5427,49 @@ + ;; LDR d2, #(1 << 63) + ;; BSL v2.8b, [y], [x] + ;; +-;; or another, equivalent, sequence using one of BSL/BIT/BIF. Because +-;; we expect these operations to nearly always operate on +-;; floating-point values, we do not want the operation to be +-;; simplified into a bit-field insert operation that operates on the +-;; integer side, since typically that would involve three inter-bank +-;; register copies. As we do not expect copysign to be followed by +-;; other logical operations on the result, it seems preferable to keep +-;; this as an unspec operation, rather than exposing the underlying +-;; logic to the compiler. ++;; or another, equivalent, sequence using one of BSL/BIT/BIF. ++;; aarch64_simd_bsldf will select the best suited of these instructions ++;; to generate based on register allocation, and knows how to partially ++;; constant fold based on the values of X and Y, so expand through that. + +-(define_expand "copysign3" +- [(match_operand:GPF 0 "register_operand") +- (match_operand:GPF 1 "register_operand") +- (match_operand:GPF 2 "register_operand")] ++(define_expand "copysigndf3" ++ [(match_operand:DF 0 "register_operand") ++ (match_operand:DF 1 "register_operand") ++ (match_operand:DF 2 "register_operand")] + "TARGET_FLOAT && TARGET_SIMD" + { +- rtx bitmask = gen_reg_rtx (mode); +- emit_move_insn (bitmask, GEN_INT (HOST_WIDE_INT_M1U +- << (GET_MODE_BITSIZE (mode) - 1))); +- emit_insn (gen_copysign3_insn (operands[0], operands[1], operands[2], +- bitmask)); ++ rtx mask = gen_reg_rtx (DImode); ++ emit_move_insn (mask, GEN_INT (HOST_WIDE_INT_1U << 63)); ++ emit_insn (gen_aarch64_simd_bsldf (operands[0], mask, ++ operands[2], operands[1])); + DONE; + } + ) + +-(define_insn "copysign3_insn" +- [(set (match_operand:GPF 0 "register_operand" "=w,w,w,r") +- (unspec:GPF [(match_operand:GPF 1 "register_operand" "w,0,w,r") +- (match_operand:GPF 2 "register_operand" "w,w,0,0") +- (match_operand: 3 "register_operand" +- "0,w,w,X")] +- UNSPEC_COPYSIGN))] ++;; As above, but we must first get to a 64-bit value if we wish to use ++;; aarch64_simd_bslv2sf. ++ ++(define_expand "copysignsf3" ++ [(match_operand:SF 0 "register_operand") ++ (match_operand:SF 1 "register_operand") ++ (match_operand:SF 2 "register_operand")] + "TARGET_FLOAT && TARGET_SIMD" +- "@ +- bsl\\t%0., %2., %1. +- bit\\t%0., %2., %3. +- bif\\t%0., %1., %3. +- bfxil\\t%0, %1, #0, " +- [(set_attr "type" "neon_bsl,neon_bsl,neon_bsl,bfm")] ++{ ++ rtx v_bitmask = gen_reg_rtx (V2SImode); ++ ++ /* Juggle modes to get us in to a vector mode for BSL. */ ++ rtx op1 = lowpart_subreg (DImode, operands[1], SFmode); ++ rtx op2 = lowpart_subreg (V2SFmode, operands[2], SFmode); ++ rtx tmp = gen_reg_rtx (V2SFmode); ++ emit_move_insn (v_bitmask, ++ aarch64_simd_gen_const_vector_dup (V2SImode, ++ HOST_WIDE_INT_M1U << 31)); ++ emit_insn (gen_aarch64_simd_bslv2sf (tmp, v_bitmask, op2, op1)); ++ emit_move_insn (operands[0], lowpart_subreg (SFmode, tmp, V2SFmode)); ++ DONE; ++} + ) + +- + ;; For xorsign (x, y), we want to generate: + ;; + ;; LDR d2, #1<<63 --- gcc-8-8.3.0.orig/debian/patches/gcc-linaro.diff +++ gcc-8-8.3.0/debian/patches/gcc-linaro.diff @@ -0,0 +1,2198 @@ +# DP: Changes for the Linaro 8-2019.02 snapshot. + +MSG=$(git log origin/linaro/gcc-8-branch --format=format:"%s" -n 1 --grep "Merge branches"); SVN=${MSG##* }; git log origin/gcc-8-branch --format=format:"%H" -n 1 --grep "gcc-8-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,' + +LANG=C svn diff svn://gcc.gnu.org/svn/gcc/branches/gcc-8-branch@269117 svn://gcc.gnu.org/svn/gcc/branches/ARM/arm-8-branch \ + | sed -r 's,^--- (\S+)\t(\S+)(.*)$,--- a/src/\1\t\2,;s,^\+\+\+ (\S+)\t(\S+)(.*)$,+++ b/src/\1\t\2,' \ + | awk '/^Index:.*\.(class|texi)/ {skip=1; next} /^Index:/ { skip=0 } skip==0' + +Index: gcc/LINARO-VERSION +=================================================================== +--- a/src/gcc/LINARO-VERSION (.../gcc-8-branch) ++++ b/src/gcc/LINARO-VERSION (.../ARM/arm-8-branch) +@@ -0,0 +1 @@ ++8.2-2018.08~dev +Index: gcc/targhooks.c +=================================================================== +--- a/src/gcc/targhooks.c (.../gcc-8-branch) ++++ b/src/gcc/targhooks.c (.../ARM/arm-8-branch) +@@ -2336,4 +2336,43 @@ + { + } + ++/* Default implementation of TARGET_HAVE_SPECULATION_SAFE_VALUE. */ ++bool ++default_have_speculation_safe_value (bool active ATTRIBUTE_UNUSED) ++{ ++#ifdef HAVE_speculation_barrier ++ return active ? HAVE_speculation_barrier : true; ++#else ++ return false; ++#endif ++} ++/* Alternative implementation of TARGET_HAVE_SPECULATION_SAFE_VALUE ++ that can be used on targets that never have speculative execution. */ ++bool ++speculation_safe_value_not_needed (bool active) ++{ ++ return !active; ++} ++ ++/* Default implementation of the speculation-safe-load builtin. This ++ implementation simply copies val to result and generates a ++ speculation_barrier insn, if such a pattern is defined. */ ++rtx ++default_speculation_safe_value (machine_mode mode ATTRIBUTE_UNUSED, ++ rtx result, rtx val, ++ rtx failval ATTRIBUTE_UNUSED) ++{ ++ emit_move_insn (result, val); ++ ++#ifdef HAVE_speculation_barrier ++ /* Assume the target knows what it is doing: if it defines a ++ speculation barrier, but it is not enabled, then assume that one ++ isn't needed. */ ++ if (HAVE_speculation_barrier) ++ emit_insn (gen_speculation_barrier ()); ++#endif ++ ++ return result; ++} ++ + #include "gt-targhooks.h" +Index: gcc/targhooks.h +=================================================================== +--- a/src/gcc/targhooks.h (.../gcc-8-branch) ++++ b/src/gcc/targhooks.h (.../ARM/arm-8-branch) +@@ -289,4 +289,8 @@ + extern bool default_stack_clash_protection_final_dynamic_probe (rtx); + extern void default_select_early_remat_modes (sbitmap); + ++extern bool default_have_speculation_safe_value (bool); ++extern bool speculation_safe_value_not_needed (bool); ++extern rtx default_speculation_safe_value (machine_mode, rtx, rtx, rtx); ++ + #endif /* GCC_TARGHOOKS_H */ +Index: gcc/cppbuiltin.c +=================================================================== +--- a/src/gcc/cppbuiltin.c (.../gcc-8-branch) ++++ b/src/gcc/cppbuiltin.c (.../ARM/arm-8-branch) +@@ -53,18 +53,41 @@ + *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; ++ int major, minor, patchlevel, linaro_release, linaro_spin; + + 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: gcc/c-family/c-cppbuiltin.c +=================================================================== +--- a/src/gcc/c-family/c-cppbuiltin.c (.../gcc-8-branch) ++++ b/src/gcc/c-family/c-cppbuiltin.c (.../ARM/arm-8-branch) +@@ -1365,7 +1365,12 @@ + cpp_define (pfile, "__WCHAR_UNSIGNED__"); + + cpp_atomic_builtins (pfile); +- ++ ++ /* Show support for __builtin_speculation_safe_value () if the target ++ has been updated to fully support it. */ ++ if (targetm.have_speculation_safe_value (false)) ++ cpp_define (pfile, "__HAVE_SPECULATION_SAFE_VALUE"); ++ + #ifdef DWARF2_UNWIND_INFO + if (dwarf2out_do_cfi_asm ()) + cpp_define (pfile, "__GCC_HAVE_DWARF2_CFI_ASM"); +Index: gcc/c-family/c-common.c +=================================================================== +--- a/src/gcc/c-family/c-common.c (.../gcc-8-branch) ++++ b/src/gcc/c-family/c-common.c (.../ARM/arm-8-branch) +@@ -6456,6 +6456,122 @@ + return type ? type : error_mark_node; + } + ++/* Work out the size of the first argument of a call to ++ __builtin_speculation_safe_value. Only pointers and integral types ++ are permitted. Return -1 if the argument type is not supported or ++ the size is too large; 0 if the argument type is a pointer or the ++ size if it is integral. */ ++static enum built_in_function ++speculation_safe_value_resolve_call (tree function, vec *params) ++{ ++ /* Type of the argument. */ ++ tree type; ++ int size; ++ ++ if (vec_safe_is_empty (params)) ++ { ++ error ("too few arguments to function %qE", function); ++ return BUILT_IN_NONE; ++ } ++ ++ type = TREE_TYPE ((*params)[0]); ++ if (TREE_CODE (type) == ARRAY_TYPE && c_dialect_cxx ()) ++ { ++ /* Force array-to-pointer decay for C++. */ ++ (*params)[0] = default_conversion ((*params)[0]); ++ type = TREE_TYPE ((*params)[0]); ++ } ++ ++ if (POINTER_TYPE_P (type)) ++ return BUILT_IN_SPECULATION_SAFE_VALUE_PTR; ++ ++ if (!INTEGRAL_TYPE_P (type)) ++ goto incompatible; ++ ++ if (!COMPLETE_TYPE_P (type)) ++ goto incompatible; ++ ++ size = tree_to_uhwi (TYPE_SIZE_UNIT (type)); ++ if (size == 1 || size == 2 || size == 4 || size == 8 || size == 16) ++ return ((enum built_in_function) ++ ((int) BUILT_IN_SPECULATION_SAFE_VALUE_1 + exact_log2 (size))); ++ ++ incompatible: ++ /* Issue the diagnostic only if the argument is valid, otherwise ++ it would be redundant at best and could be misleading. */ ++ if (type != error_mark_node) ++ error ("operand type %qT is incompatible with argument %d of %qE", ++ type, 1, function); ++ ++ return BUILT_IN_NONE; ++} ++ ++/* Validate and coerce PARAMS, the arguments to ORIG_FUNCTION to fit ++ the prototype for FUNCTION. The first argument is mandatory, a second ++ argument, if present, must be type compatible with the first. */ ++static bool ++speculation_safe_value_resolve_params (location_t loc, tree orig_function, ++ vec *params) ++{ ++ tree val; ++ ++ if (params->length () == 0) ++ { ++ error_at (loc, "too few arguments to function %qE", orig_function); ++ return false; ++ } ++ ++ else if (params->length () > 2) ++ { ++ error_at (loc, "too many arguments to function %qE", orig_function); ++ return false; ++ } ++ ++ val = (*params)[0]; ++ if (TREE_CODE (TREE_TYPE (val)) == ARRAY_TYPE) ++ val = default_conversion (val); ++ if (!(TREE_CODE (TREE_TYPE (val)) == POINTER_TYPE ++ || TREE_CODE (TREE_TYPE (val)) == INTEGER_TYPE)) ++ { ++ error_at (loc, ++ "expecting argument of type pointer or of type integer " ++ "for argument 1"); ++ return false; ++ } ++ (*params)[0] = val; ++ ++ if (params->length () == 2) ++ { ++ tree val2 = (*params)[1]; ++ if (TREE_CODE (TREE_TYPE (val2)) == ARRAY_TYPE) ++ val2 = default_conversion (val2); ++ if (!(TREE_TYPE (val) == TREE_TYPE (val2) ++ || useless_type_conversion_p (TREE_TYPE (val), TREE_TYPE (val2)))) ++ { ++ error_at (loc, "both arguments must be compatible"); ++ return false; ++ } ++ (*params)[1] = val2; ++ } ++ ++ return true; ++} ++ ++/* Cast the result of the builtin back to the type of the first argument, ++ preserving any qualifiers that it might have. */ ++static tree ++speculation_safe_value_resolve_return (tree first_param, tree result) ++{ ++ tree ptype = TREE_TYPE (first_param); ++ tree rtype = TREE_TYPE (result); ++ ptype = TYPE_MAIN_VARIANT (ptype); ++ ++ if (tree_int_cst_equal (TYPE_SIZE (ptype), TYPE_SIZE (rtype))) ++ return convert (ptype, result); ++ ++ return result; ++} ++ + /* A helper function for resolve_overloaded_builtin in resolving the + overloaded __sync_ builtins. Returns a positive power of 2 if the + first operand of PARAMS is a pointer to a supported data type. +@@ -7110,6 +7226,54 @@ + /* Handle BUILT_IN_NORMAL here. */ + switch (orig_code) + { ++ case BUILT_IN_SPECULATION_SAFE_VALUE_N: ++ { ++ tree new_function, first_param, result; ++ enum built_in_function fncode ++ = speculation_safe_value_resolve_call (function, params);; ++ ++ first_param = (*params)[0]; ++ if (fncode == BUILT_IN_NONE ++ || !speculation_safe_value_resolve_params (loc, function, params)) ++ return error_mark_node; ++ ++ if (targetm.have_speculation_safe_value (true)) ++ { ++ new_function = builtin_decl_explicit (fncode); ++ result = build_function_call_vec (loc, vNULL, new_function, params, ++ NULL); ++ ++ if (result == error_mark_node) ++ return result; ++ ++ return speculation_safe_value_resolve_return (first_param, result); ++ } ++ else ++ { ++ /* This target doesn't have, or doesn't need, active mitigation ++ against incorrect speculative execution. Simply return the ++ first parameter to the builtin. */ ++ if (!targetm.have_speculation_safe_value (false)) ++ /* The user has invoked __builtin_speculation_safe_value ++ even though __HAVE_SPECULATION_SAFE_VALUE is not ++ defined: emit a warning. */ ++ warning_at (input_location, 0, ++ "this target does not define a speculation barrier; " ++ "your program will still execute correctly, " ++ "but incorrect speculation may not be be " ++ "restricted"); ++ ++ /* If the optional second argument is present, handle any side ++ effects now. */ ++ if (params->length () == 2 ++ && TREE_SIDE_EFFECTS ((*params)[1])) ++ return build2 (COMPOUND_EXPR, TREE_TYPE (first_param), ++ (*params)[1], first_param); ++ ++ return first_param; ++ } ++ } ++ + case BUILT_IN_ATOMIC_EXCHANGE: + case BUILT_IN_ATOMIC_COMPARE_EXCHANGE: + case BUILT_IN_ATOMIC_LOAD: +Index: gcc/target.def +=================================================================== +--- a/src/gcc/target.def (.../gcc-8-branch) ++++ b/src/gcc/target.def (.../ARM/arm-8-branch) +@@ -4256,6 +4256,46 @@ + hook_bool_void_true) + + DEFHOOK ++(have_speculation_safe_value, ++"This hook is used to determine the level of target support for\n\ ++ @code{__builtin_speculation_safe_value}. If called with an argument\n\ ++ of false, it returns true if the target has been modified to support\n\ ++ this builtin. If called with an argument of true, it returns true\n\ ++ if the target requires active mitigation execution might be speculative.\n\ ++ \n\ ++ The default implementation returns false if the target does not define\n\ ++ a pattern named @code{speculation_barrier}. Else it returns true\n\ ++ for the first case and whether the pattern is enabled for the current\n\ ++ compilation for the second case.\n\ ++ \n\ ++ For targets that have no processors that can execute instructions\n\ ++ speculatively an alternative implemenation of this hook is available:\n\ ++ simply redefine this hook to @code{speculation_safe_value_not_needed}\n\ ++ along with your other target hooks.", ++bool, (bool active), default_have_speculation_safe_value) ++ ++DEFHOOK ++(speculation_safe_value, ++"This target hook can be used to generate a target-specific code\n\ ++ sequence that implements the @code{__builtin_speculation_safe_value}\n\ ++ built-in function. The function must always return @var{val} in\n\ ++ @var{result} in mode @var{mode} when the cpu is not executing\n\ ++ speculatively, but must never return that when speculating until it\n\ ++ is known that the speculation will not be unwound. The hook supports\n\ ++ two primary mechanisms for implementing the requirements. The first\n\ ++ is to emit a speculation barrier which forces the processor to wait\n\ ++ until all prior speculative operations have been resolved; the second\n\ ++ is to use a target-specific mechanism that can track the speculation\n\ ++ state and to return @var{failval} if it can determine that\n\ ++ speculation must be unwound at a later time.\n\ ++ \n\ ++ The default implementation simply copies @var{val} to @var{result} and\n\ ++ emits a @code{speculation_barrier} instruction if that is defined.", ++rtx, (machine_mode mode, rtx result, rtx val, rtx failval), ++ default_speculation_safe_value) ++ ++ ++DEFHOOK + (can_use_doloop_p, + "Return true if it is possible to use low-overhead loops (@code{doloop_end}\n\ + and @code{doloop_begin}) for a particular loop. @var{iterations} gives the\n\ +Index: gcc/configure +=================================================================== +--- a/src/gcc/configure (.../gcc-8-branch) ++++ b/src/gcc/configure (.../ARM/arm-8-branch) +@@ -1726,7 +1726,8 @@ + --with-stabs arrange to use stabs instead of host debug format + --with-dwarf2 force the default debug format to be DWARF 2 + --with-specs=SPECS add SPECS to driver command-line processing +- --with-pkgversion=PKG Use PKG in the version string in place of "GCC" ++ --with-pkgversion=PKG Use PKG in the version string in place of "Linaro ++ GCC `cat $srcdir/LINARO-VERSION`" + --with-bugurl=URL Direct users to URL to report a bug + --with-multilib-list select multilibs (AArch64, SH and x86-64 only) + --with-gnu-ld assume the C compiler uses GNU ld default=no +@@ -7649,7 +7650,7 @@ + *) PKGVERSION="($withval) " ;; + esac + else +- PKGVERSION="(GCC) " ++ PKGVERSION="(Linaro GCC `cat $srcdir/LINARO-VERSION`) " + + fi + +Index: gcc/builtins.c +=================================================================== +--- a/src/gcc/builtins.c (.../gcc-8-branch) ++++ b/src/gcc/builtins.c (.../ARM/arm-8-branch) +@@ -6629,6 +6629,55 @@ + } + + ++/* Expand a call to __builtin_speculation_safe_value_. MODE ++ represents the size of the first argument to that call, or VOIDmode ++ if the argument is a pointer. IGNORE will be true if the result ++ isn't used. */ ++static rtx ++expand_speculation_safe_value (machine_mode mode, tree exp, rtx target, ++ bool ignore) ++{ ++ rtx val, failsafe; ++ unsigned nargs = call_expr_nargs (exp); ++ ++ tree arg0 = CALL_EXPR_ARG (exp, 0); ++ ++ if (mode == VOIDmode) ++ { ++ mode = TYPE_MODE (TREE_TYPE (arg0)); ++ gcc_assert (GET_MODE_CLASS (mode) == MODE_INT); ++ } ++ ++ val = expand_expr (arg0, NULL_RTX, mode, EXPAND_NORMAL); ++ ++ /* An optional second argument can be used as a failsafe value on ++ some machines. If it isn't present, then the failsafe value is ++ assumed to be 0. */ ++ if (nargs > 1) ++ { ++ tree arg1 = CALL_EXPR_ARG (exp, 1); ++ failsafe = expand_expr (arg1, NULL_RTX, mode, EXPAND_NORMAL); ++ } ++ else ++ failsafe = const0_rtx; ++ ++ /* If the result isn't used, the behavior is undefined. It would be ++ nice to emit a warning here, but path splitting means this might ++ happen with legitimate code. So simply drop the builtin ++ expansion in that case; we've handled any side-effects above. */ ++ if (ignore) ++ return const0_rtx; ++ ++ /* If we don't have a suitable target, create one to hold the result. */ ++ if (target == NULL || GET_MODE (target) != mode) ++ target = gen_reg_rtx (mode); ++ ++ if (GET_MODE (val) != mode && GET_MODE (val) != VOIDmode) ++ val = convert_modes (mode, VOIDmode, val, false); ++ ++ return targetm.speculation_safe_value (mode, target, val, failsafe); ++} ++ + /* Expand an expression EXP that calls a built-in function, + with result going to TARGET if that's convenient + (and in mode MODE if that's convenient). +@@ -7758,6 +7807,17 @@ + folding. */ + break; + ++ case BUILT_IN_SPECULATION_SAFE_VALUE_PTR: ++ return expand_speculation_safe_value (VOIDmode, exp, target, ignore); ++ ++ case BUILT_IN_SPECULATION_SAFE_VALUE_1: ++ case BUILT_IN_SPECULATION_SAFE_VALUE_2: ++ case BUILT_IN_SPECULATION_SAFE_VALUE_4: ++ case BUILT_IN_SPECULATION_SAFE_VALUE_8: ++ case BUILT_IN_SPECULATION_SAFE_VALUE_16: ++ mode = get_builtin_sync_mode (fcode - BUILT_IN_SPECULATION_SAFE_VALUE_1); ++ return expand_speculation_safe_value (mode, exp, target, ignore); ++ + default: /* just do library call, if unknown builtin */ + break; + } +Index: gcc/builtin-attrs.def +=================================================================== +--- a/src/gcc/builtin-attrs.def (.../gcc-8-branch) ++++ b/src/gcc/builtin-attrs.def (.../ARM/arm-8-branch) +@@ -129,6 +129,8 @@ + + DEF_ATTR_TREE_LIST (ATTR_NOTHROW_LEAF_LIST, ATTR_LEAF, ATTR_NULL, ATTR_NOTHROW_LIST) + ++DEF_ATTR_TREE_LIST (ATTR_NOVOPS_NOTHROW_LEAF_LIST, ATTR_NOVOPS, \ ++ ATTR_NULL, ATTR_NOTHROW_LEAF_LIST) + DEF_ATTR_TREE_LIST (ATTR_CONST_NOTHROW_LIST, ATTR_CONST, \ + ATTR_NULL, ATTR_NOTHROW_LIST) + DEF_ATTR_TREE_LIST (ATTR_CONST_NOTHROW_LEAF_LIST, ATTR_CONST, \ +Index: gcc/testsuite/ChangeLog.arm +=================================================================== +--- a/src/gcc/testsuite/ChangeLog.arm (.../gcc-8-branch) ++++ b/src/gcc/testsuite/ChangeLog.arm (.../ARM/arm-8-branch) +@@ -0,0 +1,15 @@ ++2018-07-31 Richard Earnshaw ++ ++ * c-c++-common/spec-barrier-1.c: New test. ++ * c-c++-common/spec-barrier-2.c: New test. ++ * gcc.dg/spec-barrier-3.c: New test. ++ ++2018-08-14 Yvan Roux ++ ++ * gcc.dg/cpp/linaro-macros.c: New test. ++ ++Copyright (C) 2018 Free Software Foundation, Inc. ++ ++Copying and distribution of this file, with or without modification, ++are permitted in any medium without royalty provided the copyright ++notice and this notice are preserved. +Index: gcc/testsuite/gcc.dg/spec-barrier-3.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/spec-barrier-3.c (.../gcc-8-branch) ++++ b/src/gcc/testsuite/gcc.dg/spec-barrier-3.c (.../ARM/arm-8-branch) +@@ -0,0 +1,13 @@ ++/* { dg-do compile } */ ++/* { dg-options "-Wpedantic" } */ ++ ++/* __builtin_speculation_safe_value returns a value with the same type ++ as its first argument. There should be a warning if that isn't ++ type-compatible with the use. */ ++int * ++f (int x) ++{ ++ return __builtin_speculation_safe_value (x); /* { dg-warning "returning 'int' from a function with return type 'int \\*' makes pointer from integer without a cast" } */ ++} ++ ++/* { dg-prune-output "this target does not define a speculation barrier;" } */ +Index: gcc/testsuite/gcc.dg/cpp/linaro-macros.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/cpp/linaro-macros.c (.../gcc-8-branch) ++++ b/src/gcc/testsuite/gcc.dg/cpp/linaro-macros.c (.../ARM/arm-8-branch) +@@ -0,0 +1,14 @@ ++/* Test __LINARO_RELEASE__ and __LINARO_SPIN__. */ ++/* { dg-do compile } */ ++ ++#if defined(__LINARO_RELEASE__) && __LINARO_RELEASE__ >= 201808 ++int i; ++#else ++#error "Bad __LINARO_RELEASE__." ++#endif ++ ++#if defined(__LINARO_SPIN__) && __LINARO_SPIN__ >= 0 ++int j; ++#else ++#error "Bad __LINARO_SPIN__." ++#endif +Index: gcc/testsuite/c-c++-common/spec-barrier-1.c +=================================================================== +--- a/src/gcc/testsuite/c-c++-common/spec-barrier-1.c (.../gcc-8-branch) ++++ b/src/gcc/testsuite/c-c++-common/spec-barrier-1.c (.../ARM/arm-8-branch) +@@ -0,0 +1,38 @@ ++/* { dg-do run } */ ++/* { dg-options "-O" } */ ++ ++/* Test that __builtin_speculation_safe_value returns the correct value. */ ++/* This test will cause an unfiltered warning to be emitted on targets ++ that have not implemented support for speculative execution ++ barriers. They should fix that rather than disabling this ++ test. */ ++char a = 1; ++short b = 2; ++int c = 3; ++long d = 4; ++long long e = 5; ++int *f = (int*) &c; ++#ifdef __SIZEOF_INT128__ ++__int128 g = 9; ++#endif ++ ++int main () ++{ ++ if (__builtin_speculation_safe_value (a) != 1) ++ __builtin_abort (); ++ if (__builtin_speculation_safe_value (b) != 2) ++ __builtin_abort (); ++ if (__builtin_speculation_safe_value (c) != 3) ++ __builtin_abort (); ++ if (__builtin_speculation_safe_value (d) != 4) ++ __builtin_abort (); ++ if (__builtin_speculation_safe_value (e) != 5) ++ __builtin_abort (); ++ if (__builtin_speculation_safe_value (f) != &c) ++ __builtin_abort (); ++#ifdef __SIZEOF_INT128__ ++ if (__builtin_speculation_safe_value (g) != 9) ++ __builtin_abort (); ++#endif ++ return 0; ++} +Index: gcc/testsuite/c-c++-common/spec-barrier-2.c +=================================================================== +--- a/src/gcc/testsuite/c-c++-common/spec-barrier-2.c (.../gcc-8-branch) ++++ b/src/gcc/testsuite/c-c++-common/spec-barrier-2.c (.../ARM/arm-8-branch) +@@ -0,0 +1,17 @@ ++/* { dg-do run } */ ++ ++/* Even on targets that don't need the optional failval parameter, ++ side-effects on the operand should still be calculated. */ ++ ++int x = 3; ++volatile int y = 9; ++ ++int main () ++{ ++ int z = __builtin_speculation_safe_value (x, y++); ++ if (z != 3 || y != 10) ++ __builtin_abort (); ++ return 0; ++} ++ ++/* { dg-prune-output "this target does not define a speculation barrier;" } */ +Index: gcc/builtin-types.def +=================================================================== +--- a/src/gcc/builtin-types.def (.../gcc-8-branch) ++++ b/src/gcc/builtin-types.def (.../ARM/arm-8-branch) +@@ -764,6 +764,12 @@ + BT_VOID, BT_LONG) + DEF_FUNCTION_TYPE_VAR_1 (BT_FN_VOID_ULL_VAR, + BT_VOID, BT_ULONGLONG) ++DEF_FUNCTION_TYPE_VAR_1 (BT_FN_PTR_PTR_VAR, BT_PTR, BT_PTR) ++DEF_FUNCTION_TYPE_VAR_1 (BT_FN_I1_I1_VAR, BT_I1, BT_I1) ++DEF_FUNCTION_TYPE_VAR_1 (BT_FN_I2_I2_VAR, BT_I2, BT_I2) ++DEF_FUNCTION_TYPE_VAR_1 (BT_FN_I4_I4_VAR, BT_I4, BT_I4) ++DEF_FUNCTION_TYPE_VAR_1 (BT_FN_I8_I8_VAR, BT_I8, BT_I8) ++DEF_FUNCTION_TYPE_VAR_1 (BT_FN_I16_I16_VAR, BT_I16, BT_I16) + + DEF_FUNCTION_TYPE_VAR_2 (BT_FN_INT_FILEPTR_CONST_STRING_VAR, + BT_INT, BT_FILEPTR, BT_CONST_STRING) +Index: gcc/builtins.def +=================================================================== +--- a/src/gcc/builtins.def (.../gcc-8-branch) ++++ b/src/gcc/builtins.def (.../ARM/arm-8-branch) +@@ -1017,6 +1017,28 @@ + true, true, true, ATTR_NOTHROW_LEAF_LIST, false, + !targetm.have_tls) + ++/* Suppressing speculation. Users are expected to use the first (N) ++ variant, which will be translated internally into one of the other ++ types. */ ++ ++DEF_GCC_BUILTIN (BUILT_IN_SPECULATION_SAFE_VALUE_N, "speculation_safe_value", ++ BT_FN_VOID_VAR, ATTR_NOVOPS_NOTHROW_LEAF_LIST) ++ ++DEF_GCC_BUILTIN (BUILT_IN_SPECULATION_SAFE_VALUE_PTR, ++ "speculation_safe_value_ptr", BT_FN_PTR_PTR_VAR, ++ ATTR_NOVOPS_NOTHROW_LEAF_LIST) ++DEF_GCC_BUILTIN (BUILT_IN_SPECULATION_SAFE_VALUE_1, "speculation_safe_value_1", ++ BT_FN_I1_I1_VAR, ATTR_NOVOPS_NOTHROW_LEAF_LIST) ++DEF_GCC_BUILTIN (BUILT_IN_SPECULATION_SAFE_VALUE_2, "speculation_safe_value_2", ++ BT_FN_I2_I2_VAR, ATTR_NOVOPS_NOTHROW_LEAF_LIST) ++DEF_GCC_BUILTIN (BUILT_IN_SPECULATION_SAFE_VALUE_4, "speculation_safe_value_4", ++ BT_FN_I4_I4_VAR, ATTR_NOVOPS_NOTHROW_LEAF_LIST) ++DEF_GCC_BUILTIN (BUILT_IN_SPECULATION_SAFE_VALUE_8, "speculation_safe_value_8", ++ BT_FN_I8_I8_VAR, ATTR_NOVOPS_NOTHROW_LEAF_LIST) ++DEF_GCC_BUILTIN (BUILT_IN_SPECULATION_SAFE_VALUE_16, ++ "speculation_safe_value_16", BT_FN_I16_I16_VAR, ++ ATTR_NOVOPS_NOTHROW_LEAF_LIST) ++ + /* Exception support. */ + DEF_BUILTIN_STUB (BUILT_IN_UNWIND_RESUME, "__builtin_unwind_resume") + DEF_BUILTIN_STUB (BUILT_IN_CXA_END_CLEANUP, "__builtin_cxa_end_cleanup") +Index: gcc/configure.ac +=================================================================== +--- a/src/gcc/configure.ac (.../gcc-8-branch) ++++ b/src/gcc/configure.ac (.../ARM/arm-8-branch) +@@ -929,7 +929,7 @@ + ) + AC_SUBST(CONFIGURE_SPECS) + +-ACX_PKGVERSION([GCC]) ++ACX_PKGVERSION([Linaro GCC `cat $srcdir/LINARO-VERSION`]) + ACX_BUGURL([https://gcc.gnu.org/bugs/]) + + # Sanity check enable_languages in case someone does not run the toplevel +Index: gcc/ChangeLog.arm +=================================================================== +--- a/src/gcc/ChangeLog.arm (.../gcc-8-branch) ++++ b/src/gcc/ChangeLog.arm (.../ARM/arm-8-branch) +@@ -0,0 +1,203 @@ ++2018-08-14 Ramana Radhakrishnan ++ ++ Backport spectre v1 mitigation patches. ++ 2018-08-06 John David Anglin ++ PR target/86785 ++ * config/pa/pa.c (TARGET_HAVE_SPECULATION_SAFE_VALUE): ++ Define to speculation_safe_value_not_needed. ++ ++ 2018-08-06 Ulrich Weigand ++ PR target/86807 ++ * config/spu/spu.c (TARGET_HAVE_SPECULATION_SAFE_VALUE): ++ Define to speculation_safe_value_not_needed. ++ ++ 2018-08-03 Sandra Loosemore ++ PR target/86799 ++ * config/nios2/nios2.c (TARGET_HAVE_SPECULATION_SAFE_VALUE): ++ Define. ++ ++ 2018-08-03 Jeff Law ++ PR target/86795 ++ * config/mn10300/mn10300.c (TARGET_HAVE_SPECULATION_SAFE_VALUE): ++ Define to speculation_safe_value_not_needed. ++ ++ 2018-08-02 Jeff Law ++ PR target/86790 ++ * config/m68k/m68k.c (TARGET_HAVE_SPECULATION_SAFE_VALUE): ++ Define to speculation_safe_value_not_needed. ++ ++ PR target/86784 ++ * config/h8300/h8300.c (TARGET_HAVE_SPECULATION_SAFE_VALUE): ++ Define to speculation_safe_value_not_needed. ++ ++ 2018-08-02 Nick Clifton ++ PR target/86813 ++ * config/stormy16/stormy16.c (TARGET_HAVE_SPECULATION_SAFE_VALUE): ++ Define to speculation_safe_value_not_needed. ++ ++ PR target/86810 ++ * config/v850/v850.c (TARGET_HAVE_SPECULATION_SAFE_VALUE): ++ Define to speculation_safe_value_not_needed. ++ ++ PR target/86810 ++ * config/v850/v850.c (TARGET_HAVE_SPECULATION_SAFE_VALUE): ++ Define to speculation_safe_value_not_needed. ++ ++ PR target/86803 ++ * config/rx/rx.c (TARGET_HAVE_SPECULATION_SAFE_VALUE): ++ Define to speculation_safe_value_not_needed. ++ ++ PR target/86797 ++ * config/msp430/msp430.c (TARGET_HAVE_SPECULATION_SAFE_VALUE): ++ Define to speculation_safe_value_not_needed. ++ ++ PR target/86791 ++ * config/mcore/mcore.c (TARGET_HAVE_SPECULATION_SAFE_VALUE): ++ Define to speculation_safe_value_not_needed. ++ ++ PR target/86789 ++ * config/m32r/m32r.c (TARGET_HAVE_SPECULATION_SAFE_VALUE): ++ Define to speculation_safe_value_not_needed. ++ ++ PR target/86787 ++ * config/iq2000/iq2000.c (TARGET_HAVE_SPECULATION_SAFE_VALUE): ++ Define to speculation_safe_value_not_needed. ++ ++ PR target/86782 ++ * config/frv/frv.c (TARGET_HAVE_SPECULATION_SAFE_VALUE): Define to ++ speculation_safe_value_not_needed. ++ ++ PR target/86781 ++ * config/fr30/fr30.c (TARGET_HAVE_SPECULATION_SAFE_VALUE): Define ++ to speculation_safe_value_not_needed. ++ ++ 2018-08-01 Tom de Vries ++ PR target/86800 ++ * config/nvptx/nvptx.c (TARGET_HAVE_SPECULATION_SAFE_VALUE): Define to ++ speculation_safe_value_not_needed. ++ ++ 2018-08-01 Richard Earnshaw ++ * config/rs6000/rs6000.md (speculation_barrier): Renamed from ++ rs6000_speculation_barrier. ++ * config/rs6000/rs6000.c (rs6000_expand_builtin): Adjust for ++ new barrier pattern name. ++ ++ 2018-08-01 Richard Earnshaw ++ ++ * config/i386/i386.md (unspecv): Add UNSPECV_SPECULATION_BARRIER. ++ (speculation_barrier): New insn. ++ ++ 2018-07-31 Ian Lance Taylor ++ * targhooks.c (default_have_speculation_safe_value): Add ++ ATTRIBUTE_UNUSED. ++ ++ 2018-07-31 Richard Earnshaw ++ * config/pdp11/pdp11.c (TARGET_HAVE_SPECULATION_SAFE_VALUE): Redefine ++ to speculation_safe_value_not_needed. ++ ++ 2018-07-31 Richard Earnshaw ++ * targhooks.h (speculation_safe_value_not_needed): New prototype. ++ * targhooks.c (speculation_safe_value_not_needed): New function. ++ * target.def (have_speculation_safe_value): Update documentation. ++ * doc/tm.texi: Regenerated. ++ ++ 2018-07-31 Richard Earnshaw ++ ++ * config/aarch64/iterators.md (ALLI_TI): New iterator. ++ * config/aarch64/aarch64.md (despeculate_copy): New ++ expand. ++ (despeculate_copy_insn): New insn. ++ (despeculate_copyti_insn): New insn. ++ (despeculate_simple): New insn ++ (despeculate_simpleti): New insn. ++ * config/aarch64/aarch64.c (aarch64_speculation_safe_value): New ++ function. ++ (TARGET_SPECULATION_SAFE_VALUE): Redefine to ++ aarch64_speculation_safe_value. ++ (aarch64_print_operand): Handle const0_rtx in modifier 'H'. ++ ++ 2018-07-31 Richard Earnshaw ++ ++ * config/aarch64/aarch64-speculation.cc: New file. ++ * config/aarch64/aarch64-passes.def (pass_track_speculation): Add ++ before pass_reorder_blocks. ++ * config/aarch64/aarch64-protos.h (make_pass_track_speculation): Add ++ prototype. ++ * config/aarch64/aarch64.c (aarch64_conditional_register_usage): Fix ++ X14 and X15 when tracking speculation. ++ * config/aarch64/aarch64.md (register name constants): Add ++ SPECULATION_TRACKER_REGNUM and SPECULATION_SCRATCH_REGNUM. ++ (unspec): Add UNSPEC_SPECULATION_TRACKER. ++ (speculation_barrier): New insn attribute. ++ (cmp): Allow SP in comparisons. ++ (speculation_tracker): New insn. ++ (speculation_barrier): Add speculation_barrier attribute. ++ * config/aarch64/t-aarch64: Add make rule for aarch64-speculation.o. ++ * config.gcc (aarch64*-*-*): Add aarch64-speculation.o to extra_objs. ++ * doc/invoke.texi (AArch64 Options): Document -mtrack-speculation. ++ ++ 2018-07-31 Richard Earnshaw ++ * config/aarch64/aarch64.md (cb1): Disable when ++ aarch64_track_speculation is true. ++ (tb1): Likewise. ++ * config/aarch64/aarch64.c (aarch64_split_compare_regs): Do not ++ generate CB[N]Z when tracking speculation. ++ (aarch64_split_compare_and_swap): Likewise. ++ (aarch64_split_atomic_op): Likewise. ++ ++ 2018-07-31 Richard Earnshaw ++ * config/aarch64/aarch64.opt (mtrack-speculation): New target option. ++ ++ 2018-07-31 Richard Earnshaw ++ * config/aarch64.md (unspecv): Add UNSPECV_SPECULAION_BARRIER. ++ (speculation_barrier): New insn. ++ ++ 2018-07-31 Richard Earnshaw ++ * config/arm/unspecs.md (unspecv): Add VUNSPEC_SPECULATION_BARRIER. ++ * config/arm/arm.md (speculation_barrier): New expand. ++ (speculation_barrier_insn): New pattern. ++ ++ 2018-07-31 Richard Earnshaw ++ * builtin-types.def (BT_FN_PTR_PTR_VAR): New function type. ++ (BT_FN_I1_I1_VAR, BT_FN_I2_I2_VAR, BT_FN_I4_I4_VAR): Likewise. ++ (BT_FN_I8_I8_VAR, BT_FN_I16_I16_VAR): Likewise. ++ * builtin-attrs.def (ATTR_NOVOPS_NOTHROW_LEAF_LIST): New attribute ++ list. ++ * builtins.def (BUILT_IN_SPECULATION_SAFE_VALUE_N): New builtin. ++ (BUILT_IN_SPECULATION_SAFE_VALUE_PTR): New internal builtin. ++ (BUILT_IN_SPECULATION_SAFE_VALUE_1): Likewise. ++ (BUILT_IN_SPECULATION_SAFE_VALUE_2): Likewise. ++ (BUILT_IN_SPECULATION_SAFE_VALUE_4): Likewise. ++ (BUILT_IN_SPECULATION_SAFE_VALUE_8): Likewise. ++ (BUILT_IN_SPECULATION_SAFE_VALUE_16): Likewise. ++ * builtins.c (expand_speculation_safe_value): New function. ++ (expand_builtin): Call it. ++ * doc/cpp.texi: Document predefine __HAVE_SPECULATION_SAFE_VALUE. ++ * doc/extend.texi: Document __builtin_speculation_safe_value. ++ * doc/md.texi: Document "speculation_barrier" pattern. ++ * doc/tm.texi.in: Pull in TARGET_SPECULATION_SAFE_VALUE and ++ TARGET_HAVE_SPECULATION_SAFE_VALUE. ++ * doc/tm.texi: Regenerated. ++ * target.def (have_speculation_safe_value, speculation_safe_value): New ++ hooks. ++ * targhooks.c (default_have_speculation_safe_value): New function. ++ (default_speculation_safe_value): New function. ++ * targhooks.h (default_have_speculation_safe_value): Add prototype. ++ (default_speculation_safe_value): Add prototype. ++ ++2018-08-14 Yvan Roux ++ ++ * LINARO-VERSION: New file. ++ * configure.ac: Add Linaro version string. ++ * configure: Regenerate. ++ * Makefile.in (LINAROVER, LINAROVER_C, LINAROVER_S): Define. ++ (CFLAGS-cppbuiltin.o): Add LINAROVER macro definition. ++ (cppbuiltin.o): Depend on $(LINAROVER). ++ * cppbuiltin.c (parse_linarover): New. ++ (define_GNUC__): Define __LINARO_RELEASE__ and __LINARO_SPIN__ macros. ++ ++Copyright (C) 2018 Free Software Foundation, Inc. ++ ++Copying and distribution of this file, with or without modification, ++are permitted in any medium without royalty provided the copyright ++notice and this notice are preserved. +Index: gcc/config.gcc +=================================================================== +--- a/src/gcc/config.gcc (.../gcc-8-branch) ++++ b/src/gcc/config.gcc (.../ARM/arm-8-branch) +@@ -304,7 +304,7 @@ + extra_headers="arm_fp16.h arm_neon.h arm_acle.h" + c_target_objs="aarch64-c.o" + cxx_target_objs="aarch64-c.o" +- extra_objs="aarch64-builtins.o aarch-common.o cortex-a57-fma-steering.o" ++ extra_objs="aarch64-builtins.o aarch-common.o cortex-a57-fma-steering.o aarch64-speculation.o" + target_gtfiles="\$(srcdir)/config/aarch64/aarch64-builtins.c" + target_has_targetm_common=yes + ;; +Index: gcc/Makefile.in +=================================================================== +--- a/src/gcc/Makefile.in (.../gcc-8-branch) ++++ b/src/gcc/Makefile.in (.../ARM/arm-8-branch) +@@ -854,10 +854,12 @@ + 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 := +@@ -884,6 +886,7 @@ + "\"$(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@ +@@ -2883,8 +2886,9 @@ + -DSTANDARD_EXEC_PREFIX=\"$(libdir)/gcc/\" \ + @TARGET_SYSTEM_ROOT_DEFINE@ + +-CFLAGS-cppbuiltin.o += $(PREPROCESSOR_DEFINES) -DBASEVER=$(BASEVER_s) +-cppbuiltin.o: $(BASEVER) ++CFLAGS-cppbuiltin.o += $(PREPROCESSOR_DEFINES) -DBASEVER=$(BASEVER_s) \ ++ -DLINAROVER=$(LINAROVER_s) ++cppbuiltin.o: $(BASEVER) $(LINAROVER) + + CFLAGS-cppdefault.o += $(PREPROCESSOR_DEFINES) + +Index: gcc/config/nvptx/nvptx.c +=================================================================== +--- a/src/gcc/config/nvptx/nvptx.c (.../gcc-8-branch) ++++ b/src/gcc/config/nvptx/nvptx.c (.../ARM/arm-8-branch) +@@ -5864,6 +5864,9 @@ + #undef TARGET_CAN_CHANGE_MODE_CLASS + #define TARGET_CAN_CHANGE_MODE_CLASS nvptx_can_change_mode_class + ++#undef TARGET_HAVE_SPECULATION_SAFE_VALUE ++#define TARGET_HAVE_SPECULATION_SAFE_VALUE speculation_safe_value_not_needed ++ + struct gcc_target targetm = TARGET_INITIALIZER; + + #include "gt-nvptx.h" +Index: gcc/config/frv/frv.c +=================================================================== +--- a/src/gcc/config/frv/frv.c (.../gcc-8-branch) ++++ b/src/gcc/config/frv/frv.c (.../ARM/arm-8-branch) +@@ -528,6 +528,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; + + #define FRV_SYMBOL_REF_TLS_P(RTX) \ +Index: gcc/config/spu/spu.c +=================================================================== +--- a/src/gcc/config/spu/spu.c (.../gcc-8-branch) ++++ b/src/gcc/config/spu/spu.c (.../ARM/arm-8-branch) +@@ -7458,6 +7458,9 @@ + #undef TARGET_CONSTANT_ALIGNMENT + #define TARGET_CONSTANT_ALIGNMENT spu_constant_alignment + ++#undef TARGET_HAVE_SPECULATION_SAFE_VALUE ++#define TARGET_HAVE_SPECULATION_SAFE_VALUE speculation_safe_value_not_needed ++ + struct gcc_target targetm = TARGET_INITIALIZER; + + #include "gt-spu.h" +Index: gcc/config/m32r/m32r.c +=================================================================== +--- a/src/gcc/config/m32r/m32r.c (.../gcc-8-branch) ++++ b/src/gcc/config/m32r/m32r.c (.../ARM/arm-8-branch) +@@ -226,6 +226,9 @@ + #undef TARGET_STARTING_FRAME_OFFSET + #define TARGET_STARTING_FRAME_OFFSET m32r_starting_frame_offset + ++#undef TARGET_HAVE_SPECULATION_SAFE_VALUE ++#define TARGET_HAVE_SPECULATION_SAFE_VALUE speculation_safe_value_not_needed ++ + struct gcc_target targetm = TARGET_INITIALIZER; + + /* Called by m32r_option_override to initialize various things. */ +Index: gcc/config/rx/rx.c +=================================================================== +--- a/src/gcc/config/rx/rx.c (.../gcc-8-branch) ++++ b/src/gcc/config/rx/rx.c (.../ARM/arm-8-branch) +@@ -3785,6 +3785,9 @@ + #undef TARGET_RTX_COSTS + #define TARGET_RTX_COSTS rx_rtx_costs + ++#undef TARGET_HAVE_SPECULATION_SAFE_VALUE ++#define TARGET_HAVE_SPECULATION_SAFE_VALUE speculation_safe_value_not_needed ++ + struct gcc_target targetm = TARGET_INITIALIZER; + + #include "gt-rx.h" +Index: gcc/config/i386/i386.md +=================================================================== +--- a/src/gcc/config/i386/i386.md (.../gcc-8-branch) ++++ b/src/gcc/config/i386/i386.md (.../ARM/arm-8-branch) +@@ -291,6 +291,9 @@ + UNSPECV_CLRSSBSY + UNSPECV_MOVDIRI + UNSPECV_MOVDIR64B ++ ++ ;; For Speculation Barrier support ++ UNSPECV_SPECULATION_BARRIER + ]) + + ;; Constants to represent rounding modes in the ROUND instruction +@@ -20777,6 +20780,13 @@ + "movdir64b\t{%1, %0|%0, %1}" + [(set_attr "type" "other")]) + ++(define_insn "speculation_barrier" ++ [(unspec_volatile [(const_int 0)] UNSPECV_SPECULATION_BARRIER)] ++ "" ++ "lfence" ++ [(set_attr "type" "other") ++ (set_attr "length" "3")]) ++ + (include "mmx.md") + (include "sse.md") + (include "sync.md") +Index: gcc/config/pdp11/pdp11.c +=================================================================== +--- a/src/gcc/config/pdp11/pdp11.c (.../gcc-8-branch) ++++ b/src/gcc/config/pdp11/pdp11.c (.../ARM/arm-8-branch) +@@ -251,6 +251,9 @@ + + #undef TARGET_CAN_CHANGE_MODE_CLASS + #define TARGET_CAN_CHANGE_MODE_CLASS pdp11_can_change_mode_class ++ ++#undef TARGET_HAVE_SPECULATION_SAFE_VALUE ++#define TARGET_HAVE_SPECULATION_SAFE_VALUE speculation_safe_value_not_needed + + /* A helper function to determine if REGNO should be saved in the + current function's stack frame. */ +Index: gcc/config/stormy16/stormy16.c +=================================================================== +--- a/src/gcc/config/stormy16/stormy16.c (.../gcc-8-branch) ++++ b/src/gcc/config/stormy16/stormy16.c (.../ARM/arm-8-branch) +@@ -2728,6 +2728,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; + + #include "gt-stormy16.h" +Index: gcc/config/fr30/fr30.c +=================================================================== +--- a/src/gcc/config/fr30/fr30.c (.../gcc-8-branch) ++++ b/src/gcc/config/fr30/fr30.c (.../ARM/arm-8-branch) +@@ -195,6 +195,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; + + +Index: gcc/config/nios2/nios2.c +=================================================================== +--- a/src/gcc/config/nios2/nios2.c (.../gcc-8-branch) ++++ b/src/gcc/config/nios2/nios2.c (.../ARM/arm-8-branch) +@@ -5572,6 +5572,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; + + #include "gt-nios2.h" +Index: gcc/config/iq2000/iq2000.c +=================================================================== +--- a/src/gcc/config/iq2000/iq2000.c (.../gcc-8-branch) ++++ b/src/gcc/config/iq2000/iq2000.c (.../ARM/arm-8-branch) +@@ -274,6 +274,9 @@ + #undef TARGET_STARTING_FRAME_OFFSET + #define TARGET_STARTING_FRAME_OFFSET iq2000_starting_frame_offset + ++#undef TARGET_HAVE_SPECULATION_SAFE_VALUE ++#define TARGET_HAVE_SPECULATION_SAFE_VALUE speculation_safe_value_not_needed ++ + struct gcc_target targetm = TARGET_INITIALIZER; + + /* Return nonzero if we split the address into high and low parts. */ +Index: gcc/config/mn10300/mn10300.c +=================================================================== +--- a/src/gcc/config/mn10300/mn10300.c (.../gcc-8-branch) ++++ b/src/gcc/config/mn10300/mn10300.c (.../ARM/arm-8-branch) +@@ -3437,4 +3437,7 @@ + #undef TARGET_MODES_TIEABLE_P + #define TARGET_MODES_TIEABLE_P mn10300_modes_tieable_p + ++#undef TARGET_HAVE_SPECULATION_SAFE_VALUE ++#define TARGET_HAVE_SPECULATION_SAFE_VALUE speculation_safe_value_not_needed ++ + struct gcc_target targetm = TARGET_INITIALIZER; +Index: gcc/config/m68k/m68k.c +=================================================================== +--- a/src/gcc/config/m68k/m68k.c (.../gcc-8-branch) ++++ b/src/gcc/config/m68k/m68k.c (.../ARM/arm-8-branch) +@@ -352,6 +352,9 @@ + #undef TARGET_PROMOTE_FUNCTION_MODE + #define TARGET_PROMOTE_FUNCTION_MODE m68k_promote_function_mode + ++#undef TARGET_HAVE_SPECULATION_SAFE_VALUE ++#define TARGET_HAVE_SPECULATION_SAFE_VALUE speculation_safe_value_not_needed ++ + static const struct attribute_spec m68k_attribute_table[] = + { + /* { name, min_len, max_len, decl_req, type_req, fn_type_req, +Index: gcc/config/aarch64/aarch64-passes.def +=================================================================== +--- a/src/gcc/config/aarch64/aarch64-passes.def (.../gcc-8-branch) ++++ b/src/gcc/config/aarch64/aarch64-passes.def (.../ARM/arm-8-branch) +@@ -19,3 +19,4 @@ + . */ + + INSERT_PASS_AFTER (pass_regrename, 1, pass_fma_steering); ++INSERT_PASS_BEFORE (pass_reorder_blocks, 1, pass_track_speculation); +Index: gcc/config/aarch64/aarch64-speculation.cc +=================================================================== +--- a/src/gcc/config/aarch64/aarch64-speculation.cc (.../gcc-8-branch) ++++ b/src/gcc/config/aarch64/aarch64-speculation.cc (.../ARM/arm-8-branch) +@@ -0,0 +1,494 @@ ++/* Speculation tracking and mitigation (e.g. CVE 2017-5753) for AArch64. ++ Copyright (C) 2018 Free Software Foundation, Inc. ++ Contributed by ARM Ltd. ++ ++ 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. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . */ ++ ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++#include "target.h" ++#include "rtl.h" ++#include "tree-pass.h" ++#include "profile-count.h" ++#include "cfg.h" ++#include "cfgbuild.h" ++#include "print-rtl.h" ++#include "cfgrtl.h" ++#include "function.h" ++#include "basic-block.h" ++#include "memmodel.h" ++#include "emit-rtl.h" ++#include "insn-attr.h" ++#include "df.h" ++#include "tm_p.h" ++#include "insn-config.h" ++#include "recog.h" ++ ++/* This pass scans the RTL just before the final branch ++ re-organisation pass. The aim is to identify all places where ++ there is conditional control flow and to insert code that tracks ++ any speculative execution of a conditional branch. ++ ++ To do this we reserve a call-clobbered register (so that it can be ++ initialized very early in the function prologue) that can then be ++ updated each time there is a conditional branch. At each such ++ branch we then generate a code sequence that uses conditional ++ select operations that are not subject to speculation themselves ++ (we ignore for the moment situations where that might not always be ++ strictly true). For example, a branch sequence such as: ++ ++ B.EQ ++ ... ++ : ++ ++ is transformed to: ++ ++ B.EQ ++ CSEL tracker, tracker, XZr, ne ++ ... ++ : ++ CSEL tracker, tracker, XZr, eq ++ ++ Since we start with the tracker initialized to all bits one, if at any ++ time the predicted control flow diverges from the architectural program ++ behavior, then the tracker will become zero (but not otherwise). ++ ++ The tracker value can be used at any time at which a value needs ++ guarding against incorrect speculation. This can be done in ++ several ways, but they all amount to the same thing. For an ++ untrusted address, or an untrusted offset to a trusted address, we ++ can simply mask the address with the tracker with the untrusted ++ value. If the CPU is not speculating, or speculating correctly, ++ then the value will remain unchanged, otherwise it will be clamped ++ to zero. For more complex scenarios we can compare the tracker ++ against zero and use the flags to form a new selection with an ++ alternate safe value. ++ ++ On implementations where the data processing instructions may ++ themselves produce speculative values, the architecture requires ++ that a CSDB instruction will resolve such data speculation, so each ++ time we use the tracker for protecting a vulnerable value we also ++ emit a CSDB: we do not need to do that each time the tracker itself ++ is updated. ++ ++ At function boundaries, we need to communicate the speculation ++ tracking state with the caller or the callee. This is tricky ++ because there is no register available for such a purpose without ++ creating a new ABI. We deal with this by relying on the principle ++ that in all real programs the stack pointer, SP will never be NULL ++ at a function boundary; we can thus encode the speculation state in ++ SP by clearing SP if the speculation tracker itself is NULL. After ++ the call we recover the tracking state back from SP into the ++ tracker register. The results is that a function call sequence is ++ transformed to ++ ++ MOV tmp, SP ++ AND tmp, tmp, tracker ++ MOV SP, tmp ++ BL ++ CMP SP, #0 ++ CSETM tracker, ne ++ ++ The additional MOV instructions in the pre-call sequence are needed ++ because SP cannot be used directly with the AND instruction. ++ ++ The code inside a function body uses the post-call sequence in the ++ prologue to establish the tracker and the pre-call sequence in the ++ epilogue to re-encode the state for the return. ++ ++ The code sequences have the nice property that if called from, or ++ calling a function that does not track speculation then the stack pointer ++ will always be non-NULL and hence the tracker will be initialized to all ++ bits one as we need: we lose the ability to fully track speculation in that ++ case, but we are still architecturally safe. ++ ++ Tracking speculation in this way is quite expensive, both in code ++ size and execution time. We employ a number of tricks to try to ++ limit this: ++ ++ 1) Simple leaf functions with no conditional branches (or use of ++ the tracker) do not need to establish a new tracker: they simply ++ carry the tracking state through SP for the duration of the call. ++ The same is also true for leaf functions that end in a tail-call. ++ ++ 2) Back-to-back function calls in a single basic block also do not ++ need to re-establish the tracker between the calls. Again, we can ++ carry the tracking state in SP for this period of time unless the ++ tracker value is needed at that point in time. ++ ++ We run the pass just before the final branch reorganization pass so ++ that we can handle most of the conditional branch cases using the ++ standard edge insertion code. The reorg pass will hopefully clean ++ things up for afterwards so that the results aren't too ++ horrible. */ ++ ++/* Generate a code sequence to clobber SP if speculating incorreclty. */ ++static rtx_insn * ++aarch64_speculation_clobber_sp () ++{ ++ rtx sp = gen_rtx_REG (DImode, SP_REGNUM); ++ rtx tracker = gen_rtx_REG (DImode, SPECULATION_TRACKER_REGNUM); ++ rtx scratch = gen_rtx_REG (DImode, SPECULATION_SCRATCH_REGNUM); ++ ++ start_sequence (); ++ emit_insn (gen_rtx_SET (scratch, sp)); ++ emit_insn (gen_anddi3 (scratch, scratch, tracker)); ++ emit_insn (gen_rtx_SET (sp, scratch)); ++ rtx_insn *seq = get_insns (); ++ end_sequence (); ++ return seq; ++} ++ ++/* Generate a code sequence to establish the tracker variable from the ++ contents of SP. */ ++static rtx_insn * ++aarch64_speculation_establish_tracker () ++{ ++ rtx sp = gen_rtx_REG (DImode, SP_REGNUM); ++ rtx tracker = gen_rtx_REG (DImode, SPECULATION_TRACKER_REGNUM); ++ start_sequence (); ++ rtx cc = aarch64_gen_compare_reg (EQ, sp, const0_rtx); ++ emit_insn (gen_cstoredi_neg (tracker, ++ gen_rtx_NE (CCmode, cc, const0_rtx), cc)); ++ rtx_insn *seq = get_insns (); ++ end_sequence (); ++ return seq; ++} ++ ++/* Main speculation tracking pass. */ ++unsigned int ++aarch64_do_track_speculation () ++{ ++ basic_block bb; ++ bool needs_tracking = false; ++ bool need_second_pass = false; ++ rtx_insn *insn; ++ int fixups_pending = 0; ++ ++ FOR_EACH_BB_FN (bb, cfun) ++ { ++ insn = BB_END (bb); ++ ++ if (dump_file) ++ fprintf (dump_file, "Basic block %d:\n", bb->index); ++ ++ while (insn != BB_HEAD (bb) ++ && NOTE_P (insn)) ++ insn = PREV_INSN (insn); ++ ++ if (control_flow_insn_p (insn)) ++ { ++ if (any_condjump_p (insn)) ++ { ++ if (dump_file) ++ { ++ fprintf (dump_file, " condjump\n"); ++ dump_insn_slim (dump_file, insn); ++ } ++ ++ rtx src = SET_SRC (pc_set (insn)); ++ ++ /* Check for an inverted jump, where the fall-through edge ++ appears first. */ ++ bool inverted = GET_CODE (XEXP (src, 2)) != PC; ++ /* The other edge must be the PC (we assume that we don't ++ have conditional return instructions). */ ++ gcc_assert (GET_CODE (XEXP (src, 1 + !inverted)) == PC); ++ ++ rtx cond = copy_rtx (XEXP (src, 0)); ++ gcc_assert (COMPARISON_P (cond) ++ && REG_P (XEXP (cond, 0)) ++ && REGNO (XEXP (cond, 0)) == CC_REGNUM ++ && XEXP (cond, 1) == const0_rtx); ++ enum rtx_code inv_cond_code ++ = reversed_comparison_code (cond, insn); ++ /* We should be able to reverse all conditions. */ ++ gcc_assert (inv_cond_code != UNKNOWN); ++ rtx inv_cond = gen_rtx_fmt_ee (inv_cond_code, GET_MODE (cond), ++ copy_rtx (XEXP (cond, 0)), ++ copy_rtx (XEXP (cond, 1))); ++ if (inverted) ++ std::swap (cond, inv_cond); ++ ++ insert_insn_on_edge (gen_speculation_tracker (cond), ++ BRANCH_EDGE (bb)); ++ insert_insn_on_edge (gen_speculation_tracker (inv_cond), ++ FALLTHRU_EDGE (bb)); ++ needs_tracking = true; ++ } ++ else if (GET_CODE (PATTERN (insn)) == RETURN) ++ { ++ /* If we already know we'll need a second pass, don't put ++ out the return sequence now, or we might end up with ++ two copies. Instead, we'll do all return statements ++ during the second pass. However, if this is the ++ first return insn we've found and we already ++ know that we'll need to emit the code, we can save a ++ second pass by emitting the code now. */ ++ if (needs_tracking && ! need_second_pass) ++ { ++ rtx_insn *seq = aarch64_speculation_clobber_sp (); ++ emit_insn_before (seq, insn); ++ } ++ else ++ { ++ fixups_pending++; ++ need_second_pass = true; ++ } ++ } ++ else if (find_reg_note (insn, REG_NON_LOCAL_GOTO, NULL_RTX)) ++ { ++ rtx_insn *seq = aarch64_speculation_clobber_sp (); ++ emit_insn_before (seq, insn); ++ needs_tracking = true; ++ } ++ } ++ else ++ { ++ if (dump_file) ++ { ++ fprintf (dump_file, " other\n"); ++ dump_insn_slim (dump_file, insn); ++ } ++ } ++ } ++ ++ FOR_EACH_BB_FN (bb, cfun) ++ { ++ rtx_insn *end = BB_END (bb); ++ rtx_insn *call_insn = NULL; ++ ++ if (bb->flags & BB_NON_LOCAL_GOTO_TARGET) ++ { ++ rtx_insn *label = NULL; ++ /* For non-local goto targets we have to recover the ++ speculation state from SP. Find the last code label at ++ the head of the block and place the fixup sequence after ++ that. */ ++ for (insn = BB_HEAD (bb); insn != end; insn = NEXT_INSN (insn)) ++ { ++ if (LABEL_P (insn)) ++ label = insn; ++ /* Never put anything before the basic block note. */ ++ if (NOTE_INSN_BASIC_BLOCK_P (insn)) ++ label = insn; ++ if (INSN_P (insn)) ++ break; ++ } ++ ++ gcc_assert (label); ++ emit_insn_after (aarch64_speculation_establish_tracker (), label); ++ } ++ ++ /* Scan the insns looking for calls. We need to pass the ++ speculation tracking state encoded in to SP. After a call we ++ restore the speculation tracking into the tracker register. ++ To avoid unnecessary transfers we look for two or more calls ++ within a single basic block and eliminate, where possible, ++ any redundant operations. */ ++ for (insn = BB_HEAD (bb); ; insn = NEXT_INSN (insn)) ++ { ++ if (NONDEBUG_INSN_P (insn) ++ && recog_memoized (insn) >= 0 ++ && (get_attr_speculation_barrier (insn) ++ == SPECULATION_BARRIER_TRUE)) ++ { ++ if (call_insn) ++ { ++ /* This instruction requires the speculation ++ tracking to be in the tracker register. If there ++ was an earlier call in this block, we need to ++ copy the speculation tracking back there. */ ++ emit_insn_after (aarch64_speculation_establish_tracker (), ++ call_insn); ++ call_insn = NULL; ++ } ++ ++ needs_tracking = true; ++ } ++ ++ if (CALL_P (insn)) ++ { ++ bool tailcall ++ = (SIBLING_CALL_P (insn) ++ || find_reg_note (insn, REG_NORETURN, NULL_RTX)); ++ ++ /* Tailcalls are like returns, we can eliminate the ++ transfer between the tracker register and SP if we ++ know that this function does not itself need ++ tracking. */ ++ if (tailcall && (need_second_pass || !needs_tracking)) ++ { ++ /* Don't clear call_insn if it is set - needs_tracking ++ will be true in that case and so we will end ++ up putting out mitigation sequences. */ ++ fixups_pending++; ++ need_second_pass = true; ++ break; ++ } ++ ++ needs_tracking = true; ++ ++ /* We always need a transfer before the first call in a BB. */ ++ if (!call_insn) ++ emit_insn_before (aarch64_speculation_clobber_sp (), insn); ++ ++ /* Tail-calls and no-return calls don't need any post-call ++ reestablishment of the tracker. */ ++ if (! tailcall) ++ call_insn = insn; ++ else ++ call_insn = NULL; ++ } ++ ++ if (insn == end) ++ break; ++ } ++ ++ if (call_insn) ++ { ++ rtx_insn *seq = aarch64_speculation_establish_tracker (); ++ ++ /* Handle debug insns at the end of the BB. Put the extra ++ insns after them. This ensures that we have consistent ++ behaviour for the placement of the extra insns between ++ debug and non-debug builds. */ ++ for (insn = call_insn; ++ insn != end && DEBUG_INSN_P (NEXT_INSN (insn)); ++ insn = NEXT_INSN (insn)) ++ ; ++ ++ if (insn == end) ++ { ++ edge e = find_fallthru_edge (bb->succs); ++ /* We need to be very careful about some calls that ++ appear at the end of a basic block. If the call ++ involves exceptions, then the compiler may depend on ++ this being the last instruction in the block. The ++ easiest way to handle this is to commit the new ++ instructions on the fall-through edge and to let ++ commit_edge_insertions clean things up for us. ++ ++ Sometimes, eg with OMP, there may not even be an ++ outgoing edge after the call. In that case, there's ++ not much we can do, presumably the compiler has ++ decided that the call can never return in this ++ context. */ ++ if (e) ++ { ++ /* We need to set the location lists explicitly in ++ this case. */ ++ if (! INSN_P (seq)) ++ { ++ start_sequence (); ++ emit_insn (seq); ++ seq = get_insns (); ++ end_sequence (); ++ } ++ ++ for (rtx_insn *list = seq; list; list = NEXT_INSN (list)) ++ INSN_LOCATION (list) = INSN_LOCATION (call_insn); ++ ++ insert_insn_on_edge (seq, e); ++ } ++ } ++ else ++ emit_insn_after (seq, call_insn); ++ } ++ } ++ ++ if (needs_tracking) ++ { ++ if (need_second_pass) ++ { ++ /* We found a return instruction before we found out whether ++ or not we need to emit the tracking code, but we now ++ know we do. Run quickly over the basic blocks and ++ fix up the return insns. */ ++ FOR_EACH_BB_FN (bb, cfun) ++ { ++ insn = BB_END (bb); ++ ++ while (insn != BB_HEAD (bb) ++ && NOTE_P (insn)) ++ insn = PREV_INSN (insn); ++ ++ if ((control_flow_insn_p (insn) ++ && GET_CODE (PATTERN (insn)) == RETURN) ++ || (CALL_P (insn) ++ && (SIBLING_CALL_P (insn) ++ || find_reg_note (insn, REG_NORETURN, NULL_RTX)))) ++ { ++ rtx_insn *seq = aarch64_speculation_clobber_sp (); ++ emit_insn_before (seq, insn); ++ fixups_pending--; ++ } ++ } ++ gcc_assert (fixups_pending == 0); ++ } ++ ++ /* Set up the initial value of the tracker, using the incoming SP. */ ++ insert_insn_on_edge (aarch64_speculation_establish_tracker (), ++ single_succ_edge (ENTRY_BLOCK_PTR_FOR_FN (cfun))); ++ commit_edge_insertions (); ++ } ++ ++ return 0; ++} ++ ++namespace { ++ ++const pass_data pass_data_aarch64_track_speculation = ++{ ++ RTL_PASS, /* type. */ ++ "speculation", /* name. */ ++ OPTGROUP_NONE, /* optinfo_flags. */ ++ TV_MACH_DEP, /* tv_id. */ ++ 0, /* properties_required. */ ++ 0, /* properties_provided. */ ++ 0, /* properties_destroyed. */ ++ 0, /* todo_flags_start. */ ++ 0 /* todo_flags_finish. */ ++}; ++ ++class pass_track_speculation : public rtl_opt_pass ++{ ++ public: ++ pass_track_speculation(gcc::context *ctxt) ++ : rtl_opt_pass(pass_data_aarch64_track_speculation, ctxt) ++ {} ++ ++ /* opt_pass methods: */ ++ virtual bool gate (function *) ++ { ++ return aarch64_track_speculation; ++ } ++ ++ virtual unsigned int execute (function *) ++ { ++ return aarch64_do_track_speculation (); ++ } ++}; // class pass_track_speculation. ++} // anon namespace. ++ ++/* Create a new pass instance. */ ++rtl_opt_pass * ++make_pass_track_speculation (gcc::context *ctxt) ++{ ++ return new pass_track_speculation (ctxt); ++} +Index: gcc/config/aarch64/iterators.md +=================================================================== +--- a/src/gcc/config/aarch64/iterators.md (.../gcc-8-branch) ++++ b/src/gcc/config/aarch64/iterators.md (.../ARM/arm-8-branch) +@@ -35,6 +35,9 @@ + ;; Iterator for all integer modes (up to 64-bit) + (define_mode_iterator ALLI [QI HI SI DI]) + ++;; Iterator for all integer modes (up to 128-bit) ++(define_mode_iterator ALLI_TI [QI HI SI DI TI]) ++ + ;; Iterator for all integer modes that can be extended (up to 64-bit) + (define_mode_iterator ALLX [QI HI SI]) + +Index: gcc/config/aarch64/aarch64.md +=================================================================== +--- a/src/gcc/config/aarch64/aarch64.md (.../gcc-8-branch) ++++ b/src/gcc/config/aarch64/aarch64.md (.../ARM/arm-8-branch) +@@ -88,6 +88,10 @@ + (P13_REGNUM 81) + (P14_REGNUM 82) + (P15_REGNUM 83) ++ ;; A couple of call-clobbered registers that we need to reserve when ++ ;; tracking speculation this is not ABI, so is subject to change. ++ (SPECULATION_TRACKER_REGNUM 15) ++ (SPECULATION_SCRATCH_REGNUM 14) + ] + ) + +@@ -189,6 +193,7 @@ + UNSPEC_CLASTB + UNSPEC_FADDA + UNSPEC_REV_SUBREG ++ UNSPEC_SPECULATION_TRACKER + ]) + + (define_c_enum "unspecv" [ +@@ -199,6 +204,7 @@ + UNSPECV_SET_FPSR ; Represent assign of FPSR content. + UNSPECV_BLOCKAGE ; Represent a blockage + UNSPECV_PROBE_STACK_RANGE ; Represent stack range probing. ++ UNSPECV_SPECULATION_BARRIER ; Represent speculation barrier. + ] + ) + +@@ -275,6 +281,11 @@ + ;; no predicated insns. + (define_attr "predicated" "yes,no" (const_string "no")) + ++;; Set to true on an insn that requires the speculation tracking state to be ++;; in the tracking register before the insn issues. Otherwise the compiler ++;; may chose to hold the tracking state encoded in SP. ++(define_attr "speculation_barrier" "true,false" (const_string "false")) ++ + ;; ------------------------------------------------------------------- + ;; Pipeline descriptions and scheduling + ;; ------------------------------------------------------------------- +@@ -678,7 +689,7 @@ + (const_int 0)) + (label_ref (match_operand 1 "" "")) + (pc)))] +- "" ++ "!aarch64_track_speculation" + { + if (get_attr_length (insn) == 8) + return aarch64_gen_far_branch (operands, 1, "Lcb", "\\t%0, "); +@@ -708,7 +719,7 @@ + (label_ref (match_operand 2 "" "")) + (pc))) + (clobber (reg:CC CC_REGNUM))] +- "" ++ "!aarch64_track_speculation" + { + if (get_attr_length (insn) == 8) + { +@@ -744,7 +755,7 @@ + (label_ref (match_operand 1 "" "")) + (pc))) + (clobber (reg:CC CC_REGNUM))] +- "" ++ "!aarch64_track_speculation" + { + if (get_attr_length (insn) == 8) + { +@@ -3133,7 +3144,7 @@ + + (define_insn "cmp" + [(set (reg:CC CC_REGNUM) +- (compare:CC (match_operand:GPI 0 "register_operand" "r,r,r") ++ (compare:CC (match_operand:GPI 0 "register_operand" "rk,rk,rk") + (match_operand:GPI 1 "aarch64_plus_operand" "r,I,J")))] + "" + "@ +@@ -6081,6 +6092,21 @@ + DONE; + }) + ++;; Track speculation through conditional branches. We assume that ++;; SPECULATION_TRACKER_REGNUM is reserved for this purpose when necessary. ++(define_insn "speculation_tracker" ++ [(set (reg:DI SPECULATION_TRACKER_REGNUM) ++ (unspec [(reg:DI SPECULATION_TRACKER_REGNUM) (match_operand 0)] ++ UNSPEC_SPECULATION_TRACKER))] ++ "" ++ { ++ operands[1] = gen_rtx_REG (DImode, SPECULATION_TRACKER_REGNUM); ++ output_asm_insn ("csel\\t%1, %1, xzr, %m0", operands); ++ return ""; ++ } ++ [(set_attr "type" "csel")] ++) ++ + ;; Helper for aarch64.c code. + (define_expand "set_clobber_cc" + [(parallel [(set (match_operand 0) +@@ -6087,6 +6113,113 @@ + (match_operand 1)) + (clobber (reg:CC CC_REGNUM))])]) + ++;; Hard speculation barrier. ++(define_insn "speculation_barrier" ++ [(unspec_volatile [(const_int 0)] UNSPECV_SPECULATION_BARRIER)] ++ "" ++ "isb\;dsb\\tsy" ++ [(set_attr "length" "8") ++ (set_attr "type" "block") ++ (set_attr "speculation_barrier" "true")] ++) ++ ++;; Support for __builtin_speculation_safe_value when we have speculation ++;; tracking enabled. Use the speculation tracker to decide whether to ++;; copy operand 1 to the target, or to copy the fail value (operand 2). ++(define_expand "despeculate_copy" ++ [(set (match_operand:ALLI_TI 0 "register_operand" "=r") ++ (unspec_volatile:ALLI_TI ++ [(match_operand:ALLI_TI 1 "register_operand" "r") ++ (match_operand:ALLI_TI 2 "aarch64_reg_or_zero" "rZ") ++ (use (reg:DI SPECULATION_TRACKER_REGNUM)) ++ (clobber (reg:CC CC_REGNUM))] UNSPECV_SPECULATION_BARRIER))] ++ "" ++ " ++ { ++ if (operands[2] == const0_rtx) ++ { ++ rtx tracker; ++ if (mode == TImode) ++ tracker = gen_rtx_REG (DImode, SPECULATION_TRACKER_REGNUM); ++ else ++ tracker = gen_rtx_REG (mode, SPECULATION_TRACKER_REGNUM); ++ ++ emit_insn (gen_despeculate_simple (operands[0], operands[1], ++ tracker)); ++ DONE; ++ } ++ } ++ " ++) ++ ++;; Patterns to match despeculate_copy. Note that "hint 0x14" is the ++;; encoding for CSDB, but will work in older versions of the assembler. ++(define_insn "*despeculate_copy_insn" ++ [(set (match_operand:ALLI 0 "register_operand" "=r") ++ (unspec_volatile:ALLI ++ [(match_operand:ALLI 1 "register_operand" "r") ++ (match_operand:ALLI 2 "aarch64_reg_or_zero" "rZ") ++ (use (reg:DI SPECULATION_TRACKER_REGNUM)) ++ (clobber (reg:CC CC_REGNUM))] UNSPECV_SPECULATION_BARRIER))] ++ "" ++ { ++ operands[3] = gen_rtx_REG (DImode, SPECULATION_TRACKER_REGNUM); ++ output_asm_insn ("cmp\\t%3, #0\;csel\\t%0, %1, %2, ne\;hint\t0x14 // csdb", ++ operands); ++ return ""; ++ } ++ [(set_attr "length" "12") ++ (set_attr "type" "block") ++ (set_attr "speculation_barrier" "true")] ++) ++ ++;; Pattern to match despeculate_copyti ++(define_insn "*despeculate_copyti_insn" ++ [(set (match_operand:TI 0 "register_operand" "=r") ++ (unspec_volatile:TI ++ [(match_operand:TI 1 "register_operand" "r") ++ (match_operand:TI 2 "aarch64_reg_or_zero" "rZ") ++ (use (reg:DI SPECULATION_TRACKER_REGNUM)) ++ (clobber (reg:CC CC_REGNUM))] UNSPECV_SPECULATION_BARRIER))] ++ "" ++ { ++ operands[3] = gen_rtx_REG (DImode, SPECULATION_TRACKER_REGNUM); ++ output_asm_insn ++ ("cmp\\t%3, #0\;csel\\t%0, %1, %2, ne\;csel\\t%H0, %H1, %H2, ne\;hint\t0x14 // csdb", ++ operands); ++ return ""; ++ } ++ [(set_attr "length" "16") ++ (set_attr "type" "block") ++ (set_attr "speculation_barrier" "true")] ++) ++ ++(define_insn "despeculate_simple" ++ [(set (match_operand:ALLI 0 "register_operand" "=r") ++ (unspec_volatile:ALLI ++ [(match_operand:ALLI 1 "register_operand" "r") ++ (use (match_operand:ALLI 2 "register_operand" ""))] ++ UNSPECV_SPECULATION_BARRIER))] ++ "" ++ "and\\t%0, %1, %2\;hint\t0x14 // csdb" ++ [(set_attr "type" "block") ++ (set_attr "length" "8") ++ (set_attr "speculation_barrier" "true")] ++) ++ ++(define_insn "despeculate_simpleti" ++ [(set (match_operand:TI 0 "register_operand" "=r") ++ (unspec_volatile:TI ++ [(match_operand:TI 1 "register_operand" "r") ++ (use (match_operand:DI 2 "register_operand" ""))] ++ UNSPECV_SPECULATION_BARRIER))] ++ "" ++ "and\\t%0, %1, %2\;and\\t%H0, %H1, %2\;hint\t0x14 // csdb" ++ [(set_attr "type" "block") ++ (set_attr "length" "12") ++ (set_attr "speculation_barrier" "true")] ++) ++ + ;; AdvSIMD Stuff + (include "aarch64-simd.md") + +Index: gcc/config/aarch64/aarch64.opt +=================================================================== +--- a/src/gcc/config/aarch64/aarch64.opt (.../gcc-8-branch) ++++ b/src/gcc/config/aarch64/aarch64.opt (.../ARM/arm-8-branch) +@@ -214,3 +214,7 @@ + mverbose-cost-dump + Common Undocumented Var(flag_aarch64_verbose_cost) + Enables verbose cost model dumping in the debug dump files. ++ ++mtrack-speculation ++Target Var(aarch64_track_speculation) ++Generate code to track when the CPU might be speculating incorrectly. +Index: gcc/config/aarch64/t-aarch64 +=================================================================== +--- a/src/gcc/config/aarch64/t-aarch64 (.../gcc-8-branch) ++++ b/src/gcc/config/aarch64/t-aarch64 (.../ARM/arm-8-branch) +@@ -67,6 +67,16 @@ + $(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \ + $(srcdir)/config/aarch64/cortex-a57-fma-steering.c + ++aarch64-speculation.o: $(srcdir)/config/aarch64/aarch64-speculation.cc \ ++ $(CONFIG_H) \ ++ $(SYSTEM_H) \ ++ $(TM_H) \ ++ $(TARGET_H) \ ++ $(RTL_BASE_H) \ ++ $(TREE_PASS_H) ++ $(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_SPPFLAGS) $(INCLUDES) \ ++ $(srcdir)/config/aarch64/aarch64-speculation.cc ++ + comma=, + MULTILIB_OPTIONS = $(subst $(comma),/, $(patsubst %, mabi=%, $(subst $(comma),$(comma)mabi=,$(TM_MULTILIB_CONFIG)))) + MULTILIB_DIRNAMES = $(subst $(comma), ,$(TM_MULTILIB_CONFIG)) +Index: gcc/config/aarch64/aarch64-protos.h +=================================================================== +--- a/src/gcc/config/aarch64/aarch64-protos.h (.../gcc-8-branch) ++++ b/src/gcc/config/aarch64/aarch64-protos.h (.../ARM/arm-8-branch) +@@ -547,7 +547,8 @@ + std::string aarch64_get_extension_string_for_isa_flags (unsigned long, + unsigned long); + +-rtl_opt_pass *make_pass_fma_steering (gcc::context *ctxt); ++rtl_opt_pass *make_pass_fma_steering (gcc::context *); ++rtl_opt_pass *make_pass_track_speculation (gcc::context *); + + poly_uint64 aarch64_regmode_natural_size (machine_mode); + +Index: gcc/config/aarch64/aarch64.c +=================================================================== +--- a/src/gcc/config/aarch64/aarch64.c (.../gcc-8-branch) ++++ b/src/gcc/config/aarch64/aarch64.c (.../ARM/arm-8-branch) +@@ -6704,6 +6704,12 @@ + break; + + case 'H': ++ if (x == const0_rtx) ++ { ++ asm_fprintf (f, "xzr"); ++ break; ++ } ++ + if (!REG_P (x) || !GP_REGNUM_P (REGNO (x) + 1)) + { + output_operand_lossage ("invalid operand for '%%%c'", code); +@@ -12536,6 +12542,19 @@ + fixed_regs[i] = 1; + call_used_regs[i] = 1; + } ++ ++ /* When tracking speculation, we need a couple of call-clobbered registers ++ to track the speculation state. It would be nice to just use ++ IP0 and IP1, but currently there are numerous places that just ++ assume these registers are free for other uses (eg pointer ++ authentication). */ ++ if (aarch64_track_speculation) ++ { ++ fixed_regs[SPECULATION_TRACKER_REGNUM] = 1; ++ call_used_regs[SPECULATION_TRACKER_REGNUM] = 1; ++ fixed_regs[SPECULATION_SCRATCH_REGNUM] = 1; ++ call_used_regs[SPECULATION_SCRATCH_REGNUM] = 1; ++ } + } + + /* Walk down the type tree of TYPE counting consecutive base elements. +@@ -14383,7 +14402,16 @@ + + if (strong_zero_p) + { +- x = gen_rtx_NE (VOIDmode, rval, const0_rtx); ++ if (aarch64_track_speculation) ++ { ++ /* Emit an explicit compare instruction, so that we can correctly ++ track the condition codes. */ ++ rtx cc_reg = aarch64_gen_compare_reg (NE, rval, const0_rtx); ++ x = gen_rtx_NE (GET_MODE (cc_reg), cc_reg, const0_rtx); ++ } ++ else ++ x = gen_rtx_NE (VOIDmode, rval, const0_rtx); ++ + x = gen_rtx_IF_THEN_ELSE (VOIDmode, x, + gen_rtx_LABEL_REF (Pmode, label2), pc_rtx); + aarch64_emit_unlikely_jump (gen_rtx_SET (pc_rtx, x)); +@@ -14401,7 +14429,16 @@ + + if (!is_weak) + { +- x = gen_rtx_NE (VOIDmode, scratch, const0_rtx); ++ if (aarch64_track_speculation) ++ { ++ /* Emit an explicit compare instruction, so that we can correctly ++ track the condition codes. */ ++ rtx cc_reg = aarch64_gen_compare_reg (NE, scratch, const0_rtx); ++ x = gen_rtx_NE (GET_MODE (cc_reg), cc_reg, const0_rtx); ++ } ++ else ++ x = gen_rtx_NE (VOIDmode, scratch, const0_rtx); ++ + x = gen_rtx_IF_THEN_ELSE (VOIDmode, x, + gen_rtx_LABEL_REF (Pmode, label1), pc_rtx); + aarch64_emit_unlikely_jump (gen_rtx_SET (pc_rtx, x)); +@@ -14737,7 +14774,16 @@ + aarch64_emit_store_exclusive (mode, cond, mem, + gen_lowpart (mode, new_out), model_rtx); + +- x = gen_rtx_NE (VOIDmode, cond, const0_rtx); ++ if (aarch64_track_speculation) ++ { ++ /* Emit an explicit compare instruction, so that we can correctly ++ track the condition codes. */ ++ rtx cc_reg = aarch64_gen_compare_reg (NE, cond, const0_rtx); ++ x = gen_rtx_NE (GET_MODE (cc_reg), cc_reg, const0_rtx); ++ } ++ else ++ x = gen_rtx_NE (VOIDmode, cond, const0_rtx); ++ + x = gen_rtx_IF_THEN_ELSE (VOIDmode, x, + gen_rtx_LABEL_REF (Pmode, label), pc_rtx); + aarch64_emit_unlikely_jump (gen_rtx_SET (pc_rtx, x)); +@@ -17416,6 +17462,45 @@ + } + } + ++/* Override the default target speculation_safe_value. */ ++static rtx ++aarch64_speculation_safe_value (machine_mode mode, ++ rtx result, rtx val, rtx failval) ++{ ++ /* Maybe we should warn if falling back to hard barriers. They are ++ likely to be noticably more expensive than the alternative below. */ ++ if (!aarch64_track_speculation) ++ return default_speculation_safe_value (mode, result, val, failval); ++ ++ if (!REG_P (val)) ++ val = copy_to_mode_reg (mode, val); ++ ++ if (!aarch64_reg_or_zero (failval, mode)) ++ failval = copy_to_mode_reg (mode, failval); ++ ++ switch (mode) ++ { ++ case E_QImode: ++ emit_insn (gen_despeculate_copyqi (result, val, failval)); ++ break; ++ case E_HImode: ++ emit_insn (gen_despeculate_copyhi (result, val, failval)); ++ break; ++ case E_SImode: ++ emit_insn (gen_despeculate_copysi (result, val, failval)); ++ break; ++ case E_DImode: ++ emit_insn (gen_despeculate_copydi (result, val, failval)); ++ break; ++ case E_TImode: ++ emit_insn (gen_despeculate_copyti (result, val, failval)); ++ break; ++ default: ++ gcc_unreachable (); ++ } ++ return result; ++} ++ + /* Target-specific selftests. */ + + #if CHECKING_P +@@ -17885,6 +17970,9 @@ + #undef TARGET_SELECT_EARLY_REMAT_MODES + #define TARGET_SELECT_EARLY_REMAT_MODES aarch64_select_early_remat_modes + ++#undef TARGET_SPECULATION_SAFE_VALUE ++#define TARGET_SPECULATION_SAFE_VALUE aarch64_speculation_safe_value ++ + #if CHECKING_P + #undef TARGET_RUN_TARGET_SELFTESTS + #define TARGET_RUN_TARGET_SELFTESTS selftest::aarch64_run_selftests +Index: gcc/config/rs6000/rs6000.c +=================================================================== +--- a/src/gcc/config/rs6000/rs6000.c (.../gcc-8-branch) ++++ b/src/gcc/config/rs6000/rs6000.c (.../ARM/arm-8-branch) +@@ -16960,7 +16960,7 @@ + + case MISC_BUILTIN_SPEC_BARRIER: + { +- emit_insn (gen_rs6000_speculation_barrier ()); ++ emit_insn (gen_speculation_barrier ()); + return NULL_RTX; + } + +Index: gcc/config/rs6000/rs6000.md +=================================================================== +--- a/src/gcc/config/rs6000/rs6000.md (.../gcc-8-branch) ++++ b/src/gcc/config/rs6000/rs6000.md (.../ARM/arm-8-branch) +@@ -12599,7 +12599,7 @@ + return "ori 2,2,0"; + }) + +-(define_insn "rs6000_speculation_barrier" ++(define_insn "speculation_barrier" + [(unspec_volatile:BLK [(const_int 0)] UNSPECV_SPEC_BARRIER)] + "" + "ori 31,31,0") +Index: gcc/config/mcore/mcore.c +=================================================================== +--- a/src/gcc/config/mcore/mcore.c (.../gcc-8-branch) ++++ b/src/gcc/config/mcore/mcore.c (.../ARM/arm-8-branch) +@@ -253,6 +253,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; + + /* Adjust the stack and return the number of bytes taken to do it. */ +Index: gcc/config/arm/unspecs.md +=================================================================== +--- a/src/gcc/config/arm/unspecs.md (.../gcc-8-branch) ++++ b/src/gcc/config/arm/unspecs.md (.../ARM/arm-8-branch) +@@ -168,6 +168,7 @@ + VUNSPEC_MCRR2 ; Represent the coprocessor mcrr2 instruction. + VUNSPEC_MRRC ; Represent the coprocessor mrrc instruction. + VUNSPEC_MRRC2 ; Represent the coprocessor mrrc2 instruction. ++ VUNSPEC_SPECULATION_BARRIER ; Represents an unconditional speculation barrier. + ]) + + ;; Enumerators for NEON unspecs. +Index: gcc/config/arm/arm.md +=================================================================== +--- a/src/gcc/config/arm/arm.md (.../gcc-8-branch) ++++ b/src/gcc/config/arm/arm.md (.../ARM/arm-8-branch) +@@ -12012,6 +12012,27 @@ + [(set_attr "length" "4") + (set_attr "type" "coproc")]) + ++(define_expand "speculation_barrier" ++ [(unspec_volatile [(const_int 0)] VUNSPEC_SPECULATION_BARRIER)] ++ "TARGET_EITHER" ++ " ++ /* Don't emit anything for Thumb1 and suppress the warning from the ++ generic expansion. */ ++ if (!TARGET_32BIT) ++ DONE; ++ " ++) ++ ++;; Generate a hard speculation barrier when we have not enabled speculation ++;; tracking. ++(define_insn "*speculation_barrier_insn" ++ [(unspec_volatile [(const_int 0)] VUNSPEC_SPECULATION_BARRIER)] ++ "TARGET_32BIT" ++ "isb\;dsb\\tsy" ++ [(set_attr "type" "block") ++ (set_attr "length" "8")] ++) ++ + ;; Vector bits common to IWMMXT and Neon + (include "vec-common.md") + ;; Load the Intel Wireless Multimedia Extension patterns +Index: gcc/config/pa/pa.c +=================================================================== +--- a/src/gcc/config/pa/pa.c (.../gcc-8-branch) ++++ b/src/gcc/config/pa/pa.c (.../ARM/arm-8-branch) +@@ -428,6 +428,9 @@ + #undef TARGET_STARTING_FRAME_OFFSET + #define TARGET_STARTING_FRAME_OFFSET pa_starting_frame_offset + ++#undef TARGET_HAVE_SPECULATION_SAFE_VALUE ++#define TARGET_HAVE_SPECULATION_SAFE_VALUE speculation_safe_value_not_needed ++ + struct gcc_target targetm = TARGET_INITIALIZER; + + /* Parse the -mfixed-range= option string. */ +Index: gcc/config/msp430/msp430.c +=================================================================== +--- a/src/gcc/config/msp430/msp430.c (.../gcc-8-branch) ++++ b/src/gcc/config/msp430/msp430.c (.../ARM/arm-8-branch) +@@ -3845,6 +3845,9 @@ + return true; + } + ++#undef TARGET_HAVE_SPECULATION_SAFE_VALUE ++#define TARGET_HAVE_SPECULATION_SAFE_VALUE speculation_safe_value_not_needed ++ + struct gcc_target targetm = TARGET_INITIALIZER; + + #include "gt-msp430.h" +Index: gcc/config/h8300/h8300.c +=================================================================== +--- a/src/gcc/config/h8300/h8300.c (.../gcc-8-branch) ++++ b/src/gcc/config/h8300/h8300.c (.../ARM/arm-8-branch) +@@ -6148,4 +6148,7 @@ + #undef TARGET_MODE_DEPENDENT_ADDRESS_P + #define TARGET_MODE_DEPENDENT_ADDRESS_P h8300_mode_dependent_address_p + ++#undef TARGET_HAVE_SPECULATION_SAFE_VALUE ++#define TARGET_HAVE_SPECULATION_SAFE_VALUE speculation_safe_value_not_needed ++ + struct gcc_target targetm = TARGET_INITIALIZER; +Index: gcc/config/v850/v850.c +=================================================================== +--- a/src/gcc/config/v850/v850.c (.../gcc-8-branch) ++++ b/src/gcc/config/v850/v850.c (.../ARM/arm-8-branch) +@@ -3374,6 +3374,9 @@ + #undef TARGET_MODES_TIEABLE_P + #define TARGET_MODES_TIEABLE_P v850_modes_tieable_p + ++#undef TARGET_HAVE_SPECULATION_SAFE_VALUE ++#define TARGET_HAVE_SPECULATION_SAFE_VALUE speculation_safe_value_not_needed ++ + struct gcc_target targetm = TARGET_INITIALIZER; + + #include "gt-v850.h" --- gcc-8-8.3.0.orig/debian/patches/gcc-multiarch.diff +++ gcc-8-8.3.0/debian/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 +@@ -2178,6 +2178,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 +@@ -2188,6 +2193,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" +@@ -3191,6 +3200,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-*) +@@ -4696,7 +4715,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 +@@ -3391,16 +3391,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 +@@ -530,7 +530,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) --- gcc-8-8.3.0.orig/debian/patches/gcc-multilib-multiarch.diff +++ gcc-8-8.3.0/debian/patches/gcc-multilib-multiarch.diff @@ -0,0 +1,126 @@ +# DP: Don't auto-detect multilib osdirnames. + +Index: b/src/gcc/config/sparc/t-linux64 +=================================================================== +--- 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) +Index: b/src/gcc/config/s390/t-linux64 +=================================================================== +--- 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) +Index: b/src/gcc/config/rs6000/t-linux64 +=================================================================== +--- 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) + +Index: b/src/gcc/config/i386/t-linux64 +=================================================================== +--- 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))) +Index: b/src/gcc/config/mips/t-linux64 +=================================================================== +--- 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)) +Index: b/src/gcc/config/rs6000/t-linux +=================================================================== +--- 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 := powerpc-linux-gnu + endif --- gcc-8-8.3.0.orig/debian/patches/gcc-search-prefixed-as-ld.diff +++ gcc-8-8.3.0/debian/patches/gcc-search-prefixed-as-ld.diff @@ -0,0 +1,39 @@ +# DP: Search for the -as / -ld before serching for as / ld. + +Index: b/src/gcc/gcc.c +=================================================================== +--- a/src/gcc/gcc.c ++++ b/src/gcc/gcc.c +@@ -2533,6 +2533,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); + } + +@@ -2746,6 +2747,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; + --- gcc-8-8.3.0.orig/debian/patches/gcc-target-include-asm.diff +++ gcc-8-8.3.0/debian/patches/gcc-target-include-asm.diff @@ -0,0 +1,15 @@ +# DP: Search $(builddir)/sys-include for the asm header files + +Index: b/src/configure.ac +=================================================================== +--- a/src/configure.ac ++++ b/src/configure.ac +@@ -3187,7 +3187,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 && --- gcc-8-8.3.0.orig/debian/patches/gcc-textdomain.diff +++ gcc-8-8.3.0/debian/patches/gcc-textdomain.diff @@ -0,0 +1,96 @@ +# DP: Set gettext's domain and textdomain to the versioned package name. + +Index: b/src/gcc/intl.c +=================================================================== +--- 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-8", LOCALEDIR); ++ (void) textdomain ("gcc-8"); + + /* Opening quotation mark. */ + open_quote = _("`"); +Index: b/src/gcc/Makefile.in +=================================================================== +--- a/src/gcc/Makefile.in ++++ b/src/gcc/Makefile.in +@@ -4201,8 +4201,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-8.mo; \ ++ $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/gcc-8.mo; \ + done + + # Rule for regenerating the message template (gcc.pot). +Index: b/src/libcpp/init.c +=================================================================== +--- a/src/libcpp/init.c ++++ b/src/libcpp/init.c +@@ -161,7 +161,7 @@ init_library (void) + init_trigraph_map (); + + #ifdef ENABLE_NLS +- (void) bindtextdomain (PACKAGE, LOCALEDIR); ++ (void) bindtextdomain (PACKAGE PACKAGE_SUFFIX, LOCALEDIR); + #endif + } + } +Index: b/src/libcpp/system.h +=================================================================== +--- a/src/libcpp/system.h ++++ b/src/libcpp/system.h +@@ -280,7 +280,7 @@ extern int errno; + #endif + + #ifndef _ +-# define _(msgid) dgettext (PACKAGE, msgid) ++# define _(msgid) dgettext (PACKAGE PACKAGE_SUFFIX, msgid) + #endif + + #ifndef N_ +Index: b/src/libcpp/Makefile.in +=================================================================== +--- a/src/libcpp/Makefile.in ++++ b/src/libcpp/Makefile.in +@@ -49,6 +49,7 @@ LDFLAGS = @LDFLAGS@ + LIBICONV = @LIBICONV@ + LIBINTL = @LIBINTL@ + PACKAGE = @PACKAGE@ ++PACKAGE_SUFFIX = -8 + 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: --- gcc-8-8.3.0.orig/debian/patches/gdc-8-doc.diff +++ gcc-8-8.3.0/debian/patches/gdc-8-doc.diff @@ -0,0 +1,112 @@ +# DP: This implements D language support in the GCC back end, and adds +# DP: relevant documentation about the GDC front end (documentation part). + +--- a/src/gcc/doc/frontends.texi ++++ b/src/gcc/doc/frontends.texi +@@ -9,6 +9,7 @@ + @cindex GNU Compiler Collection + @cindex GNU C Compiler + @cindex Ada ++@cindex D + @cindex Fortran + @cindex Go + @cindex Objective-C +@@ -16,7 +17,7 @@ + GCC stands for ``GNU Compiler Collection''. GCC is an integrated + distribution of compilers for several major programming languages. These + languages currently include C, C++, Objective-C, Objective-C++, +-Fortran, Ada, Go, and BRIG (HSAIL). ++Fortran, Ada, D, Go, and BRIG (HSAIL). + + The abbreviation @dfn{GCC} has multiple meanings in common use. The + current official meaning is ``GNU Compiler Collection'', which refers +--- a/src/gcc/doc/install.texi ++++ b/src/gcc/doc/install.texi +@@ -916,7 +916,7 @@ only for the listed packages. For other packages, only static libraries + will be built. Package names currently recognized in the GCC tree are + @samp{libgcc} (also known as @samp{gcc}), @samp{libstdc++} (not + @samp{libstdc++-v3}), @samp{libffi}, @samp{zlib}, @samp{boehm-gc}, +-@samp{ada}, @samp{libada}, @samp{libgo}, and @samp{libobjc}. ++@samp{ada}, @samp{libada}, @samp{libgo}, @samp{libobjc}, and @samp{libphobos}. + Note @samp{libiberty} does not support shared libraries at all. + + Use @option{--disable-shared} to build only static libraries. Note that +@@ -1601,12 +1601,12 @@ their runtime libraries should be built. For a list of valid values for + grep ^language= */config-lang.in + @end smallexample + Currently, you can use any of the following: +-@code{all}, @code{default}, @code{ada}, @code{c}, @code{c++}, @code{fortran}, +-@code{go}, @code{jit}, @code{lto}, @code{objc}, @code{obj-c++}. ++@code{all}, @code{default}, @code{ada}, @code{c}, @code{c++}, @code{d}, ++@code{fortran}, @code{go}, @code{jit}, @code{lto}, @code{objc}, @code{obj-c++}. + Building the Ada compiler has special requirements, see below. + If you do not pass this flag, or specify the option @code{default}, then the + default languages available in the @file{gcc} sub-tree will be configured. +-Ada, Go, Jit, and Objective-C++ are not default languages. LTO is not a ++Ada, D, Go, Jit, and Objective-C++ are not default languages. LTO is not a + default language, but is built by default because @option{--enable-lto} is + enabled by default. The other languages are default languages. If + @code{all} is specified, then all available languages are built. An +@@ -2699,7 +2699,7 @@ on a simulator as described at @uref{http://gcc.gnu.org/simtest-howto.html}. + + In order to run sets of tests selectively, there are targets + @samp{make check-gcc} and language specific @samp{make check-c}, +-@samp{make check-c++}, @samp{make check-fortran}, ++@samp{make check-c++}, @samp{make check-d} @samp{make check-fortran}, + @samp{make check-ada}, @samp{make check-objc}, @samp{make check-obj-c++}, + @samp{make check-lto} + in the @file{gcc} subdirectory of the object directory. You can also +--- a/src/gcc/doc/invoke.texi ++++ b/src/gcc/doc/invoke.texi +@@ -1354,6 +1354,15 @@ Go source code. + @item @var{file}.brig + BRIG files (binary representation of HSAIL). + ++@item @var{file}.d ++D source code. ++ ++@item @var{file}.di ++D interface file. ++ ++@item @var{file}.dd ++D documentation code (Ddoc). ++ + @item @var{file}.ads + Ada source code file that contains a library unit declaration (a + declaration of a package, subprogram, or generic, or a generic +@@ -1400,6 +1409,7 @@ objective-c objective-c-header objective-c-cpp-output + objective-c++ objective-c++-header objective-c++-cpp-output + assembler assembler-with-cpp + ada ++d + f77 f77-cpp-input f95 f95-cpp-input + go + brig +--- a/src/gcc/doc/sourcebuild.texi ++++ b/src/gcc/doc/sourcebuild.texi +@@ -106,6 +106,10 @@ The Objective-C and Objective-C++ runtime library. + @item libquadmath + The runtime support library for quad-precision math operations. + ++@item libphobos ++The D standard and runtime library. The bulk of this library is mirrored ++from the @uref{https://github.com/@/dlang, master D repositories}. ++ + @item libssp + The Stack protector runtime library. + +--- a/src/gcc/doc/standards.texi ++++ b/src/gcc/doc/standards.texi +@@ -313,6 +313,12 @@ capability is typically utilized to implement the HSA runtime API's HSAIL + finalization extension for a gcc supported processor. HSA standards are + freely available at @uref{http://www.hsafoundation.com/standards/}. + ++@section D language ++ ++GCC supports the D 2.0 programming language. The D language itself is ++currently defined by its reference implementation and supporting language ++specification, described at @uref{https://dlang.org/spec/spec.html}. ++ + @section References for Other Languages + + @xref{Top, GNAT Reference Manual, About This Guide, gnat_rm, --- gcc-8-8.3.0.orig/debian/patches/gdc-8.diff +++ gcc-8-8.3.0/debian/patches/gdc-8.diff @@ -0,0 +1,157 @@ +# DP: This implements D language support in the GCC back end, and adds +# DP: relevant documentation about the GDC front end (code part). + +--- a/src/gcc/config/powerpcspe/powerpcspe.c ++++ b/src/gcc/config/powerpcspe/powerpcspe.c +@@ -32034,11 +32034,12 @@ rs6000_output_function_epilogue (FILE *f + use language_string. + C is 0. Fortran is 1. Pascal is 2. Ada is 3. C++ is 9. + Java is 13. Objective-C is 14. Objective-C++ isn't assigned +- a number, so for now use 9. LTO, Go and JIT aren't assigned numbers +- either, so for now use 0. */ ++ a number, so for now use 9. LTO, Go, D and JIT aren't assigned ++ numbers either, so for now use 0. */ + if (lang_GNU_C () + || ! strcmp (language_string, "GNU GIMPLE") + || ! strcmp (language_string, "GNU Go") ++ || ! strcmp (language_string, "GNU D") + || ! strcmp (language_string, "libgccjit")) + i = 0; + else if (! strcmp (language_string, "GNU F77") +--- a/src/gcc/config/rs6000/rs6000.c ++++ b/src/gcc/config/rs6000/rs6000.c +@@ -29442,11 +29442,12 @@ rs6000_output_function_epilogue (FILE *f + use language_string. + C is 0. Fortran is 1. Pascal is 2. Ada is 3. C++ is 9. + Java is 13. Objective-C is 14. Objective-C++ isn't assigned +- a number, so for now use 9. LTO, Go and JIT aren't assigned numbers +- either, so for now use 0. */ ++ a number, so for now use 9. LTO, Go, D, and JIT aren't assigned ++ numbers either, so for now use 0. */ + if (lang_GNU_C () + || ! strcmp (language_string, "GNU GIMPLE") + || ! strcmp (language_string, "GNU Go") ++ || ! strcmp (language_string, "GNU D") + || ! strcmp (language_string, "libgccjit")) + i = 0; + else if (! strcmp (language_string, "GNU F77") +--- a/src/gcc/dwarf2out.c ++++ b/src/gcc/dwarf2out.c +@@ -5471,6 +5471,16 @@ is_ada (void) + return lang == DW_LANG_Ada95 || lang == DW_LANG_Ada83; + } + ++/* Return TRUE if the language is D. */ ++ ++static inline bool ++is_dlang (void) ++{ ++ unsigned int lang = get_AT_unsigned (comp_unit_die (), DW_AT_language); ++ ++ return lang == DW_LANG_D; ++} ++ + /* Remove the specified attribute if present. Return TRUE if removal + was successful. */ + +@@ -24547,6 +24557,8 @@ gen_compile_unit_die (const char *filena + language = DW_LANG_ObjC; + else if (strcmp (language_string, "GNU Objective-C++") == 0) + language = DW_LANG_ObjC_plus_plus; ++ else if (strcmp (language_string, "GNU D") == 0) ++ language = DW_LANG_D; + else if (dwarf_version >= 5 || !dwarf_strict) + { + if (strcmp (language_string, "GNU Go") == 0) +@@ -26147,7 +26159,7 @@ declare_in_namespace (tree thing, dw_die + + if (ns_context != context_die) + { +- if (is_fortran ()) ++ if (is_fortran () || is_dlang ()) + return ns_context; + if (DECL_P (thing)) + gen_decl_die (thing, NULL, NULL, ns_context); +@@ -26170,7 +26182,7 @@ gen_namespace_die (tree decl, dw_die_ref + { + /* Output a real namespace or module. */ + context_die = setup_namespace_context (decl, comp_unit_die ()); +- namespace_die = new_die (is_fortran () ++ namespace_die = new_die (is_fortran () || is_dlang () + ? DW_TAG_module : DW_TAG_namespace, + context_die, decl); + /* For Fortran modules defined in different CU don't add src coords. */ +@@ -26242,7 +26254,7 @@ gen_decl_die (tree decl, tree origin, st + break; + + case CONST_DECL: +- if (!is_fortran () && !is_ada ()) ++ if (!is_fortran () && !is_ada () && !is_dlang ()) + { + /* The individual enumerators of an enum type get output when we output + the Dwarf representation of the relevant enum type itself. */ +@@ -26839,7 +26851,7 @@ dwarf2out_decl (tree decl) + case CONST_DECL: + if (debug_info_level <= DINFO_LEVEL_TERSE) + return; +- if (!is_fortran () && !is_ada ()) ++ if (!is_fortran () && !is_ada () && !is_dlang ()) + return; + if (TREE_STATIC (decl) && decl_function_context (decl)) + context_die = lookup_decl_die (DECL_CONTEXT (decl)); +--- a/src/gcc/gcc.c ++++ b/src/gcc/gcc.c +@@ -1305,6 +1305,7 @@ static const struct compiler default_com + {".f08", "#Fortran", 0, 0, 0}, {".F08", "#Fortran", 0, 0, 0}, + {".r", "#Ratfor", 0, 0, 0}, + {".go", "#Go", 0, 1, 0}, ++ {".d", "#D", 0, 1, 0}, {".dd", "#D", 0, 1, 0}, {".di", "#D", 0, 1, 0}, + /* Next come the entries for C. */ + {".c", "@c", 0, 0, 1}, + {"@c", +--- a/src/gcc/po/EXCLUDES ++++ b/src/gcc/po/EXCLUDES +@@ -53,3 +53,43 @@ genrecog.c + gensupport.c + gensupport.h + read-md.c ++ ++# These files are part of the front end to D, and have no i18n support. ++d/dfrontend/arrayop.c ++d/dfrontend/attrib.c ++d/dfrontend/canthrow.c ++d/dfrontend/cond.c ++d/dfrontend/constfold.c ++d/dfrontend/cppmangle.c ++d/dfrontend/ctfeexpr.c ++d/dfrontend/dcast.c ++d/dfrontend/dclass.c ++d/dfrontend/declaration.c ++d/dfrontend/denum.c ++d/dfrontend/dimport.c ++d/dfrontend/dinterpret.c ++d/dfrontend/dmangle.c ++d/dfrontend/dmodule.c ++d/dfrontend/doc.c ++d/dfrontend/dscope.c ++d/dfrontend/dstruct.c ++d/dfrontend/dsymbol.c ++d/dfrontend/dtemplate.c ++d/dfrontend/dversion.c ++d/dfrontend/expression.c ++d/dfrontend/func.c ++d/dfrontend/init.c ++d/dfrontend/inline.c ++d/dfrontend/lexer.c ++d/dfrontend/mtype.c ++d/dfrontend/nogc.c ++d/dfrontend/nspace.c ++d/dfrontend/objc.c ++d/dfrontend/opover.c ++d/dfrontend/optimize.c ++d/dfrontend/parse.c ++d/dfrontend/sideeffect.c ++d/dfrontend/statement.c ++d/dfrontend/statementsem.c ++d/dfrontend/staticassert.c ++d/dfrontend/traits.c --- gcc-8-8.3.0.orig/debian/patches/gdc-cross-biarch.diff +++ gcc-8-8.3.0/debian/patches/gdc-cross-biarch.diff @@ -0,0 +1,13 @@ +# DP: Fix the location of target's libs in cross-build for biarch + +--- a/src/config-ml.in ++++ b/src/config-ml.in +@@ -891,6 +915,8 @@ + 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"`' ' ;; + *) --- gcc-8-8.3.0.orig/debian/patches/gdc-cross-build.diff +++ gcc-8-8.3.0/debian/patches/gdc-cross-build.diff @@ -0,0 +1,13 @@ +# DP: Build idgen.dmdgen.o with the build compiler + +--- a/src/gcc/d/Make-lang.in ++++ b/src/gcc/d/Make-lang.in +@@ -315,7 +315,7 @@ + +$(LINKER_FOR_BUILD) $(BUILD_LINKER_FLAGS) $(BUILD_LDFLAGS) -o $@ $^ + + d/idgen.dmdgen.o: d/dfrontend/idgen.c +- $(filter-out -fprofile-%,$(DMD_COMPILE)) $(D_INCLUDES) $< ++ $(filter-out -fprofile-%,$(DMDGEN_COMPILE)) $(D_INCLUDES) $< + $(POSTCOMPILE) + + d/impcnvgen.dmdgen.o: $(srcdir)/d/dfrontend/impcnvgen.c --- gcc-8-8.3.0.orig/debian/patches/gdc-cross-install-location.diff +++ gcc-8-8.3.0/debian/patches/gdc-cross-install-location.diff @@ -0,0 +1,25 @@ +Index: b/src/libphobos/configure.ac +=================================================================== +--- a/src/libphobos/configure.ac ++++ b/src/libphobos/configure.ac +@@ -154,6 +154,8 @@ PHOBOS_SOVERSION="76:2:0" + AC_SUBST([DRUNTIME_SOVERSION]) + AC_SUBST([PHOBOS_SOVERSION]) + ++# trigger rebuild of the configure file ++ + # Set default flags (after DRUNTIME_WERROR!) + if test -z "$GDCFLAGS"; then + GDCFLAGS="-Wall $WERROR_FLAG -g -frelease -O2" +Index: b/src/libphobos/m4/druntime.m4 +=================================================================== +--- a/src/libphobos/m4/druntime.m4 ++++ b/src/libphobos/m4/druntime.m4 +@@ -98,6 +98,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) + ]) + --- gcc-8-8.3.0.orig/debian/patches/gdc-driver-nophobos.diff +++ gcc-8-8.3.0/debian/patches/gdc-driver-nophobos.diff @@ -0,0 +1,28 @@ +# DP: Modify gdc driver to have no libphobos by default. + +Index: b/src/gcc/d/d-lang.cc +=================================================================== +--- a/src/gcc/d/d-lang.cc ++++ b/src/gcc/d/d-lang.cc +@@ -309,7 +309,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; +Index: b/src/gcc/d/d-spec.c +=================================================================== +--- a/src/gcc/d/d-spec.c ++++ b/src/gcc/d/d-spec.c +@@ -60,7 +60,7 @@ static int library = 0; + + /* 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, --- gcc-8-8.3.0.orig/debian/patches/gdc-frontend-posix.diff +++ gcc-8-8.3.0/debian/patches/gdc-frontend-posix.diff @@ -0,0 +1,15 @@ +# DP: Fix build of the D frontend on the Hurd and KFreeBSD. + +Index: b/src/gcc/d/dfrontend/object.h +=================================================================== +--- a/src/gcc/d/dfrontend/object.h ++++ b/src/gcc/d/dfrontend/object.h +@@ -10,7 +10,7 @@ + #ifndef OBJECT_H + #define OBJECT_H + +-#define POSIX (__linux__ || __APPLE__ || __FreeBSD__ || __OpenBSD__ || __sun) ++#define POSIX (__linux__ || __GLIBC__ || __gnu_hurd__ || __APPLE__ || __FreeBSD__ || __OpenBSD__ || __sun) + + #if __DMC__ + #pragma once --- gcc-8-8.3.0.orig/debian/patches/gdc-libphobos-build.diff +++ gcc-8-8.3.0/debian/patches/gdc-libphobos-build.diff @@ -0,0 +1,1010 @@ +# DP: This implements building of libphobos library in GCC. + +# Please read ada-changes-in-autogen-output.diff about src/Makefile.[def|tpl]. + +Index: b/src/Makefile.def +=================================================================== +--- a/src/Makefile.def ++++ b/src/Makefile.def +@@ -165,6 +165,7 @@ target_modules = { module= libgfortran; + target_modules = { module= libobjc; }; + target_modules = { module= libgo; }; + target_modules = { module= libhsail-rt; }; ++target_modules = { module= libphobos; }; + target_modules = { module= libtermcap; no_check=true; + missing=mostlyclean; + missing=clean; +@@ -310,6 +311,8 @@ flags_to_pass = { flag= FLAGS_FOR_TARGET + flags_to_pass = { flag= GFORTRAN_FOR_TARGET ; }; + flags_to_pass = { flag= GOC_FOR_TARGET ; }; + 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= LD_FOR_TARGET ; }; + flags_to_pass = { flag= LIPO_FOR_TARGET ; }; + flags_to_pass = { flag= LDFLAGS_FOR_TARGET ; }; +@@ -582,6 +585,11 @@ 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=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; }; ++dependencies = { module=all-target-libphobos; on=all-target-zlib; }; ++dependencies = { module=all-target-libphobos; on=all-target-libatomic; }; + dependencies = { module=configure-target-libstdc++-v3; on=configure-target-libgomp; }; + dependencies = { module=configure-target-liboffloadmic; on=configure-target-libgomp; }; + dependencies = { module=configure-target-libsanitizer; on=all-target-libstdc++-v3; }; +@@ -595,6 +603,7 @@ dependencies = { module=all-target-libof + dependencies = { module=install-target-libgo; 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; }; + dependencies = { module=install-target-libsanitizer; on=install-target-libstdc++-v3; }; + dependencies = { module=install-target-libsanitizer; on=install-target-libgcc; }; + dependencies = { module=install-target-libvtv; on=install-target-libstdc++-v3; }; +@@ -635,6 +644,8 @@ languages = { language=go; gcc-check-tar + lib-check-target=check-gotools; }; + languages = { language=brig; gcc-check-target=check-brig; + lib-check-target=check-target-libhsail-rt; }; ++languages = { language=d; gcc-check-target=check-d; ++ lib-check-target=check-target-libphobos; }; + + // Toplevel bootstrap + bootstrap_stage = { id=1 ; }; +Index: b/src/Makefile.in +=================================================================== +--- a/src/Makefile.in ++++ b/src/Makefile.in +@@ -156,6 +156,8 @@ BUILD_EXPORTS = \ + GFORTRAN="$(GFORTRAN_FOR_BUILD)"; export GFORTRAN; \ + GOC="$(GOC_FOR_BUILD)"; export GOC; \ + GOCFLAGS="$(GOCFLAGS_FOR_BUILD)"; export GOCFLAGS; \ ++ GDC="$(GDC_FOR_BUILD)"; export GDC; \ ++ GDCFLAGS="$(GDCFLAGS_FOR_BUILD)"; export GDCFLAGS; \ + DLLTOOL="$(DLLTOOL_FOR_BUILD)"; export DLLTOOL; \ + LD="$(LD_FOR_BUILD)"; export LD; \ + LDFLAGS="$(LDFLAGS_FOR_BUILD)"; export LDFLAGS; \ +@@ -192,6 +194,7 @@ HOST_EXPORTS = \ + CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \ + GFORTRAN="$(GFORTRAN)"; export GFORTRAN; \ + GOC="$(GOC)"; export GOC; \ ++ GDC="$(GDC)"; export GDC; \ + AR="$(AR)"; export AR; \ + AS="$(AS)"; export AS; \ + CC_FOR_BUILD="$(CC_FOR_BUILD)"; export CC_FOR_BUILD; \ +@@ -278,6 +281,7 @@ BASE_TARGET_EXPORTS = \ + CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \ + 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; \ + DLLTOOL="$(DLLTOOL_FOR_TARGET)"; export DLLTOOL; \ + LD="$(COMPILER_LD_FOR_TARGET)"; export LD; \ + LDFLAGS="$(LDFLAGS_FOR_TARGET)"; export LDFLAGS; \ +@@ -342,6 +346,7 @@ CXX_FOR_BUILD = @CXX_FOR_BUILD@ + DLLTOOL_FOR_BUILD = @DLLTOOL_FOR_BUILD@ + GFORTRAN_FOR_BUILD = @GFORTRAN_FOR_BUILD@ + GOC_FOR_BUILD = @GOC_FOR_BUILD@ ++GDC_FOR_BUILD = @GDC_FOR_BUILD@ + LDFLAGS_FOR_BUILD = @LDFLAGS_FOR_BUILD@ + LD_FOR_BUILD = @LD_FOR_BUILD@ + NM_FOR_BUILD = @NM_FOR_BUILD@ +@@ -408,6 +413,7 @@ LIBCFLAGS = $(CFLAGS) + CXXFLAGS = @CXXFLAGS@ + LIBCXXFLAGS = $(CXXFLAGS) -fno-implicit-templates + GOCFLAGS = $(CFLAGS) ++GDCFLAGS = $(CFLAGS) + + CREATE_GCOV = create_gcov + +@@ -564,6 +570,7 @@ CXX_FOR_TARGET=$(STAGE_CC_WRAPPER) @CXX_ + RAW_CXX_FOR_TARGET=$(STAGE_CC_WRAPPER) @RAW_CXX_FOR_TARGET@ + 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@ + DLLTOOL_FOR_TARGET=@DLLTOOL_FOR_TARGET@ + LD_FOR_TARGET=@LD_FOR_TARGET@ + +@@ -588,6 +595,7 @@ LIBCFLAGS_FOR_TARGET = $(CFLAGS_FOR_TARG + LIBCXXFLAGS_FOR_TARGET = $(CXXFLAGS_FOR_TARGET) -fno-implicit-templates + LDFLAGS_FOR_TARGET = @LDFLAGS_FOR_TARGET@ + GOCFLAGS_FOR_TARGET = -O2 -g ++GDCFLAGS_FOR_TARGET = -O2 -g + + FLAGS_FOR_TARGET = @FLAGS_FOR_TARGET@ + SYSROOT_CFLAGS_FOR_TARGET = @SYSROOT_CFLAGS_FOR_TARGET@ +@@ -783,6 +791,8 @@ BASE_FLAGS_TO_PASS = \ + "GFORTRAN_FOR_TARGET=$(GFORTRAN_FOR_TARGET)" \ + "GOC_FOR_TARGET=$(GOC_FOR_TARGET)" \ + "GOCFLAGS_FOR_TARGET=$(GOCFLAGS_FOR_TARGET)" \ ++ "GDC_FOR_TARGET=$(GDC_FOR_TARGET)" \ ++ "GDCFLAGS_FOR_TARGET=$(GDCFLAGS_FOR_TARGET)" \ + "LD_FOR_TARGET=$(LD_FOR_TARGET)" \ + "LIPO_FOR_TARGET=$(LIPO_FOR_TARGET)" \ + "LDFLAGS_FOR_TARGET=$(LDFLAGS_FOR_TARGET)" \ +@@ -845,6 +855,7 @@ EXTRA_HOST_FLAGS = \ + 'DLLTOOL=$(DLLTOOL)' \ + 'GFORTRAN=$(GFORTRAN)' \ + 'GOC=$(GOC)' \ ++ 'GDC=$(GDC)' \ + 'LD=$(LD)' \ + 'LIPO=$(LIPO)' \ + 'NM=$(NM)' \ +@@ -901,6 +912,8 @@ EXTRA_TARGET_FLAGS = \ + 'GFORTRAN=$$(GFORTRAN_FOR_TARGET) $$(XGCC_FLAGS_FOR_TARGET) $$(TFLAGS)' \ + 'GOC=$$(GOC_FOR_TARGET) $$(XGCC_FLAGS_FOR_TARGET) $$(TFLAGS)' \ + 'GOCFLAGS=$$(GOCFLAGS_FOR_TARGET)' \ ++ 'GDC=$$(GDC_FOR_TARGET) $$(XGCC_FLAGS_FOR_TARGET) $$(TFLAGS)' \ ++ 'GDCFLAGS=$$(GDCFLAGS_FOR_TARGET)' \ + 'LD=$(COMPILER_LD_FOR_TARGET)' \ + 'LDFLAGS=$$(LDFLAGS_FOR_TARGET)' \ + 'LIBCFLAGS=$$(LIBCFLAGS_FOR_TARGET)' \ +@@ -1003,6 +1016,7 @@ configure-target: \ + maybe-configure-target-libobjc \ + maybe-configure-target-libgo \ + maybe-configure-target-libhsail-rt \ ++ maybe-configure-target-libphobos \ + maybe-configure-target-libtermcap \ + maybe-configure-target-winsup \ + maybe-configure-target-libgloss \ +@@ -1168,6 +1182,7 @@ all-target: maybe-all-target-libgfortran + all-target: maybe-all-target-libobjc + all-target: maybe-all-target-libgo + all-target: maybe-all-target-libhsail-rt ++all-target: maybe-all-target-libphobos + all-target: maybe-all-target-libtermcap + all-target: maybe-all-target-winsup + all-target: maybe-all-target-libgloss +@@ -1260,6 +1275,7 @@ info-target: maybe-info-target-libgfortr + info-target: maybe-info-target-libobjc + info-target: maybe-info-target-libgo + info-target: maybe-info-target-libhsail-rt ++info-target: maybe-info-target-libphobos + info-target: maybe-info-target-libtermcap + info-target: maybe-info-target-winsup + info-target: maybe-info-target-libgloss +@@ -1345,6 +1361,7 @@ dvi-target: maybe-dvi-target-libgfortran + dvi-target: maybe-dvi-target-libobjc + dvi-target: maybe-dvi-target-libgo + dvi-target: maybe-dvi-target-libhsail-rt ++dvi-target: maybe-dvi-target-libphobos + dvi-target: maybe-dvi-target-libtermcap + dvi-target: maybe-dvi-target-winsup + dvi-target: maybe-dvi-target-libgloss +@@ -1430,6 +1447,7 @@ pdf-target: maybe-pdf-target-libgfortran + pdf-target: maybe-pdf-target-libobjc + pdf-target: maybe-pdf-target-libgo + pdf-target: maybe-pdf-target-libhsail-rt ++pdf-target: maybe-pdf-target-libphobos + pdf-target: maybe-pdf-target-libtermcap + pdf-target: maybe-pdf-target-winsup + pdf-target: maybe-pdf-target-libgloss +@@ -1515,6 +1533,7 @@ html-target: maybe-html-target-libgfortr + html-target: maybe-html-target-libobjc + html-target: maybe-html-target-libgo + html-target: maybe-html-target-libhsail-rt ++html-target: maybe-html-target-libphobos + html-target: maybe-html-target-libtermcap + html-target: maybe-html-target-winsup + html-target: maybe-html-target-libgloss +@@ -1600,6 +1619,7 @@ TAGS-target: maybe-TAGS-target-libgfortr + TAGS-target: maybe-TAGS-target-libobjc + TAGS-target: maybe-TAGS-target-libgo + TAGS-target: maybe-TAGS-target-libhsail-rt ++TAGS-target: maybe-TAGS-target-libphobos + TAGS-target: maybe-TAGS-target-libtermcap + TAGS-target: maybe-TAGS-target-winsup + TAGS-target: maybe-TAGS-target-libgloss +@@ -1685,6 +1705,7 @@ install-info-target: maybe-install-info- + install-info-target: maybe-install-info-target-libobjc + install-info-target: maybe-install-info-target-libgo + install-info-target: maybe-install-info-target-libhsail-rt ++install-info-target: maybe-install-info-target-libphobos + install-info-target: maybe-install-info-target-libtermcap + install-info-target: maybe-install-info-target-winsup + install-info-target: maybe-install-info-target-libgloss +@@ -1770,6 +1791,7 @@ install-pdf-target: maybe-install-pdf-ta + install-pdf-target: maybe-install-pdf-target-libobjc + install-pdf-target: maybe-install-pdf-target-libgo + install-pdf-target: maybe-install-pdf-target-libhsail-rt ++install-pdf-target: maybe-install-pdf-target-libphobos + install-pdf-target: maybe-install-pdf-target-libtermcap + install-pdf-target: maybe-install-pdf-target-winsup + install-pdf-target: maybe-install-pdf-target-libgloss +@@ -1855,6 +1877,7 @@ install-html-target: maybe-install-html- + install-html-target: maybe-install-html-target-libobjc + install-html-target: maybe-install-html-target-libgo + install-html-target: maybe-install-html-target-libhsail-rt ++install-html-target: maybe-install-html-target-libphobos + install-html-target: maybe-install-html-target-libtermcap + install-html-target: maybe-install-html-target-winsup + install-html-target: maybe-install-html-target-libgloss +@@ -1940,6 +1963,7 @@ installcheck-target: maybe-installcheck- + installcheck-target: maybe-installcheck-target-libobjc + installcheck-target: maybe-installcheck-target-libgo + installcheck-target: maybe-installcheck-target-libhsail-rt ++installcheck-target: maybe-installcheck-target-libphobos + installcheck-target: maybe-installcheck-target-libtermcap + installcheck-target: maybe-installcheck-target-winsup + installcheck-target: maybe-installcheck-target-libgloss +@@ -2025,6 +2049,7 @@ mostlyclean-target: maybe-mostlyclean-ta + mostlyclean-target: maybe-mostlyclean-target-libobjc + mostlyclean-target: maybe-mostlyclean-target-libgo + mostlyclean-target: maybe-mostlyclean-target-libhsail-rt ++mostlyclean-target: maybe-mostlyclean-target-libphobos + mostlyclean-target: maybe-mostlyclean-target-libtermcap + mostlyclean-target: maybe-mostlyclean-target-winsup + mostlyclean-target: maybe-mostlyclean-target-libgloss +@@ -2110,6 +2135,7 @@ clean-target: maybe-clean-target-libgfor + clean-target: maybe-clean-target-libobjc + clean-target: maybe-clean-target-libgo + clean-target: maybe-clean-target-libhsail-rt ++clean-target: maybe-clean-target-libphobos + clean-target: maybe-clean-target-libtermcap + clean-target: maybe-clean-target-winsup + clean-target: maybe-clean-target-libgloss +@@ -2195,6 +2221,7 @@ distclean-target: maybe-distclean-target + distclean-target: maybe-distclean-target-libobjc + distclean-target: maybe-distclean-target-libgo + distclean-target: maybe-distclean-target-libhsail-rt ++distclean-target: maybe-distclean-target-libphobos + distclean-target: maybe-distclean-target-libtermcap + distclean-target: maybe-distclean-target-winsup + distclean-target: maybe-distclean-target-libgloss +@@ -2280,6 +2307,7 @@ maintainer-clean-target: maybe-maintaine + maintainer-clean-target: maybe-maintainer-clean-target-libobjc + maintainer-clean-target: maybe-maintainer-clean-target-libgo + maintainer-clean-target: maybe-maintainer-clean-target-libhsail-rt ++maintainer-clean-target: maybe-maintainer-clean-target-libphobos + maintainer-clean-target: maybe-maintainer-clean-target-libtermcap + maintainer-clean-target: maybe-maintainer-clean-target-winsup + maintainer-clean-target: maybe-maintainer-clean-target-libgloss +@@ -2421,6 +2449,7 @@ check-target: \ + maybe-check-target-libobjc \ + maybe-check-target-libgo \ + maybe-check-target-libhsail-rt \ ++ maybe-check-target-libphobos \ + maybe-check-target-libtermcap \ + maybe-check-target-winsup \ + maybe-check-target-libgloss \ +@@ -2602,6 +2631,7 @@ install-target: \ + maybe-install-target-libobjc \ + maybe-install-target-libgo \ + maybe-install-target-libhsail-rt \ ++ maybe-install-target-libphobos \ + maybe-install-target-libtermcap \ + maybe-install-target-winsup \ + maybe-install-target-libgloss \ +@@ -2707,6 +2737,7 @@ install-strip-target: \ + maybe-install-strip-target-libobjc \ + maybe-install-strip-target-libgo \ + maybe-install-strip-target-libhsail-rt \ ++ maybe-install-strip-target-libphobos \ + maybe-install-strip-target-libtermcap \ + maybe-install-strip-target-winsup \ + maybe-install-strip-target-libgloss \ +@@ -48201,6 +48232,464 @@ maintainer-clean-target-libhsail-rt: + + + ++.PHONY: configure-target-libphobos maybe-configure-target-libphobos ++maybe-configure-target-libphobos: ++@if gcc-bootstrap ++configure-target-libphobos: stage_current ++@endif gcc-bootstrap ++@if target-libphobos ++maybe-configure-target-libphobos: configure-target-libphobos ++configure-target-libphobos: ++ @: $(MAKE); $(unstage) ++ @r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ echo "Checking multilib configuration for libphobos..."; \ ++ $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libphobos; \ ++ $(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libphobos/multilib.tmp 2> /dev/null; \ ++ if test -r $(TARGET_SUBDIR)/libphobos/multilib.out; then \ ++ if cmp -s $(TARGET_SUBDIR)/libphobos/multilib.tmp $(TARGET_SUBDIR)/libphobos/multilib.out; then \ ++ rm -f $(TARGET_SUBDIR)/libphobos/multilib.tmp; \ ++ else \ ++ rm -f $(TARGET_SUBDIR)/libphobos/Makefile; \ ++ mv $(TARGET_SUBDIR)/libphobos/multilib.tmp $(TARGET_SUBDIR)/libphobos/multilib.out; \ ++ fi; \ ++ else \ ++ mv $(TARGET_SUBDIR)/libphobos/multilib.tmp $(TARGET_SUBDIR)/libphobos/multilib.out; \ ++ fi; \ ++ test ! -f $(TARGET_SUBDIR)/libphobos/Makefile || exit 0; \ ++ $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libphobos; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo Configuring in $(TARGET_SUBDIR)/libphobos; \ ++ cd "$(TARGET_SUBDIR)/libphobos" || exit 1; \ ++ case $(srcdir) in \ ++ /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ ++ *) topdir=`echo $(TARGET_SUBDIR)/libphobos/ | \ ++ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ ++ esac; \ ++ module_srcdir=libphobos; \ ++ 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-libphobos ++ ++ ++ ++ ++ ++.PHONY: all-target-libphobos maybe-all-target-libphobos ++maybe-all-target-libphobos: ++@if gcc-bootstrap ++all-target-libphobos: stage_current ++@endif gcc-bootstrap ++@if target-libphobos ++TARGET-target-libphobos=all ++maybe-all-target-libphobos: all-target-libphobos ++all-target-libphobos: configure-target-libphobos ++ @: $(MAKE); $(unstage) ++ @r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ (cd $(TARGET_SUBDIR)/libphobos && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS) \ ++ $(TARGET-target-libphobos)) ++@endif target-libphobos ++ ++ ++ ++ ++ ++.PHONY: check-target-libphobos maybe-check-target-libphobos ++maybe-check-target-libphobos: ++@if target-libphobos ++maybe-check-target-libphobos: check-target-libphobos ++ ++check-target-libphobos: ++ @: $(MAKE); $(unstage) ++ @r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ (cd $(TARGET_SUBDIR)/libphobos && \ ++ $(MAKE) $(TARGET_FLAGS_TO_PASS) check) ++ ++@endif target-libphobos ++ ++.PHONY: install-target-libphobos maybe-install-target-libphobos ++maybe-install-target-libphobos: ++@if target-libphobos ++maybe-install-target-libphobos: install-target-libphobos ++ ++install-target-libphobos: installdirs ++ @: $(MAKE); $(unstage) ++ @r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ (cd $(TARGET_SUBDIR)/libphobos && \ ++ $(MAKE) $(TARGET_FLAGS_TO_PASS) install) ++ ++@endif target-libphobos ++ ++.PHONY: install-strip-target-libphobos maybe-install-strip-target-libphobos ++maybe-install-strip-target-libphobos: ++@if target-libphobos ++maybe-install-strip-target-libphobos: install-strip-target-libphobos ++ ++install-strip-target-libphobos: installdirs ++ @: $(MAKE); $(unstage) ++ @r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ (cd $(TARGET_SUBDIR)/libphobos && \ ++ $(MAKE) $(TARGET_FLAGS_TO_PASS) install-strip) ++ ++@endif target-libphobos ++ ++# Other targets (info, dvi, pdf, etc.) ++ ++.PHONY: maybe-info-target-libphobos info-target-libphobos ++maybe-info-target-libphobos: ++@if target-libphobos ++maybe-info-target-libphobos: info-target-libphobos ++ ++info-target-libphobos: \ ++ configure-target-libphobos ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libphobos/Makefile ] || exit 0; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing info in $(TARGET_SUBDIR)/libphobos"; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libphobos && \ ++ $(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-libphobos ++ ++.PHONY: maybe-dvi-target-libphobos dvi-target-libphobos ++maybe-dvi-target-libphobos: ++@if target-libphobos ++maybe-dvi-target-libphobos: dvi-target-libphobos ++ ++dvi-target-libphobos: \ ++ configure-target-libphobos ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libphobos/Makefile ] || exit 0; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing dvi in $(TARGET_SUBDIR)/libphobos"; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libphobos && \ ++ $(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-libphobos ++ ++.PHONY: maybe-pdf-target-libphobos pdf-target-libphobos ++maybe-pdf-target-libphobos: ++@if target-libphobos ++maybe-pdf-target-libphobos: pdf-target-libphobos ++ ++pdf-target-libphobos: \ ++ configure-target-libphobos ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libphobos/Makefile ] || exit 0; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing pdf in $(TARGET_SUBDIR)/libphobos"; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libphobos && \ ++ $(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-libphobos ++ ++.PHONY: maybe-html-target-libphobos html-target-libphobos ++maybe-html-target-libphobos: ++@if target-libphobos ++maybe-html-target-libphobos: html-target-libphobos ++ ++html-target-libphobos: \ ++ configure-target-libphobos ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libphobos/Makefile ] || exit 0; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing html in $(TARGET_SUBDIR)/libphobos"; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libphobos && \ ++ $(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-libphobos ++ ++.PHONY: maybe-TAGS-target-libphobos TAGS-target-libphobos ++maybe-TAGS-target-libphobos: ++@if target-libphobos ++maybe-TAGS-target-libphobos: TAGS-target-libphobos ++ ++TAGS-target-libphobos: \ ++ configure-target-libphobos ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libphobos/Makefile ] || exit 0; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing TAGS in $(TARGET_SUBDIR)/libphobos"; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libphobos && \ ++ $(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-libphobos ++ ++.PHONY: maybe-install-info-target-libphobos install-info-target-libphobos ++maybe-install-info-target-libphobos: ++@if target-libphobos ++maybe-install-info-target-libphobos: install-info-target-libphobos ++ ++install-info-target-libphobos: \ ++ configure-target-libphobos \ ++ info-target-libphobos ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libphobos/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)/libphobos"; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libphobos && \ ++ $(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-libphobos ++ ++.PHONY: maybe-install-pdf-target-libphobos install-pdf-target-libphobos ++maybe-install-pdf-target-libphobos: ++@if target-libphobos ++maybe-install-pdf-target-libphobos: install-pdf-target-libphobos ++ ++install-pdf-target-libphobos: \ ++ configure-target-libphobos \ ++ pdf-target-libphobos ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libphobos/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)/libphobos"; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libphobos && \ ++ $(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-libphobos ++ ++.PHONY: maybe-install-html-target-libphobos install-html-target-libphobos ++maybe-install-html-target-libphobos: ++@if target-libphobos ++maybe-install-html-target-libphobos: install-html-target-libphobos ++ ++install-html-target-libphobos: \ ++ configure-target-libphobos \ ++ html-target-libphobos ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libphobos/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)/libphobos"; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libphobos && \ ++ $(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-libphobos ++ ++.PHONY: maybe-installcheck-target-libphobos installcheck-target-libphobos ++maybe-installcheck-target-libphobos: ++@if target-libphobos ++maybe-installcheck-target-libphobos: installcheck-target-libphobos ++ ++installcheck-target-libphobos: \ ++ configure-target-libphobos ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libphobos/Makefile ] || exit 0; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing installcheck in $(TARGET_SUBDIR)/libphobos"; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libphobos && \ ++ $(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-libphobos ++ ++.PHONY: maybe-mostlyclean-target-libphobos mostlyclean-target-libphobos ++maybe-mostlyclean-target-libphobos: ++@if target-libphobos ++maybe-mostlyclean-target-libphobos: mostlyclean-target-libphobos ++ ++mostlyclean-target-libphobos: ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libphobos/Makefile ] || exit 0; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing mostlyclean in $(TARGET_SUBDIR)/libphobos"; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libphobos && \ ++ $(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-libphobos ++ ++.PHONY: maybe-clean-target-libphobos clean-target-libphobos ++maybe-clean-target-libphobos: ++@if target-libphobos ++maybe-clean-target-libphobos: clean-target-libphobos ++ ++clean-target-libphobos: ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libphobos/Makefile ] || exit 0; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing clean in $(TARGET_SUBDIR)/libphobos"; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libphobos && \ ++ $(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-libphobos ++ ++.PHONY: maybe-distclean-target-libphobos distclean-target-libphobos ++maybe-distclean-target-libphobos: ++@if target-libphobos ++maybe-distclean-target-libphobos: distclean-target-libphobos ++ ++distclean-target-libphobos: ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libphobos/Makefile ] || exit 0; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing distclean in $(TARGET_SUBDIR)/libphobos"; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libphobos && \ ++ $(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-libphobos ++ ++.PHONY: maybe-maintainer-clean-target-libphobos maintainer-clean-target-libphobos ++maybe-maintainer-clean-target-libphobos: ++@if target-libphobos ++maybe-maintainer-clean-target-libphobos: maintainer-clean-target-libphobos ++ ++maintainer-clean-target-libphobos: ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libphobos/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)/libphobos"; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libphobos && \ ++ $(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-libphobos ++ ++ ++ ++ ++ + .PHONY: configure-target-libtermcap maybe-configure-target-libtermcap + maybe-configure-target-libtermcap: + @if gcc-bootstrap +@@ -53582,6 +54071,14 @@ check-gcc-brig: + (cd gcc && $(MAKE) $(GCC_FLAGS_TO_PASS) check-brig); + check-brig: check-gcc-brig check-target-libhsail-rt + ++.PHONY: check-gcc-d check-d ++check-gcc-d: ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(HOST_EXPORTS) \ ++ (cd gcc && $(MAKE) $(GCC_FLAGS_TO_PASS) check-d); ++check-d: check-gcc-d check-target-libphobos ++ + + # The gcc part of install-no-fixedincludes, which relies on an intimate + # knowledge of how a number of gcc internal targets (inter)operate. Delegate. +@@ -56783,6 +57280,7 @@ configure-target-libgfortran: stage_last + configure-target-libobjc: stage_last + configure-target-libgo: stage_last + configure-target-libhsail-rt: stage_last ++configure-target-libphobos: stage_last + configure-target-libtermcap: stage_last + configure-target-winsup: stage_last + configure-target-libgloss: stage_last +@@ -56818,6 +57316,7 @@ configure-target-libgfortran: maybe-all- + configure-target-libobjc: maybe-all-gcc + configure-target-libgo: maybe-all-gcc + configure-target-libhsail-rt: maybe-all-gcc ++configure-target-libphobos: maybe-all-gcc + configure-target-libtermcap: maybe-all-gcc + configure-target-winsup: maybe-all-gcc + configure-target-libgloss: maybe-all-gcc +@@ -57934,6 +58433,11 @@ configure-target-libgo: maybe-all-target + all-target-libgo: maybe-all-target-libbacktrace + all-target-libgo: maybe-all-target-libffi + all-target-libgo: 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 ++all-target-libphobos: maybe-all-target-zlib ++all-target-libphobos: maybe-all-target-libatomic + configure-target-libstdc++-v3: maybe-configure-target-libgomp + + configure-stage1-target-libstdc++-v3: maybe-configure-stage1-target-libgomp +@@ -57983,6 +58487,7 @@ all-target-liboffloadmic: maybe-all-targ + install-target-libgo: 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 + install-target-libsanitizer: maybe-install-target-libstdc++-v3 + install-target-libsanitizer: maybe-install-target-libgcc + install-target-libvtv: maybe-install-target-libstdc++-v3 +@@ -58067,6 +58572,7 @@ configure-target-libgfortran: maybe-all- + configure-target-libobjc: maybe-all-target-libgcc + configure-target-libgo: maybe-all-target-libgcc + configure-target-libhsail-rt: maybe-all-target-libgcc ++configure-target-libphobos: maybe-all-target-libgcc + configure-target-libtermcap: maybe-all-target-libgcc + configure-target-winsup: maybe-all-target-libgcc + configure-target-libgloss: maybe-all-target-libgcc +@@ -58107,6 +58613,8 @@ configure-target-libgo: maybe-all-target + + configure-target-libhsail-rt: maybe-all-target-newlib maybe-all-target-libgloss + ++configure-target-libphobos: maybe-all-target-newlib maybe-all-target-libgloss ++ + configure-target-libtermcap: maybe-all-target-newlib maybe-all-target-libgloss + + configure-target-winsup: maybe-all-target-newlib maybe-all-target-libgloss +Index: b/src/Makefile.tpl +=================================================================== +--- a/src/Makefile.tpl ++++ b/src/Makefile.tpl +@@ -159,6 +159,8 @@ BUILD_EXPORTS = \ + GFORTRAN="$(GFORTRAN_FOR_BUILD)"; export GFORTRAN; \ + GOC="$(GOC_FOR_BUILD)"; export GOC; \ + GOCFLAGS="$(GOCFLAGS_FOR_BUILD)"; export GOCFLAGS; \ ++ GDC="$(GDC_FOR_BUILD)"; export GDC; \ ++ GDCFLAGS="$(GDCFLAGS_FOR_BUILD)"; export GDCFLAGS; \ + DLLTOOL="$(DLLTOOL_FOR_BUILD)"; export DLLTOOL; \ + LD="$(LD_FOR_BUILD)"; export LD; \ + LDFLAGS="$(LDFLAGS_FOR_BUILD)"; export LDFLAGS; \ +@@ -195,6 +197,7 @@ HOST_EXPORTS = \ + CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \ + GFORTRAN="$(GFORTRAN)"; export GFORTRAN; \ + GOC="$(GOC)"; export GOC; \ ++ GDC="$(GDC)"; export GDC; \ + AR="$(AR)"; export AR; \ + AS="$(AS)"; export AS; \ + CC_FOR_BUILD="$(CC_FOR_BUILD)"; export CC_FOR_BUILD; \ +@@ -281,6 +284,7 @@ BASE_TARGET_EXPORTS = \ + CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \ + 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; \ + DLLTOOL="$(DLLTOOL_FOR_TARGET)"; export DLLTOOL; \ + LD="$(COMPILER_LD_FOR_TARGET)"; export LD; \ + LDFLAGS="$(LDFLAGS_FOR_TARGET)"; export LDFLAGS; \ +@@ -345,6 +349,7 @@ CXX_FOR_BUILD = @CXX_FOR_BUILD@ + DLLTOOL_FOR_BUILD = @DLLTOOL_FOR_BUILD@ + GFORTRAN_FOR_BUILD = @GFORTRAN_FOR_BUILD@ + GOC_FOR_BUILD = @GOC_FOR_BUILD@ ++GDC_FOR_BUILD = @GDC_FOR_BUILD@ + LDFLAGS_FOR_BUILD = @LDFLAGS_FOR_BUILD@ + LD_FOR_BUILD = @LD_FOR_BUILD@ + NM_FOR_BUILD = @NM_FOR_BUILD@ +@@ -411,6 +416,7 @@ LIBCFLAGS = $(CFLAGS) + CXXFLAGS = @CXXFLAGS@ + LIBCXXFLAGS = $(CXXFLAGS) -fno-implicit-templates + GOCFLAGS = $(CFLAGS) ++GDCFLAGS = $(CFLAGS) + + CREATE_GCOV = create_gcov + +@@ -487,6 +493,7 @@ CXX_FOR_TARGET=$(STAGE_CC_WRAPPER) @CXX_ + RAW_CXX_FOR_TARGET=$(STAGE_CC_WRAPPER) @RAW_CXX_FOR_TARGET@ + 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@ + DLLTOOL_FOR_TARGET=@DLLTOOL_FOR_TARGET@ + LD_FOR_TARGET=@LD_FOR_TARGET@ + +@@ -511,6 +518,7 @@ LIBCFLAGS_FOR_TARGET = $(CFLAGS_FOR_TARG + LIBCXXFLAGS_FOR_TARGET = $(CXXFLAGS_FOR_TARGET) -fno-implicit-templates + LDFLAGS_FOR_TARGET = @LDFLAGS_FOR_TARGET@ + GOCFLAGS_FOR_TARGET = -O2 -g ++GDCFLAGS_FOR_TARGET = -O2 -g + + FLAGS_FOR_TARGET = @FLAGS_FOR_TARGET@ + SYSROOT_CFLAGS_FOR_TARGET = @SYSROOT_CFLAGS_FOR_TARGET@ +@@ -612,6 +620,7 @@ EXTRA_HOST_FLAGS = \ + 'DLLTOOL=$(DLLTOOL)' \ + 'GFORTRAN=$(GFORTRAN)' \ + 'GOC=$(GOC)' \ ++ 'GDC=$(GDC)' \ + 'LD=$(LD)' \ + 'LIPO=$(LIPO)' \ + 'NM=$(NM)' \ +@@ -668,6 +677,8 @@ EXTRA_TARGET_FLAGS = \ + 'GFORTRAN=$$(GFORTRAN_FOR_TARGET) $$(XGCC_FLAGS_FOR_TARGET) $$(TFLAGS)' \ + 'GOC=$$(GOC_FOR_TARGET) $$(XGCC_FLAGS_FOR_TARGET) $$(TFLAGS)' \ + 'GOCFLAGS=$$(GOCFLAGS_FOR_TARGET)' \ ++ 'GDC=$$(GDC_FOR_TARGET) $$(XGCC_FLAGS_FOR_TARGET) $$(TFLAGS)' \ ++ 'GDCFLAGS=$$(GDCFLAGS_FOR_TARGET)' \ + 'LD=$(COMPILER_LD_FOR_TARGET)' \ + 'LDFLAGS=$$(LDFLAGS_FOR_TARGET)' \ + 'LIBCFLAGS=$$(LIBCFLAGS_FOR_TARGET)' \ +Index: b/src/config-ml.in +=================================================================== +--- a/src/config-ml.in ++++ b/src/config-ml.in +@@ -512,6 +512,7 @@ multi-do: + prefix="$(prefix)" \ + exec_prefix="$(exec_prefix)" \ + GOCFLAGS="$(GOCFLAGS) $${flags}" \ ++ GDCFLAGS="$(GDCFLAGS) $${flags}" \ + CXXFLAGS="$(CXXFLAGS) $${flags}" \ + LIBCFLAGS="$(LIBCFLAGS) $${flags}" \ + LIBCXXFLAGS="$(LIBCXXFLAGS) $${flags}" \ +@@ -745,7 +746,7 @@ if [ -n "${multidirs}" ] && [ -z "${ml_n + break + fi + done +- ml_config_env='CC="${CC_}$flags" CXX="${CXX_}$flags" F77="${F77_}$flags" GFORTRAN="${GFORTRAN_}$flags" GOC="${GOC_}$flags"' ++ ml_config_env='CC="${CC_}$flags" CXX="${CXX_}$flags" F77="${F77_}$flags" GFORTRAN="${GFORTRAN_}$flags" GOC="${GOC_}$flags" GDC="${GDC_}$flags"' + + if [ "${with_target_subdir}" = "." ]; then + CC_=$CC' ' +@@ -753,6 +754,7 @@ if [ -n "${multidirs}" ] && [ -z "${ml_n + F77_=$F77' ' + GFORTRAN_=$GFORTRAN' ' + GOC_=$GOC' ' ++ GDC_=$GDC' ' + else + # Create a regular expression that matches any string as long + # as ML_POPDIR. +@@ -817,6 +819,18 @@ if [ -n "${multidirs}" ] && [ -z "${ml_n + esac + done + ++ GDC_= ++ for arg in ${GDC}; do ++ 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"`' ' ;; ++ "${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"`' ' ;; ++ *) ++ GDC_="${GDC_}${arg} " ;; ++ esac ++ done ++ + if test "x${LD_LIBRARY_PATH+set}" = xset; then + LD_LIBRARY_PATH_= + for arg in `echo "$LD_LIBRARY_PATH" | tr ':' ' '`; do +Index: b/src/config/multi.m4 +=================================================================== +--- a/src/config/multi.m4 ++++ b/src/config/multi.m4 +@@ -64,4 +64,5 @@ multi_basedir="$multi_basedir" + CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} + CC="$CC" + CXX="$CXX" +-GFORTRAN="$GFORTRAN"])])dnl ++GFORTRAN="$GFORTRAN" ++GDC="$GDC"])])dnl +Index: b/src/configure.ac +=================================================================== +--- a/src/configure.ac ++++ b/src/configure.ac +@@ -172,7 +172,8 @@ target_libraries="target-libgcc \ + target-libada-sjlj \ + ${target_libiberty} \ + target-libgnatvsn \ +- target-libgo" ++ target-libgo \ ++ target-libphobos" + + # these tools are built using the target libraries, and are intended to + # run only in the target environment +@@ -1256,6 +1257,7 @@ if test "${build}" != "${host}" ; then + CXX_FOR_BUILD=${CXX_FOR_BUILD-g++} + GFORTRAN_FOR_BUILD=${GFORTRAN_FOR_BUILD-gfortran} + GOC_FOR_BUILD=${GOC_FOR_BUILD-gccgo} ++ GDC_FOR_BUILD=${GDC_FOR_BUILD-gdc} + DLLTOOL_FOR_BUILD=${DLLTOOL_FOR_BUILD-dlltool} + LD_FOR_BUILD=${LD_FOR_BUILD-ld} + NM_FOR_BUILD=${NM_FOR_BUILD-nm} +@@ -1269,6 +1271,7 @@ else + CXX_FOR_BUILD="\$(CXX)" + GFORTRAN_FOR_BUILD="\$(GFORTRAN)" + GOC_FOR_BUILD="\$(GOC)" ++ GDC_FOR_BUILD="\$(GDC)" + DLLTOOL_FOR_BUILD="\$(DLLTOOL)" + LD_FOR_BUILD="\$(LD)" + NM_FOR_BUILD="\$(NM)" +@@ -3256,6 +3259,7 @@ AC_SUBST(CXX_FOR_BUILD) + AC_SUBST(DLLTOOL_FOR_BUILD) + AC_SUBST(GFORTRAN_FOR_BUILD) + AC_SUBST(GOC_FOR_BUILD) ++AC_SUBST(GDC_FOR_BUILD) + AC_SUBST(LDFLAGS_FOR_BUILD) + AC_SUBST(LD_FOR_BUILD) + AC_SUBST(NM_FOR_BUILD) +@@ -3365,6 +3369,7 @@ NCN_STRICT_CHECK_TARGET_TOOLS(CXX_FOR_TA + NCN_STRICT_CHECK_TARGET_TOOLS(GCC_FOR_TARGET, gcc, ${CC_FOR_TARGET}) + 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) + + ACX_CHECK_INSTALLED_TARGET_TOOL(AR_FOR_TARGET, ar) + ACX_CHECK_INSTALLED_TARGET_TOOL(AS_FOR_TARGET, as) +@@ -3398,6 +3403,8 @@ GCC_TARGET_TOOL(gfortran, GFORTRAN_FOR_T + [gcc/gfortran -B$$r/$(HOST_SUBDIR)/gcc/], fortran) + GCC_TARGET_TOOL(gccgo, GOC_FOR_TARGET, GOC, + [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(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]) --- gcc-8-8.3.0.orig/debian/patches/gdc-multiarch.diff +++ gcc-8-8.3.0/debian/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\" --- gcc-8-8.3.0.orig/debian/patches/gdc-profiledbuild.diff +++ gcc-8-8.3.0/debian/patches/gdc-profiledbuild.diff @@ -0,0 +1,21 @@ +# DP: Don't build gdc build tools idgen and impcnvgen with profiling flags + +Index: b/src/gcc/d/Make-lang.in +=================================================================== +--- a/src/gcc/d/Make-lang.in ++++ b/src/gcc/d/Make-lang.in +@@ -314,6 +314,14 @@ d/idgen: d/idgen.dmdgen.o + d/impcvgen: d/impcnvgen.dmdgen.o + +$(LINKER_FOR_BUILD) $(BUILD_LINKER_FLAGS) $(BUILD_LDFLAGS) -o $@ $^ + ++d/idgen.dmdgen.o: d/dfrontend/idgen.c ++ $(filter-out -fprofile-%,$(DMD_COMPILE)) $(D_INCLUDES) $< ++ $(POSTCOMPILE) ++ ++d/impcnvgen.dmdgen.o: $(srcdir)/d/dfrontend/impcnvgen.c ++ $(filter-out -fprofile-%,$(DMDGEN_COMPILE)) $(D_INCLUDES) $< ++ $(POSTCOMPILE) ++ + # Generated sources. + d/id.c: d/idgen + cd d && ./idgen --- gcc-8-8.3.0.orig/debian/patches/gdc-shared-by-default.diff +++ gcc-8-8.3.0/debian/patches/gdc-shared-by-default.diff @@ -0,0 +1,18 @@ +# DP: Link with the shared libphobos library by default. + +Index: b/src/gcc/d/d-spec.c +=================================================================== +--- a/src/gcc/d/d-spec.c ++++ b/src/gcc/d/d-spec.c +@@ -395,9 +395,9 @@ lang_specific_driver (cl_decoded_option + /* Add `-lgphobos' if we haven't already done so. */ + if (library > 0 && need_phobos) + { +- /* Default to static linking. */ ++ /* Default to shared linking. */ + if (library == 1) +- library = 2; ++ library = 3; + + #ifdef HAVE_LD_STATIC_DYNAMIC + if (library == 3 && static_link) --- gcc-8-8.3.0.orig/debian/patches/gdc-sparc-fix.diff +++ gcc-8-8.3.0/debian/patches/gdc-sparc-fix.diff @@ -0,0 +1,12 @@ +# DP: Fix gdc build on sparc. + +--- a/src/gcc/d/d-target.cc ++++ b/src/gcc/d/d-target.cc +@@ -18,6 +18,7 @@ + #include "config.h" + #include "system.h" + #include "coretypes.h" ++#include "memmodel.h" + + #include "dfrontend/aggregate.h" + #include "dfrontend/module.h" --- gcc-8-8.3.0.orig/debian/patches/gdc-targetdm-doc.diff +++ gcc-8-8.3.0/debian/patches/gdc-targetdm-doc.diff @@ -0,0 +1,90 @@ +--- a/src/gcc/doc/tm.texi ++++ b/src/gcc/doc/tm.texi +@@ -52,6 +52,7 @@ through the macros defined in the @file{.h} file. + * MIPS Coprocessors:: MIPS coprocessor support and how to customize it. + * PCH Target:: Validity checking for precompiled headers. + * C++ ABI:: Controlling C++ ABI changes. ++* D Language and ABI:: Controlling D ABI changes. + * Named Address Spaces:: Adding support for named address spaces + * Misc:: Everything else. + @end menu +@@ -106,6 +107,14 @@ documented as ``Common Target Hook''. This is declared in + @code{target_has_targetm_common=yes} in @file{config.gcc}; otherwise a + default definition is used. + ++Similarly, there is a @code{targetdm} variable for hooks that are ++specific to the D language front end, documented as ``D Target Hook''. ++This is declared in @file{d/d-target.h}, the initializer ++@code{TARGETDM_INITIALIZER} in @file{d/d-target-def.h}. If targets ++initialize @code{targetdm} themselves, they should set ++@code{target_has_targetdm=yes} in @file{config.gcc}; otherwise a default ++definition is used. ++ + @node Driver + @section Controlling the Compilation Driver, @file{gcc} + @cindex driver +@@ -10488,6 +10497,22 @@ unloaded. The default is to return false. + Return target-specific mangling context of @var{decl} or @code{NULL_TREE}. + @end deftypefn + ++@node D Language and ABI ++@section D ABI parameters ++@cindex parameters, d abi ++ ++@deftypefn {D Target Hook} void TARGET_D_CPU_VERSIONS (void) ++Declare all environmental version identifiers relating to the target CPU using the function @code{builtin_version}, which takes a string representing the name of the version. Version identifiers predefined by this hook apply to all modules and being compiled and imported. ++@end deftypefn ++ ++@deftypefn {D Target Hook} void TARGET_D_OS_VERSIONS (void) ++Similarly to @code{TARGET_D_CPU_VERSIONS}, but is used for versions relating to the target operating system. ++@end deftypefn ++ ++@deftypefn {D Target Hook} unsigned TARGET_D_CRITSEC_SIZE (void) ++Returns the size of the data structure used by the targeted operating system for critical sections and monitors. For example, on Microsoft Windows this would return the @code{sizeof(CRITICAL_SECTION)}, while other platforms that implement pthreads would return @code{sizeof(pthread_mutex_t)}. ++@end deftypefn ++ + @node Named Address Spaces + @section Adding support for named address spaces + @cindex named address spaces +--- a/src/gcc/doc/tm.texi.in ++++ b/src/gcc/doc/tm.texi.in +@@ -52,6 +52,7 @@ through the macros defined in the @file{.h} file. + * MIPS Coprocessors:: MIPS coprocessor support and how to customize it. + * PCH Target:: Validity checking for precompiled headers. + * C++ ABI:: Controlling C++ ABI changes. ++* D Language and ABI:: Controlling D ABI changes. + * Named Address Spaces:: Adding support for named address spaces + * Misc:: Everything else. + @end menu +@@ -106,6 +107,14 @@ documented as ``Common Target Hook''. This is declared in + @code{target_has_targetm_common=yes} in @file{config.gcc}; otherwise a + default definition is used. + ++Similarly, there is a @code{targetdm} variable for hooks that are ++specific to the D language front end, documented as ``D Target Hook''. ++This is declared in @file{d/d-target.h}, the initializer ++@code{TARGETDM_INITIALIZER} in @file{d/d-target-def.h}. If targets ++initialize @code{targetdm} themselves, they should set ++@code{target_has_targetdm=yes} in @file{config.gcc}; otherwise a default ++definition is used. ++ + @node Driver + @section Controlling the Compilation Driver, @file{gcc} + @cindex driver +@@ -7234,6 +7243,16 @@ floating-point support; they are not included in this mechanism. + + @hook TARGET_CXX_DECL_MANGLING_CONTEXT + ++@node D Language and ABI ++@section D ABI parameters ++@cindex parameters, d abi ++ ++@hook TARGET_D_CPU_VERSIONS ++ ++@hook TARGET_D_OS_VERSIONS ++ ++@hook TARGET_D_CRITSEC_SIZE ++ + @node Named Address Spaces + @section Adding support for named address spaces + @cindex named address spaces --- gcc-8-8.3.0.orig/debian/patches/gdc-targetdm.diff +++ gcc-8-8.3.0/debian/patches/gdc-targetdm.diff @@ -0,0 +1,1514 @@ +This patch implements the support for the D language specific target hooks. + +The following versions are available for all supported architectures. +* D_HardFloat +* D_SoftFloat + +The following CPU versions are implemented: +* ARM +** Thumb (deprecated) +** ARM_Thumb +** ARM_HardFloat +** ARM_SoftFloat +** ARM_SoftFP +* AArch64 +* Alpha +** Alpha_SoftFloat +** Alpha_HardFloat +* X86 +* X86_64 +** D_X32 +* MIPS32 +* MIPS64 +** MIPS_O32 +** MIPS_O64 +** MIPS_N32 +** MIPS_N64 +** MIPS_EABI +** MIPS_HardFloat +** MIPS_SoftFloat +* PPC +* PPC64 +** PPC_HardFloat +** PPC_SoftFloat +* S390 +* S390X (deprecated) +* SystemZ +* SPARC +* SPARC64 +* SPARC_V8Plus +** SPARC_HardFloat +** SPARC_SoftFloat + +The following OS versions are implemented: +* linux +* Posix +* Hurd +* Android +* CRuntime_Bionic +* CRuntime_Glibc +* CRuntime_Musl +* CRuntime_UClibc +--- + +--- a/src/gcc/Makefile.in ++++ b/src/gcc/Makefile.in +@@ -552,6 +552,8 @@ tm_include_list=@tm_include_list@ + tm_defines=@tm_defines@ + tm_p_file_list=@tm_p_file_list@ + tm_p_include_list=@tm_p_include_list@ ++tm_d_file_list=@tm_d_file_list@ ++tm_d_include_list=@tm_d_include_list@ + build_xm_file_list=@build_xm_file_list@ + build_xm_include_list=@build_xm_include_list@ + build_xm_defines=@build_xm_defines@ +@@ -846,6 +848,7 @@ BCONFIG_H = bconfig.h $(build_xm_file_li + CONFIG_H = config.h $(host_xm_file_list) + TCONFIG_H = tconfig.h $(xm_file_list) + TM_P_H = tm_p.h $(tm_p_file_list) ++TM_D_H = tm_d.h $(tm_d_file_list) + GTM_H = tm.h $(tm_file_list) insn-constants.h + TM_H = $(GTM_H) insn-flags.h $(OPTIONS_H) + +@@ -903,9 +906,11 @@ EXCEPT_H = except.h $(HASHTAB_H) + TARGET_DEF = target.def target-hooks-macros.h target-insns.def + C_TARGET_DEF = c-family/c-target.def target-hooks-macros.h + COMMON_TARGET_DEF = common/common-target.def target-hooks-macros.h ++D_TARGET_DEF = d/d-target.def target-hooks-macros.h + TARGET_H = $(TM_H) target.h $(TARGET_DEF) insn-modes.h insn-codes.h + C_TARGET_H = c-family/c-target.h $(C_TARGET_DEF) + COMMON_TARGET_H = common/common-target.h $(INPUT_H) $(COMMON_TARGET_DEF) ++D_TARGET_H = d/d-target.h $(D_TARGET_DEF) + MACHMODE_H = machmode.h mode-classes.def + HOOKS_H = hooks.h + HOSTHOOKS_DEF_H = hosthooks-def.h $(HOOKS_H) +@@ -1185,6 +1190,9 @@ C_TARGET_OBJS=@c_target_objs@ + # Target specific, C++ specific object file + CXX_TARGET_OBJS=@cxx_target_objs@ + ++# Target specific, D specific object file ++D_TARGET_OBJS=@d_target_objs@ ++ + # Target specific, Fortran specific object file + FORTRAN_TARGET_OBJS=@fortran_target_objs@ + +@@ -1783,6 +1791,7 @@ bconfig.h: cs-bconfig.h ; @true + tconfig.h: cs-tconfig.h ; @true + tm.h: cs-tm.h ; @true + tm_p.h: cs-tm_p.h ; @true ++tm_d.h: cs-tm_d.h ; @true + + cs-config.h: Makefile + TARGET_CPU_DEFAULT="" \ +@@ -1809,6 +1818,11 @@ cs-tm_p.h: Makefile + HEADERS="$(tm_p_include_list)" DEFINES="" \ + $(SHELL) $(srcdir)/mkconfig.sh tm_p.h + ++cs-tm_d.h: Makefile ++ TARGET_CPU_DEFAULT="" \ ++ HEADERS="$(tm_d_include_list)" DEFINES="" \ ++ $(SHELL) $(srcdir)/mkconfig.sh tm_d.h ++ + # Don't automatically run autoconf, since configure.ac might be accidentally + # newer than configure. Also, this writes into the source directory which + # might be on a read-only file system. If configured for maintainer mode +@@ -2175,6 +2189,12 @@ default-c.o: config/default-c.c + CFLAGS-prefix.o += -DPREFIX=\"$(prefix)\" -DBASEVER=$(BASEVER_s) + prefix.o: $(BASEVER) + ++# Files used by the D language front end. ++ ++default-d.o: config/default-d.c ++ $(COMPILE) $< ++ $(POSTCOMPILE) ++ + # Language-independent files. + + DRIVER_DEFINES = \ +@@ -2470,6 +2490,15 @@ s-common-target-hooks-def-h: build/genho + common/common-target-hooks-def.h + $(STAMP) s-common-target-hooks-def-h + ++d/d-target-hooks-def.h: s-d-target-hooks-def-h; @true ++ ++s-d-target-hooks-def-h: build/genhooks$(build_exeext) ++ $(RUN_GEN) build/genhooks$(build_exeext) "D Target Hook" \ ++ > tmp-d-target-hooks-def.h ++ $(SHELL) $(srcdir)/../move-if-change tmp-d-target-hooks-def.h \ ++ d/d-target-hooks-def.h ++ $(STAMP) s-d-target-hooks-def-h ++ + # check if someone mistakenly only changed tm.texi. + # We use a different pathname here to avoid a circular dependency. + s-tm-texi: $(srcdir)/doc/../doc/tm.texi +@@ -2609,14 +2638,15 @@ s-gtype: build/gengtype$(build_exeext) $ + -r gtype.state + $(STAMP) s-gtype + +-generated_files = config.h tm.h $(TM_P_H) $(TM_H) multilib.h \ ++generated_files = config.h tm.h $(TM_P_H) $(TM_D_H) $(TM_H) multilib.h \ + $(simple_generated_h) specs.h \ + tree-check.h genrtl.h insn-modes.h insn-modes-inline.h \ + tm-preds.h tm-constrs.h \ + $(ALL_GTFILES_H) gtype-desc.c gtype-desc.h gcov-iov.h \ + options.h target-hooks-def.h insn-opinit.h \ + common/common-target-hooks-def.h pass-instances.def \ +- c-family/c-target-hooks-def.h params.list params.options case-cfn-macros.h \ ++ c-family/c-target-hooks-def.h d/d-target-hooks-def.h \ ++ params.list params.options case-cfn-macros.h \ + cfn-operators.pd + + # +@@ -2759,7 +2789,7 @@ build/genrecog.o : genrecog.c $(RTL_BASE + $(CORETYPES_H) $(GTM_H) errors.h $(READ_MD_H) $(GENSUPPORT_H) \ + $(HASH_TABLE_H) inchash.h + build/genhooks.o : genhooks.c $(TARGET_DEF) $(C_TARGET_DEF) \ +- $(COMMON_TARGET_DEF) $(BCONFIG_H) $(SYSTEM_H) errors.h ++ $(COMMON_TARGET_DEF) $(D_TARGET_DEF) $(BCONFIG_H) $(SYSTEM_H) errors.h + build/genmddump.o : genmddump.c $(RTL_BASE_H) $(BCONFIG_H) $(SYSTEM_H) \ + $(CORETYPES_H) $(GTM_H) errors.h $(READ_MD_H) $(GENSUPPORT_H) + build/genmatch.o : genmatch.c $(BCONFIG_H) $(SYSTEM_H) \ +--- a/src/gcc/config.gcc ++++ b/src/gcc/config.gcc +@@ -86,6 +86,9 @@ + # tm_p_file Location of file with declarations for functions + # in $out_file. + # ++# tm_d_file A list of headers with definitions of target hook ++# macros for the D compiler. ++# + # out_file The name of the machine description C support + # file, if different from "$cpu_type/$cpu_type.c". + # +@@ -139,6 +142,9 @@ + # cxx_target_objs List of extra target-dependent objects that be + # linked into the C++ compiler only. + # ++# d_target_objs List of extra target-dependent objects that be ++# linked into the D compiler only. ++# + # fortran_target_objs List of extra target-dependent objects that be + # linked into the fortran compiler only. + # +@@ -191,6 +197,9 @@ + # + # target_has_targetm_common Set to yes or no depending on whether the + # target has its own definition of targetm_common. ++# ++# target_has_targetdm Set to yes or no depending on whether the target ++# has its own definition of targetdm. + + out_file= + common_out_file= +@@ -206,9 +215,11 @@ extra_gcc_objs= + extra_options= + c_target_objs= + cxx_target_objs= ++d_target_objs= + fortran_target_objs= + target_has_targetcm=no + target_has_targetm_common=yes ++target_has_targetdm=no + tm_defines= + xm_defines= + # Set this to force installation and use of collect2. +@@ -300,6 +311,7 @@ m32c*-*-*) + target_has_targetm_common=no + ;; + aarch64*-*-*) ++ d_target_objs="aarch64-d.o" + cpu_type=aarch64 + extra_headers="arm_fp16.h arm_neon.h arm_acle.h" + c_target_objs="aarch64-c.o" +@@ -311,6 +323,7 @@ aarch64*-*-*) + alpha*-*-*) + cpu_type=alpha + extra_options="${extra_options} g.opt" ++ d_target_objs="alpha-d.o" + ;; + am33_2.0-*-linux*) + cpu_type=mn10300 +@@ -329,6 +342,7 @@ arm*-*-*) + target_type_format_char='%' + c_target_objs="arm-c.o" + cxx_target_objs="arm-c.o" ++ d_target_objs="arm-d.o" + extra_options="${extra_options} arm/arm-tables.opt" + target_gtfiles="\$(srcdir)/config/arm/arm-builtins.c" + ;; +@@ -361,6 +375,7 @@ i[34567]86-*-*) + cpu_type=i386 + c_target_objs="i386-c.o" + cxx_target_objs="i386-c.o" ++ d_target_objs="i386-d.o" + extra_objs="x86-tune-sched.o x86-tune-sched-bd.o x86-tune-sched-atom.o x86-tune-sched-core.o" + extra_options="${extra_options} fused-madd.opt" + extra_headers="cpuid.h mmintrin.h mm3dnow.h xmmintrin.h emmintrin.h +@@ -390,6 +405,7 @@ x86_64-*-*) + cpu_type=i386 + c_target_objs="i386-c.o" + cxx_target_objs="i386-c.o" ++ d_target_objs="i386-d.o" + extra_options="${extra_options} fused-madd.opt" + extra_objs="x86-tune-sched.o x86-tune-sched-bd.o x86-tune-sched-atom.o x86-tune-sched-core.o" + extra_headers="cpuid.h mmintrin.h mm3dnow.h xmmintrin.h emmintrin.h +@@ -439,6 +455,7 @@ microblaze*-*-*) + ;; + mips*-*-*) + cpu_type=mips ++ d_target_objs="mips-d.o" + extra_headers="loongson.h msa.h" + extra_objs="frame-header-opt.o" + extra_options="${extra_options} g.opt fused-madd.opt mips/mips-tables.opt" +@@ -494,6 +511,7 @@ sparc*-*-*) + cpu_type=sparc + c_target_objs="sparc-c.o" + cxx_target_objs="sparc-c.o" ++ d_target_objs="sparc-d.o" + extra_headers="visintrin.h" + ;; + spu*-*-*) +@@ -501,6 +519,7 @@ spu*-*-*) + ;; + s390*-*-*) + cpu_type=s390 ++ d_target_objs="s390-d.o" + extra_options="${extra_options} fused-madd.opt" + extra_headers="s390intrin.h htmintrin.h htmxlintrin.h vecintrin.h" + ;; +@@ -530,10 +549,13 @@ tilepro*-*-*) + esac + + tm_file=${cpu_type}/${cpu_type}.h ++tm_d_file=${cpu_type}/${cpu_type}.h + if test -f ${srcdir}/config/${cpu_type}/${cpu_type}-protos.h + then + tm_p_file=${cpu_type}/${cpu_type}-protos.h ++ tm_d_file="${tm_d_file} ${cpu_type}/${cpu_type}-protos.h" + fi ++ + extra_modes= + if test -f ${srcdir}/config/${cpu_type}/${cpu_type}-modes.def + then +@@ -802,8 +824,10 @@ case ${target} in + esac + c_target_objs="${c_target_objs} glibc-c.o" + cxx_target_objs="${cxx_target_objs} glibc-c.o" ++ d_target_objs="${d_target_objs} glibc-d.o" + tmake_file="${tmake_file} t-glibc" + target_has_targetcm=yes ++ target_has_targetdm=yes + ;; + *-*-netbsd*) + tm_p_file="${tm_p_file} netbsd-protos.h" +@@ -3188,6 +3212,10 @@ if [ "$common_out_file" = "" ]; then + fi + fi + ++if [ "$target_has_targetdm" = "no" ]; then ++ d_target_objs="$d_target_objs default-d.o" ++fi ++ + # Support for --with-cpu and related options (and a few unrelated options, + # too). + case ${with_cpu} in +@@ -4729,6 +4757,7 @@ case ${target} in + out_file="${cpu_type}/${cpu_type}.c" + c_target_objs="${c_target_objs} ${cpu_type}-c.o" + cxx_target_objs="${cxx_target_objs} ${cpu_type}-c.o" ++ d_target_objs="${d_target_objs} ${cpu_type}-d.o" + tmake_file="${cpu_type}/t-${cpu_type} ${tmake_file}" + ;; + +--- /dev/null ++++ b/src/gcc/config/aarch64/aarch64-d.c +@@ -0,0 +1,31 @@ ++/* Subroutines for the D front end on the AArch64 architecture. ++ Copyright (C) 2017 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. ++ ++You should have received a copy of the GNU General Public License ++along with GCC; see the file COPYING3. If not see ++. */ ++ ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++#include "d/d-target.h" ++#include "d/d-target-def.h" ++ ++/* Implement TARGET_D_CPU_VERSIONS for AArch64 targets. */ ++ ++void ++aarch64_d_target_versions (void) ++{ ++ d_add_builtin_version ("AArch64"); ++ d_add_builtin_version ("D_HardFloat"); ++} +--- a/src/gcc/config/aarch64/aarch64-linux.h ++++ b/src/gcc/config/aarch64/aarch64-linux.h +@@ -82,6 +82,8 @@ + } \ + while (0) + ++#define GNU_USER_TARGET_D_CRITSEC_SIZE 48 ++ + #define TARGET_ASM_FILE_END file_end_indicate_exec_stack + + /* Uninitialized common symbols in non-PIE executables, even with +--- a/src/gcc/config/aarch64/aarch64-protos.h ++++ b/src/gcc/config/aarch64/aarch64-protos.h +@@ -538,6 +538,9 @@ bool aarch64_operands_adjust_ok_for_ldps + extern void aarch64_asm_output_pool_epilogue (FILE *, const char *, + tree, HOST_WIDE_INT); + ++/* Defined in aarch64-d.c */ ++extern void aarch64_d_target_versions (void); ++ + /* Defined in common/config/aarch64-common.c. */ + bool aarch64_handle_option (struct gcc_options *, struct gcc_options *, + const struct cl_decoded_option *, location_t); +--- a/src/gcc/config/aarch64/aarch64.h ++++ b/src/gcc/config/aarch64/aarch64.h +@@ -26,6 +26,9 @@ + #define TARGET_CPU_CPP_BUILTINS() \ + aarch64_cpu_cpp_builtins (pfile) + ++/* Target CPU versions for D. */ ++#define TARGET_D_CPU_VERSIONS aarch64_d_target_versions ++ + + + #define REGISTER_TARGET_PRAGMAS() aarch64_register_pragmas () +--- a/src/gcc/config/aarch64/t-aarch64 ++++ b/src/gcc/config/aarch64/t-aarch64 +@@ -56,6 +56,10 @@ aarch64-c.o: $(srcdir)/config/aarch64/aa + $(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \ + $(srcdir)/config/aarch64/aarch64-c.c + ++aarch64-d.o: $(srcdir)/config/aarch64/aarch64-d.c ++ $(COMPILE) $< ++ $(POSTCOMPILE) ++ + PASSES_EXTRA += $(srcdir)/config/aarch64/aarch64-passes.def + + cortex-a57-fma-steering.o: $(srcdir)/config/aarch64/cortex-a57-fma-steering.c \ +--- /dev/null ++++ b/src/gcc/config/alpha/alpha-d.c +@@ -0,0 +1,41 @@ ++/* Subroutines for the D front end on the Alpha architecture. ++ Copyright (C) 2017 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. ++ ++You should have received a copy of the GNU General Public License ++along with GCC; see the file COPYING3. If not see ++. */ ++ ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++#include "tm.h" ++#include "d/d-target.h" ++#include "d/d-target-def.h" ++ ++/* Implement TARGET_D_CPU_VERSIONS for Alpha targets. */ ++ ++void ++alpha_d_target_versions (void) ++{ ++ d_add_builtin_version ("Alpha"); ++ if (TARGET_SOFT_FP) ++ { ++ d_add_builtin_version ("D_SoftFloat"); ++ d_add_builtin_version ("Alpha_SoftFloat"); ++ } ++ else ++ { ++ d_add_builtin_version ("D_HardFloat"); ++ d_add_builtin_version ("Alpha_HardFloat"); ++ } ++} +--- a/src/gcc/config/alpha/alpha-protos.h ++++ b/src/gcc/config/alpha/alpha-protos.h +@@ -118,3 +118,6 @@ class rtl_opt_pass; + + extern rtl_opt_pass *make_pass_handle_trap_shadows (gcc::context *); + extern rtl_opt_pass *make_pass_align_insns (gcc::context *); ++ ++/* Routines implemented in alpha-d.c */ ++extern void alpha_d_target_versions (void); +--- a/src/gcc/config/alpha/alpha.h ++++ b/src/gcc/config/alpha/alpha.h +@@ -94,6 +94,9 @@ along with GCC; see the file COPYING3. + while (0) + #endif + ++/* Target CPU versions for D. */ ++#define TARGET_D_CPU_VERSIONS alpha_d_target_versions ++ + /* Run-time compilation parameters selecting different hardware subsets. */ + + /* Which processor to schedule for. The cpu attribute defines a list that +--- a/src/gcc/config/alpha/linux.h ++++ b/src/gcc/config/alpha/linux.h +@@ -33,6 +33,19 @@ along with GCC; see the file COPYING3. + builtin_define ("_GNU_SOURCE"); \ + } while (0) + ++#define GNU_USER_TARGET_D_OS_VERSIONS() \ ++ do { \ ++ builtin_version ("linux"); \ ++ if (OPTION_GLIBC) \ ++ builtin_version ("CRuntime_Glibc"); \ ++ else if (OPTION_UCLIBC) \ ++ d_add_builtin_version ("CRuntime_UClibc"); \ ++ else if (OPTION_BIONIC) \ ++ d_add_builtin_version ("CRuntime_Bionic"); \ ++ else if (OPTION_MUSL) \ ++ d_add_builtin_version ("CRuntime_Musl"); \ ++ } while (0) ++ + #undef LIB_SPEC + #define LIB_SPEC \ + "%{pthread:-lpthread} \ +--- a/src/gcc/config/alpha/t-alpha ++++ b/src/gcc/config/alpha/t-alpha +@@ -16,4 +16,8 @@ + # along with GCC; see the file COPYING3. If not see + # . + ++alpha-d.o: $(srcdir)/config/alpha/alpha-d.c ++ $(COMPILE) $< ++ $(POSTCOMPILE) ++ + PASSES_EXTRA += $(srcdir)/config/alpha/alpha-passes.def +--- /dev/null ++++ b/src/gcc/config/arm/arm-d.c +@@ -0,0 +1,53 @@ ++/* Subroutines for the D front end on the ARM architecture. ++ Copyright (C) 2017 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. ++ ++You should have received a copy of the GNU General Public License ++along with GCC; see the file COPYING3. If not see ++. */ ++ ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++#include "tm.h" ++#include "tm_p.h" ++#include "d/d-target.h" ++#include "d/d-target-def.h" ++ ++/* Implement TARGET_D_CPU_VERSIONS for ARM targets. */ ++ ++void ++arm_d_target_versions (void) ++{ ++ d_add_builtin_version ("ARM"); ++ ++ if (TARGET_THUMB || TARGET_THUMB2) ++ { ++ d_add_builtin_version ("Thumb"); ++ d_add_builtin_version ("ARM_Thumb"); ++ } ++ ++ if (TARGET_HARD_FLOAT_ABI) ++ d_add_builtin_version ("ARM_HardFloat"); ++ else ++ { ++ if (TARGET_SOFT_FLOAT) ++ d_add_builtin_version ("ARM_SoftFloat"); ++ else if (TARGET_HARD_FLOAT) ++ d_add_builtin_version ("ARM_SoftFP"); ++ } ++ ++ if (TARGET_SOFT_FLOAT) ++ d_add_builtin_version ("D_SoftFloat"); ++ else if (TARGET_HARD_FLOAT) ++ d_add_builtin_version ("D_HardFloat"); ++} +--- a/src/gcc/config/arm/arm-protos.h ++++ b/src/gcc/config/arm/arm-protos.h +@@ -373,6 +373,9 @@ extern void arm_lang_object_attributes_i + extern void arm_register_target_pragmas (void); + extern void arm_cpu_cpp_builtins (struct cpp_reader *); + ++/* Defined in arm-d.c */ ++extern void arm_d_target_versions (void); ++ + extern bool arm_is_constant_pool_ref (rtx); + + /* The bits in this mask specify which instruction scheduling options should +--- a/src/gcc/config/arm/arm.h ++++ b/src/gcc/config/arm/arm.h +@@ -47,6 +47,9 @@ extern char arm_arch_name[]; + /* Target CPU builtins. */ + #define TARGET_CPU_CPP_BUILTINS() arm_cpu_cpp_builtins (pfile) + ++/* Target CPU versions for D. */ ++#define TARGET_D_CPU_VERSIONS arm_d_target_versions ++ + #include "config/arm/arm-opts.h" + + /* The processor for which instructions should be scheduled. */ +--- a/src/gcc/config/arm/linux-eabi.h ++++ b/src/gcc/config/arm/linux-eabi.h +@@ -30,6 +30,9 @@ + } \ + while (false) + ++#define EXTRA_TARGET_D_OS_VERSIONS() \ ++ ANDROID_TARGET_D_OS_VERSIONS(); ++ + /* We default to a soft-float ABI so that binaries can run on all + target hardware. If you override this to use the hard-float ABI then + change the setting of GLIBC_DYNAMIC_LINKER_DEFAULT as well. */ +--- a/src/gcc/config/arm/t-arm ++++ b/src/gcc/config/arm/t-arm +@@ -144,4 +144,8 @@ arm-c.o: $(srcdir)/config/arm/arm-c.c $( + $(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \ + $(srcdir)/config/arm/arm-c.c + ++arm-d.o: $(srcdir)/config/arm/arm-d.c ++ $(COMPILE) $< ++ $(POSTCOMPILE) ++ + arm-common.o: arm-cpu-cdata.h +--- /dev/null ++++ b/src/gcc/config/default-d.c +@@ -0,0 +1,25 @@ ++/* Default D language target hooks initializer. ++ Copyright (C) 2017 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. ++ ++You should have received a copy of the GNU General Public License ++along with GCC; see the file COPYING3. If not see ++. */ ++ ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++#include "tm_d.h" ++#include "d/d-target.h" ++#include "d/d-target-def.h" ++ ++struct gcc_targetdm targetdm = TARGETDM_INITIALIZER; +--- /dev/null ++++ b/src/gcc/config/glibc-d.c +@@ -0,0 +1,64 @@ ++/* Glibc support needed only by D front-end. ++ Copyright (C) 2017 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. ++ ++You should have received a copy of the GNU General Public License ++along with GCC; see the file COPYING3. If not see ++. */ ++ ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++#include "tm.h" ++#include "memmodel.h" ++#include "tm_p.h" ++#include "d/d-target.h" ++#include "d/d-target-def.h" ++ ++/* Implement TARGET_D_OS_VERSIONS for Glibc targets. */ ++ ++static void ++glibc_d_os_builtins (void) ++{ ++ d_add_builtin_version ("Posix"); ++ ++#define builtin_version(TXT) d_add_builtin_version (TXT) ++ ++#ifdef GNU_USER_TARGET_D_OS_VERSIONS ++ GNU_USER_TARGET_D_OS_VERSIONS (); ++#endif ++ ++#ifdef EXTRA_TARGET_D_OS_VERSIONS ++ EXTRA_TARGET_D_OS_VERSIONS (); ++#endif ++} ++ ++/* Implement TARGET_D_CRITSEC_SIZE for Glibc targets. */ ++ ++static unsigned ++glibc_d_critsec_size (void) ++{ ++ /* This is the sizeof pthread_mutex_t. */ ++#ifdef GNU_USER_TARGET_D_CRITSEC_SIZE ++ return GNU_USER_TARGET_D_CRITSEC_SIZE; ++#else ++ return (POINTER_SIZE == 64) ? 40 : 24; ++#endif ++} ++ ++#undef TARGET_D_OS_VERSIONS ++#define TARGET_D_OS_VERSIONS glibc_d_os_builtins ++ ++#undef TARGET_D_CRITSEC_SIZE ++#define TARGET_D_CRITSEC_SIZE glibc_d_critsec_size ++ ++struct gcc_targetdm targetdm = TARGETDM_INITIALIZER; +--- a/src/gcc/config/gnu.h ++++ b/src/gcc/config/gnu.h +@@ -31,3 +31,9 @@ along with GCC. If not, see . */ ++ ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++#include "tm.h" ++#include "d/d-target.h" ++#include "d/d-target-def.h" ++ ++/* Implement TARGET_D_CPU_VERSIONS for x86 targets. */ ++ ++void ++ix86_d_target_versions (void) ++{ ++ if (TARGET_64BIT) ++ { ++ d_add_builtin_version ("X86_64"); ++ ++ if (TARGET_X32) ++ d_add_builtin_version ("D_X32"); ++ } ++ else ++ d_add_builtin_version ("X86"); ++ ++ if (TARGET_80387) ++ d_add_builtin_version ("D_HardFloat"); ++ else ++ d_add_builtin_version ("D_SoftFloat"); ++} +--- a/src/gcc/config/i386/i386-protos.h ++++ b/src/gcc/config/i386/i386-protos.h +@@ -238,6 +238,9 @@ extern bool ix86_bnd_prefixed_insn_p (rt + extern void ix86_target_macros (void); + extern void ix86_register_pragmas (void); + ++/* In i386-d.c */ ++extern void ix86_d_target_versions (void); ++ + /* In winnt.c */ + extern void i386_pe_unique_section (tree, int); + extern void i386_pe_declare_function_type (FILE *, const char *, int); +--- a/src/gcc/config/i386/i386.h ++++ b/src/gcc/config/i386/i386.h +@@ -705,6 +705,9 @@ extern const char *host_detect_local_cpu + /* Target Pragmas. */ + #define REGISTER_TARGET_PRAGMAS() ix86_register_pragmas () + ++/* Target CPU versions for D. */ ++#define TARGET_D_CPU_VERSIONS ix86_d_target_versions ++ + #ifndef CC1_SPEC + #define CC1_SPEC "%(cc1_cpu) " + #endif +--- a/src/gcc/config/i386/linux-common.h ++++ b/src/gcc/config/i386/linux-common.h +@@ -27,6 +27,12 @@ along with GCC; see the file COPYING3. + } \ + while (0) + ++#define EXTRA_TARGET_D_OS_VERSIONS() \ ++ ANDROID_TARGET_D_OS_VERSIONS(); ++ ++#define GNU_USER_TARGET_D_CRITSEC_SIZE \ ++ (TARGET_64BIT ? (POINTER_SIZE == 64 ? 40 : 32) : 24) ++ + #undef CC1_SPEC + #define CC1_SPEC \ + LINUX_OR_ANDROID_CC (GNU_USER_TARGET_CC1_SPEC, \ +--- a/src/gcc/config/i386/t-i386 ++++ b/src/gcc/config/i386/t-i386 +@@ -40,6 +40,10 @@ x86-tune-sched-core.o: $(srcdir)/config/ + $(COMPILE) $< + $(POSTCOMPILE) + ++i386-d.o: $(srcdir)/config/i386/i386-d.c ++ $(COMPILE) $< ++ $(POSTCOMPILE) ++ + i386.o: i386-builtin-types.inc + + i386-builtin-types.inc: s-i386-bt ; @true +--- a/src/gcc/config/kfreebsd-gnu.h ++++ b/src/gcc/config/kfreebsd-gnu.h +@@ -29,6 +29,12 @@ along with GCC; see the file COPYING3. + } \ + while (0) + ++#define GNU_USER_TARGET_D_OS_VERSIONS() \ ++ do { \ ++ builtin_version ("FreeBSD"); \ ++ builtin_version ("CRuntime_Glibc"); \ ++ } while (0) ++ + #define GNU_USER_DYNAMIC_LINKER GLIBC_DYNAMIC_LINKER + #define GNU_USER_DYNAMIC_LINKER32 GLIBC_DYNAMIC_LINKER32 + #define GNU_USER_DYNAMIC_LINKER64 GLIBC_DYNAMIC_LINKER64 +--- a/src/gcc/config/kopensolaris-gnu.h ++++ b/src/gcc/config/kopensolaris-gnu.h +@@ -30,5 +30,11 @@ along with GCC; see the file COPYING3. + } \ + while (0) + ++#define GNU_USER_TARGET_D_OS_VERSIONS() \ ++ do { \ ++ builtin_version ("Solaris"); \ ++ builtin_version ("CRuntime_Glibc"); \ ++ } while (0) ++ + #undef GNU_USER_DYNAMIC_LINKER + #define GNU_USER_DYNAMIC_LINKER "/lib/ld.so.1" +--- a/src/gcc/config/linux-android.h ++++ b/src/gcc/config/linux-android.h +@@ -25,6 +25,12 @@ + builtin_define ("__ANDROID__"); \ + } while (0) + ++#define ANDROID_TARGET_D_OS_VERSIONS() \ ++ do { \ ++ if (TARGET_ANDROID) \ ++ builtin_version ("Android"); \ ++ } while (0) ++ + #if ANDROID_DEFAULT + # define NOANDROID "mno-android" + #else +--- a/src/gcc/config/linux.h ++++ b/src/gcc/config/linux.h +@@ -53,6 +53,19 @@ see the files COPYING3 and COPYING.RUNTI + builtin_assert ("system=posix"); \ + } while (0) + ++#define GNU_USER_TARGET_D_OS_VERSIONS() \ ++ do { \ ++ builtin_version ("linux"); \ ++ if (OPTION_GLIBC) \ ++ builtin_version ("CRuntime_Glibc"); \ ++ else if (OPTION_UCLIBC) \ ++ d_add_builtin_version ("CRuntime_UClibc"); \ ++ else if (OPTION_BIONIC) \ ++ d_add_builtin_version ("CRuntime_Bionic"); \ ++ else if (OPTION_MUSL) \ ++ d_add_builtin_version ("CRuntime_Musl"); \ ++ } while (0) ++ + /* Determine which dynamic linker to use depending on whether GLIBC or + uClibc or Bionic or musl is the default C library and whether + -muclibc or -mglibc or -mbionic or -mmusl has been passed to change +--- a/src/gcc/config/mips/linux-common.h ++++ b/src/gcc/config/mips/linux-common.h +@@ -27,6 +27,9 @@ along with GCC; see the file COPYING3. + ANDROID_TARGET_OS_CPP_BUILTINS(); \ + } while (0) + ++#define EXTRA_TARGET_D_OS_VERSIONS() \ ++ ANDROID_TARGET_D_OS_VERSIONS(); ++ + #undef LINK_SPEC + #define LINK_SPEC \ + LINUX_OR_ANDROID_LD (GNU_USER_TARGET_LINK_SPEC, \ +--- /dev/null ++++ b/src/gcc/config/mips/mips-d.c +@@ -0,0 +1,56 @@ ++/* Subroutines for the D front end on the MIPS architecture. ++ Copyright (C) 2017 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. ++ ++You should have received a copy of the GNU General Public License ++along with GCC; see the file COPYING3. If not see ++. */ ++ ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++#include "tm.h" ++#include "d/d-target.h" ++#include "d/d-target-def.h" ++ ++/* Implement TARGET_D_CPU_VERSIONS for MIPS targets. */ ++ ++void ++mips_d_target_versions (void) ++{ ++ if (TARGET_64BIT) ++ d_add_builtin_version ("MIPS64"); ++ else ++ d_add_builtin_version ("MIPS32"); ++ ++ if (mips_abi == ABI_32) ++ d_add_builtin_version ("MIPS_O32"); ++ else if (mips_abi == ABI_EABI) ++ d_add_builtin_version ("MIPS_EABI"); ++ else if (mips_abi == ABI_N32) ++ d_add_builtin_version ("MIPS_N32"); ++ else if (mips_abi == ABI_64) ++ d_add_builtin_version ("MIPS_N64"); ++ else if (mips_abi == ABI_O64) ++ d_add_builtin_version ("MIPS_O64"); ++ ++ if (TARGET_HARD_FLOAT_ABI) ++ { ++ d_add_builtin_version ("MIPS_HardFloat"); ++ d_add_builtin_version ("D_HardFloat"); ++ } ++ else if (TARGET_SOFT_FLOAT_ABI) ++ { ++ d_add_builtin_version ("MIPS_SoftFloat"); ++ d_add_builtin_version ("D_SoftFloat"); ++ } ++} +--- a/src/gcc/config/mips/mips-protos.h ++++ b/src/gcc/config/mips/mips-protos.h +@@ -385,4 +385,7 @@ extern mulsidi3_gen_fn mips_mulsidi3_gen + extern void mips_register_frame_header_opt (void); + extern void mips_expand_vec_cond_expr (machine_mode, machine_mode, rtx *); + ++/* Routines implemented in mips-d.c */ ++extern void mips_d_target_versions (void); ++ + #endif /* ! GCC_MIPS_PROTOS_H */ +--- a/src/gcc/config/mips/mips.h ++++ b/src/gcc/config/mips/mips.h +@@ -644,6 +644,9 @@ struct mips_cpu_info { + } \ + while (0) + ++/* Target CPU versions for D. */ ++#define TARGET_D_CPU_VERSIONS mips_d_target_versions ++ + /* Default target_flags if no switches are specified */ + + #ifndef TARGET_DEFAULT +--- a/src/gcc/config/mips/t-mips ++++ b/src/gcc/config/mips/t-mips +@@ -24,3 +24,7 @@ $(srcdir)/config/mips/mips-tables.opt: $ + frame-header-opt.o: $(srcdir)/config/mips/frame-header-opt.c + $(COMPILE) $< + $(POSTCOMPILE) ++ ++mips-d.o: $(srcdir)/config/mips/mips-d.c ++ $(COMPILE) $< ++ $(POSTCOMPILE) +--- a/src/gcc/config/powerpcspe/linux.h ++++ b/src/gcc/config/powerpcspe/linux.h +@@ -57,6 +57,19 @@ + } \ + while (0) + ++#define GNU_USER_TARGET_D_OS_VERSIONS() \ ++ do { \ ++ builtin_version ("linux"); \ ++ if (OPTION_GLIBC) \ ++ builtin_version ("CRuntime_Glibc"); \ ++ else if (OPTION_UCLIBC) \ ++ d_add_builtin_version ("CRuntime_UClibc"); \ ++ else if (OPTION_BIONIC) \ ++ d_add_builtin_version ("CRuntime_Bionic"); \ ++ else if (OPTION_MUSL) \ ++ d_add_builtin_version ("CRuntime_Musl"); \ ++ } while (0) ++ + #undef CPP_OS_DEFAULT_SPEC + #define CPP_OS_DEFAULT_SPEC "%(cpp_os_linux)" + +--- a/src/gcc/config/powerpcspe/linux64.h ++++ b/src/gcc/config/powerpcspe/linux64.h +@@ -391,6 +391,19 @@ extern int dot_symbols; + } \ + while (0) + ++#define GNU_USER_TARGET_D_OS_VERSIONS() \ ++ do { \ ++ builtin_version ("linux"); \ ++ if (OPTION_GLIBC) \ ++ builtin_version ("CRuntime_Glibc"); \ ++ else if (OPTION_UCLIBC) \ ++ d_add_builtin_version ("CRuntime_UClibc"); \ ++ else if (OPTION_BIONIC) \ ++ d_add_builtin_version ("CRuntime_Bionic"); \ ++ else if (OPTION_MUSL) \ ++ d_add_builtin_version ("CRuntime_Musl"); \ ++ } while (0) ++ + #undef CPP_OS_DEFAULT_SPEC + #define CPP_OS_DEFAULT_SPEC "%(cpp_os_linux) %(include_extra)" + +--- /dev/null ++++ b/src/gcc/config/powerpcspe/powerpcspe-d.c +@@ -0,0 +1,45 @@ ++/* Subroutines for the D front end on the PowerPC architecture. ++ Copyright (C) 2017 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. ++ ++You should have received a copy of the GNU General Public License ++along with GCC; see the file COPYING3. If not see ++. */ ++ ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++#include "tm.h" ++#include "d/d-target.h" ++#include "d/d-target-def.h" ++ ++/* Implement TARGET_D_CPU_VERSIONS for PowerPC targets. */ ++ ++void ++rs6000_d_target_versions (void) ++{ ++ if (TARGET_64BIT) ++ d_add_builtin_version ("PPC64"); ++ else ++ d_add_builtin_version ("PPC"); ++ ++ if (TARGET_HARD_FLOAT) ++ { ++ d_add_builtin_version ("PPC_HardFloat"); ++ d_add_builtin_version ("D_HardFloat"); ++ } ++ else if (TARGET_SOFT_FLOAT) ++ { ++ d_add_builtin_version ("PPC_SoftFloat"); ++ d_add_builtin_version ("D_SoftFloat"); ++ } ++} +--- a/src/gcc/config/powerpcspe/powerpcspe-protos.h ++++ b/src/gcc/config/powerpcspe/powerpcspe-protos.h +@@ -231,6 +231,9 @@ extern void rs6000_target_modify_macros + extern void (*rs6000_target_modify_macros_ptr) (bool, HOST_WIDE_INT, + HOST_WIDE_INT); + ++/* Declare functions in powerpcspe-d.c */ ++extern void rs6000_d_target_versions (void); ++ + #if TARGET_MACHO + char *output_call (rtx_insn *, rtx *, int, int); + #endif +--- a/src/gcc/config/powerpcspe/powerpcspe.h ++++ b/src/gcc/config/powerpcspe/powerpcspe.h +@@ -829,6 +829,9 @@ extern unsigned char rs6000_recip_bits[] + #define TARGET_CPU_CPP_BUILTINS() \ + rs6000_cpu_cpp_builtins (pfile) + ++/* Target CPU versions for D. */ ++#define TARGET_D_CPU_VERSIONS rs6000_d_target_versions ++ + /* This is used by rs6000_cpu_cpp_builtins to indicate the byte order + we're compiling for. Some configurations may need to override it. */ + #define RS6000_CPU_CPP_ENDIAN_BUILTINS() \ +--- a/src/gcc/config/powerpcspe/t-powerpcspe ++++ b/src/gcc/config/powerpcspe/t-powerpcspe +@@ -26,6 +26,10 @@ powerpcspe-c.o: $(srcdir)/config/powerpc + $(COMPILE) $< + $(POSTCOMPILE) + ++powerpcspe-d.o: $(srcdir)/config/powerpcspe/powerpcspe-d.c ++ $(COMPILE) $< ++ $(POSTCOMPILE) ++ + $(srcdir)/config/powerpcspe/powerpcspe-tables.opt: $(srcdir)/config/powerpcspe/genopt.sh \ + $(srcdir)/config/powerpcspe/powerpcspe-cpus.def + $(SHELL) $(srcdir)/config/powerpcspe/genopt.sh $(srcdir)/config/powerpcspe > \ +--- a/src/gcc/config/rs6000/linux.h ++++ b/src/gcc/config/rs6000/linux.h +@@ -57,6 +57,19 @@ + } \ + while (0) + ++#define GNU_USER_TARGET_D_OS_VERSIONS() \ ++ do { \ ++ builtin_version ("linux"); \ ++ if (OPTION_GLIBC) \ ++ builtin_version ("CRuntime_Glibc"); \ ++ else if (OPTION_UCLIBC) \ ++ d_add_builtin_version ("CRuntime_UClibc"); \ ++ else if (OPTION_BIONIC) \ ++ d_add_builtin_version ("CRuntime_Bionic"); \ ++ else if (OPTION_MUSL) \ ++ d_add_builtin_version ("CRuntime_Musl"); \ ++ } while (0) ++ + #undef CPP_OS_DEFAULT_SPEC + #define CPP_OS_DEFAULT_SPEC "%(cpp_os_linux)" + +--- a/src/gcc/config/rs6000/linux64.h ++++ b/src/gcc/config/rs6000/linux64.h +@@ -391,6 +391,19 @@ extern int dot_symbols; + } \ + while (0) + ++#define GNU_USER_TARGET_D_OS_VERSIONS() \ ++ do { \ ++ builtin_version ("linux"); \ ++ if (OPTION_GLIBC) \ ++ builtin_version ("CRuntime_Glibc"); \ ++ else if (OPTION_UCLIBC) \ ++ d_add_builtin_version ("CRuntime_UClibc"); \ ++ else if (OPTION_BIONIC) \ ++ d_add_builtin_version ("CRuntime_Bionic"); \ ++ else if (OPTION_MUSL) \ ++ d_add_builtin_version ("CRuntime_Musl"); \ ++ } while (0) ++ + #undef CPP_OS_DEFAULT_SPEC + #define CPP_OS_DEFAULT_SPEC "%(cpp_os_linux) %(include_extra)" + +--- /dev/null ++++ b/src/gcc/config/rs6000/rs6000-d.c +@@ -0,0 +1,45 @@ ++/* Subroutines for the D front end on the PowerPC architecture. ++ Copyright (C) 2017 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. ++ ++You should have received a copy of the GNU General Public License ++along with GCC; see the file COPYING3. If not see ++. */ ++ ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++#include "tm.h" ++#include "d/d-target.h" ++#include "d/d-target-def.h" ++ ++/* Implement TARGET_D_CPU_VERSIONS for PowerPC targets. */ ++ ++void ++rs6000_d_target_versions (void) ++{ ++ if (TARGET_64BIT) ++ d_add_builtin_version ("PPC64"); ++ else ++ d_add_builtin_version ("PPC"); ++ ++ if (TARGET_HARD_FLOAT) ++ { ++ d_add_builtin_version ("PPC_HardFloat"); ++ d_add_builtin_version ("D_HardFloat"); ++ } ++ else if (TARGET_SOFT_FLOAT) ++ { ++ d_add_builtin_version ("PPC_SoftFloat"); ++ d_add_builtin_version ("D_SoftFloat"); ++ } ++} +--- a/src/gcc/config/rs6000/rs6000-protos.h ++++ b/src/gcc/config/rs6000/rs6000-protos.h +@@ -233,6 +233,9 @@ extern void rs6000_target_modify_macros + extern void (*rs6000_target_modify_macros_ptr) (bool, HOST_WIDE_INT, + HOST_WIDE_INT); + ++/* Declare functions in rs6000-d.c */ ++extern void rs6000_d_target_versions (void); ++ + #if TARGET_MACHO + char *output_call (rtx_insn *, rtx *, int, int); + #endif +--- a/src/gcc/config/rs6000/rs6000.h ++++ b/src/gcc/config/rs6000/rs6000.h +@@ -800,6 +800,9 @@ extern unsigned char rs6000_recip_bits[] + #define TARGET_CPU_CPP_BUILTINS() \ + rs6000_cpu_cpp_builtins (pfile) + ++/* Target CPU versions for D. */ ++#define TARGET_D_CPU_VERSIONS rs6000_d_target_versions ++ + /* This is used by rs6000_cpu_cpp_builtins to indicate the byte order + we're compiling for. Some configurations may need to override it. */ + #define RS6000_CPU_CPP_ENDIAN_BUILTINS() \ +--- a/src/gcc/config/rs6000/t-rs6000 ++++ b/src/gcc/config/rs6000/t-rs6000 +@@ -35,6 +35,10 @@ rs6000-p8swap.o: $(srcdir)/config/rs6000 + $(COMPILE) $< + $(POSTCOMPILE) + ++rs6000-d.o: $(srcdir)/config/rs6000/rs6000-d.c ++ $(COMPILE) $< ++ $(POSTCOMPILE) ++ + $(srcdir)/config/rs6000/rs6000-tables.opt: $(srcdir)/config/rs6000/genopt.sh \ + $(srcdir)/config/rs6000/rs6000-cpus.def + $(SHELL) $(srcdir)/config/rs6000/genopt.sh $(srcdir)/config/rs6000 > \ +--- /dev/null ++++ b/src/gcc/config/s390/s390-d.c +@@ -0,0 +1,41 @@ ++/* Subroutines for the D front end on the IBM S/390 and zSeries architectures. ++ Copyright (C) 2017 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. ++ ++You should have received a copy of the GNU General Public License ++along with GCC; see the file COPYING3. If not see ++. */ ++ ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++#include "tm.h" ++#include "d/d-target.h" ++#include "d/d-target-def.h" ++ ++/* Implement TARGET_D_CPU_VERSIONS for S/390 and zSeries targets. */ ++ ++void ++s390_d_target_versions (void) ++{ ++ if (TARGET_ZARCH) ++ d_add_builtin_version ("SystemZ"); ++ else if (TARGET_64BIT) ++ d_add_builtin_version ("S390X"); ++ else ++ d_add_builtin_version ("S390"); ++ ++ if (TARGET_SOFT_FLOAT) ++ d_add_builtin_version ("D_SoftFloat"); ++ else if (TARGET_HARD_FLOAT) ++ d_add_builtin_version ("D_HardFloat"); ++} +--- a/src/gcc/config/s390/s390-protos.h ++++ b/src/gcc/config/s390/s390-protos.h +@@ -165,3 +165,6 @@ extern void s390_register_target_pragmas + + /* Routines for s390-c.c */ + extern bool s390_const_operand_ok (tree, int, int, tree); ++ ++/* Routines for s390-d.c */ ++extern void s390_d_target_versions (void); +--- a/src/gcc/config/s390/s390.h ++++ b/src/gcc/config/s390/s390.h +@@ -194,6 +194,9 @@ enum processor_flags + /* Target CPU builtins. */ + #define TARGET_CPU_CPP_BUILTINS() s390_cpu_cpp_builtins (pfile) + ++/* Target CPU versions for D. */ ++#define TARGET_D_CPU_VERSIONS s390_d_target_versions ++ + #ifdef DEFAULT_TARGET_64BIT + #define TARGET_DEFAULT (MASK_64BIT | MASK_ZARCH | MASK_HARD_DFP \ + | MASK_OPT_HTM | MASK_OPT_VX) +--- a/src/gcc/config/s390/t-s390 ++++ b/src/gcc/config/s390/t-s390 +@@ -25,3 +25,7 @@ s390-c.o: $(srcdir)/config/s390/s390-c.c + $(TARGET_H) $(TARGET_DEF_H) $(CPPLIB_H) $(C_PRAGMA_H) + $(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \ + $(srcdir)/config/s390/s390-c.c ++ ++s390-d.o: $(srcdir)/config/s390/s390-d.c ++ $(COMPILE) $< ++ $(POSTCOMPILE) +--- /dev/null ++++ b/src/gcc/config/sparc/sparc-d.c +@@ -0,0 +1,48 @@ ++/* Subroutines for the D front end on the SPARC architecture. ++ Copyright (C) 2017 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. ++ ++You should have received a copy of the GNU General Public License ++along with GCC; see the file COPYING3. If not see ++. */ ++ ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++#include "tm.h" ++#include "d/d-target.h" ++#include "d/d-target-def.h" ++ ++/* Implement TARGET_D_CPU_VERSIONS for SPARC targets. */ ++ ++void ++sparc_d_target_versions (void) ++{ ++ if (TARGET_64BIT) ++ d_add_builtin_version ("SPARC64"); ++ else ++ d_add_builtin_version ("SPARC"); ++ ++ if (TARGET_V8PLUS) ++ d_add_builtin_version ("SPARC_V8Plus"); ++ ++ if (TARGET_FPU) ++ { ++ d_add_builtin_version ("D_HardFloat"); ++ d_add_builtin_version ("SPARC_HardFloat"); ++ } ++ else ++ { ++ d_add_builtin_version ("D_SoftFloat"); ++ d_add_builtin_version ("SPARC_SoftFloat"); ++ } ++} +--- a/src/gcc/config/sparc/sparc-protos.h ++++ b/src/gcc/config/sparc/sparc-protos.h +@@ -111,4 +111,7 @@ unsigned int sparc_regmode_natural_size + + extern rtl_opt_pass *make_pass_work_around_errata (gcc::context *); + ++/* Routines implemented in sparc-d.c */ ++extern void sparc_d_target_versions (void); ++ + #endif /* __SPARC_PROTOS_H__ */ +--- a/src/gcc/config/sparc/sparc.h ++++ b/src/gcc/config/sparc/sparc.h +@@ -27,6 +27,9 @@ along with GCC; see the file COPYING3. + + #define TARGET_CPU_CPP_BUILTINS() sparc_target_macros () + ++/* Target CPU versions for D. */ ++#define TARGET_D_CPU_VERSIONS sparc_d_target_versions ++ + /* Specify this in a cover file to provide bi-architecture (32/64) support. */ + /* #define SPARC_BI_ARCH */ + +--- a/src/gcc/config/sparc/t-sparc ++++ b/src/gcc/config/sparc/t-sparc +@@ -23,3 +23,7 @@ PASSES_EXTRA += $(srcdir)/config/sparc/s + sparc-c.o: $(srcdir)/config/sparc/sparc-c.c + $(COMPILE) $< + $(POSTCOMPILE) ++ ++sparc-d.o: $(srcdir)/config/sparc/sparc-d.c ++ $(COMPILE) $< ++ $(POSTCOMPILE) +--- a/src/gcc/config/t-glibc ++++ b/src/gcc/config/t-glibc +@@ -19,3 +19,7 @@ + glibc-c.o: config/glibc-c.c + $(COMPILE) $< + $(POSTCOMPILE) ++ ++glibc-d.o: config/glibc-d.c ++ $(COMPILE) $< ++ $(POSTCOMPILE) +--- a/src/gcc/configure ++++ b/src/gcc/configure +@@ -612,6 +612,7 @@ ISLLIBS + GMPINC + GMPLIBS + target_cpu_default ++d_target_objs + fortran_target_objs + cxx_target_objs + c_target_objs +@@ -619,6 +620,8 @@ use_gcc_stdint + xm_defines + xm_include_list + xm_file_list ++tm_d_include_list ++tm_d_file_list + tm_p_include_list + tm_p_file_list + tm_defines +@@ -11810,6 +11813,7 @@ fi + + tm_file="${tm_file} defaults.h" + tm_p_file="${tm_p_file} tm-preds.h" ++tm_d_file="${tm_d_file} defaults.h" + host_xm_file="auto-host.h ansidecl.h ${host_xm_file}" + build_xm_file="${build_auto} ansidecl.h ${build_xm_file}" + # We don't want ansidecl.h in target files, write code there in ISO/GNU C. +@@ -12179,6 +12183,21 @@ for f in $tm_p_file; do + esac + done + ++tm_d_file_list= ++tm_d_include_list="options.h insn-constants.h" ++for f in $tm_d_file; do ++ case $f in ++ defaults.h ) ++ tm_d_file_list="${tm_d_file_list} \$(srcdir)/$f" ++ tm_d_include_list="${tm_d_include_list} $f" ++ ;; ++ * ) ++ tm_d_file_list="${tm_d_file_list} \$(srcdir)/config/$f" ++ tm_d_include_list="${tm_d_include_list} config/$f" ++ ;; ++ esac ++done ++ + xm_file_list= + xm_include_list= + for f in $xm_file; do +--- a/src/gcc/configure.ac ++++ b/src/gcc/configure.ac +@@ -1725,6 +1725,7 @@ AC_SUBST(build_subdir) + + tm_file="${tm_file} defaults.h" + tm_p_file="${tm_p_file} tm-preds.h" ++tm_d_file="${tm_d_file} defaults.h" + host_xm_file="auto-host.h ansidecl.h ${host_xm_file}" + build_xm_file="${build_auto} ansidecl.h ${build_xm_file}" + # We don't want ansidecl.h in target files, write code there in ISO/GNU C. +@@ -1947,6 +1948,21 @@ for f in $tm_p_file; do + esac + done + ++tm_d_file_list= ++tm_d_include_list="options.h insn-constants.h" ++for f in $tm_d_file; do ++ case $f in ++ defaults.h ) ++ tm_d_file_list="${tm_d_file_list} \$(srcdir)/$f" ++ tm_d_include_list="${tm_d_include_list} $f" ++ ;; ++ * ) ++ tm_d_file_list="${tm_d_file_list} \$(srcdir)/config/$f" ++ tm_d_include_list="${tm_d_include_list} config/$f" ++ ;; ++ esac ++done ++ + xm_file_list= + xm_include_list= + for f in $xm_file; do +@@ -6390,6 +6406,8 @@ AC_SUBST(tm_include_list) + AC_SUBST(tm_defines) + AC_SUBST(tm_p_file_list) + AC_SUBST(tm_p_include_list) ++AC_SUBST(tm_d_file_list) ++AC_SUBST(tm_d_include_list) + AC_SUBST(xm_file_list) + AC_SUBST(xm_include_list) + AC_SUBST(xm_defines) +@@ -6397,6 +6415,7 @@ AC_SUBST(use_gcc_stdint) + AC_SUBST(c_target_objs) + AC_SUBST(cxx_target_objs) + AC_SUBST(fortran_target_objs) ++AC_SUBST(d_target_objs) + AC_SUBST(target_cpu_default) + + AC_SUBST_FILE(language_hooks) +--- a/src/gcc/genhooks.c ++++ b/src/gcc/genhooks.c +@@ -34,6 +34,7 @@ static struct hook_desc hook_array[] = { + #include "target.def" + #include "c-family/c-target.def" + #include "common/common-target.def" ++#include "d/d-target.def" + #undef DEFHOOK + }; + --- gcc-8-8.3.0.orig/debian/patches/gdc-texinfo.diff +++ gcc-8-8.3.0/debian/patches/gdc-texinfo.diff @@ -0,0 +1,55 @@ +# DP: Add macros for the gdc texinfo documentation. + +Index: b/src/gcc/d/gdc.texi +=================================================================== +--- a/src/gcc/d/gdc.texi ++++ b/src/gcc/d/gdc.texi +@@ -57,6 +57,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 +@@ -138,6 +154,25 @@ the options specific to @command{gdc}. + * Developer Options:: Options you won't use + @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 --- gcc-8-8.3.0.orig/debian/patches/gdc-updates.diff +++ gcc-8-8.3.0/debian/patches/gdc-updates.diff @@ -0,0 +1,30 @@ +# DP: gdc updates up to 20160115. + + * Make-lang.in (d-warn): Filter out -Wmissing-format-attribute. + +Index: b/src/gcc/d/Make-lang.in +=================================================================== +--- 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)) +Index: b/src/libphobos/src/std/internal/math/gammafunction.d +=================================================================== +--- 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; --- gcc-8-8.3.0.orig/debian/patches/go-testsuite.diff +++ gcc-8-8.3.0/debian/patches/go-testsuite.diff @@ -0,0 +1,21 @@ +# DP: Skip Go testcase on AArch64 which hangs on the buildds. + +Index: b/src/gcc/testsuite/go.test/go-test.exp +=================================================================== +--- a/src/gcc/testsuite/go.test/go-test.exp ++++ b/src/gcc/testsuite/go.test/go-test.exp +@@ -405,6 +405,14 @@ proc go-gc-tests { } { + continue + } + ++ # Hangs on the buildds ++ if { [istarget "aarch64*-*-*"] } { ++ if { [string match "*go.test/test/chan/select5.go" $test] } { ++ untested $test ++ continue ++ } ++ } ++ + if { [file tail $test] == "init1.go" } { + # This tests whether GC runs during init, which for gccgo + # it currently does not. --- gcc-8-8.3.0.orig/debian/patches/hurd-changes.diff +++ gcc-8-8.3.0/debian/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 (rvision 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. --- gcc-8-8.3.0.orig/debian/patches/ia64-disable-selective-scheduling.diff +++ gcc-8-8.3.0/debian/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, --- gcc-8-8.3.0.orig/debian/patches/ignore-pie-specs-when-not-enabled.diff +++ gcc-8-8.3.0/debian/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); + --- gcc-8-8.3.0.orig/debian/patches/kfreebsd-decimal-float.diff +++ gcc-8-8.3.0/debian/patches/kfreebsd-decimal-float.diff @@ -0,0 +1,51 @@ +# DP: Enable decimal float support on kfreebsd-amd64 + +Index: b/src/gcc/configure.ac +=================================================================== +--- a/src/gcc/configure.ac ++++ b/src/gcc/configure.ac +@@ -817,6 +817,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` +Index: b/src/config/dfp.m4 +=================================================================== +--- a/src/config/dfp.m4 ++++ b/src/config/dfp.m4 +@@ -21,7 +21,7 @@ Valid choices are 'yes', 'bid', 'dpd', a + [ + case $1 in + powerpc*-*-linux* | i?86*-*-linux* | x86_64*-*-linux* | s390*-*-linux* | \ +- i?86*-*-elfiamcu | i?86*-*-gnu* | \ ++ i?86*-*-elfiamcu | i?86*-*-gnu* | x86_64*-*-gnu* | \ + i?86*-*-mingw* | x86_64*-*-mingw* | \ + i?86*-*-cygwin* | x86_64*-*-cygwin*) + enable_decimal_float=yes +Index: b/src/libdecnumber/configure.ac +=================================================================== +--- a/src/libdecnumber/configure.ac ++++ b/src/libdecnumber/configure.ac +@@ -77,6 +77,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]) +Index: b/src/libgcc/configure.ac +=================================================================== +--- a/src/libgcc/configure.ac ++++ b/src/libgcc/configure.ac +@@ -207,6 +207,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 --- gcc-8-8.3.0.orig/debian/patches/kfreebsd-unwind.diff +++ gcc-8-8.3.0/debian/patches/kfreebsd-unwind.diff @@ -0,0 +1,48 @@ +# DP: DWARF2 EH unwinding support for AMD x86-64 and x86 KFreeBSD. + +Index: b/src/libgcc/config.host +=================================================================== +--- a/src/libgcc/config.host ++++ b/src/libgcc/config.host +@@ -647,7 +647,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" +@@ -662,6 +668,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*) + ;; +Index: b/src/libgcc/config/i386/freebsd-unwind.h +=================================================================== +--- 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 */ --- gcc-8-8.3.0.orig/debian/patches/libasan-sparc.diff +++ gcc-8-8.3.0/debian/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 + --- gcc-8-8.3.0.orig/debian/patches/libffi-mips.diff +++ gcc-8-8.3.0/debian/patches/libffi-mips.diff @@ -0,0 +1,711 @@ +# DP: Backport Mips go closure support, taken from libffi issue #197. + +Index: b/src/libffi/src/mips/ffi.c +=================================================================== +--- 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 */ +Index: b/src/libffi/src/mips/ffitarget.h +=================================================================== +--- 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 +Index: b/src/libffi/src/mips/n32.S +=================================================================== +--- 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 +Index: b/src/libffi/src/mips/o32.S +=================================================================== +--- 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 --- gcc-8-8.3.0.orig/debian/patches/libffi-mipsen-r6.diff +++ gcc-8-8.3.0/debian/patches/libffi-mipsen-r6.diff @@ -0,0 +1,44 @@ +# DP: libffi: mips/n32.S: disable .set mips4 on mips r6 + +Index: b/src/libffi/src/mips/n32.S +=================================================================== +--- 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 +Index: b/src/libffi/src/mips/ffi.c +=================================================================== +--- 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); + --- gcc-8-8.3.0.orig/debian/patches/libffi-pax.diff +++ gcc-8-8.3.0/debian/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 +@@ -177,12 +177,17 @@ + ;; + 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 @@ + + #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 @@ + 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 @@ + 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 @@ + + #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 @@ + 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); + --- gcc-8-8.3.0.orig/debian/patches/libffi-race-condition.diff +++ gcc-8-8.3.0/debian/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 @@ + 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 --- gcc-8-8.3.0.orig/debian/patches/libffi-riscv.diff +++ gcc-8-8.3.0/debian/patches/libffi-riscv.diff @@ -0,0 +1,872 @@ +# DP: Backport RISC-V support, taken from libffi commit 3840d49aaa + +Index: b/src/libffi/Makefile.am +=================================================================== +--- a/src/libffi/Makefile.am ++++ b/src/libffi/Makefile.am +@@ -138,6 +138,7 @@ noinst_HEADERS = \ + src/or1k/ffitarget.h \ + src/pa/ffitarget.h \ + src/powerpc/ffitarget.h src/powerpc/asm.h src/powerpc/ffi_powerpc.h \ ++ src/riscv/ffitarget.h \ + src/s390/ffitarget.h \ + src/sh/ffitarget.h \ + src/sh64/ffitarget.h \ +@@ -173,6 +174,7 @@ EXTRA_libffi_la_SOURCES = \ + src/powerpc/linux64_closure.S src/powerpc/ppc_closure.S \ + src/powerpc/aix.S src/powerpc/darwin.S src/powerpc/aix_closure.S \ + src/powerpc/darwin_closure.S src/powerpc/ffi_darwin.c \ ++ src/riscv/ffi.c src/riscv/sysv.S \ + src/s390/ffi.c src/s390/sysv.S \ + src/sh/ffi.c src/sh/sysv.S \ + src/sh64/ffi.c src/sh64/sysv.S \ +Index: b/src/libffi/Makefile.in +=================================================================== +--- a/src/libffi/Makefile.in ++++ b/src/libffi/Makefile.in +@@ -432,6 +432,7 @@ noinst_HEADERS = \ + src/or1k/ffitarget.h \ + src/pa/ffitarget.h \ + src/powerpc/ffitarget.h src/powerpc/asm.h src/powerpc/ffi_powerpc.h \ ++ src/riscv/ffitarget.h \ + src/s390/ffitarget.h \ + src/sh/ffitarget.h \ + src/sh64/ffitarget.h \ +@@ -467,6 +468,7 @@ EXTRA_libffi_la_SOURCES = \ + src/powerpc/linux64_closure.S src/powerpc/ppc_closure.S \ + src/powerpc/aix.S src/powerpc/darwin.S src/powerpc/aix_closure.S \ + src/powerpc/darwin_closure.S src/powerpc/ffi_darwin.c \ ++ src/riscv/ffi.c src/riscv/sysv.S \ + src/s390/ffi.c src/s390/sysv.S \ + src/sh/ffi.c src/sh/sysv.S \ + src/sh64/ffi.c src/sh64/sysv.S \ +@@ -831,6 +833,16 @@ src/powerpc/darwin_closure.lo: src/power + src/powerpc/$(DEPDIR)/$(am__dirstamp) + src/powerpc/ffi_darwin.lo: src/powerpc/$(am__dirstamp) \ + src/powerpc/$(DEPDIR)/$(am__dirstamp) ++src/riscv/$(am__dirstamp): ++ @$(MKDIR_P) src/riscv ++ @: > src/riscv/$(am__dirstamp) ++src/riscv/$(DEPDIR)/$(am__dirstamp): ++ @$(MKDIR_P) src/riscv/$(DEPDIR) ++ @: > src/riscv/$(DEPDIR)/$(am__dirstamp) ++src/riscv/ffi.lo: src/riscv/$(am__dirstamp) \ ++ src/riscv/$(DEPDIR)/$(am__dirstamp) ++src/riscv/sysv.lo: src/riscv/$(am__dirstamp) \ ++ src/riscv/$(DEPDIR)/$(am__dirstamp) + src/s390/$(am__dirstamp): + @$(MKDIR_P) src/s390 + @: > src/s390/$(am__dirstamp) +@@ -1051,6 +1063,10 @@ mostlyclean-compile: + -rm -f src/prep_cif.lo + -rm -f src/raw_api.$(OBJEXT) + -rm -f src/raw_api.lo ++ -rm -f src/riscv/ffi.$(OBJEXT) ++ -rm -f src/riscv/ffi.lo ++ -rm -f src/riscv/sysv.$(OBJEXT) ++ -rm -f src/riscv/sysv.lo + -rm -f src/s390/ffi.$(OBJEXT) + -rm -f src/s390/ffi.lo + -rm -f src/s390/sysv.$(OBJEXT) +@@ -1167,6 +1183,8 @@ distclean-compile: + @AMDEP_TRUE@@am__include@ @am__quote@src/powerpc/$(DEPDIR)/linux64_closure.Plo@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@src/powerpc/$(DEPDIR)/ppc_closure.Plo@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@src/powerpc/$(DEPDIR)/sysv.Plo@am__quote@ ++@AMDEP_TRUE@@am__include@ @am__quote@src/riscv/$(DEPDIR)/ffi.Plo@am__quote@ ++@AMDEP_TRUE@@am__include@ @am__quote@src/riscv/$(DEPDIR)/sysv.Plo@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@src/s390/$(DEPDIR)/ffi.Plo@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@src/s390/$(DEPDIR)/sysv.Plo@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@src/sh/$(DEPDIR)/ffi.Plo@am__quote@ +@@ -1268,6 +1286,7 @@ clean-libtool: + -rm -rf src/or1k/.libs src/or1k/_libs + -rm -rf src/pa/.libs src/pa/_libs + -rm -rf src/powerpc/.libs src/powerpc/_libs ++ -rm -rf src/riscv/.libs src/riscv/_libs + -rm -rf src/s390/.libs src/s390/_libs + -rm -rf src/sh/.libs src/sh/_libs + -rm -rf src/sh64/.libs src/sh64/_libs +@@ -1672,6 +1691,8 @@ distclean-generic: + -rm -f src/pa/$(am__dirstamp) + -rm -f src/powerpc/$(DEPDIR)/$(am__dirstamp) + -rm -f src/powerpc/$(am__dirstamp) ++ -rm -f src/riscv/$(DEPDIR)/$(am__dirstamp) ++ -rm -f src/riscv/$(am__dirstamp) + -rm -f src/s390/$(DEPDIR)/$(am__dirstamp) + -rm -f src/s390/$(am__dirstamp) + -rm -f src/sh/$(DEPDIR)/$(am__dirstamp) +@@ -1701,7 +1722,7 @@ clean-am: clean-aminfo clean-generic cle + + distclean: distclean-multi distclean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) +- -rm -rf src/$(DEPDIR) src/aarch64/$(DEPDIR) src/alpha/$(DEPDIR) src/arc/$(DEPDIR) src/arm/$(DEPDIR) src/avr32/$(DEPDIR) src/bfin/$(DEPDIR) src/cris/$(DEPDIR) src/frv/$(DEPDIR) src/ia64/$(DEPDIR) src/m32r/$(DEPDIR) src/m68k/$(DEPDIR) src/m88k/$(DEPDIR) src/metag/$(DEPDIR) src/microblaze/$(DEPDIR) src/mips/$(DEPDIR) src/moxie/$(DEPDIR) src/nios2/$(DEPDIR) src/or1k/$(DEPDIR) src/pa/$(DEPDIR) src/powerpc/$(DEPDIR) src/s390/$(DEPDIR) src/sh/$(DEPDIR) src/sh64/$(DEPDIR) src/sparc/$(DEPDIR) src/tile/$(DEPDIR) src/vax/$(DEPDIR) src/x86/$(DEPDIR) src/xtensa/$(DEPDIR) ++ -rm -rf src/$(DEPDIR) src/aarch64/$(DEPDIR) src/alpha/$(DEPDIR) src/arc/$(DEPDIR) src/arm/$(DEPDIR) src/avr32/$(DEPDIR) src/bfin/$(DEPDIR) src/cris/$(DEPDIR) src/frv/$(DEPDIR) src/ia64/$(DEPDIR) src/m32r/$(DEPDIR) src/m68k/$(DEPDIR) src/m88k/$(DEPDIR) src/metag/$(DEPDIR) src/microblaze/$(DEPDIR) src/mips/$(DEPDIR) src/moxie/$(DEPDIR) src/nios2/$(DEPDIR) src/or1k/$(DEPDIR) src/pa/$(DEPDIR) src/powerpc/$(DEPDIR) src/riscv/$(DEPDIR) src/s390/$(DEPDIR) src/sh/$(DEPDIR) src/sh64/$(DEPDIR) src/sparc/$(DEPDIR) src/tile/$(DEPDIR) src/vax/$(DEPDIR) src/x86/$(DEPDIR) src/xtensa/$(DEPDIR) + -rm -f Makefile + distclean-am: clean-am distclean-compile distclean-generic \ + distclean-hdr distclean-libtool distclean-tags +@@ -1840,7 +1861,7 @@ installcheck-am: + maintainer-clean: maintainer-clean-multi maintainer-clean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -rf $(top_srcdir)/autom4te.cache +- -rm -rf src/$(DEPDIR) src/aarch64/$(DEPDIR) src/alpha/$(DEPDIR) src/arc/$(DEPDIR) src/arm/$(DEPDIR) src/avr32/$(DEPDIR) src/bfin/$(DEPDIR) src/cris/$(DEPDIR) src/frv/$(DEPDIR) src/ia64/$(DEPDIR) src/m32r/$(DEPDIR) src/m68k/$(DEPDIR) src/m88k/$(DEPDIR) src/metag/$(DEPDIR) src/microblaze/$(DEPDIR) src/mips/$(DEPDIR) src/moxie/$(DEPDIR) src/nios2/$(DEPDIR) src/or1k/$(DEPDIR) src/pa/$(DEPDIR) src/powerpc/$(DEPDIR) src/s390/$(DEPDIR) src/sh/$(DEPDIR) src/sh64/$(DEPDIR) src/sparc/$(DEPDIR) src/tile/$(DEPDIR) src/vax/$(DEPDIR) src/x86/$(DEPDIR) src/xtensa/$(DEPDIR) ++ -rm -rf src/$(DEPDIR) src/aarch64/$(DEPDIR) src/alpha/$(DEPDIR) src/arc/$(DEPDIR) src/arm/$(DEPDIR) src/avr32/$(DEPDIR) src/bfin/$(DEPDIR) src/cris/$(DEPDIR) src/frv/$(DEPDIR) src/ia64/$(DEPDIR) src/m32r/$(DEPDIR) src/m68k/$(DEPDIR) src/m88k/$(DEPDIR) src/metag/$(DEPDIR) src/microblaze/$(DEPDIR) src/mips/$(DEPDIR) src/moxie/$(DEPDIR) src/nios2/$(DEPDIR) src/or1k/$(DEPDIR) src/pa/$(DEPDIR) src/powerpc/$(DEPDIR) src/riscv/$(DEPDIR) src/s390/$(DEPDIR) src/sh/$(DEPDIR) src/sh64/$(DEPDIR) src/sparc/$(DEPDIR) src/tile/$(DEPDIR) src/vax/$(DEPDIR) src/x86/$(DEPDIR) src/xtensa/$(DEPDIR) + -rm -f Makefile + maintainer-clean-am: distclean-am maintainer-clean-aminfo \ + maintainer-clean-generic maintainer-clean-vti +Index: b/src/libffi/configure.host +=================================================================== +--- a/src/libffi/configure.host ++++ b/src/libffi/configure.host +@@ -195,6 +195,11 @@ case "${host}" in + TARGET=POWERPC; TARGETDIR=powerpc + ;; + ++ riscv*-*) ++ TARGET=RISCV; TARGETDIR=riscv ++ SOURCES="ffi.c sysv.S" ++ ;; ++ + s390-*-* | s390x-*-*) + TARGET=S390; TARGETDIR=s390 + SOURCES="ffi.c sysv.S" +Index: b/src/libffi/src/riscv/ffi.c +=================================================================== +--- /dev/null ++++ b/src/libffi/src/riscv/ffi.c +@@ -0,0 +1,445 @@ ++/* ----------------------------------------------------------------------- ++ ffi.c - Copyright (c) 2015 Michael Knyszek ++ 2015 Andrew Waterman ++ 2018 Stef O'Rear ++ Based on MIPS N32/64 port ++ ++ RISC-V Foreign Function Interface ++ ++ 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. ++ ----------------------------------------------------------------------- */ ++ ++#include ++#include ++ ++#include ++#include ++ ++#if __riscv_float_abi_double ++#define ABI_FLEN 64 ++#define ABI_FLOAT double ++#elif __riscv_float_abi_single ++#define ABI_FLEN 32 ++#define ABI_FLOAT float ++#endif ++ ++#define NARGREG 8 ++#define STKALIGN 16 ++#define MAXCOPYARG (2 * sizeof(double)) ++ ++typedef struct call_context ++{ ++#if ABI_FLEN ++ ABI_FLOAT fa[8]; ++#endif ++ size_t a[8]; ++ /* used by the assembly code to in-place construct its own stack frame */ ++ char frame[16]; ++} call_context; ++ ++typedef struct call_builder ++{ ++ call_context *aregs; ++ int used_integer; ++ int used_float; ++ size_t *used_stack; ++} call_builder; ++ ++/* integer (not pointer) less than ABI XLEN */ ++/* FFI_TYPE_INT does not appear to be used */ ++#if __SIZEOF_POINTER__ == 8 ++#define IS_INT(type) ((type) >= FFI_TYPE_UINT8 && (type) <= FFI_TYPE_SINT64) ++#else ++#define IS_INT(type) ((type) >= FFI_TYPE_UINT8 && (type) <= FFI_TYPE_SINT32) ++#endif ++ ++#if ABI_FLEN ++typedef struct { ++ char as_elements, type1, offset2, type2; ++} float_struct_info; ++ ++#if ABI_FLEN >= 64 ++#define IS_FLOAT(type) ((type) >= FFI_TYPE_FLOAT && (type) <= FFI_TYPE_DOUBLE) ++#else ++#define IS_FLOAT(type) ((type) == FFI_TYPE_FLOAT) ++#endif ++ ++static ffi_type **flatten_struct(ffi_type *in, ffi_type **out, ffi_type **out_end) { ++ int i; ++ if (out == out_end) return out; ++ if (in->type != FFI_TYPE_STRUCT) { ++ *(out++) = in; ++ } else { ++ for (i = 0; in->elements[i]; i++) ++ out = flatten_struct(in->elements[i], out, out_end); ++ } ++ return out; ++} ++ ++/* Structs with at most two fields after flattening, one of which is of ++ floating point type, are passed in multiple registers if sufficient ++ registers are available. */ ++static float_struct_info struct_passed_as_elements(call_builder *cb, ffi_type *top) { ++ float_struct_info ret = {0, 0, 0, 0}; ++ ffi_type *fields[3]; ++ int num_floats, num_ints; ++ int num_fields = flatten_struct(top, fields, fields + 3) - fields; ++ ++ if (num_fields == 1) { ++ if (IS_FLOAT(fields[0]->type)) { ++ ret.as_elements = 1; ++ ret.type1 = fields[0]->type; ++ } ++ } else if (num_fields == 2) { ++ num_floats = IS_FLOAT(fields[0]->type) + IS_FLOAT(fields[1]->type); ++ num_ints = IS_INT(fields[0]->type) + IS_INT(fields[1]->type); ++ if (num_floats == 0 || num_floats + num_ints != 2) ++ return ret; ++ if (cb->used_float + num_floats > NARGREG || cb->used_integer + (2 - num_floats) > NARGREG) ++ return ret; ++ if (!IS_FLOAT(fields[0]->type) && !IS_FLOAT(fields[1]->type)) ++ return ret; ++ ++ ret.type1 = fields[0]->type; ++ ret.type2 = fields[1]->type; ++ ret.offset2 = ALIGN(fields[0]->size, fields[1]->alignment); ++ ret.as_elements = 1; ++ } ++ ++ return ret; ++} ++#endif ++ ++/* allocates a single register, float register, or XLEN-sized stack slot to a datum */ ++static void marshal_atom(call_builder *cb, int type, void *data) { ++ size_t value = 0; ++ switch (type) { ++ case FFI_TYPE_UINT8: value = *(uint8_t *)data; break; ++ case FFI_TYPE_SINT8: value = *(int8_t *)data; break; ++ case FFI_TYPE_UINT16: value = *(uint16_t *)data; break; ++ case FFI_TYPE_SINT16: value = *(int16_t *)data; break; ++ /* 32-bit quantities are always sign-extended in the ABI */ ++ case FFI_TYPE_UINT32: value = *(int32_t *)data; break; ++ case FFI_TYPE_SINT32: value = *(int32_t *)data; break; ++#if __SIZEOF_POINTER__ == 8 ++ case FFI_TYPE_UINT64: value = *(uint64_t *)data; break; ++ case FFI_TYPE_SINT64: value = *(int64_t *)data; break; ++#endif ++ case FFI_TYPE_POINTER: value = *(size_t *)data; break; ++ ++ /* float values may be recoded in an implementation-defined way ++ by hardware conforming to 2.1 or earlier, so use asm to ++ reinterpret floats as doubles */ ++#if ABI_FLEN >= 32 ++ case FFI_TYPE_FLOAT: ++ asm("" : "=f"(cb->aregs->fa[cb->used_float++]) : "0"(*(float *)data)); ++ return; ++#endif ++#if ABI_FLEN >= 64 ++ case FFI_TYPE_DOUBLE: ++ asm("" : "=f"(cb->aregs->fa[cb->used_float++]) : "0"(*(double *)data)); ++ return; ++#endif ++ default: FFI_ASSERT(0); break; ++ } ++ ++ if (cb->used_integer == NARGREG) { ++ *cb->used_stack++ = value; ++ } else { ++ cb->aregs->a[cb->used_integer++] = value; ++ } ++} ++ ++static void unmarshal_atom(call_builder *cb, int type, void *data) { ++ size_t value; ++ switch (type) { ++#if ABI_FLEN >= 32 ++ case FFI_TYPE_FLOAT: ++ asm("" : "=f"(*(float *)data) : "0"(cb->aregs->fa[cb->used_float++])); ++ return; ++#endif ++#if ABI_FLEN >= 64 ++ case FFI_TYPE_DOUBLE: ++ asm("" : "=f"(*(double *)data) : "0"(cb->aregs->fa[cb->used_float++])); ++ return; ++#endif ++ } ++ ++ if (cb->used_integer == NARGREG) { ++ value = *cb->used_stack++; ++ } else { ++ value = cb->aregs->a[cb->used_integer++]; ++ } ++ ++ switch (type) { ++ case FFI_TYPE_UINT8: *(uint8_t *)data = value; break; ++ case FFI_TYPE_SINT8: *(uint8_t *)data = value; break; ++ case FFI_TYPE_UINT16: *(uint16_t *)data = value; break; ++ case FFI_TYPE_SINT16: *(uint16_t *)data = value; break; ++ case FFI_TYPE_UINT32: *(uint32_t *)data = value; break; ++ case FFI_TYPE_SINT32: *(uint32_t *)data = value; break; ++#if __SIZEOF_POINTER__ == 8 ++ case FFI_TYPE_UINT64: *(uint64_t *)data = value; break; ++ case FFI_TYPE_SINT64: *(uint64_t *)data = value; break; ++#endif ++ case FFI_TYPE_POINTER: *(size_t *)data = value; break; ++ default: FFI_ASSERT(0); break; ++ } ++} ++ ++/* adds an argument to a call, or a not by reference return value */ ++static void marshal(call_builder *cb, ffi_type *type, int var, void *data) { ++ size_t realign[2]; ++ ++#if ABI_FLEN ++ if (!var && type->type == FFI_TYPE_STRUCT) { ++ float_struct_info fsi = struct_passed_as_elements(cb, type); ++ if (fsi.as_elements) { ++ marshal_atom(cb, fsi.type1, data); ++ if (fsi.offset2) ++ marshal_atom(cb, fsi.type2, ((char*)data) + fsi.offset2); ++ return; ++ } ++ } ++ ++ if (!var && cb->used_float < NARGREG && IS_FLOAT(type->type)) { ++ marshal_atom(cb, type->type, data); ++ return; ++ } ++#endif ++ ++ if (type->size > 2 * __SIZEOF_POINTER__) { ++ /* pass by reference */ ++ marshal_atom(cb, FFI_TYPE_POINTER, &data); ++ } else if (IS_INT(type->type) || type->type == FFI_TYPE_POINTER) { ++ marshal_atom(cb, type->type, data); ++ } else { ++ /* overlong integers, soft-float floats, and structs without special ++ float handling are treated identically from this point on */ ++ ++ /* variadics are aligned even in registers */ ++ if (type->alignment > __SIZEOF_POINTER__) { ++ if (var) ++ cb->used_integer = ALIGN(cb->used_integer, 2); ++ cb->used_stack = (size_t *)ALIGN(cb->used_stack, 2*__SIZEOF_POINTER__); ++ } ++ ++ memcpy(realign, data, type->size); ++ if (type->size > 0) ++ marshal_atom(cb, FFI_TYPE_POINTER, realign); ++ if (type->size > __SIZEOF_POINTER__) ++ marshal_atom(cb, FFI_TYPE_POINTER, realign + 1); ++ } ++} ++ ++/* for arguments passed by reference returns the pointer, otherwise the arg is copied (up to MAXCOPYARG bytes) */ ++static void *unmarshal(call_builder *cb, ffi_type *type, int var, void *data) { ++ size_t realign[2]; ++ void *pointer; ++ ++#if ABI_FLEN ++ if (!var && type->type == FFI_TYPE_STRUCT) { ++ float_struct_info fsi = struct_passed_as_elements(cb, type); ++ if (fsi.as_elements) { ++ unmarshal_atom(cb, fsi.type1, data); ++ if (fsi.offset2) ++ unmarshal_atom(cb, fsi.type2, ((char*)data) + fsi.offset2); ++ return data; ++ } ++ } ++ ++ if (!var && cb->used_float < NARGREG && IS_FLOAT(type->type)) { ++ unmarshal_atom(cb, type->type, data); ++ return data; ++ } ++#endif ++ ++ if (type->size > 2 * __SIZEOF_POINTER__) { ++ /* pass by reference */ ++ unmarshal_atom(cb, FFI_TYPE_POINTER, (char*)&pointer); ++ return pointer; ++ } else if (IS_INT(type->type) || type->type == FFI_TYPE_POINTER) { ++ unmarshal_atom(cb, type->type, data); ++ return data; ++ } else { ++ /* overlong integers, soft-float floats, and structs without special ++ float handling are treated identically from this point on */ ++ ++ /* variadics are aligned even in registers */ ++ if (type->alignment > __SIZEOF_POINTER__) { ++ if (var) ++ cb->used_integer = ALIGN(cb->used_integer, 2); ++ cb->used_stack = (size_t *)ALIGN(cb->used_stack, 2*__SIZEOF_POINTER__); ++ } ++ ++ if (type->size > 0) ++ unmarshal_atom(cb, FFI_TYPE_POINTER, realign); ++ if (type->size > __SIZEOF_POINTER__) ++ unmarshal_atom(cb, FFI_TYPE_POINTER, realign + 1); ++ memcpy(data, realign, type->size); ++ return data; ++ } ++} ++ ++static int passed_by_ref(call_builder *cb, ffi_type *type, int var) { ++#if ABI_FLEN ++ if (!var && type->type == FFI_TYPE_STRUCT) { ++ float_struct_info fsi = struct_passed_as_elements(cb, type); ++ if (fsi.as_elements) return 0; ++ } ++#endif ++ ++ return type->size > 2 * __SIZEOF_POINTER__; ++} ++ ++/* Perform machine dependent cif processing */ ++ffi_status ffi_prep_cif_machdep(ffi_cif *cif) { ++ cif->riscv_nfixedargs = cif->nargs; ++ return FFI_OK; ++} ++ ++/* Perform machine dependent cif processing when we have a variadic function */ ++ ++ffi_status ffi_prep_cif_machdep_var(ffi_cif *cif, unsigned int nfixedargs, unsigned int ntotalargs) { ++ cif->riscv_nfixedargs = nfixedargs; ++ return FFI_OK; ++} ++ ++/* Low level routine for calling functions */ ++extern void ffi_call_asm(void *stack, struct call_context *regs, void (*fn)(void)) FFI_HIDDEN; ++ ++void ffi_call(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue) ++{ ++ /* this is a conservative estimate, assuming a complex return value and ++ that all remaining arguments are long long / __int128 */ ++ size_t arg_bytes = cif->nargs <= 3 ? 0 : ++ ALIGN(2 * sizeof(size_t) * (cif->nargs - 3), STKALIGN); ++ size_t rval_bytes = 0; ++ if (rvalue == NULL && cif->rtype->size > 2*__SIZEOF_POINTER__) ++ rval_bytes = ALIGN(cif->rtype->size, STKALIGN); ++ size_t alloc_size = arg_bytes + rval_bytes + sizeof(call_context); ++ ++ /* the assembly code will deallocate all stack data at lower addresses ++ than the argument region, so we need to allocate the frame and the ++ return value after the arguments in a single allocation */ ++ size_t alloc_base; ++ /* Argument region must be 16-byte aligned */ ++ if (_Alignof(max_align_t) >= STKALIGN) { ++ /* since sizeof long double is normally 16, the compiler will ++ guarantee alloca alignment to at least that much */ ++ alloc_base = (size_t)alloca(alloc_size); ++ } else { ++ alloc_base = ALIGN(alloca(alloc_size + STKALIGN - 1), STKALIGN); ++ } ++ ++ if (rval_bytes) ++ rvalue = (void*)(alloc_base + arg_bytes); ++ ++ call_builder cb; ++ cb.used_float = cb.used_integer = 0; ++ cb.aregs = (call_context*)(alloc_base + arg_bytes + rval_bytes); ++ cb.used_stack = (void*)alloc_base; ++ ++ int return_by_ref = passed_by_ref(&cb, cif->rtype, 0); ++ if (return_by_ref) ++ marshal(&cb, &ffi_type_pointer, 0, &rvalue); ++ ++ int i; ++ for (i = 0; i < cif->nargs; i++) ++ marshal(&cb, cif->arg_types[i], i >= cif->riscv_nfixedargs, avalue[i]); ++ ++ ffi_call_asm((void*)alloc_base, cb.aregs, fn); ++ ++ cb.used_float = cb.used_integer = 0; ++ if (!return_by_ref && rvalue) ++ unmarshal(&cb, cif->rtype, 0, rvalue); ++} ++ ++extern void ffi_closure_asm(void) FFI_HIDDEN; ++ ++ffi_status ffi_prep_closure_loc(ffi_closure *closure, ffi_cif *cif, void (*fun)(ffi_cif*,void*,void**,void*), void *user_data, void *codeloc) ++{ ++ uint32_t *tramp = (uint32_t *) &closure->tramp[0]; ++ uint64_t fn = (uint64_t) (uintptr_t) ffi_closure_asm; ++ ++ if (cif->abi <= FFI_FIRST_ABI || cif->abi >= FFI_LAST_ABI) ++ return FFI_BAD_ABI; ++ ++ /* we will call ffi_closure_inner with codeloc, not closure, but as long ++ as the memory is readable it should work */ ++ ++ tramp[0] = 0x00000317; /* auipc t1, 0 (i.e. t0 <- codeloc) */ ++#if __SIZEOF_POINTER__ == 8 ++ tramp[1] = 0x01033383; /* ld t2, 16(t1) */ ++#else ++ tramp[1] = 0x01032383; /* lw t2, 16(t1) */ ++#endif ++ tramp[2] = 0x00038067; /* jr t2 */ ++ tramp[3] = 0x00000013; /* nop */ ++ tramp[4] = fn; ++ tramp[5] = fn >> 32; ++ ++ closure->cif = cif; ++ closure->fun = fun; ++ closure->user_data = user_data; ++ ++ __builtin___clear_cache(codeloc, codeloc + FFI_TRAMPOLINE_SIZE); ++ ++ return FFI_OK; ++} ++ ++/* Called by the assembly code with aregs pointing to saved argument registers ++ and stack pointing to the stacked arguments. Return values passed in ++ registers will be reloaded from aregs. */ ++void FFI_HIDDEN ffi_closure_inner(size_t *stack, call_context *aregs, ffi_closure *closure) { ++ ffi_cif *cif = closure->cif; ++ void **avalue = alloca(cif->nargs * sizeof(void*)); ++ /* storage for arguments which will be copied by unmarshal(). We could ++ theoretically avoid the copies in many cases and use at most 128 bytes ++ of memory, but allocating disjoint storage for each argument is ++ simpler. */ ++ char *astorage = alloca(cif->nargs * MAXCOPYARG); ++ void *rvalue; ++ call_builder cb; ++ int return_by_ref; ++ int i; ++ ++ cb.aregs = aregs; ++ cb.used_integer = cb.used_float = 0; ++ cb.used_stack = stack; ++ ++ return_by_ref = passed_by_ref(&cb, cif->rtype, 0); ++ if (return_by_ref) ++ unmarshal(&cb, &ffi_type_pointer, 0, &rvalue); ++ else ++ rvalue = alloca(cif->rtype->size); ++ ++ for (i = 0; i < cif->nargs; i++) ++ avalue[i] = unmarshal(&cb, cif->arg_types[i], ++ i >= cif->riscv_nfixedargs, astorage + i*MAXCOPYARG); ++ ++ (closure->fun)(cif, rvalue, avalue, closure->user_data); ++ ++ if (!return_by_ref && cif->rtype->type != FFI_TYPE_VOID) { ++ cb.used_integer = cb.used_float = 0; ++ marshal(&cb, cif->rtype, 0, rvalue); ++ } ++} +Index: b/src/libffi/src/riscv/ffitarget.h +=================================================================== +--- /dev/null ++++ b/src/libffi/src/riscv/ffitarget.h +@@ -0,0 +1,68 @@ ++/* -----------------------------------------------------------------*-C-*- ++ ffitarget.h - 2014 Michael Knyszek ++ ++ Target configuration macros for RISC-V. ++ ++ 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. ++ ++ ----------------------------------------------------------------------- */ ++ ++#ifndef LIBFFI_TARGET_H ++#define LIBFFI_TARGET_H ++ ++#ifndef LIBFFI_H ++#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead." ++#endif ++ ++#ifndef __riscv ++#error "libffi was configured for a RISC-V target but this does not appear to be a RISC-V compiler." ++#endif ++ ++#ifndef LIBFFI_ASM ++ ++typedef unsigned long ffi_arg; ++typedef signed long ffi_sarg; ++ ++/* FFI_UNUSED_NN and riscv_unused are to maintain ABI compatibility with a ++ distributed Berkeley patch from 2014, and can be removed at SONAME bump */ ++typedef enum ffi_abi { ++ FFI_FIRST_ABI = 0, ++ FFI_SYSV, ++ FFI_UNUSED_1, ++ FFI_UNUSED_2, ++ FFI_UNUSED_3, ++ FFI_LAST_ABI, ++ ++ FFI_DEFAULT_ABI = FFI_SYSV ++} ffi_abi; ++ ++#endif /* LIBFFI_ASM */ ++ ++/* ---- Definitions for closures ----------------------------------------- */ ++ ++#define FFI_CLOSURES 1 ++#define FFI_TRAMPOLINE_SIZE 24 ++#define FFI_NATIVE_RAW_API 0 ++#define FFI_EXTRA_CIF_FIELDS unsigned riscv_nfixedargs; unsigned riscv_unused; ++#define FFI_TARGET_SPECIFIC_VARIADIC ++ ++#endif ++ +Index: b/src/libffi/src/riscv/sysv.S +=================================================================== +--- /dev/null ++++ b/src/libffi/src/riscv/sysv.S +@@ -0,0 +1,214 @@ ++/* ----------------------------------------------------------------------- ++ ffi.c - Copyright (c) 2015 Michael Knyszek ++ 2015 Andrew Waterman ++ 2018 Stef O'Rear ++ ++ RISC-V Foreign Function Interface ++ ++ 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. ++ ----------------------------------------------------------------------- */ ++ ++#define LIBFFI_ASM ++#include ++#include ++ ++/* Define aliases so that we can handle all ABIs uniformly */ ++ ++#if __SIZEOF_POINTER__ == 8 ++#define PTRS 8 ++#define LARG ld ++#define SARG sd ++#else ++#define PTRS 4 ++#define LARG lw ++#define SARG sw ++#endif ++ ++#if __riscv_float_abi_double ++#define FLTS 8 ++#define FLARG fld ++#define FSARG fsd ++#elif __riscv_float_abi_single ++#define FLTS 4 ++#define FLARG flw ++#define FSARG fsw ++#else ++#define FLTS 0 ++#endif ++ ++#define fp s0 ++ ++ .text ++ .globl ffi_call_asm ++ .type ffi_call_asm, @function ++ .hidden ffi_call_asm ++/* ++ struct call_context { ++ floatreg fa[8]; ++ intreg a[8]; ++ intreg pad[rv32 ? 2 : 0]; ++ intreg save_fp, save_ra; ++ } ++ void ffi_call_asm(size_t *stackargs, struct call_context *regargs, ++ void (*fn)(void)); ++*/ ++ ++#define FRAME_LEN (8 * FLTS + 8 * PTRS + 16) ++ ++ffi_call_asm: ++ .cfi_startproc ++ ++ /* ++ We are NOT going to set up an ordinary stack frame. In order to pass ++ the stacked args to the called function, we adjust our stack pointer to ++ a0, which is in the _caller's_ alloca area. We establish our own stack ++ frame at the end of the call_context. ++ ++ Anything below the arguments will be freed at this point, although we ++ preserve the call_context so that it can be read back in the caller. ++ */ ++ ++ .cfi_def_cfa 11, FRAME_LEN # interim CFA based on a1 ++ SARG fp, FRAME_LEN - 2*PTRS(a1) ++ .cfi_offset 8, -2*PTRS ++ SARG ra, FRAME_LEN - 1*PTRS(a1) ++ .cfi_offset 1, -1*PTRS ++ ++ addi fp, a1, FRAME_LEN ++ mv sp, a0 ++ .cfi_def_cfa 8, 0 # our frame is fully set up ++ ++ # Load arguments ++ mv t1, a2 ++ ++#if FLTS ++ FLARG fa0, -FRAME_LEN+0*FLTS(fp) ++ FLARG fa1, -FRAME_LEN+1*FLTS(fp) ++ FLARG fa2, -FRAME_LEN+2*FLTS(fp) ++ FLARG fa3, -FRAME_LEN+3*FLTS(fp) ++ FLARG fa4, -FRAME_LEN+4*FLTS(fp) ++ FLARG fa5, -FRAME_LEN+5*FLTS(fp) ++ FLARG fa6, -FRAME_LEN+6*FLTS(fp) ++ FLARG fa7, -FRAME_LEN+7*FLTS(fp) ++#endif ++ ++ LARG a0, -FRAME_LEN+8*FLTS+0*PTRS(fp) ++ LARG a1, -FRAME_LEN+8*FLTS+1*PTRS(fp) ++ LARG a2, -FRAME_LEN+8*FLTS+2*PTRS(fp) ++ LARG a3, -FRAME_LEN+8*FLTS+3*PTRS(fp) ++ LARG a4, -FRAME_LEN+8*FLTS+4*PTRS(fp) ++ LARG a5, -FRAME_LEN+8*FLTS+5*PTRS(fp) ++ LARG a6, -FRAME_LEN+8*FLTS+6*PTRS(fp) ++ LARG a7, -FRAME_LEN+8*FLTS+7*PTRS(fp) ++ ++ /* Call */ ++ jalr t1 ++ ++ /* Save return values - only a0/a1 (fa0/fa1) are used */ ++#if FLTS ++ FSARG fa0, -FRAME_LEN+0*FLTS(fp) ++ FSARG fa1, -FRAME_LEN+1*FLTS(fp) ++#endif ++ ++ SARG a0, -FRAME_LEN+8*FLTS+0*PTRS(fp) ++ SARG a1, -FRAME_LEN+8*FLTS+1*PTRS(fp) ++ ++ /* Restore and return */ ++ addi sp, fp, -FRAME_LEN ++ .cfi_def_cfa 2, FRAME_LEN ++ LARG ra, -1*PTRS(fp) ++ .cfi_restore 1 ++ LARG fp, -2*PTRS(fp) ++ .cfi_restore 8 ++ ret ++ .cfi_endproc ++ .size ffi_call_asm, .-ffi_call_asm ++ ++ ++/* ++ ffi_closure_asm. Expects address of the passed-in ffi_closure in t1. ++ void ffi_closure_inner(size_t *stackargs, struct call_context *regargs, ++ ffi_closure *closure); ++*/ ++ ++ .globl ffi_closure_asm ++ .hidden ffi_closure_asm ++ .type ffi_closure_asm, @function ++ffi_closure_asm: ++ .cfi_startproc ++ ++ addi sp, sp, -FRAME_LEN ++ .cfi_def_cfa_offset FRAME_LEN ++ ++ /* make a frame */ ++ SARG fp, FRAME_LEN - 2*PTRS(sp) ++ .cfi_offset 8, -2*PTRS ++ SARG ra, FRAME_LEN - 1*PTRS(sp) ++ .cfi_offset 1, -1*PTRS ++ addi fp, sp, FRAME_LEN ++ ++ /* save arguments */ ++#if FLTS ++ FSARG fa0, 0*FLTS(sp) ++ FSARG fa1, 1*FLTS(sp) ++ FSARG fa2, 2*FLTS(sp) ++ FSARG fa3, 3*FLTS(sp) ++ FSARG fa4, 4*FLTS(sp) ++ FSARG fa5, 5*FLTS(sp) ++ FSARG fa6, 6*FLTS(sp) ++ FSARG fa7, 7*FLTS(sp) ++#endif ++ ++ SARG a0, 8*FLTS+0*PTRS(sp) ++ SARG a1, 8*FLTS+1*PTRS(sp) ++ SARG a2, 8*FLTS+2*PTRS(sp) ++ SARG a3, 8*FLTS+3*PTRS(sp) ++ SARG a4, 8*FLTS+4*PTRS(sp) ++ SARG a5, 8*FLTS+5*PTRS(sp) ++ SARG a6, 8*FLTS+6*PTRS(sp) ++ SARG a7, 8*FLTS+7*PTRS(sp) ++ ++ /* enter C */ ++ addi a0, sp, FRAME_LEN ++ mv a1, sp ++ mv a2, t1 ++ ++ call ffi_closure_inner ++ ++ /* return values */ ++#if FLTS ++ FLARG fa0, 0*FLTS(sp) ++ FLARG fa1, 1*FLTS(sp) ++#endif ++ ++ LARG a0, 8*FLTS+0*PTRS(sp) ++ LARG a1, 8*FLTS+1*PTRS(sp) ++ ++ /* restore and return */ ++ LARG ra, FRAME_LEN-1*PTRS(sp) ++ .cfi_restore 1 ++ LARG fp, FRAME_LEN-2*PTRS(sp) ++ .cfi_restore 8 ++ addi sp, sp, FRAME_LEN ++ .cfi_def_cfa_offset 0 ++ ret ++ .cfi_endproc ++ .size ffi_closure_asm, .-ffi_closure_asm --- gcc-8-8.3.0.orig/debian/patches/libffi-riscv64-go.diff +++ gcc-8-8.3.0/debian/patches/libffi-riscv64-go.diff @@ -0,0 +1,227 @@ +# DP: libffi: RISC-V go closures + +--- a/src/libffi/src/riscv/ffi.c ++++ b/src/libffi/src/riscv/ffi.c +@@ -324,9 +324,12 @@ ffi_status ffi_prep_cif_machdep_var(ffi_cif *cif, unsigned int nfixedargs, unsig + } + + /* Low level routine for calling functions */ +-extern void ffi_call_asm(void *stack, struct call_context *regs, void (*fn)(void)) FFI_HIDDEN; ++extern void ffi_call_asm (void *stack, struct call_context *regs, ++ void (*fn) (void), void *closure) FFI_HIDDEN; + +-void ffi_call(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue) ++static void ++ffi_call_int (ffi_cif *cif, void (*fn) (void), void *rvalue, void **avalue, ++ void *closure) + { + /* this is a conservative estimate, assuming a complex return value and + that all remaining arguments are long long / __int128 */ +@@ -366,13 +369,26 @@ void ffi_call(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue) + for (i = 0; i < cif->nargs; i++) + marshal(&cb, cif->arg_types[i], i >= cif->riscv_nfixedargs, avalue[i]); + +- ffi_call_asm((void*)alloc_base, cb.aregs, fn); ++ ffi_call_asm ((void *) alloc_base, cb.aregs, fn, closure); + + cb.used_float = cb.used_integer = 0; + if (!return_by_ref && rvalue) + unmarshal(&cb, cif->rtype, 0, rvalue); + } + ++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); ++} ++ + extern void ffi_closure_asm(void) FFI_HIDDEN; + + ffi_status ffi_prep_closure_loc(ffi_closure *closure, ffi_cif *cif, void (*fun)(ffi_cif*,void*,void**,void*), void *user_data, void *codeloc) +@@ -406,11 +422,31 @@ ffi_status ffi_prep_closure_loc(ffi_closure *closure, ffi_cif *cif, void (*fun)( + return FFI_OK; + } + ++extern void ffi_go_closure_asm (void) FFI_HIDDEN; ++ ++ffi_status ++ffi_prep_go_closure (ffi_go_closure *closure, ffi_cif *cif, ++ void (*fun) (ffi_cif *, void *, void **, void *)) ++{ ++ if (cif->abi <= FFI_FIRST_ABI || cif->abi >= FFI_LAST_ABI) ++ return FFI_BAD_ABI; ++ ++ closure->tramp = (void *) ffi_go_closure_asm; ++ closure->cif = cif; ++ closure->fun = fun; ++ ++ return FFI_OK; ++} ++ + /* Called by the assembly code with aregs pointing to saved argument registers + and stack pointing to the stacked arguments. Return values passed in + registers will be reloaded from aregs. */ +-void FFI_HIDDEN ffi_closure_inner(size_t *stack, call_context *aregs, ffi_closure *closure) { +- ffi_cif *cif = closure->cif; ++void FFI_HIDDEN ++ffi_closure_inner (ffi_cif *cif, ++ void (*fun) (ffi_cif *, void *, void **, void *), ++ void *user_data, ++ size_t *stack, call_context *aregs) ++{ + void **avalue = alloca(cif->nargs * sizeof(void*)); + /* storage for arguments which will be copied by unmarshal(). We could + theoretically avoid the copies in many cases and use at most 128 bytes +@@ -436,7 +472,7 @@ void FFI_HIDDEN ffi_closure_inner(size_t *stack, call_context *aregs, ffi_closur + avalue[i] = unmarshal(&cb, cif->arg_types[i], + i >= cif->riscv_nfixedargs, astorage + i*MAXCOPYARG); + +- (closure->fun)(cif, rvalue, avalue, closure->user_data); ++ fun (cif, rvalue, avalue, user_data); + + if (!return_by_ref && cif->rtype->type != FFI_TYPE_VOID) { + cb.used_integer = cb.used_float = 0; +--- a/src/libffi/src/riscv/ffitarget.h ++++ b/src/libffi/src/riscv/ffitarget.h +@@ -59,6 +59,7 @@ typedef enum ffi_abi { + /* ---- Definitions for closures ----------------------------------------- */ + + #define FFI_CLOSURES 1 ++#define FFI_GO_CLOSURES 1 + #define FFI_TRAMPOLINE_SIZE 24 + #define FFI_NATIVE_RAW_API 0 + #define FFI_EXTRA_CIF_FIELDS unsigned riscv_nfixedargs; unsigned riscv_unused; +--- a/src/libffi/src/riscv/sysv.S ++++ b/src/libffi/src/riscv/sysv.S +@@ -67,8 +67,8 @@ + intreg pad[rv32 ? 2 : 0]; + intreg save_fp, save_ra; + } +- void ffi_call_asm(size_t *stackargs, struct call_context *regargs, +- void (*fn)(void)); ++ void ffi_call_asm (size_t *stackargs, struct call_context *regargs, ++ void (*fn) (void), void *closure); + */ + + #define FRAME_LEN (8 * FLTS + 8 * PTRS + 16) +@@ -98,6 +98,7 @@ ffi_call_asm: + + # Load arguments + mv t1, a2 ++ mv t2, a3 + + #if FLTS + FLARG fa0, -FRAME_LEN+0*FLTS(fp) +@@ -145,8 +146,10 @@ ffi_call_asm: + + /* + ffi_closure_asm. Expects address of the passed-in ffi_closure in t1. +- void ffi_closure_inner(size_t *stackargs, struct call_context *regargs, +- ffi_closure *closure); ++ void ffi_closure_inner (ffi_cif *cif, ++ void (*fun) (ffi_cif *, void *, void **, void *), ++ void *user_data, ++ size_t *stackargs, struct call_context *regargs) + */ + + .globl ffi_closure_asm +@@ -187,9 +190,11 @@ ffi_closure_asm: + SARG a7, 8*FLTS+7*PTRS(sp) + + /* enter C */ +- addi a0, sp, FRAME_LEN +- mv a1, sp +- mv a2, t1 ++ LARG a0, FFI_TRAMPOLINE_SIZE+0*PTRS(t1) ++ LARG a1, FFI_TRAMPOLINE_SIZE+1*PTRS(t1) ++ LARG a2, FFI_TRAMPOLINE_SIZE+2*PTRS(t1) ++ addi a3, sp, FRAME_LEN ++ mv a4, sp + + call ffi_closure_inner + +@@ -212,3 +217,77 @@ ffi_closure_asm: + ret + .cfi_endproc + .size ffi_closure_asm, .-ffi_closure_asm ++ ++/* ++ ffi_go_closure_asm. Expects address of the passed-in ffi_go_closure in t2. ++ void ffi_closure_inner (ffi_cif *cif, ++ void (*fun) (ffi_cif *, void *, void **, void *), ++ void *user_data, ++ size_t *stackargs, struct call_context *regargs) ++*/ ++ ++ .globl ffi_go_closure_asm ++ .hidden ffi_go_closure_asm ++ .type ffi_go_closure_asm, @function ++ffi_go_closure_asm: ++ .cfi_startproc ++ ++ addi sp, sp, -FRAME_LEN ++ .cfi_def_cfa_offset FRAME_LEN ++ ++ /* make a frame */ ++ SARG fp, FRAME_LEN - 2*PTRS(sp) ++ .cfi_offset 8, -2*PTRS ++ SARG ra, FRAME_LEN - 1*PTRS(sp) ++ .cfi_offset 1, -1*PTRS ++ addi fp, sp, FRAME_LEN ++ ++ /* save arguments */ ++#if FLTS ++ FSARG fa0, 0*FLTS(sp) ++ FSARG fa1, 1*FLTS(sp) ++ FSARG fa2, 2*FLTS(sp) ++ FSARG fa3, 3*FLTS(sp) ++ FSARG fa4, 4*FLTS(sp) ++ FSARG fa5, 5*FLTS(sp) ++ FSARG fa6, 6*FLTS(sp) ++ FSARG fa7, 7*FLTS(sp) ++#endif ++ ++ SARG a0, 8*FLTS+0*PTRS(sp) ++ SARG a1, 8*FLTS+1*PTRS(sp) ++ SARG a2, 8*FLTS+2*PTRS(sp) ++ SARG a3, 8*FLTS+3*PTRS(sp) ++ SARG a4, 8*FLTS+4*PTRS(sp) ++ SARG a5, 8*FLTS+5*PTRS(sp) ++ SARG a6, 8*FLTS+6*PTRS(sp) ++ SARG a7, 8*FLTS+7*PTRS(sp) ++ ++ /* enter C */ ++ LARG a0, 1*PTRS(t2) ++ LARG a1, 2*PTRS(t2) ++ mv a2, t2 ++ addi a3, sp, FRAME_LEN ++ mv a4, sp ++ ++ call ffi_closure_inner ++ ++ /* return values */ ++#if FLTS ++ FLARG fa0, 0*FLTS(sp) ++ FLARG fa1, 1*FLTS(sp) ++#endif ++ ++ LARG a0, 8*FLTS+0*PTRS(sp) ++ LARG a1, 8*FLTS+1*PTRS(sp) ++ ++ /* restore and return */ ++ LARG ra, FRAME_LEN-1*PTRS(sp) ++ .cfi_restore 1 ++ LARG fp, FRAME_LEN-2*PTRS(sp) ++ .cfi_restore 8 ++ addi sp, sp, FRAME_LEN ++ .cfi_def_cfa_offset 0 ++ ret ++ .cfi_endproc ++ .size ffi_go_closure_asm, .-ffi_go_closure_asm --- gcc-8-8.3.0.orig/debian/patches/libffi-ro-eh_frame_sect.diff +++ gcc-8-8.3.0/debian/patches/libffi-ro-eh_frame_sect.diff @@ -0,0 +1,15 @@ +# DP: PR libffi/47248, force a read only eh frame section. + +Index: b/src/libffi/configure.ac +=================================================================== +--- a/src/libffi/configure.ac ++++ b/src/libffi/configure.ac +@@ -275,6 +275,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 --- gcc-8-8.3.0.orig/debian/patches/libgo-cleanfiles.diff +++ gcc-8-8.3.0/debian/patches/libgo-cleanfiles.diff @@ -0,0 +1,30 @@ +Index: b/src/libgo/Makefile.am +=================================================================== +--- a/src/libgo/Makefile.am ++++ b/src/libgo/Makefile.am +@@ -1570,7 +1570,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 +Index: b/src/libgo/Makefile.in +=================================================================== +--- a/src/libgo/Makefile.in ++++ b/src/libgo/Makefile.in +@@ -1417,7 +1417,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 + all: config.h + $(MAKE) $(AM_MAKEFLAGS) all-recursive + --- gcc-8-8.3.0.orig/debian/patches/libgo-revert-timeout-exp.diff +++ gcc-8-8.3.0/debian/patches/libgo-revert-timeout-exp.diff @@ -0,0 +1,12 @@ +Index: b/src/libgo/testsuite/lib/libgo.exp +=================================================================== +--- 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 } { --- gcc-8-8.3.0.orig/debian/patches/libgo-setcontext-config.diff +++ gcc-8-8.3.0/debian/patches/libgo-setcontext-config.diff @@ -0,0 +1,21 @@ +# DP: libgo: Overwrite the setcontext_clobbers_tls check on mips* + +Index: b/src/libgo/configure.ac +=================================================================== +--- a/src/libgo/configure.ac ++++ b/src/libgo/configure.ac +@@ -780,6 +780,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]) --- gcc-8-8.3.0.orig/debian/patches/libgo-testsuite.diff +++ gcc-8-8.3.0/debian/patches/libgo-testsuite.diff @@ -0,0 +1,70 @@ +# DP: Only run the libgo testsuite for flags configured in RUNTESTFLAGS + +Index: b/src/libgo/Makefile.am +=================================================================== +--- a/src/libgo/Makefile.am ++++ b/src/libgo/Makefile.am +@@ -1029,7 +1029,7 @@ BUILDGOX = \ + $(SHELL) $(srcdir)/mvifdiff.sh $@.tmp `echo $@ | sed -e 's/s-gox/gox/'` + + GOTESTFLAGS = +-GOBENCH = ++GOBENCH = + + # Check a package. + CHECK = \ +@@ -1050,6 +1050,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 \ +@@ -1065,6 +1071,7 @@ CHECK = \ + echo "FAIL: $(@D)" > $@-testsum; \ + exit 1; \ + fi; \ ++ fi; \ + fi + + # Build all packages before checking any. +Index: b/src/libgo/Makefile.in +=================================================================== +--- a/src/libgo/Makefile.in ++++ b/src/libgo/Makefile.in +@@ -1118,7 +1118,7 @@ BUILDGOX = \ + $(SHELL) $(srcdir)/mvifdiff.sh $@.tmp `echo $@ | sed -e 's/s-gox/gox/'` + + GOTESTFLAGS = +-GOBENCH = ++GOBENCH = + + # Check a package. + CHECK = \ +@@ -1139,6 +1139,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 \ +@@ -1154,6 +1160,7 @@ CHECK = \ + echo "FAIL: $(@D)" > $@-testsum; \ + exit 1; \ + fi; \ ++ fi; \ + fi + + --- gcc-8-8.3.0.orig/debian/patches/libgomp-kfreebsd-testsuite.diff +++ gcc-8-8.3.0/debian/patches/libgomp-kfreebsd-testsuite.diff @@ -0,0 +1,16 @@ +# DP: Disable lock-2.c test on kfreebsd-* + +Index: b/src/libgomp/testsuite/libgomp.c/lock-2.c +=================================================================== +--- 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); --- gcc-8-8.3.0.orig/debian/patches/libgomp-omp_h-multilib.diff +++ gcc-8-8.3.0/debian/patches/libgomp-omp_h-multilib.diff @@ -0,0 +1,28 @@ +# 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. + +Index: b/src/libgomp/omp.h.in +=================================================================== +--- a/src/libgomp/omp.h.in ++++ b/src/libgomp/omp.h.in +@@ -40,8 +40,13 @@ typedef struct + + typedef struct + { ++#if defined(__linux__) ++ 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 + --- gcc-8-8.3.0.orig/debian/patches/libitm-no-fortify-source.diff +++ gcc-8-8.3.0/debian/patches/libitm-no-fortify-source.diff @@ -0,0 +1,19 @@ +# DP: Build libitm with -U_FORTIFY_SOURCE on x86 and x86_64. + +Index: b/src/libitm/configure.tgt +=================================================================== +--- 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 + --- gcc-8-8.3.0.orig/debian/patches/libjit-ldflags.diff +++ gcc-8-8.3.0/debian/patches/libjit-ldflags.diff @@ -0,0 +1,13 @@ +Index: b/src/gcc/jit/Make-lang.in +=================================================================== +--- 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) --- gcc-8-8.3.0.orig/debian/patches/libphobos-zlib.diff +++ gcc-8-8.3.0/debian/patches/libphobos-zlib.diff @@ -0,0 +1,75 @@ +# DP: Build zlib in any case to have a fall back for missing libz multilibs + +Index: b/src/libphobos/configure.ac +=================================================================== +--- 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" +Index: b/src/libphobos/m4/druntime/libraries.m4 +=================================================================== +--- a/src/libphobos/m4/druntime/libraries.m4 ++++ b/src/libphobos/m4/druntime/libraries.m4 +@@ -52,19 +52,44 @@ 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]) ++ LIBS=$save_LIBS ++ if test x$system_zlib = xyes; then ++ if test x$system_zlib_found = xyes; then ++ AC_MSG_RESULT([found]) ++ else ++ AC_MSG_RESULT([not found, disabled]) ++ system_zlib=no ++ fi ++ else ++ AC_MSG_RESULT([not enabled]) ++ fi ++ AC_LANG_POP + + AM_CONDITIONAL([DRUNTIME_ZLIB_SYSTEM], [test "$with_target_system_zlib" = yes]) + ]) --- gcc-8-8.3.0.orig/debian/patches/libstdc++-doclink.diff +++ gcc-8-8.3.0/debian/patches/libstdc++-doclink.diff @@ -0,0 +1,74 @@ +# DP: adjust hrefs to point to the local documentation + +--- + libstdc++-v3/doc/doxygen/mainpage.html | 10 +++++----- + 1 files changed, 5 insertions(+), 5 deletions(-) + +Index: b/src/libstdc++-v3/doc/doxygen/mainpage.html +=================================================================== +--- 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: +Index: b/src/libstdc++-v3/doc/html/api.html +=================================================================== +--- 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 ++

+Index: b/src/libstdc++-v3/doc/xml/api.xml +=================================================================== +--- 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 --- gcc-8-8.3.0.orig/debian/patches/libstdc++-futex.diff +++ gcc-8-8.3.0/debian/patches/libstdc++-futex.diff @@ -0,0 +1,87 @@ +# 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 +@@ -16252,6 +16252,7 @@ case "$target" in + cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + #include ++#include + int lk; + int + main () +@@ -16304,6 +16305,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 +@@ -15625,6 +15625,7 @@ case "$target" in + cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + #include ++ #include + int lk; + int + main () +@@ -15677,6 +15678,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 +@@ -78433,6 +78433,7 @@ fi + cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + #include ++ #include + int lk; + int + main () +@@ -78491,6 +78492,7 @@ fi + cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + #include ++ #include + int lk; + int + main () --- gcc-8-8.3.0.orig/debian/patches/libstdc++-man-3cxx.diff +++ gcc-8-8.3.0/debian/patches/libstdc++-man-3cxx.diff @@ -0,0 +1,67 @@ +# DP: Install libstdc++ man pages with suffix .3cxx instead of .3 + +Index: b/src/libstdc++-v3/doc/doxygen/user.cfg.in +=================================================================== +--- 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 +Index: b/src/libstdc++-v3/scripts/run_doxygen +=================================================================== +--- 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 :: --- gcc-8-8.3.0.orig/debian/patches/libstdc++-no-testsuite.diff +++ gcc-8-8.3.0/debian/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 \ --- gcc-8-8.3.0.orig/debian/patches/libstdc++-nothumb-check.diff +++ gcc-8-8.3.0/debian/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 --- gcc-8-8.3.0.orig/debian/patches/libstdc++-pic.diff +++ gcc-8-8.3.0/debian/patches/libstdc++-pic.diff @@ -0,0 +1,95 @@ +# DP: Build and install libstdc++_pic.a library. + +Index: b/src/libstdc++-v3/src/Makefile.am +=================================================================== +--- a/src/libstdc++-v3/src/Makefile.am ++++ b/src/libstdc++-v3/src/Makefile.am +@@ -311,10 +311,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. +@@ -349,6 +351,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 ; \ +@@ -359,3 +362,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 +Index: b/src/libstdc++-v3/src/Makefile.in +=================================================================== +--- a/src/libstdc++-v3/src/Makefile.in ++++ b/src/libstdc++-v3/src/Makefile.in +@@ -535,6 +535,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. +@@ -833,7 +835,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 + +@@ -884,11 +886,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-recursive uninstall uninstall-am \ +@@ -1021,6 +1023,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 ; \ +@@ -1032,6 +1035,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: --- gcc-8-8.3.0.orig/debian/patches/libstdc++-test-installed.diff +++ gcc-8-8.3.0/debian/patches/libstdc++-test-installed.diff @@ -0,0 +1,78 @@ +# DP: Add support to run the libstdc++-v3 testsuite using the +# DP: installed shared libraries. + +Index: b/src/libstdc++-v3/testsuite/lib/libstdc++.exp +=================================================================== +--- 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}" +@@ -163,7 +177,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] +@@ -185,7 +203,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] --- gcc-8-8.3.0.orig/debian/patches/linaro-issue2575.diff +++ gcc-8-8.3.0/debian/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; + + } --- gcc-8-8.3.0.orig/debian/patches/note-gnu-stack.diff +++ gcc-8-8.3.0/debian/patches/note-gnu-stack.diff @@ -0,0 +1,139 @@ +# 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(-) + +Index: b/src/libgcc/config/ia64/crtbegin.S +=================================================================== +--- 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 +Index: b/src/libgcc/config/ia64/crtend.S +=================================================================== +--- 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 +Index: b/src/libgcc/config/ia64/crti.S +=================================================================== +--- 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 +Index: b/src/libgcc/config/ia64/crtn.S +=================================================================== +--- 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 +Index: b/src/libgcc/config/ia64/lib1funcs.S +=================================================================== +--- 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 +Index: b/src/gcc/config/ia64/linux.h +=================================================================== +--- 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 +Index: b/src/gcc/config/rs6000/ppc-asm.h +=================================================================== +--- 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 --- gcc-8-8.3.0.orig/debian/patches/powerpcspe_nofprs.diff +++ gcc-8-8.3.0/debian/patches/powerpcspe_nofprs.diff @@ -0,0 +1,75 @@ +--- a/src/libgcc/config/rs6000/crtsavfpr.S ++++ b/src/libgcc/config/rs6000/crtsavfpr.S +@@ -33,6 +33,7 @@ + + /* On PowerPC64 Linux, these functions are provided by the linker. */ + #ifndef __powerpc64__ ++#ifndef __NO_FPRS__ + + /* Routines for saving floating point registers, called by the compiler. */ + /* Called with r11 pointing to the stack header word of the caller of the */ +@@ -79,3 +80,4 @@ + CFI_ENDPROC + + #endif ++#endif +--- a/src/libgcc/config/rs6000/crtresfpr.S ++++ b/src/libgcc/config/rs6000/crtresfpr.S +@@ -33,6 +33,7 @@ + + /* On PowerPC64 Linux, these functions are provided by the linker. */ + #ifndef __powerpc64__ ++#ifndef __NO_FPRS__ + + /* Routines for restoring floating point registers, called by the compiler. */ + /* Called with r11 pointing to the stack header word of the caller of the */ +@@ -79,3 +80,4 @@ + CFI_ENDPROC + + #endif ++#endif +--- a/src/libgcc/config/rs6000/crtresxfpr.S ++++ b/src/libgcc/config/rs6000/crtresxfpr.S +@@ -33,6 +33,7 @@ + + /* On PowerPC64 Linux, these functions are provided by the linker. */ + #ifndef __powerpc64__ ++#ifndef __NO_FPRS__ + + /* Routines for restoring floating point registers, called by the compiler. */ + /* Called with r11 pointing to the stack header word of the caller of the */ +@@ -124,3 +125,4 @@ + CFI_ENDPROC + + #endif ++#endif +--- a/src/libgcc/config/rs6000/crtsavevr.S 2013-03-13 22:25:25.802681336 +0000 ++++ b/src/libgcc/config/rs6000/crtsavevr.S 2013-03-13 22:26:21.054695066 +0000 +@@ -24,6 +24,7 @@ + + /* On PowerPC64 Linux, these functions are provided by the linker. */ + #ifndef __powerpc64__ ++#ifndef __NO_FPRS__ + + #undef __ALTIVEC__ + #define __ALTIVEC__ 1 +@@ -85,3 +86,4 @@ + CFI_ENDPROC + + #endif ++#endif +--- a/src/libgcc/config/rs6000/crtrestvr.S 2013-03-13 22:25:28.394681980 +0000 ++++ b/src/libgcc/config/rs6000/crtrestvr.S 2013-03-13 22:26:21.058695067 +0000 +@@ -24,6 +24,7 @@ + + /* On PowerPC64 Linux, these functions are provided by the linker. */ + #ifndef __powerpc64__ ++#ifndef __NO_FPRS__ + + #undef __ALTIVEC__ + #define __ALTIVEC__ 1 +@@ -85,3 +86,4 @@ + CFI_ENDPROC + + #endif ++#endif --- gcc-8-8.3.0.orig/debian/patches/powerpcspe_remove_many.diff +++ gcc-8-8.3.0/debian/patches/powerpcspe_remove_many.diff @@ -0,0 +1,31 @@ +# DP: Subject: [PATCH] remove -many on __SPE__ target +# DP: this helps to to detect opcodes which are not part of the current +# DP: CPU because without -many gas won't touch them. This currently could +# DP: break the kernel build as the 603 on steroids cpus use performance +# DP: counter opcodes which are not available on the steroid less 603 core. + +--- a/src/gcc/config/powerpcspe/powerpcspe.h ++++ b/src/gcc/config/powerpcspe/powerpcspe.h +@@ -107,6 +107,12 @@ + #define ASM_CPU_476_SPEC "-mpower4" + #endif + ++#ifndef __SPE__ ++#define ASM_CPU_SPU_MANY_NOT_SPE "-many" ++#else ++#define ASM_CPU_SPU_MANY_NOT_SPE ++#endif ++ + /* Common ASM definitions used by ASM_SPEC among the various targets for + handling -mcpu=xxx switches. There is a parallel list in driver-powerpcspe.c to + provide the default assembler options if the user uses -mcpu=native, so if +@@ -173,7 +179,8 @@ + %{maltivec: -maltivec} \ + %{mvsx: -mvsx %{!maltivec: -maltivec} %{!mcpu*: %(asm_cpu_power7)}} \ + %{mpower8-vector|mcrypto|mdirect-move|mhtm: %{!mcpu*: %(asm_cpu_power8)}} \ +--many" ++" \ ++ASM_CPU_SPU_MANY_NOT_SPE + + #define CPP_DEFAULT_SPEC "" + --- gcc-8-8.3.0.orig/debian/patches/pr39491.diff +++ gcc-8-8.3.0/debian/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 --- gcc-8-8.3.0.orig/debian/patches/pr66368.diff +++ gcc-8-8.3.0/debian/patches/pr66368.diff @@ -0,0 +1,26 @@ +# DP: PR go/66368, build libgo with -fno-stack-protector + +Index: b/src/libgo/Makefile.am +=================================================================== +--- a/src/libgo/Makefile.am ++++ b/src/libgo/Makefile.am +@@ -41,6 +41,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 \ +Index: b/src/libgo/Makefile.in +=================================================================== +--- a/src/libgo/Makefile.in ++++ b/src/libgo/Makefile.in +@@ -449,6 +449,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 \ --- gcc-8-8.3.0.orig/debian/patches/pr67590.diff +++ gcc-8-8.3.0/debian/patches/pr67590.diff @@ -0,0 +1,38 @@ +# DP: Fix PR67590, setting objdump macro. + +Index: b/src/libcc1/configure.ac +=================================================================== +--- a/src/libcc1/configure.ac ++++ b/src/libcc1/configure.ac +@@ -72,6 +72,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= --- gcc-8-8.3.0.orig/debian/patches/pr67899.diff +++ gcc-8-8.3.0/debian/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; + }; --- gcc-8-8.3.0.orig/debian/patches/pr81829.diff +++ gcc-8-8.3.0/debian/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; + --- gcc-8-8.3.0.orig/debian/patches/pr86610-revert.diff +++ gcc-8-8.3.0/debian/patches/pr86610-revert.diff @@ -0,0 +1,67 @@ +# DP: Revert the fix for PR c++/86610, causing PR c++/88995. + +gcc/cp/ + +2019-01-17 Nathan Sidwell + + PR c++/86610 + * semantics.c (process_outer_var_ref): Only skip dependent types + in templates. + +gcc/testsuite/ + +2019-01-17 Nathan Sidwell + + PR c++/86610 + * g++.dg/cpp0x/pr86610.C: New. + + +--- a/src/gcc/cp/semantics.c ++++ b/src/gcc/cp/semantics.c +@@ -3415,9 +3415,10 @@ + } + + /* In a lambda within a template, wait until instantiation +- time to implicitly capture a dependent type. */ ++ time to implicitly capture. */ + if (context == containing_function +- && dependent_type_p (TREE_TYPE (decl))) ++ && DECL_TEMPLATE_INFO (containing_function) ++ && uses_template_parms (DECL_TI_ARGS (containing_function))) + return decl; + + if (lambda_expr && VAR_P (decl) +--- a/src/gcc/testsuite/g++.dg/cpp0x/pr86610.C ++++ b/src/gcc/testsuite/g++.dg/cpp0x/pr86610.C +@@ -1,31 +0,0 @@ +-// { dg-do run { target c++11 } } +-// PR c++86610 lambda capture inside template +- +-struct C +-{ +- int operator[](int) +- { return 1; } +- +- int operator[](int) const +- { return 0; } // Want this one +-}; +- +-int q() +-{ +- C c; +- return [=] { return c[0]; }(); +-} +- +-template +-int f() +-{ +- C c; +- T d; +- return [=] { return c[0]; }() +- + [=] { return c[0] + d[0]; }(); +-} +- +-int main() +-{ +- return q () + f(); +-} --- gcc-8-8.3.0.orig/debian/patches/pr87338.diff +++ gcc-8-8.3.0/debian/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 --- gcc-8-8.3.0.orig/debian/patches/pr87808.diff +++ gcc-8-8.3.0/debian/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 (), --- gcc-8-8.3.0.orig/debian/patches/pr88419-revert.diff +++ gcc-8-8.3.0/debian/patches/pr88419-revert.diff @@ -0,0 +1,47 @@ +# DP: Revert the fix for PC c++/88419, causing PR c++/89906. + +2019-03-08 Jason Merrill + + PR c++/88419 - C++17 ICE with class template arg deduction. + * pt.c (make_template_placeholder): Set TYPE_CANONICAL after + CLASS_PLACEHOLDER_TEMPLATE. + +--- a/src/gcc/cp/pt.c ++++ b/src/gcc/cp/pt.c +@@ -26002,10 +26002,8 @@ + tree + make_template_placeholder (tree tmpl) + { +- tree t = make_auto_1 (DECL_NAME (tmpl), false); ++ tree t = make_auto_1 (DECL_NAME (tmpl), true); + CLASS_PLACEHOLDER_TEMPLATE (t) = tmpl; +- /* Our canonical type depends on the placeholder. */ +- TYPE_CANONICAL (t) = canonical_type_parameter (t); + return t; + } + +--- a/src/gcc/testsuite/g++.dg/cpp1z/class-deduction62.C ++++ b/src/gcc/testsuite/g++.dg/cpp1z/class-deduction62.C +@@ -1,22 +0,0 @@ +-// PR c++/88419 +-// { dg-do compile { target c++17 } } +- +-template struct ref_view { +- template ref_view(T&&); +-}; +- +-template ref_view(R&) -> ref_view; +- +-struct ref_fn { +- template auto operator()(R r) const +- noexcept(noexcept(ref_view{r})); +-}; +- +-template struct indirect_view { +- indirect_view(R); +-}; +- +-struct indirect_fn { +- template auto operator()(R r) const +- noexcept(noexcept(indirect_view{r})); +-}; --- gcc-8-8.3.0.orig/debian/patches/pr90050.diff +++ gcc-8-8.3.0/debian/patches/pr90050.diff @@ -0,0 +1,147 @@ +# DP: Fix PR c++/90050, always link with libstdc++fs.a + +--- a/src/gcc/cp/g++spec.c ++++ b/src/gcc/cp/g++spec.c +@@ -262,7 +262,8 @@ lang_specific_driver (struct cl_decoded_ + #endif + + /* Add one for shared_libgcc or extra static library. */ +- num_args = argc + added + need_math + (library > 0) * 4 + 1; ++ /* Add four for libstdc++fs and linker options. */ ++ num_args = argc + added + need_math + (library > 0) * 4 + 1 + 4; + new_decoded_options = XNEWVEC (struct cl_decoded_option, num_args); + + i = 0; +@@ -363,6 +364,22 @@ lang_specific_driver (struct cl_decoded_ + j++; + } + #endif ++ if (library > 1) ++ { ++ generate_option (OPT_Wl_, "--push-state", 1, CL_DRIVER, ++ &new_decoded_options[j]); ++ j++; ++ generate_option (OPT_Wl_, "--no-whole-archive", 1, CL_DRIVER, ++ &new_decoded_options[j]); ++ j++; ++ generate_option (OPT_l, LIBSTDCXX "fs", 1, ++ CL_DRIVER, &new_decoded_options[j]); ++ added_libraries++; ++ j++; ++ generate_option (OPT_Wl_, "--pop-state", 1, CL_DRIVER, ++ &new_decoded_options[j]); ++ j++; ++ } + } + if (saw_math) + new_decoded_options[j++] = *saw_math; +--- a/src/Makefile.tpl ++++ b/src/Makefile.tpl +@@ -240,11 +240,13 @@ POSTSTAGE1_CXX_EXPORT = \ + CXX="$(STAGE_CC_WRAPPER) $$r/$(HOST_SUBDIR)/prev-gcc/xg++$(exeext) \ + -B$$r/$(HOST_SUBDIR)/prev-gcc/ -B$(build_tooldir)/bin/ -nostdinc++ \ + -B$$r/prev-$(TARGET_SUBDIR)/libstdc++-v3/src/.libs \ ++ -B$$r/prev-$(TARGET_SUBDIR)/libstdc++-v3/src/filesystem/.libs \ + -B$$r/prev-$(TARGET_SUBDIR)/libstdc++-v3/libsupc++/.libs \ + `if $(LEAN); then echo ' -isystem '; else echo ' -I'; fi`$$r/prev-$(TARGET_SUBDIR)/libstdc++-v3/include/$(TARGET_SUBDIR) \ + `if $(LEAN); then echo ' -isystem '; else echo ' -I'; fi`$$r/prev-$(TARGET_SUBDIR)/libstdc++-v3/include \ + `if $(LEAN); then echo ' -isystem '; else echo ' -I'; fi`$$s/libstdc++-v3/libsupc++ \ + -L$$r/prev-$(TARGET_SUBDIR)/libstdc++-v3/src/.libs \ ++ -L$$r/prev-$(TARGET_SUBDIR)/libstdc++-v3/src/filesystem/.libs \ + -L$$r/prev-$(TARGET_SUBDIR)/libstdc++-v3/libsupc++/.libs"; \ + export CXX; \ + CXX_FOR_BUILD="$$CXX"; export CXX_FOR_BUILD; +--- a/src/Makefile.in ++++ b/src/Makefile.in +@@ -237,11 +237,13 @@ POSTSTAGE1_CXX_EXPORT = \ + CXX="$(STAGE_CC_WRAPPER) $$r/$(HOST_SUBDIR)/prev-gcc/xg++$(exeext) \ + -B$$r/$(HOST_SUBDIR)/prev-gcc/ -B$(build_tooldir)/bin/ -nostdinc++ \ + -B$$r/prev-$(TARGET_SUBDIR)/libstdc++-v3/src/.libs \ ++ -B$$r/prev-$(TARGET_SUBDIR)/libstdc++-v3/src/filesystem/.libs \ + -B$$r/prev-$(TARGET_SUBDIR)/libstdc++-v3/libsupc++/.libs \ + `if $(LEAN); then echo ' -isystem '; else echo ' -I'; fi`$$r/prev-$(TARGET_SUBDIR)/libstdc++-v3/include/$(TARGET_SUBDIR) \ + `if $(LEAN); then echo ' -isystem '; else echo ' -I'; fi`$$r/prev-$(TARGET_SUBDIR)/libstdc++-v3/include \ + `if $(LEAN); then echo ' -isystem '; else echo ' -I'; fi`$$s/libstdc++-v3/libsupc++ \ + -L$$r/prev-$(TARGET_SUBDIR)/libstdc++-v3/src/.libs \ ++ -L$$r/prev-$(TARGET_SUBDIR)/libstdc++-v3/src/filesystem/.libs \ + -L$$r/prev-$(TARGET_SUBDIR)/libstdc++-v3/libsupc++/.libs"; \ + export CXX; \ + CXX_FOR_BUILD="$$CXX"; export CXX_FOR_BUILD; +--- a/src/configure.ac ++++ b/src/configure.ac +@@ -3379,10 +3379,10 @@ GCC_TARGET_TOOL(as, AS_FOR_TARGET, AS, [ + GCC_TARGET_TOOL(cc, CC_FOR_TARGET, CC, [gcc/xgcc -B$$r/$(HOST_SUBDIR)/gcc/]) + dnl see comments for CXX_FOR_TARGET_FLAG_TO_PASS + GCC_TARGET_TOOL(c++, CXX_FOR_TARGET, CXX, +- [gcc/xg++ -B$$r/$(HOST_SUBDIR)/gcc/ -nostdinc++ `if test -f $$r/$(TARGET_SUBDIR)/libstdc++-v3/scripts/testsuite_flags; then $(SHELL) $$r/$(TARGET_SUBDIR)/libstdc++-v3/scripts/testsuite_flags --build-includes; else echo -funconfigured-libstdc++-v3 ; fi` -L$$r/$(TARGET_SUBDIR)/libstdc++-v3/src -L$$r/$(TARGET_SUBDIR)/libstdc++-v3/src/.libs -L$$r/$(TARGET_SUBDIR)/libstdc++-v3/libsupc++/.libs], ++ [gcc/xg++ -B$$r/$(HOST_SUBDIR)/gcc/ -nostdinc++ `if test -f $$r/$(TARGET_SUBDIR)/libstdc++-v3/scripts/testsuite_flags; then $(SHELL) $$r/$(TARGET_SUBDIR)/libstdc++-v3/scripts/testsuite_flags --build-includes; else echo -funconfigured-libstdc++-v3 ; fi` -L$$r/$(TARGET_SUBDIR)/libstdc++-v3/src -L$$r/$(TARGET_SUBDIR)/libstdc++-v3/src/.libs -L$$r/$(TARGET_SUBDIR)/libstdc++-v3/src/filesystem/.libs -L$$r/$(TARGET_SUBDIR)/libstdc++-v3/libsupc++/.libs], + c++) + GCC_TARGET_TOOL(c++ for libstdc++, RAW_CXX_FOR_TARGET, CXX, +- [gcc/xgcc -shared-libgcc -B$$r/$(HOST_SUBDIR)/gcc -nostdinc++ -L$$r/$(TARGET_SUBDIR)/libstdc++-v3/src -L$$r/$(TARGET_SUBDIR)/libstdc++-v3/src/.libs -L$$r/$(TARGET_SUBDIR)/libstdc++-v3/libsupc++/.libs], ++ [gcc/xgcc -shared-libgcc -B$$r/$(HOST_SUBDIR)/gcc -nostdinc++ -L$$r/$(TARGET_SUBDIR)/libstdc++-v3/src -L$$r/$(TARGET_SUBDIR)/libstdc++-v3/src/.libs -L$$r/$(TARGET_SUBDIR)/libstdc++-v3/src/filesystem/.libs -L$$r/$(TARGET_SUBDIR)/libstdc++-v3/libsupc++/.libs], + c++) + GCC_TARGET_TOOL(dlltool, DLLTOOL_FOR_TARGET, DLLTOOL, [binutils/dlltool]) + GCC_TARGET_TOOL(gcc, GCC_FOR_TARGET, , [gcc/xgcc -B$$r/$(HOST_SUBDIR)/gcc/]) +--- a/src/gnattools/Makefile.in ++++ b/src/gnattools/Makefile.in +@@ -71,8 +71,10 @@ ADA_INCLUDES_FOR_SUBDIR = -I. -I$(fsrcdi + + CXX_LFLAGS = \ + -B../../../$(target_noncanonical)/libstdc++-v3/src/.libs \ ++ -B../../../$(target_noncanonical)/libstdc++-v3/src/filesystem/.libs \ + -B../../../$(target_noncanonical)/libstdc++-v3/libsupc++/.libs \ + -L../../../$(target_noncanonical)/libstdc++-v3/src/.libs \ ++ -L../../../$(target_noncanonical)/libstdc++-v3/src/filesystem/.libs \ + -L../../../$(target_noncanonical)/libstdc++-v3/libsupc++/.libs + + # Variables for gnattools, native +--- a/src/gotools/Makefile.am ++++ b/src/gotools/Makefile.am +@@ -184,7 +184,7 @@ check-gccgo: Makefile + rm -f $@ $@.tmp + echo "#!/bin/sh" > $@.tmp + abs_libgodir=`cd $(libgodir) && $(PWD_COMMAND)`; \ +- echo "$(GOCOMPILE)" '"$$@"' "-I $${abs_libgodir} -L $${abs_libgodir} -L $${abs_libgodir}/.libs -B$${abs_libgodir}/../libstdc++-v3/src/.libs -B$${abs_libgodir}/../libstdc++-v3/libsupc++/.libs" >> $@.tmp ++ echo "$(GOCOMPILE)" '"$$@"' "-I $${abs_libgodir} -L $${abs_libgodir} -L $${abs_libgodir}/.libs -B$${abs_libgodir}/../libstdc++-v3/src/.libs -B$${abs_libgodir}/../libstdc++-v3/src/filesystem/.libs -B$${abs_libgodir}/../libstdc++-v3/libsupc++/.libs" >> $@.tmp + chmod +x $@.tmp + mv -f $@.tmp $@ + +@@ -194,7 +194,7 @@ check-gcc: Makefile + rm -f $@ $@.tmp + echo "#!/bin/sh" > $@.tmp + abs_libgodir=`cd $(libgodir) && $(PWD_COMMAND)`; \ +- echo "$(GCC_FOR_TARGET)" '"$$@"' "-L $${abs_libgodir} -L $${abs_libgodir}/.libs -B$${abs_libgodir}/../libstdc++-v3/src/.libs -B$${abs_libgodir}/../libstdc++-v3/libsupc++/.libs" >> $@.tmp ++ echo "$(GCC_FOR_TARGET)" '"$$@"' "-L $${abs_libgodir} -L $${abs_libgodir}/.libs -B$${abs_libgodir}/../libstdc++-v3/src/.libs -B$${abs_libgodir}/../libstdc++-v3/src/filesystem/.libs -B$${abs_libgodir}/../libstdc++-v3/libsupc++/.libs" >> $@.tmp + chmod +x $@.tmp + mv -f $@.tmp $@ + +--- a/src/gotools/Makefile.in ++++ b/src/gotools/Makefile.in +@@ -791,7 +791,7 @@ mostlyclean-local: + @NATIVE_TRUE@ rm -f $@ $@.tmp + @NATIVE_TRUE@ echo "#!/bin/sh" > $@.tmp + @NATIVE_TRUE@ abs_libgodir=`cd $(libgodir) && $(PWD_COMMAND)`; \ +-@NATIVE_TRUE@ echo "$(GOCOMPILE)" '"$$@"' "-I $${abs_libgodir} -L $${abs_libgodir} -L $${abs_libgodir}/.libs -B$${abs_libgodir}/../libstdc++-v3/src/.libs -B$${abs_libgodir}/../libstdc++-v3/libsupc++/.libs" >> $@.tmp ++@NATIVE_TRUE@ echo "$(GOCOMPILE)" '"$$@"' "-I $${abs_libgodir} -L $${abs_libgodir} -L $${abs_libgodir}/.libs -B$${abs_libgodir}/../libstdc++-v3/src/.libs -B$${abs_libgodir}/../libstdc++-v3/src/filesystem/.libs -B$${abs_libgodir}/../libstdc++-v3/libsupc++/.libs" >> $@.tmp + @NATIVE_TRUE@ chmod +x $@.tmp + @NATIVE_TRUE@ mv -f $@.tmp $@ + +@@ -801,7 +801,7 @@ mostlyclean-local: + @NATIVE_TRUE@ rm -f $@ $@.tmp + @NATIVE_TRUE@ echo "#!/bin/sh" > $@.tmp + @NATIVE_TRUE@ abs_libgodir=`cd $(libgodir) && $(PWD_COMMAND)`; \ +-@NATIVE_TRUE@ echo "$(GCC_FOR_TARGET)" '"$$@"' "-L $${abs_libgodir} -L $${abs_libgodir}/.libs -B$${abs_libgodir}/../libstdc++-v3/src/.libs -B$${abs_libgodir}/../libstdc++-v3/libsupc++/.libs" >> $@.tmp ++@NATIVE_TRUE@ echo "$(GCC_FOR_TARGET)" '"$$@"' "-L $${abs_libgodir} -L $${abs_libgodir}/.libs -B$${abs_libgodir}/../libstdc++-v3/src/.libs -B$${abs_libgodir}/../libstdc++-v3/src/filesystem/.libs -B$${abs_libgodir}/../libstdc++-v3/libsupc++/.libs" >> $@.tmp + @NATIVE_TRUE@ chmod +x $@.tmp + @NATIVE_TRUE@ mv -f $@.tmp $@ + +--- a/src/libstdc++-v3/testsuite/lib/libstdc++.exp ++++ b/src/libstdc++-v3/testsuite/lib/libstdc++.exp +@@ -587,6 +587,7 @@ proc v3_target_compile_as_c { source des + } else { + set libdir "-L${blddir}/libsupc++/.libs" + set libdir [concat $libdir "-L${blddir}/src/.libs"] ++ set libdir [concat $libdir "-L${blddir}/src/filesystem/.libs"] + } + + set cc_final [concat $cc_final "$libdir"] --- gcc-8-8.3.0.orig/debian/patches/pr90714.diff +++ gcc-8-8.3.0/debian/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 --- gcc-8-8.3.0.orig/debian/patches/rename-info-files.diff +++ gcc-8-8.3.0/debian/patches/rename-info-files.diff @@ -0,0 +1,710 @@ +# 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. + +Index: b/src/gcc/fortran/gfortran.texi +=================================================================== +--- 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}). +Index: b/src/gcc/fortran/Make-lang.in +=================================================================== +--- 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 +@@ -181,10 +182,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 + +@@ -249,7 +250,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) + +@@ -267,7 +268,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: +Index: b/src/gcc/Makefile.in +=================================================================== +--- a/src/gcc/Makefile.in ++++ b/src/gcc/Makefile.in +@@ -3066,8 +3066,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 + +@@ -3114,7 +3137,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 $@ + + +@@ -3122,21 +3158,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 + +@@ -3555,11 +3611,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 +@@ -3780,8 +3836,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) ; \ +Index: b/src/gcc/ada/gnat-style.texi +=================================================================== +--- 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-6). GNAT Coding Style + @end direntry + + @macro syntax{element} +Index: b/src/gcc/ada/gnat_rm.texi +=================================================================== +--- 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-6). Reference Manual for GNU Ada tools. + @end direntry + + @definfoenclose strong,`,' +Index: b/src/gcc/doc/invoke.texi +=================================================================== +--- a/src/gcc/doc/invoke.texi ++++ b/src/gcc/doc/invoke.texi +@@ -11604,7 +11604,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 +@@ -11613,7 +11613,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 +@@ -26506,7 +26506,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 +@@ -26666,7 +26666,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 +Index: b/src/gcc/doc/extend.texi +=================================================================== +--- a/src/gcc/doc/extend.texi ++++ b/src/gcc/doc/extend.texi +@@ -21802,7 +21802,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. +Index: b/src/gcc/doc/standards.texi +=================================================================== +--- a/src/gcc/doc/standards.texi ++++ b/src/gcc/doc/standards.texi +@@ -315,5 +315,5 @@ freely available at @uref{http://www.hsa + 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. +Index: b/src/gcc/doc/libgcc.texi +=================================================================== +--- 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 +Index: b/src/gcc/doc/gccint.texi +=================================================================== +--- 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 +Index: b/src/gcc/doc/cpp.texi +=================================================================== +--- 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 + +Index: b/src/gcc/doc/gcc.texi +=================================================================== +--- 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. +Index: b/src/gcc/doc/install.texi +=================================================================== +--- 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 +Index: b/src/gcc/doc/cppinternals.texi +=================================================================== +--- 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 + +Index: b/src/libgomp/libgomp.texi +=================================================================== +--- 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 +Index: b/src/libgomp/Makefile.in +=================================================================== +--- a/src/libgomp/Makefile.in ++++ b/src/libgomp/Makefile.in +@@ -487,7 +487,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) libgomp.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 + all: config.h + $(MAKE) $(AM_MAKEFLAGS) all-recursive +@@ -1302,15 +1303,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 $@ + + # Tell versions [3.59,3.63) of GNU make to not export all variables. +Index: b/src/libgomp/Makefile.am +=================================================================== +--- a/src/libgomp/Makefile.am ++++ b/src/libgomp/Makefile.am +@@ -125,16 +125,19 @@ endif + + all-local: $(STAMP_GENINSRC) + +-stamp-geninsrc: libgomp.info +- cp -p $(top_builddir)/libgomp.info $(srcdir)/libgomp.info ++INFO_LIBGOMP_NAME = $(shell echo libgomp|sed '$(program_transform_name)') ++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 $@ + + +-CLEANFILES = $(STAMP_GENINSRC) $(STAMP_BUILD_INFO) libgomp.info ++CLEANFILES = $(STAMP_GENINSRC) $(STAMP_BUILD_INFO) $(INFO_LIBGOMP_NAME).info + MAINTAINERCLEANFILES = $(srcdir)/libgomp.info +Index: b/src/libitm/libitm.texi +=================================================================== +--- 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. +Index: b/src/libitm/Makefile.am +=================================================================== +--- a/src/libitm/Makefile.am ++++ b/src/libitm/Makefile.am +@@ -107,14 +107,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 $@ + + +Index: b/src/libitm/Makefile.in +=================================================================== +--- a/src/libitm/Makefile.in ++++ b/src/libitm/Makefile.in +@@ -1105,14 +1105,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 $@ + + # Tell versions [3.59,3.63) of GNU make to not export all variables. +Index: b/src/gcc/go/Make-lang.in +=================================================================== +--- a/src/gcc/go/Make-lang.in ++++ b/src/gcc/go/Make-lang.in +@@ -89,10 +89,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 + +@@ -118,7 +119,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 +@@ -154,7 +155,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) +@@ -194,7 +195,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. + +Index: b/src/gcc/go/gccgo.texi +=================================================================== +--- 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 +Index: b/src/libquadmath/libquadmath.texi +=================================================================== +--- 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. +Index: b/src/libquadmath/Makefile.am +=================================================================== +--- a/src/libquadmath/Makefile.am ++++ b/src/libquadmath/Makefile.am +@@ -133,22 +133,24 @@ endif + + all-local: $(STAMP_GENINSRC) + +-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) libquadmath.info +-MAINTAINERCLEANFILES = $(srcdir)/libquadmath.info ++CLEANFILES = $(STAMP_GENINSRC) $(STAMP_BUILD_INFO) $(INFO_LIBQMATH_NAME).info ++MAINTAINERCLEANFILES = $(srcdir)/$(INFO_LIBQMATH_NAME).info + + endif BUILD_LIBQUADMATH + + # 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) + + + # Automake Documentation: +Index: b/src/libquadmath/Makefile.in +=================================================================== +--- a/src/libquadmath/Makefile.in ++++ b/src/libquadmath/Makefile.in +@@ -193,7 +193,8 @@ MULTIDIRS = + MULTISUBDIR = + MULTIDO = true + MULTICLEAN = true +-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 +@@ -436,8 +437,8 @@ AUTOMAKE_OPTIONS = 1.8 foreign + + # 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) libquadmath.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 +@@ -1518,17 +1519,17 @@ uninstall-am: uninstall-dvi-am uninstall + + @BUILD_LIBQUADMATH_TRUE@all-local: $(STAMP_GENINSRC) + +-@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 $@ + + # 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)" > $@ --- gcc-8-8.3.0.orig/debian/patches/skip-bootstrap-multilib.diff +++ gcc-8-8.3.0/debian/patches/skip-bootstrap-multilib.diff @@ -0,0 +1,49 @@ +# DP: Skip non-default multilib and libstdc++-v3 debug builds in bootstrap builds + +Index: b/src/config-ml.in +=================================================================== +--- 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. + +Index: b/src/libstdc++-v3/acinclude.m4 +=================================================================== +--- a/src/libstdc++-v3/acinclude.m4 ++++ b/src/libstdc++-v3/acinclude.m4 +@@ -2895,7 +2895,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) + ]) + --- gcc-8-8.3.0.orig/debian/patches/sparc64-biarch-long-double-128.diff +++ gcc-8-8.3.0/debian/patches/sparc64-biarch-long-double-128.diff @@ -0,0 +1,35 @@ +# 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. + +Index: b/src/gcc/config/sparc/linux64.h +=================================================================== +--- a/src/gcc/config/sparc/linux64.h ++++ b/src/gcc/config/sparc/linux64.h +@@ -154,9 +154,9 @@ extern const char *host_detect_local_cpu + #else + #define CC1_SPEC "%{profile:-p} \ + %{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}}} \ --- gcc-8-8.3.0.orig/debian/patches/src_gcc_config_i386_gnu.h.diff +++ gcc-8-8.3.0/debian/patches/src_gcc_config_i386_gnu.h.diff @@ -0,0 +1,25 @@ +Index: gcc-8-8-20171108-1.1/src/gcc/config/i386/gnu.h +=================================================================== +--- gcc-8-8-20171108-1.1.orig/src/gcc/config/i386/gnu.h ++++ gcc-8-8-20171108-1.1/src/gcc/config/i386/gnu.h +@@ -37,11 +37,14 @@ along with GCC. If not, see /dev/null 2>&1; then ++addsig _SIGIOT '{_SigNotify + _SigThrow, "SIGIOT: abort"}' ++else + addsig _SIGABRT '{_SigNotify + _SigThrow, "SIGABRT: abort"}' ++fi + addsig _SIGBUS '{_SigPanic + _SigUnblock, "SIGBUS: bus error"}' + addsig _SIGFPE '{_SigPanic + _SigUnblock, "SIGFPE: floating-point exception"}' + addsig _SIGKILL '{0, "SIGKILL: kill"}' +@@ -91,6 +97,7 @@ checksig _SIGCANCEL '{_SigSetStack + _S + checksig _SIGXRES '{_SigNotify, "SIGXRES: resource control exceeded"}' + checksig _SIGJVM1 '{_SigNotify, "SIGJVM1: reserved signal for Java Virtual Machine"}' + checksig _SIGJVM2 '{_SigNotify, "SIGJVM2: reserved signal for Java Virtual Machine"}' ++checksig _SIGLOST ' {_SigNotify, "SIGLOST: resource lost (Sun); server died (GNU)"}' + + # Special handling of signals 32 and 33 on GNU/Linux systems, + # because they are special to glibc. +@@ -112,6 +119,11 @@ else + rtmax=`grep 'const _*SIGRTMAX = [0-9]*$' gen-sysinfo.go | sed -e 's/.* = \([0-9]*\)/\1/'` + if test -n "$rtmax"; then + nsig=`expr $rtmax + 1` ++ elif grep 'const _*SIGRTMAX = [ (]*_*SIGRTMIN[ )]*' gen-sysinfo.go >/dev/null 2>&1; then ++ rtmin=`grep 'const _*SIGRTMIN = [0-9]*$' gen-sysinfo.go | sed -e 's/.* = \([0-9]*\)/\1/'` ++ if test -n "$rtmin"; then ++ nsig=`expr $rtmin + 1` ++ fi + fi + fi + fi +Index: gcc-8-8-20180310-1.1/src/libgo/mksysinfo.sh +=================================================================== +--- gcc-8-8-20180310-1.1.orig/src/libgo/mksysinfo.sh ++++ gcc-8-8-20180310-1.1/src/libgo/mksysinfo.sh +@@ -54,8 +54,33 @@ grep '^type _mld_hdr_t ' gen-sysinfo.go + sed -e 's/_in6_addr/[16]byte/' >> ${OUT} + + # The errno constants. These get type Errno. +- egrep '#define E[A-Z0-9_]+ ' errno.i | \ +- sed -e 's/^#define \(E[A-Z0-9_]*\) .*$/const \1 = Errno(_\1)/' >> ${OUT} ++# egrep '#define E[A-Z0-9_]+ ' errno.i | \ ++# sed -e 's/^#define \(E[A-Z0-9_]*\) .*$/const \1 = Errno(_\1)/' >> ${OUT} ++ ++egrep '#define E[A-Z0-9_]+ [0-9]' errno.i | \ ++ sed -e 's/^#define \(E[A-Z0-9_]*\) .*$/const \1 = Errno(_\1)/' >> ${OUT} ++# Workaround for GNU/Hurd _EMIG_* errors having negative values ++egrep '#define E[A-Z0-9_]+ -[0-9]' errno.i | \ ++ sed -e 's/^#define \(E[A-Z0-9_]*\) .*$/const \1 = Errno(-_\1)/' >> ${OUT} ++ ++# Special treatment of EWOULDBLOCK for GNU/Hurd ++# /usr/include/i386-gnu/bits/errno.h: #define EWOULDBLOCK EAGAIN ++if egrep '^const _EWOULDBLOCK = _EAGAIN' gen-sysinfo.go > /dev/null 2>&1; then ++ if egrep '^const EAGAIN = Errno\(_EAGAIN\)' ${OUT}; then ++ echo 'const EWOULDBLOCK = Errno(_EAGAIN)' >> ${OUT} ++ fi ++fi ++ ++# Special treatment of _NSIG for GNU/Hurd ++# /usr/include/i386-gnu/bits/signum-generic.h: ++#define __SIGRTMIN 32 ++#define __SIGRTMAX __SIGRTMIN ++#define _NSIG (__SIGRTMAX + 1) ++# Brute force method (mksigtab.sh bug): ++#if egrep '^const ___SIGRTMAX = ___SIGRTMIN' gen-sysinfo.go > /dev/null 2>&1; then ++# egrep '^const ___SIGRTMIN = 32' gen-sysinfo.go > /dev/null 2>&1 | \ ++# echo "const __SIGRTMAX = 32" >> gen-sysinfo.go ++#fi + + # The O_xxx flags. + egrep '^const _(O|F|FD)_' gen-sysinfo.go | \ +@@ -124,6 +149,11 @@ grep '^const _SYS_' gen-sysinfo.go | \ + echo "const $sup = _$sys" >> ${OUT} + done + ++# Special treatment of SYS_IOCTL for GNU/Hurd ++if ! grep '^const SYS_IOCTL' ${OUT} > /dev/null 2>&1; then ++ echo "const SYS_IOCTL = 0" >> ${OUT} ++fi ++ + # The GNU/Linux support wants to use SYS_GETDENTS64 if available. + if ! grep '^const SYS_GETDENTS ' ${OUT} >/dev/null 2>&1; then + echo "const SYS_GETDENTS = 0" >> ${OUT} +@@ -451,6 +481,11 @@ grep '^type _st_timespec ' gen-sysinfo.g + + # The stat type. + # Prefer largefile variant if available. ++# Special treatment of st_dev for GNU/Hurd ++# /usr/include/i386-gnu/bits/stat.h: #define st_dev st_fsid ++if grep 'define st_dev st_fsid' gen-sysinfo.go > /dev/null 2>&1; then ++ sed -i -e 's/; st_fsid/; st_dev/' gen-sysinfo.go ++fi + stat=`grep '^type _stat64 ' gen-sysinfo.go || true` + if test "$stat" != ""; then + grep '^type _stat64 ' gen-sysinfo.go --- gcc-8-8.3.0.orig/debian/patches/src_libgo_go_crypto.diff +++ gcc-8-8.3.0/debian/patches/src_libgo_go_crypto.diff @@ -0,0 +1,16 @@ +Index: gcc-8-8-20171108-1.1/src/libgo/go/crypto/x509/root_gnu.go +=================================================================== +--- /dev/null ++++ gcc-8-8-20171108-1.1/src/libgo/go/crypto/x509/root_gnu.go +@@ -0,0 +1,11 @@ ++// Copyright 2015 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. ++// This file is derived from root_linux.go ++ ++package x509 ++ ++// Possible certificate files; stop after finding one. ++var certFiles = []string{ ++ "/etc/ssl/certs/ca-certificates.crt", // Debian/Ubuntu/Gentoo etc. ++} --- gcc-8-8.3.0.orig/debian/patches/src_libgo_go_go_build_syslist.go.diff +++ gcc-8-8.3.0/debian/patches/src_libgo_go_go_build_syslist.go.diff @@ -0,0 +1,11 @@ +Index: gcc-8-8-20180308-1.1/src/libgo/go/go/build/syslist.go +=================================================================== +--- gcc-8-8-20180308-1.1.orig/src/libgo/go/go/build/syslist.go ++++ gcc-8-8-20180308-1.1/src/libgo/go/go/build/syslist.go +@@ -4,5 +4,5 @@ + + package build + +-const goosList = "aix android darwin dragonfly freebsd linux nacl netbsd openbsd plan9 solaris windows zos " ++const goosList = "aix android darwin dragonfly freebsd gnu linux nacl netbsd openbsd plan9 solaris windows zos " + const goarchList = "386 amd64 amd64p32 arm armbe arm64 arm64be alpha m68k ppc64 ppc64le mips mipsle mips64 mips64le mips64p32 mips64p32le ppc riscv64 s390 s390x sh shbe sparc sparc64" --- gcc-8-8.3.0.orig/debian/patches/src_libgo_go_net.diff +++ gcc-8-8.3.0/debian/patches/src_libgo_go_net.diff @@ -0,0 +1,219 @@ +Index: gcc-8-8-20171108-1.1/src/libgo/go/net/cgo_gnu.go +=================================================================== +--- /dev/null ++++ gcc-8-8-20171108-1.1/src/libgo/go/net/cgo_gnu.go +@@ -0,0 +1,17 @@ ++// Copyright 2011 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. ++// This file is derived from cgo_bsd.go ++ ++// +build cgo,!netgo ++// +build gnu ++ ++package net ++ ++/* ++#include ++*/ ++ ++import "syscall" ++ ++const cgoAddrInfoFlags = syscall.AI_CANONNAME | syscall.AI_V4MAPPED | syscall.AI_ALL +Index: gcc-8-8-20171108-1.1/src/libgo/go/net/sendfile_gnu.go +=================================================================== +--- /dev/null ++++ gcc-8-8-20171108-1.1/src/libgo/go/net/sendfile_gnu.go +@@ -0,0 +1,42 @@ ++// Copyright 2011 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. ++// This file is identical to sendfile_linux.go ++ ++package net ++ ++import ( ++ "internal/poll" ++ "io" ++ "os" ++) ++ ++// sendFile copies the contents of r to c using the sendfile ++// system call to minimize copies. ++// ++// if handled == true, sendFile returns the number of bytes copied and any ++// non-EOF error. ++// ++// if handled == false, sendFile performed no work. ++func sendFile(c *netFD, r io.Reader) (written int64, err error, handled bool) { ++ var remain int64 = 1 << 62 // by default, copy until EOF ++ ++ lr, ok := r.(*io.LimitedReader) ++ if ok { ++ remain, r = lr.N, lr.R ++ if remain <= 0 { ++ return 0, nil, true ++ } ++ } ++ f, ok := r.(*os.File) ++ if !ok { ++ return 0, nil, false ++ } ++ ++ written, err = poll.SendFile(&c.pfd, int(f.Fd()), remain) ++ ++ if lr != nil { ++ lr.N = remain - written ++ } ++ return written, wrapSyscallError("sendfile", err), written > 0 ++} +Index: gcc-8-8-20171108-1.1/src/libgo/go/net/sock_gnu.go +=================================================================== +--- /dev/null ++++ gcc-8-8-20171108-1.1/src/libgo/go/net/sock_gnu.go +@@ -0,0 +1,15 @@ ++// Copyright 2014 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. ++// This file is derived from sock_stub.go ++ ++// +build gnu ++ ++package net ++ ++import "syscall" ++ ++func maxListenerBacklog() int { ++ // From /usr/include/i386-gnu/bits/socket.h ++ return syscall.SOMAXCONN ++} +Index: gcc-8-8-20171108-1.1/src/libgo/go/net/sockopt_gnu.go +=================================================================== +--- /dev/null ++++ gcc-8-8-20171108-1.1/src/libgo/go/net/sockopt_gnu.go +@@ -0,0 +1,33 @@ ++// Copyright 2011 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. ++// This file is identical to sockopt_linux.go ++ ++package net ++ ++import ( ++ "os" ++ "syscall" ++) ++ ++func setDefaultSockopts(s, family, sotype int, ipv6only bool) error { ++ if family == syscall.AF_INET6 && sotype != syscall.SOCK_RAW { ++ // Allow both IP versions even if the OS default ++ // is otherwise. Note that some operating systems ++ // never admit this option. ++ syscall.SetsockoptInt(s, syscall.IPPROTO_IPV6, syscall.IPV6_V6ONLY, boolint(ipv6only)) ++ } ++ // Allow broadcast. ++ return os.NewSyscallError("setsockopt", syscall.SetsockoptInt(s, syscall.SOL_SOCKET, syscall.SO_BROADCAST, 1)) ++} ++ ++func setDefaultListenerSockopts(s int) error { ++ // Allow reuse of recently-used addresses. ++ return os.NewSyscallError("setsockopt", syscall.SetsockoptInt(s, syscall.SOL_SOCKET, syscall.SO_REUSEADDR, 1)) ++} ++ ++func setDefaultMulticastSockopts(s int) error { ++ // Allow multicast UDP and raw IP datagram sockets to listen ++ // concurrently across multiple listeners. ++ return os.NewSyscallError("setsockopt", syscall.SetsockoptInt(s, syscall.SOL_SOCKET, syscall.SO_REUSEADDR, 1)) ++} +Index: gcc-8-8-20171108-1.1/src/libgo/go/net/sockoptip_gnu.go +=================================================================== +--- /dev/null ++++ gcc-8-8-20171108-1.1/src/libgo/go/net/sockoptip_gnu.go +@@ -0,0 +1,31 @@ ++// Copyright 2011 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. ++// This file is identical to sockoptip_bsd.go ++ ++// +build gnu ++ ++package net ++ ++import ( ++ "runtime" ++ "syscall" ++) ++ ++func setIPv4MulticastInterface(fd *netFD, ifi *Interface) error { ++ ip, err := interfaceToIPv4Addr(ifi) ++ if err != nil { ++ return wrapSyscallError("setsockopt", err) ++ } ++ var a [4]byte ++ copy(a[:], ip.To4()) ++ err = fd.pfd.SetsockoptInet4Addr(syscall.IPPROTO_IP, syscall.IP_MULTICAST_IF, a) ++ runtime.KeepAlive(fd) ++ return wrapSyscallError("setsockopt", err) ++} ++ ++func setIPv4MulticastLoopback(fd *netFD, v bool) error { ++ err := fd.pfd.SetsockoptByte(syscall.IPPROTO_IP, syscall.IP_MULTICAST_LOOP, byte(boolint(v))) ++ runtime.KeepAlive(fd) ++ return wrapSyscallError("setsockopt", err) ++} +Index: gcc-8-8-20171108-1.1/src/libgo/go/internal/poll/sendfile_gnu.go +=================================================================== +--- /dev/null ++++ gcc-8-8-20171108-1.1/src/libgo/go/internal/poll/sendfile_gnu.go +@@ -0,0 +1,51 @@ ++// Copyright 2011 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. ++// This file is identical to sendfile_linux.go ++ ++package poll ++ ++import "syscall" ++ ++// maxSendfileSize is the largest chunk size we ask the kernel to copy ++// at a time. ++const maxSendfileSize int = 4 << 20 ++ ++// SendFile wraps the sendfile system call. ++func SendFile(dstFD *FD, src int, remain int64) (int64, error) { ++ if err := dstFD.writeLock(); err != nil { ++ return 0, err ++ } ++ defer dstFD.writeUnlock() ++ ++ dst := int(dstFD.Sysfd) ++ var written int64 ++ var err error ++ for remain > 0 { ++ n := maxSendfileSize ++ if int64(n) > remain { ++ n = int(remain) ++ } ++ n, err1 := syscall.Sendfile(dst, src, nil, n) ++ if n > 0 { ++ written += int64(n) ++ remain -= int64(n) ++ } ++ if n == 0 && err1 == nil { ++ break ++ } ++ if err1 == syscall.EAGAIN { ++ if err1 = dstFD.pd.waitWrite(dstFD.isFile); err1 == nil { ++ continue ++ } ++ } ++ if err1 != nil { ++ // This includes syscall.ENOSYS (no kernel ++ // support) and syscall.EINVAL (fd types which ++ // don't implement sendfile) ++ err = err1 ++ break ++ } ++ } ++ return written, err ++} --- gcc-8-8.3.0.orig/debian/patches/src_libgo_go_os.diff +++ gcc-8-8.3.0/debian/patches/src_libgo_go_os.diff @@ -0,0 +1,56 @@ +Index: gcc-8-8-20171102-1.1/src/libgo/go/os/executable_procfs.go +=================================================================== +--- gcc-8-8-20171102-1.1.orig/src/libgo/go/os/executable_procfs.go ++++ gcc-8-8-20171102-1.1/src/libgo/go/os/executable_procfs.go +@@ -19,7 +19,7 @@ var executablePath, executablePathErr = + switch runtime.GOOS { + default: + return "", errors.New("Executable not implemented for " + runtime.GOOS) +- case "linux", "android": ++ case "gnu", "linux", "android": + procfn = "/proc/self/exe" + case "netbsd": + procfn = "/proc/curproc/exe" +Index: gcc-8-8-20171102-1.1/src/libgo/go/os/pipe_gnu.go +=================================================================== +--- /dev/null ++++ gcc-8-8-20171102-1.1/src/libgo/go/os/pipe_gnu.go +@@ -0,0 +1,38 @@ ++// Copyright 2013 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. ++// This file is derived from pipe_linux.go ++ ++// +build gnu ++ ++package os ++ ++import "syscall" ++ ++// Pipe returns a connected pair of Files; reads from r return bytes written to w. ++// It returns the files and an error, if any. ++func Pipe() (r *File, w *File, err error) { ++ var p [2]int ++ ++ e := syscall.Pipe2(p[0:], syscall.O_CLOEXEC) ++ // pipe2 was added in 2.6.27 and our minimum requirement is 2.6.23, so it ++ // might not be implemented. ++ if e == syscall.ENOSYS { ++ // See ../syscall/exec.go for description of lock. ++ syscall.ForkLock.RLock() ++ e = syscall.Pipe(p[0:]) ++ if e != nil { ++ syscall.ForkLock.RUnlock() ++ return nil, nil, NewSyscallError("pipe", e) ++ } ++ syscall.CloseOnExec(p[0]) ++ syscall.CloseOnExec(p[1]) ++ syscall.ForkLock.RUnlock() ++ } else if e != nil { ++ return nil, nil, NewSyscallError("pipe2", e) ++ } ++ ++ return NewFile(uintptr(p[0]), "|0"), NewFile(uintptr(p[1]), "|1"), nil ++//FIXME: When netpoll_poll.go is implemented ++// return newFile(uintptr(p[0]), "|0", true), newFile(uintptr(p[1]), "|1", true), nil ++} --- gcc-8-8.3.0.orig/debian/patches/src_libgo_go_runtime.diff +++ gcc-8-8.3.0/debian/patches/src_libgo_go_runtime.diff @@ -0,0 +1,1106 @@ +Index: gcc-8-8.3.0/src/libgo/go/runtime/netpoll.go +=================================================================== +--- gcc-8-8.3.0.orig/src/libgo/go/runtime/netpoll.go ++++ gcc-8-8.3.0/src/libgo/go/runtime/netpoll.go +@@ -170,7 +170,7 @@ func poll_runtime_pollWait(pd *pollDesc, + return err + } + // As for now only Solaris uses level-triggered IO. +- if GOOS == "solaris" { ++ if GOOS == "solaris" || GOOS == "gnu" { + netpollarm(pd, mode) + } + for !netpollblock(pd, int32(mode), false) { +Index: gcc-8-8.3.0/src/libgo/go/runtime/netpoll_gnu.go +=================================================================== +--- /dev/null ++++ gcc-8-8.3.0/src/libgo/go/runtime/netpoll_gnu.go +@@ -0,0 +1,241 @@ ++// 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 runtime ++ ++import "unsafe" ++ ++// FIXME: Improve network poller for hurd. ++// This is based on the former libgo/runtime/netpoll_select.c implementation ++// except that it uses poll instead of select and is written in Go. ++// It's also based on Solaris implementation for the arming mechanisms ++// Inspiration was also taken from netpoll_aix.go and netpoll_solaris.go ++ ++//From /usr/include/x86_64-linux-gnu/sys/poll.h ++//go:noescape ++//extern poll ++func libc_poll(pfds *pollfd, nfds int32, timeout int32) int32 ++ ++//go:noescape ++//extern pipe2 ++func libc_pipe2(fd *int32, flags int32) int32 ++ ++//pollfd represents the poll structure for GNU/Hurd operating system. ++type pollfd struct { ++ fd int32 // File descriptor to poll. ++ events int16 // Types of events poller cares about. ++ revents int16 // Types of events that actually occurred. ++} ++ ++//From /usr/include/i386-gnu/bits/poll.h ++const _POLLIN = 01 // There is data to read. ++const _POLLPRI = 02 // There is urgent data to read. ++const _POLLOUT = 04 // Writing now will not block. ++const _POLLERR = 010 // Error condition. ++const _POLLHUP = 020 // Hung up. ++const _POLLNVAL = 040 // Invalid polling request. ++ ++var ( ++ pfds []pollfd ++ pds []*pollDesc ++ mtxpoll mutex ++ mtxset mutex ++ rdwake int32 ++ wrwake int32 ++ pendingUpdates int32 ++) ++ ++const pollVerbose = false ++ ++func netpollinit() { ++ var p [2]int32 ++ ++ // Create the pipe we use to wakeup poll. ++ if err := libc_pipe2(&p[0], _O_CLOEXEC|_O_NONBLOCK); err < 0 { ++ throw("runtime:netpollinit(): failed to create pipe2") ++ } ++ rdwake = p[0] ++ wrwake = p[1] ++ ++ // Pre-allocate array of pollfd structures for poll. ++ if pollVerbose { ++ println("*** allocating") ++ } ++ pfds = make([]pollfd, 1, 128) ++ if pollVerbose { ++ println("*** allocating done", &pfds[0]) ++ } ++ ++ // Poll the read side of the pipe. ++ pfds[0].fd = int32(rdwake) ++ pfds[0].events = int16(_POLLIN) ++ pfds[0].revents = int16(0) ++ ++ pds = make([]*pollDesc, 1, 128) ++ // Checks for pd != nil are made in netpoll. ++ pds[0] = nil ++} ++ ++func netpolldescriptor() uintptr { ++ // Both fds must be returned. ++ if rdwake > 0xFFFF || wrwake > 0xFFFF { ++ throw("netpolldescriptor: invalid fd number") ++ } ++ return uintptr(rdwake<<16 | wrwake) ++} ++ ++// netpollwakeup writes on wrwake to wakeup poll before any changes. ++func netpollwakeup() { ++ if pendingUpdates == 0 { ++ pendingUpdates = 1 ++ if pollVerbose { ++ println("*** writing 1 byte") ++ } ++ b := [1]byte{0} ++ write(uintptr(wrwake), unsafe.Pointer(&b[0]), 1) ++ } ++} ++ ++func netpollopen(fd uintptr, pd *pollDesc) int32 { ++ if pollVerbose { ++ println("*** netpollopen", fd) ++ } ++ lock(&mtxpoll) ++ netpollwakeup() ++ ++ lock(&mtxset) ++ unlock(&mtxpoll) ++ ++ pd.user = uint32(len(pfds)) ++ pfds = append(pfds, pollfd{fd: int32(fd)}) ++ pds = append(pds, pd) ++ unlock(&mtxset) ++ return 0 ++} ++ ++func netpollclose(fd uintptr) int32 { ++ if pollVerbose { ++ println("*** netpollclose", fd) ++ } ++ lock(&mtxpoll) ++ netpollwakeup() ++ ++ lock(&mtxset) ++ unlock(&mtxpoll) ++ ++ for i := 0; i < len(pfds); i++ { ++ if pfds[i].fd == int32(fd) { ++ pfds[i] = pfds[len(pfds)-1] ++ pfds = pfds[:len(pfds)-1] ++ ++ pds[i] = pds[len(pds)-1] ++ pds[i].user = uint32(i) ++ pds = pds[:len(pds)-1] ++ break ++ } ++ } ++ unlock(&mtxset) ++ return 0 ++} ++ ++func netpollarm(pd *pollDesc, mode int) { ++ if pollVerbose { ++ println("*** netpollarm", pd.fd, mode) ++ } ++ lock(&mtxpoll) ++ netpollwakeup() ++ ++ lock(&mtxset) ++ unlock(&mtxpoll) ++ ++ switch mode { ++ case 'r': ++ pfds[pd.user].events |= _POLLIN ++ case 'w': ++ pfds[pd.user].events |= _POLLOUT ++ } ++ unlock(&mtxset) ++} ++ ++// polls for ready network connections ++// returns list of goroutines that become runnable ++//go:nowritebarrierrec ++func netpoll(block bool) *g { ++ timeout := int32(-1) ++ if !block { ++ timeout = 0 ++ } ++ ++ if pollVerbose { ++ println("*** netpoll", block) ++ } ++retry: ++ lock(&mtxpoll) ++ lock(&mtxset) ++ pendingUpdates = 0 ++ unlock(&mtxpoll) ++ ++ if pollVerbose { ++ println("*** netpoll before poll") ++ } ++ n := libc_poll(&pfds[0], int32(len(pfds)), timeout) ++ if pollVerbose { ++ println("*** netpoll after poll", n) ++ } ++ if n < 0 { ++ e := errno() ++ if e != _EINTR { ++ println("errno=", e, " len(pfds)=", len(pfds)) ++ throw("poll failed") ++ } ++ if pollVerbose { ++ println("*** poll failed") ++ } ++ unlock(&mtxset) ++ goto retry ++ } ++ // Check if some descriptors need to be changed ++ if n != 0 && pfds[0].revents&(_POLLIN|_POLLHUP|_POLLERR) != 0 { ++ var b [1]byte ++ for read(rdwake, unsafe.Pointer(&b[0]), 1) == 1 { ++ if pollVerbose { ++ println("*** read 1 byte from pipe") ++ } ++ } ++ // Do not look at the other fds in this case as the mode may have changed ++ // XXX only additions of flags are made, so maybe it is ok ++ unlock(&mtxset) ++ goto retry ++ } ++ var gp guintptr ++ ++ for i := 0; i < len(pfds) && n > 0; i++ { ++ pfd := &pfds[i] ++ ++ var mode int32 ++ if pfd.revents&(_POLLIN|_POLLHUP|_POLLERR) != 0 { ++ mode += 'r' ++ pfd.events &= ^_POLLIN ++ } ++ if pfd.revents&(_POLLOUT|_POLLHUP|_POLLERR) != 0 { ++ mode += 'w' ++ pfd.events &= ^_POLLOUT ++ } ++ if mode != 0 { ++ if pollVerbose { ++ println("*** netpollready i=", i, "revents=", pfd.revents, "events=", pfd.events, "pd=", pds[i]) ++ } ++ netpollready(&gp, pds[i], mode) ++ n-- ++ } ++ } ++ unlock(&mtxset) ++ if block && gp == 0 { ++ goto retry ++ } ++ if pollVerbose { ++ println("*** netpoll returning end") ++ } ++ return gp.ptr() ++} +Index: gcc-8-8.3.0/src/libgo/go/runtime/os_gnu.go +=================================================================== +--- /dev/null ++++ gcc-8-8.3.0/src/libgo/go/runtime/os_gnu.go +@@ -0,0 +1,87 @@ ++// Copyright 2011 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. ++// This file is derived from os_solaris.go ++ ++package runtime ++ ++import "unsafe" ++ ++type mOS struct { ++ waitsema uintptr // semaphore for parking on locks ++} ++ ++//extern malloc ++func libc_malloc(uintptr) unsafe.Pointer ++ ++//go:noescape ++//extern sem_init ++func sem_init(sem *_sem_t, pshared int32, value uint32) int32 ++ ++//go:noescape ++//extern sem_wait ++func sem_wait(sem *_sem_t) int32 ++ ++//go:noescape ++//extern sem_post ++func sem_post(sem *_sem_t) int32 ++ ++//go:noescape ++//extern sem_timedwait ++func sem_timedwait(sem *_sem_t, timeout *timespec) int32 ++ ++//go:nosplit ++func semacreate(mp *m) { ++ if mp.mos.waitsema != 0 { ++ return ++ } ++ ++ var sem *_sem_t ++ ++ // Call libc's malloc rather than malloc. This will ++ // allocate space on the C heap. We can't call malloc ++ // here because it could cause a deadlock. ++ sem = (*_sem_t)(libc_malloc(unsafe.Sizeof(*sem))) ++ if sem_init(sem, 0, 0) != 0 { ++ throw("sem_init") ++ } ++ mp.mos.waitsema = uintptr(unsafe.Pointer(sem)) ++} ++ ++//go:nosplit ++func semasleep(ns int64) int32 { ++ _m_ := getg().m ++ if ns >= 0 { ++ var ts timespec ++ ts.set_sec(ns / 1000000000) ++ ts.set_nsec(int32(ns % 1000000000)) ++ ++ if sem_timedwait((*_sem_t)(unsafe.Pointer(_m_.mos.waitsema)), &ts) != 0 { ++ err := errno() ++ if err == _ETIMEDOUT || err == _EAGAIN || err == _EINTR { ++ return -1 ++ } ++ throw("sem_timedwait") ++ } ++ return 0 ++ } ++ for { ++ r1 := sem_wait((*_sem_t)(unsafe.Pointer(_m_.mos.waitsema))) ++ if r1 == 0 { ++ break ++ } ++ if errno() == _EINTR { ++ continue ++ } ++ throw("sem_wait") ++ } ++ return 0 ++} ++ ++//go:nosplit ++func semawakeup(mp *m) { ++ if sem_post((*_sem_t)(unsafe.Pointer(mp.mos.waitsema))) != 0 { ++ throw("sem_post") ++ } ++} ++ +Index: gcc-8-8.3.0/src/libgo/go/runtime/signal_gnu.go +=================================================================== +--- /dev/null ++++ gcc-8-8.3.0/src/libgo/go/runtime/signal_gnu.go +@@ -0,0 +1,750 @@ ++// Copyright 2012 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. ++// This file is identical to signal_unix.go except for ++// dieFromSignal(_SIGIOT) instead of dieFromSignal(_SIGABRT) ++ ++ ++// +build gnu ++ ++package runtime ++ ++import ( ++ "runtime/internal/atomic" ++ "unsafe" ++) ++ ++// For gccgo's C code to call: ++//go:linkname initsig runtime.initsig ++//go:linkname sigtrampgo runtime.sigtrampgo ++ ++// sigTabT is the type of an entry in the global sigtable array. ++// sigtable is inherently system dependent, and appears in OS-specific files, ++// but sigTabT is the same for all Unixy systems. ++// The sigtable array is indexed by a system signal number to get the flags ++// and printable name of each signal. ++type sigTabT struct { ++ flags int32 ++ name string ++} ++ ++//go:linkname os_sigpipe os.sigpipe ++func os_sigpipe() { ++ systemstack(sigpipe) ++} ++ ++func signame(sig uint32) string { ++ if sig >= uint32(len(sigtable)) { ++ return "" ++ } ++ return sigtable[sig].name ++} ++ ++const ( ++ _SIG_DFL uintptr = 0 ++ _SIG_IGN uintptr = 1 ++) ++ ++// Stores the signal handlers registered before Go installed its own. ++// These signal handlers will be invoked in cases where Go doesn't want to ++// handle a particular signal (e.g., signal occurred on a non-Go thread). ++// See sigfwdgo for more information on when the signals are forwarded. ++// ++// This is read by the signal handler; accesses should use ++// atomic.Loaduintptr and atomic.Storeuintptr. ++var fwdSig [_NSIG]uintptr ++ ++// handlingSig is indexed by signal number and is non-zero if we are ++// currently handling the signal. Or, to put it another way, whether ++// the signal handler is currently set to the Go signal handler or not. ++// This is uint32 rather than bool so that we can use atomic instructions. ++var handlingSig [_NSIG]uint32 ++ ++// channels for synchronizing signal mask updates with the signal mask ++// thread ++var ( ++ disableSigChan chan uint32 ++ enableSigChan chan uint32 ++ maskUpdatedChan chan struct{} ++) ++ ++func init() { ++ // _NSIG is the number of signals on this operating system. ++ // sigtable should describe what to do for all the possible signals. ++ if len(sigtable) != _NSIG { ++ print("runtime: len(sigtable)=", len(sigtable), " _NSIG=", _NSIG, "\n") ++ throw("bad sigtable len") ++ } ++} ++ ++var signalsOK bool ++ ++// Initialize signals. ++// Called by libpreinit so runtime may not be initialized. ++//go:nosplit ++//go:nowritebarrierrec ++func initsig(preinit bool) { ++ if preinit { ++ // preinit is only passed as true if isarchive should be true. ++ isarchive = true ++ } ++ ++ if !preinit { ++ // It's now OK for signal handlers to run. ++ signalsOK = true ++ } ++ ++ // For c-archive/c-shared this is called by libpreinit with ++ // preinit == true. ++ if (isarchive || islibrary) && !preinit { ++ return ++ } ++ ++ for i := uint32(0); i < _NSIG; i++ { ++ t := &sigtable[i] ++ if t.flags == 0 || t.flags&_SigDefault != 0 { ++ continue ++ } ++ ++ // We don't need to use atomic operations here because ++ // there shouldn't be any other goroutines running yet. ++ fwdSig[i] = getsig(i) ++ ++ if !sigInstallGoHandler(i) { ++ // Even if we are not installing a signal handler, ++ // set SA_ONSTACK if necessary. ++ if fwdSig[i] != _SIG_DFL && fwdSig[i] != _SIG_IGN { ++ setsigstack(i) ++ } ++ continue ++ } ++ ++ handlingSig[i] = 1 ++ setsig(i, getSigtramp()) ++ } ++} ++ ++//go:nosplit ++//go:nowritebarrierrec ++func sigInstallGoHandler(sig uint32) bool { ++ // For some signals, we respect an inherited SIG_IGN handler ++ // rather than insist on installing our own default handler. ++ // Even these signals can be fetched using the os/signal package. ++ switch sig { ++ case _SIGHUP, _SIGINT: ++ if atomic.Loaduintptr(&fwdSig[sig]) == _SIG_IGN { ++ return false ++ } ++ } ++ ++ t := &sigtable[sig] ++ if t.flags&_SigSetStack != 0 { ++ return false ++ } ++ ++ // When built using c-archive or c-shared, only install signal ++ // handlers for synchronous signals and SIGPIPE. ++ if (isarchive || islibrary) && t.flags&_SigPanic == 0 && sig != _SIGPIPE { ++ return false ++ } ++ ++ return true ++} ++ ++// sigenable enables the Go signal handler to catch the signal sig. ++// It is only called while holding the os/signal.handlers lock, ++// via os/signal.enableSignal and signal_enable. ++func sigenable(sig uint32) { ++ if sig >= uint32(len(sigtable)) { ++ return ++ } ++ ++ // SIGPROF is handled specially for profiling. ++ if sig == _SIGPROF { ++ return ++ } ++ ++ t := &sigtable[sig] ++ if t.flags&_SigNotify != 0 { ++ ensureSigM() ++ enableSigChan <- sig ++ <-maskUpdatedChan ++ if atomic.Cas(&handlingSig[sig], 0, 1) { ++ atomic.Storeuintptr(&fwdSig[sig], getsig(sig)) ++ setsig(sig, getSigtramp()) ++ } ++ } ++} ++ ++// sigdisable disables the Go signal handler for the signal sig. ++// It is only called while holding the os/signal.handlers lock, ++// via os/signal.disableSignal and signal_disable. ++func sigdisable(sig uint32) { ++ if sig >= uint32(len(sigtable)) { ++ return ++ } ++ ++ // SIGPROF is handled specially for profiling. ++ if sig == _SIGPROF { ++ return ++ } ++ ++ t := &sigtable[sig] ++ if t.flags&_SigNotify != 0 { ++ ensureSigM() ++ disableSigChan <- sig ++ <-maskUpdatedChan ++ ++ // If initsig does not install a signal handler for a ++ // signal, then to go back to the state before Notify ++ // we should remove the one we installed. ++ if !sigInstallGoHandler(sig) { ++ atomic.Store(&handlingSig[sig], 0) ++ setsig(sig, atomic.Loaduintptr(&fwdSig[sig])) ++ } ++ } ++} ++ ++// sigignore ignores the signal sig. ++// It is only called while holding the os/signal.handlers lock, ++// via os/signal.ignoreSignal and signal_ignore. ++func sigignore(sig uint32) { ++ if sig >= uint32(len(sigtable)) { ++ return ++ } ++ ++ // SIGPROF is handled specially for profiling. ++ if sig == _SIGPROF { ++ return ++ } ++ ++ t := &sigtable[sig] ++ if t.flags&_SigNotify != 0 { ++ atomic.Store(&handlingSig[sig], 0) ++ setsig(sig, _SIG_IGN) ++ } ++} ++ ++// clearSignalHandlers clears all signal handlers that are not ignored ++// back to the default. This is called by the child after a fork, so that ++// we can enable the signal mask for the exec without worrying about ++// running a signal handler in the child. ++//go:nosplit ++//go:nowritebarrierrec ++func clearSignalHandlers() { ++ for i := uint32(0); i < _NSIG; i++ { ++ if atomic.Load(&handlingSig[i]) != 0 { ++ setsig(i, _SIG_DFL) ++ } ++ } ++} ++ ++// setProcessCPUProfiler is called when the profiling timer changes. ++// It is called with prof.lock held. hz is the new timer, and is 0 if ++// profiling is being disabled. Enable or disable the signal as ++// required for -buildmode=c-archive. ++func setProcessCPUProfiler(hz int32) { ++ if hz != 0 { ++ // Enable the Go signal handler if not enabled. ++ if atomic.Cas(&handlingSig[_SIGPROF], 0, 1) { ++ atomic.Storeuintptr(&fwdSig[_SIGPROF], getsig(_SIGPROF)) ++ setsig(_SIGPROF, getSigtramp()) ++ } ++ } else { ++ // If the Go signal handler should be disabled by default, ++ // disable it if it is enabled. ++ if !sigInstallGoHandler(_SIGPROF) { ++ if atomic.Cas(&handlingSig[_SIGPROF], 1, 0) { ++ setsig(_SIGPROF, atomic.Loaduintptr(&fwdSig[_SIGPROF])) ++ } ++ } ++ } ++} ++ ++// setThreadCPUProfiler makes any thread-specific changes required to ++// implement profiling at a rate of hz. ++func setThreadCPUProfiler(hz int32) { ++ var it _itimerval ++ if hz == 0 { ++ setitimer(_ITIMER_PROF, &it, nil) ++ } else { ++ it.it_interval.tv_sec = 0 ++ it.it_interval.set_usec(1000000 / hz) ++ it.it_value = it.it_interval ++ setitimer(_ITIMER_PROF, &it, nil) ++ } ++ _g_ := getg() ++ _g_.m.profilehz = hz ++} ++ ++func sigpipe() { ++ if sigsend(_SIGPIPE) { ++ return ++ } ++ dieFromSignal(_SIGPIPE) ++} ++ ++// sigtrampgo is called from the signal handler function, sigtramp, ++// written in assembly code. ++// This is called by the signal handler, and the world may be stopped. ++// ++// It must be nosplit because getg() is still the G that was running ++// (if any) when the signal was delivered, but it's (usually) called ++// on the gsignal stack. Until this switches the G to gsignal, the ++// stack bounds check won't work. ++// ++//go:nosplit ++//go:nowritebarrierrec ++func sigtrampgo(sig uint32, info *_siginfo_t, ctx unsafe.Pointer) { ++ if sigfwdgo(sig, info, ctx) { ++ return ++ } ++ g := getg() ++ if g == nil { ++ c := sigctxt{info, ctx} ++ if sig == _SIGPROF { ++ _, pc := getSiginfo(info, ctx) ++ sigprofNonGo(pc) ++ return ++ } ++ badsignal(uintptr(sig), &c) ++ return ++ } ++ ++ setg(g.m.gsignal) ++ sighandler(sig, info, ctx, g) ++ setg(g) ++} ++ ++// sigpanic turns a synchronous signal into a run-time panic. ++// If the signal handler sees a synchronous panic, it arranges the ++// stack to look like the function where the signal occurred called ++// sigpanic, sets the signal's PC value to sigpanic, and returns from ++// the signal handler. The effect is that the program will act as ++// though the function that got the signal simply called sigpanic ++// instead. ++// ++// This must NOT be nosplit because the linker doesn't know where ++// sigpanic calls can be injected. ++// ++// The signal handler must not inject a call to sigpanic if ++// getg().throwsplit, since sigpanic may need to grow the stack. ++func sigpanic() { ++ g := getg() ++ if !canpanic(g) { ++ throw("unexpected signal during runtime execution") ++ } ++ ++ switch g.sig { ++ case _SIGBUS: ++ if g.sigcode0 == _BUS_ADRERR && g.sigcode1 < 0x1000 { ++ panicmem() ++ } ++ // Support runtime/debug.SetPanicOnFault. ++ if g.paniconfault { ++ panicmem() ++ } ++ print("unexpected fault address ", hex(g.sigcode1), "\n") ++ throw("fault") ++ case _SIGSEGV: ++ if (g.sigcode0 == 0 || g.sigcode0 == _SEGV_MAPERR || g.sigcode0 == _SEGV_ACCERR) && g.sigcode1 < 0x1000 { ++ panicmem() ++ } ++ // Support runtime/debug.SetPanicOnFault. ++ if g.paniconfault { ++ panicmem() ++ } ++ print("unexpected fault address ", hex(g.sigcode1), "\n") ++ throw("fault") ++ case _SIGFPE: ++ switch g.sigcode0 { ++ case _FPE_INTDIV: ++ panicdivide() ++ case _FPE_INTOVF: ++ panicoverflow() ++ } ++ panicfloat() ++ } ++ ++ if g.sig >= uint32(len(sigtable)) { ++ // can't happen: we looked up g.sig in sigtable to decide to call sigpanic ++ throw("unexpected signal value") ++ } ++ panic(errorString(sigtable[g.sig].name)) ++} ++ ++// dieFromSignal kills the program with a signal. ++// This provides the expected exit status for the shell. ++// This is only called with fatal signals expected to kill the process. ++//go:nosplit ++//go:nowritebarrierrec ++func dieFromSignal(sig uint32) { ++ unblocksig(sig) ++ // Mark the signal as unhandled to ensure it is forwarded. ++ atomic.Store(&handlingSig[sig], 0) ++ raise(sig) ++ ++ // That should have killed us. On some systems, though, raise ++ // sends the signal to the whole process rather than to just ++ // the current thread, which means that the signal may not yet ++ // have been delivered. Give other threads a chance to run and ++ // pick up the signal. ++ osyield() ++ osyield() ++ osyield() ++ ++ // If that didn't work, try _SIG_DFL. ++ setsig(sig, _SIG_DFL) ++ raise(sig) ++ ++ osyield() ++ osyield() ++ osyield() ++ ++ // On Darwin we may still fail to die, because raise sends the ++ // signal to the whole process rather than just the current thread, ++ // and osyield just sleeps briefly rather than letting all other ++ // threads run. See issue 20315. Sleep longer. ++ if GOOS == "darwin" { ++ usleep(100) ++ } ++ ++ // If we are still somehow running, just exit with the wrong status. ++ exit(2) ++} ++ ++// raisebadsignal is called when a signal is received on a non-Go ++// thread, and the Go program does not want to handle it (that is, the ++// program has not called os/signal.Notify for the signal). ++func raisebadsignal(sig uint32, c *sigctxt) { ++ if sig == _SIGPROF { ++ // Ignore profiling signals that arrive on non-Go threads. ++ return ++ } ++ ++ var handler uintptr ++ if sig >= _NSIG { ++ handler = _SIG_DFL ++ } else { ++ handler = atomic.Loaduintptr(&fwdSig[sig]) ++ } ++ ++ // Reset the signal handler and raise the signal. ++ // We are currently running inside a signal handler, so the ++ // signal is blocked. We need to unblock it before raising the ++ // signal, or the signal we raise will be ignored until we return ++ // from the signal handler. We know that the signal was unblocked ++ // before entering the handler, or else we would not have received ++ // it. That means that we don't have to worry about blocking it ++ // again. ++ unblocksig(sig) ++ setsig(sig, handler) ++ ++ // If we're linked into a non-Go program we want to try to ++ // avoid modifying the original context in which the signal ++ // was raised. If the handler is the default, we know it ++ // is non-recoverable, so we don't have to worry about ++ // re-installing sighandler. At this point we can just ++ // return and the signal will be re-raised and caught by ++ // the default handler with the correct context. ++ if (isarchive || islibrary) && handler == _SIG_DFL && c.sigcode() != _SI_USER { ++ return ++ } ++ ++ raise(sig) ++ ++ // Give the signal a chance to be delivered. ++ // In almost all real cases the program is about to crash, ++ // so sleeping here is not a waste of time. ++ usleep(1000) ++ ++ // If the signal didn't cause the program to exit, restore the ++ // Go signal handler and carry on. ++ // ++ // We may receive another instance of the signal before we ++ // restore the Go handler, but that is not so bad: we know ++ // that the Go program has been ignoring the signal. ++ setsig(sig, getSigtramp()) ++} ++ ++func crash() { ++ if GOOS == "darwin" { ++ // OS X core dumps are linear dumps of the mapped memory, ++ // from the first virtual byte to the last, with zeros in the gaps. ++ // Because of the way we arrange the address space on 64-bit systems, ++ // this means the OS X core file will be >128 GB and even on a zippy ++ // workstation can take OS X well over an hour to write (uninterruptible). ++ // Save users from making that mistake. ++ if GOARCH == "amd64" { ++ return ++ } ++ } ++ ++ dieFromSignal(_SIGIOT) ++} ++ ++// ensureSigM starts one global, sleeping thread to make sure at least one thread ++// is available to catch signals enabled for os/signal. ++func ensureSigM() { ++ if maskUpdatedChan != nil { ++ return ++ } ++ maskUpdatedChan = make(chan struct{}) ++ disableSigChan = make(chan uint32) ++ enableSigChan = make(chan uint32) ++ go func() { ++ // Signal masks are per-thread, so make sure this goroutine stays on one ++ // thread. ++ LockOSThread() ++ defer UnlockOSThread() ++ // The sigBlocked mask contains the signals not active for os/signal, ++ // initially all signals except the essential. When signal.Notify()/Stop is called, ++ // sigenable/sigdisable in turn notify this thread to update its signal ++ // mask accordingly. ++ var sigBlocked sigset ++ sigfillset(&sigBlocked) ++ for i := range sigtable { ++ if !blockableSig(uint32(i)) { ++ sigdelset(&sigBlocked, i) ++ } ++ } ++ sigprocmask(_SIG_SETMASK, &sigBlocked, nil) ++ for { ++ select { ++ case sig := <-enableSigChan: ++ if sig > 0 { ++ sigdelset(&sigBlocked, int(sig)) ++ } ++ case sig := <-disableSigChan: ++ if sig > 0 && blockableSig(sig) { ++ sigaddset(&sigBlocked, int(sig)) ++ } ++ } ++ sigprocmask(_SIG_SETMASK, &sigBlocked, nil) ++ maskUpdatedChan <- struct{}{} ++ } ++ }() ++} ++ ++// This is called when we receive a signal when there is no signal stack. ++// This can only happen if non-Go code calls sigaltstack to disable the ++// signal stack. ++func noSignalStack(sig uint32) { ++ println("signal", sig, "received on thread with no signal stack") ++ throw("non-Go code disabled sigaltstack") ++} ++ ++// This is called if we receive a signal when there is a signal stack ++// but we are not on it. This can only happen if non-Go code called ++// sigaction without setting the SS_ONSTACK flag. ++func sigNotOnStack(sig uint32) { ++ println("signal", sig, "received but handler not on signal stack") ++ throw("non-Go code set up signal handler without SA_ONSTACK flag") ++} ++ ++// signalDuringFork is called if we receive a signal while doing a fork. ++// We do not want signals at that time, as a signal sent to the process ++// group may be delivered to the child process, causing confusion. ++// This should never be called, because we block signals across the fork; ++// this function is just a safety check. See issue 18600 for background. ++func signalDuringFork(sig uint32) { ++ println("signal", sig, "received during fork") ++ throw("signal received during fork") ++} ++ ++// This runs on a foreign stack, without an m or a g. No stack split. ++//go:nosplit ++//go:norace ++//go:nowritebarrierrec ++func badsignal(sig uintptr, c *sigctxt) { ++ needm(0) ++ if !sigsend(uint32(sig)) { ++ // A foreign thread received the signal sig, and the ++ // Go code does not want to handle it. ++ raisebadsignal(uint32(sig), c) ++ } ++ dropm() ++} ++ ++// Determines if the signal should be handled by Go and if not, forwards the ++// signal to the handler that was installed before Go's. Returns whether the ++// signal was forwarded. ++// This is called by the signal handler, and the world may be stopped. ++//go:nosplit ++//go:nowritebarrierrec ++func sigfwdgo(sig uint32, info *_siginfo_t, ctx unsafe.Pointer) bool { ++ if sig >= uint32(len(sigtable)) { ++ return false ++ } ++ fwdFn := atomic.Loaduintptr(&fwdSig[sig]) ++ flags := sigtable[sig].flags ++ ++ // If we aren't handling the signal, forward it. ++ if atomic.Load(&handlingSig[sig]) == 0 || !signalsOK { ++ // If the signal is ignored, doing nothing is the same as forwarding. ++ if fwdFn == _SIG_IGN || (fwdFn == _SIG_DFL && flags&_SigIgn != 0) { ++ return true ++ } ++ // We are not handling the signal and there is no other handler to forward to. ++ // Crash with the default behavior. ++ if fwdFn == _SIG_DFL { ++ setsig(sig, _SIG_DFL) ++ dieFromSignal(sig) ++ return false ++ } ++ ++ sigfwd(fwdFn, sig, info, ctx) ++ return true ++ } ++ ++ // If there is no handler to forward to, no need to forward. ++ if fwdFn == _SIG_DFL { ++ return false ++ } ++ ++ c := sigctxt{info, ctx} ++ // Only forward synchronous signals and SIGPIPE. ++ // Unfortunately, user generated SIGPIPEs will also be forwarded, because si_code ++ // is set to _SI_USER even for a SIGPIPE raised from a write to a closed socket ++ // or pipe. ++ if (c.sigcode() == _SI_USER || flags&_SigPanic == 0) && sig != _SIGPIPE { ++ return false ++ } ++ // Determine if the signal occurred inside Go code. We test that: ++ // (1) we were in a goroutine (i.e., m.curg != nil), and ++ // (2) we weren't in CGO. ++ g := getg() ++ if g != nil && g.m != nil && g.m.curg != nil && !g.m.incgo { ++ return false ++ } ++ ++ // Signal not handled by Go, forward it. ++ if fwdFn != _SIG_IGN { ++ sigfwd(fwdFn, sig, info, ctx) ++ } ++ ++ return true ++} ++ ++// msigsave saves the current thread's signal mask into mp.sigmask. ++// This is used to preserve the non-Go signal mask when a non-Go ++// thread calls a Go function. ++// This is nosplit and nowritebarrierrec because it is called by needm ++// which may be called on a non-Go thread with no g available. ++//go:nosplit ++//go:nowritebarrierrec ++func msigsave(mp *m) { ++ sigprocmask(_SIG_SETMASK, nil, &mp.sigmask) ++} ++ ++// msigrestore sets the current thread's signal mask to sigmask. ++// This is used to restore the non-Go signal mask when a non-Go thread ++// calls a Go function. ++// This is nosplit and nowritebarrierrec because it is called by dropm ++// after g has been cleared. ++//go:nosplit ++//go:nowritebarrierrec ++func msigrestore(sigmask sigset) { ++ sigprocmask(_SIG_SETMASK, &sigmask, nil) ++} ++ ++// sigblock blocks all signals in the current thread's signal mask. ++// This is used to block signals while setting up and tearing down g ++// when a non-Go thread calls a Go function. ++// The OS-specific code is expected to define sigset_all. ++// This is nosplit and nowritebarrierrec because it is called by needm ++// which may be called on a non-Go thread with no g available. ++//go:nosplit ++//go:nowritebarrierrec ++func sigblock() { ++ var set sigset ++ sigfillset(&set) ++ sigprocmask(_SIG_SETMASK, &set, nil) ++} ++ ++// unblocksig removes sig from the current thread's signal mask. ++// This is nosplit and nowritebarrierrec because it is called from ++// dieFromSignal, which can be called by sigfwdgo while running in the ++// signal handler, on the signal stack, with no g available. ++//go:nosplit ++//go:nowritebarrierrec ++func unblocksig(sig uint32) { ++ var set sigset ++ sigemptyset(&set) ++ sigaddset(&set, int(sig)) ++ sigprocmask(_SIG_UNBLOCK, &set, nil) ++} ++ ++// minitSignals is called when initializing a new m to set the ++// thread's alternate signal stack and signal mask. ++func minitSignals() { ++ minitSignalStack() ++ minitSignalMask() ++} ++ ++// minitSignalStack is called when initializing a new m to set the ++// alternate signal stack. If the alternate signal stack is not set ++// for the thread (the normal case) then set the alternate signal ++// stack to the gsignal stack. If the alternate signal stack is set ++// for the thread (the case when a non-Go thread sets the alternate ++// signal stack and then calls a Go function) then set the gsignal ++// stack to the alternate signal stack. Record which choice was made ++// in newSigstack, so that it can be undone in unminit. ++func minitSignalStack() { ++ _g_ := getg() ++ var st _stack_t ++ sigaltstack(nil, &st) ++ if st.ss_flags&_SS_DISABLE != 0 { ++ signalstack(_g_.m.gsignalstack, _g_.m.gsignalstacksize) ++ _g_.m.newSigstack = true ++ } else { ++ _g_.m.newSigstack = false ++ } ++} ++ ++// minitSignalMask is called when initializing a new m to set the ++// thread's signal mask. When this is called all signals have been ++// blocked for the thread. This starts with m.sigmask, which was set ++// either from initSigmask for a newly created thread or by calling ++// msigsave if this is a non-Go thread calling a Go function. It ++// removes all essential signals from the mask, thus causing those ++// signals to not be blocked. Then it sets the thread's signal mask. ++// After this is called the thread can receive signals. ++func minitSignalMask() { ++ nmask := getg().m.sigmask ++ for i := range sigtable { ++ if !blockableSig(uint32(i)) { ++ sigdelset(&nmask, i) ++ } ++ } ++ sigprocmask(_SIG_SETMASK, &nmask, nil) ++} ++ ++// unminitSignals is called from dropm, via unminit, to undo the ++// effect of calling minit on a non-Go thread. ++//go:nosplit ++//go:nowritebarrierrec ++func unminitSignals() { ++ if getg().m.newSigstack { ++ signalstack(nil, 0) ++ } ++} ++ ++// blockableSig returns whether sig may be blocked by the signal mask. ++// We never want to block the signals marked _SigUnblock; ++// these are the synchronous signals that turn into a Go panic. ++// In a Go program--not a c-archive/c-shared--we never want to block ++// the signals marked _SigKill or _SigThrow, as otherwise it's possible ++// for all running threads to block them and delay their delivery until ++// we start a new thread. When linked into a C program we let the C code ++// decide on the disposition of those signals. ++func blockableSig(sig uint32) bool { ++ flags := sigtable[sig].flags ++ if flags&_SigUnblock != 0 { ++ return false ++ } ++ if isarchive || islibrary { ++ return true ++ } ++ return flags&(_SigKill|_SigThrow) == 0 ++} --- gcc-8-8.3.0.orig/debian/patches/src_libgo_go_syscall.diff +++ gcc-8-8.3.0/debian/patches/src_libgo_go_syscall.diff @@ -0,0 +1,785 @@ +Index: gcc-8-8-20180218/src/libgo/go/syscall/errstr_gnu.go +=================================================================== +--- /dev/null ++++ gcc-8-8-20180218/src/libgo/go/syscall/errstr_gnu.go +@@ -0,0 +1,32 @@ ++// errstr_gnu.go -- GNU/Hurd specific error strings. ++ ++// Copyright 2010 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. ++ ++// We use this rather than errstr.go because on GNU/Linux sterror_r ++// returns a pointer to the error message, and may not use buf at all. ++// This file is derived from errstr_linux.go ++ ++package syscall ++ ++import "unsafe" ++ ++//sysnb strerror_r(errnum int, b []byte) (errstr *byte) ++//strerror_r(errnum _C_int, b *byte, len Size_t) *byte ++ ++func Errstr(errnum int) string { ++ a := make([]byte, 128) ++ p := strerror_r(errnum, a) ++ b := (*[1000]byte)(unsafe.Pointer(p)) ++ i := 0 ++ for b[i] != 0 { ++ i++ ++ } ++ // Lowercase first letter: Bad -> bad, but STREAM -> STREAM. ++ if i > 1 && 'A' <= b[0] && b[0] <= 'Z' && 'a' <= b[1] && b[1] <= 'z' { ++ c := b[0] + 'a' - 'A' ++ return string(c) + string(b[1:i]) ++ } ++ return string(b[:i]) ++} +Index: gcc-8-8-20180218/src/libgo/go/syscall/libcall_gnu_386.go +=================================================================== +--- /dev/null ++++ gcc-8-8-20180218/src/libgo/go/syscall/libcall_gnu_386.go +@@ -0,0 +1,10 @@ ++// Copyright 2012 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. ++ ++// GNU/Hurd library calls 386 specific. ++ ++package syscall ++ ++//sys Ioperm(from int, num int, on int) (err error) ++//ioperm(from _C_long, num _C_long, on _C_int) _C_int +Index: gcc-8-8-20180218/src/libgo/go/syscall/libcall_gnu.go +=================================================================== +--- /dev/null ++++ gcc-8-8-20180218/src/libgo/go/syscall/libcall_gnu.go +@@ -0,0 +1,184 @@ ++// Copyright 2014 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. ++ ++// GNU/Hurd library calls. ++// This file is derived from libcall_linux.go ++// Dummy function: raw_ptrace ++// Removed functions: {P,p}trace*, Reboot, Gettid, Splice, Tgkill, Unlinkat, Unmount, Unshare ++ ++package syscall ++ ++import "unsafe" ++ ++//sys Openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) ++//__go_openat(dirfd _C_int, path *byte, flags _C_int, mode Mode_t) _C_int ++ ++//sys futimesat(dirfd int, path *byte, times *[2]Timeval) (err error) ++//futimesat(dirfd _C_int, path *byte, times *[2]Timeval) _C_int ++func Futimesat(dirfd int, path string, tv []Timeval) (err error) { ++ if len(tv) != 2 { ++ return EINVAL ++ } ++ return futimesat(dirfd, StringBytePtr(path), (*[2]Timeval)(unsafe.Pointer(&tv[0]))) ++} ++ ++func Futimes(fd int, tv []Timeval) (err error) { ++ // Believe it or not, this is the best we can do on GNU/Linux ++ // (and is what glibc does). ++ return Utimes("/proc/self/fd/"+itoa(fd), tv) ++} ++ ++//sys ptrace(request int, pid int, addr uintptr, data uintptr) (err error) ++//ptrace(request _C_int, pid Pid_t, addr *byte, data *byte) _C_long ++ ++// Dummy function ++func raw_ptrace(request int, pid int, addr *byte, data *byte) Errno { ++ return ENOSYS ++} ++ ++//sys accept4(fd int, sa *RawSockaddrAny, len *Socklen_t, flags int) (nfd int, err error) ++//accept4(fd _C_int, sa *RawSockaddrAny, len *Socklen_t, flags _C_int) _C_int ++ ++func Accept4(fd int, flags int) (nfd int, sa Sockaddr, err error) { ++ var rsa RawSockaddrAny ++ var len Socklen_t = SizeofSockaddrAny ++ nfd, err = accept4(fd, &rsa, &len, flags) ++ if err != nil { ++ return -1, nil, err ++ } ++ sa, err = anyToSockaddr(&rsa) ++ if err != nil { ++ Close(nfd) ++ return -1, nil, err ++ } ++ return nfd, sa, nil ++} ++ ++///INCLUDE? ++///sys Acct(path string) (err error) ++///acct(path *byte) _C_int ++ ++//sysnb Dup3(oldfd int, newfd int, flags int) (err error) ++//dup3(oldfd _C_int, newfd _C_int, flags _C_int) _C_int ++ ++//sys Faccessat(dirfd int, path string, mode uint32, flags int) (err error) ++//faccessat(dirfd _C_int, pathname *byte, mode _C_int, flags _C_int) _C_int ++ ++//sys Fallocate(fd int, mode uint32, off int64, len int64) (err error) ++//fallocate(fd _C_int, mode _C_int, offset Offset_t, len Offset_t) _C_int ++ ++//sys Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) ++//fchmodat(dirfd _C_int, pathname *byte, mode Mode_t, flags _C_int) _C_int ++ ++//sys Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) ++//fchownat(dirfd _C_int, path *byte, owner Uid_t, group Gid_t, flags _C_int) _C_int ++ ++//sys Flock(fd int, how int) (err error) ++//flock(fd _C_int, how _C_int) _C_int ++ ++//sys Fstatfs(fd int, buf *Statfs_t) (err error) ++//fstatfs(fd _C_int, buf *Statfs_t) _C_int ++ ++func Getdents(fd int, buf []byte) (n int, err error) { ++ var p *byte ++ if len(buf) > 0 { ++ p = &buf[0] ++ } else { ++ p = (*byte)(unsafe.Pointer(&_zero)) ++ } ++ s := SYS_GETDENTS64 ++ if s == 0 { ++ s = SYS_GETDENTS ++ } ++ r1, _, errno := Syscall(uintptr(s), uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(len(buf))) ++ n = int(r1) ++ if n < 0 { ++ err = errno ++ } ++ return ++} ++ ++func clen(n []byte) int { ++ for i := 0; i < len(n); i++ { ++ if n[i] == 0 { ++ return i ++ } ++ } ++ return len(n) ++} ++ ++func ReadDirent(fd int, buf []byte) (n int, err error) { ++ return Getdents(fd, buf) ++} ++ ++ ++///INCLUDE?? ++///sys Getxattr(path string, attr string, dest []byte) (sz int, err error) ++///getxattr(path *byte, attr *byte, buf *byte, count Size_t) Ssize_t ++ ++///INCLUDE?? ++///sys Listxattr(path string, dest []byte) (sz int, err error) ++///listxattr(path *byte, list *byte, size Size_t) Ssize_t ++ ++//sys Mkdirat(dirfd int, path string, mode uint32) (err error) ++//mkdirat(dirfd _C_int, path *byte, mode Mode_t) _C_int ++ ++//sys Mknodat(dirfd int, path string, mode uint32, dev int) (err error) ++//mknodat(dirfd _C_int, path *byte, mode Mode_t, dev _dev_t) _C_int ++ ++//sysnb pipe2(p *[2]_C_int, flags int) (err error) ++//pipe2(p *[2]_C_int, flags _C_int) _C_int ++func Pipe2(p []int, flags int) (err error) { ++ if len(p) != 2 { ++ return EINVAL ++ } ++ var pp [2]_C_int ++ err = pipe2(&pp, flags) ++ p[0] = int(pp[0]) ++ p[1] = int(pp[1]) ++ return ++} ++ ++///INCLUDE?? ++///sys Removexattr(path string, attr string) (err error) ++///removexattr(path *byte, name *byte) _C_int ++ ++///INCLUDE?? ++///sys Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) ++///renameat(olddirfd _C_int, oldpath *byte, newdirfd _C_int, newpath *byte) _C_int ++ ++//INCLUDE?? ++///sys Setxattr(path string, attr string, data []byte, flags int) (err error) ++///setxattr(path *byte, name *byte, value *byte, size Size_t, flags _C_int) _C_int ++ ++//sys SyncFileRange(fd int, off int64, n int64, flags int) (err error) ++//sync_file_range(fd _C_int, off Offset_t, n Offset_t, flags _C_uint) _C_int ++ ++//INCLUDE?? ++///sysnb Sysinfo(info *Sysinfo_t) (err error) ++///sysinfo(info *Sysinfo_t) _C_int ++ ++//func Unlinkat(dirfd int, path string) (err error) { ++// return unlinkat(dirfd, path, 0) ++//} ++ ++///INCLUDE?? ++///sys Ustat(dev int, ubuf *Ustat_t) (err error) ++///ustat(dev _dev_t, ubuf *Ustat_t) _C_int ++ ++//sys sendfile(outfd int, infd int, offset *Offset_t, count int) (written int, err error) ++//sendfile64(outfd _C_int, infd _C_int, offset *Offset_t, count Size_t) Ssize_t ++func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { ++ var soff Offset_t ++ var psoff *Offset_t ++ if offset != nil { ++ soff = Offset_t(*offset) ++ psoff = &soff ++ } ++ written, err = sendfile(outfd, infd, psoff, count) ++ if offset != nil { ++ *offset = int64(soff) ++ } ++ return ++} +Index: gcc-8-8-20180218/src/libgo/go/syscall/libcall_posix_gnu.go +=================================================================== +--- /dev/null ++++ gcc-8-8-20180218/src/libgo/go/syscall/libcall_posix_gnu.go +@@ -0,0 +1,400 @@ ++// Copyright 2011 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. ++ ++// POSIX library calls. ++// This file is compiled as ordinary Go code, ++// but it is also input to mksyscall, ++// which parses the //sys lines and generates library call stubs. ++// Note that sometimes we use a lowercase //sys name and ++// wrap it in our own nicer implementation. ++// Removed the mount call for GNU/Hurd, it exists but use translators. ++// Functionality is not the same as descibed in Linux ++// Removed the madvise call for GNU/Hurd, not yet implemented. ++// This file is derived from libchall_posix.go ++ ++// +build gnu ++ ++package syscall ++ ++import "unsafe" ++ ++/* ++ * Wrapped ++ */ ++ ++//sysnb pipe(p *[2]_C_int) (err error) ++//pipe(p *[2]_C_int) _C_int ++func Pipe(p []int) (err error) { ++ if len(p) != 2 { ++ return EINVAL ++ } ++ var pp [2]_C_int ++ err = pipe(&pp) ++ p[0] = int(pp[0]) ++ p[1] = int(pp[1]) ++ return ++} ++ ++//sys utimes(path string, times *[2]Timeval) (err error) ++//utimes(path *byte, times *[2]Timeval) _C_int ++func Utimes(path string, tv []Timeval) (err error) { ++ if len(tv) != 2 { ++ return EINVAL ++ } ++ return utimes(path, (*[2]Timeval)(unsafe.Pointer(&tv[0]))) ++} ++ ++//sys getcwd(buf *byte, size Size_t) (err error) ++//getcwd(buf *byte, size Size_t) *byte ++ ++const ImplementsGetwd = true ++ ++func Getwd() (ret string, err error) { ++ for len := Size_t(4096); ; len *= 2 { ++ b := make([]byte, len) ++ err := getcwd(&b[0], len) ++ if err == nil { ++ i := 0 ++ for b[i] != 0 { ++ i++ ++ } ++ return string(b[0:i]), nil ++ } ++ if err != ERANGE { ++ return "", err ++ } ++ } ++} ++ ++func Getcwd(buf []byte) (n int, err error) { ++ err = getcwd(&buf[0], Size_t(len(buf))) ++ if err == nil { ++ i := 0 ++ for buf[i] != 0 { ++ i++ ++ } ++ n = i + 1 ++ } ++ return ++} ++ ++//sysnb getgroups(size int, list *Gid_t) (nn int, err error) ++//getgroups(size _C_int, list *Gid_t) _C_int ++ ++func Getgroups() (gids []int, err error) { ++ n, err := getgroups(0, nil) ++ if err != nil { ++ return nil, err ++ } ++ if n == 0 { ++ return nil, nil ++ } ++ ++ // Sanity check group count. Max is 1<<16 on GNU/Linux. ++ if n < 0 || n > 1<<20 { ++ return nil, EINVAL ++ } ++ ++ a := make([]Gid_t, n) ++ n, err = getgroups(n, &a[0]) ++ if err != nil { ++ return nil, err ++ } ++ gids = make([]int, n) ++ for i, v := range a[0:n] { ++ gids[i] = int(v) ++ } ++ return ++} ++ ++//sysnb setgroups(n int, list *Gid_t) (err error) ++//setgroups(n Size_t, list *Gid_t) _C_int ++ ++func Setgroups(gids []int) (err error) { ++ if len(gids) == 0 { ++ return setgroups(0, nil) ++ } ++ ++ a := make([]Gid_t, len(gids)) ++ for i, v := range gids { ++ a[i] = Gid_t(v) ++ } ++ return setgroups(len(a), &a[0]) ++} ++ ++type WaitStatus uint32 ++ ++// The WaitStatus methods are implemented in C, to pick up the macros ++// #defines in . ++ ++func (w WaitStatus) Exited() bool ++func (w WaitStatus) Signaled() bool ++func (w WaitStatus) Stopped() bool ++func (w WaitStatus) Continued() bool ++func (w WaitStatus) CoreDump() bool ++func (w WaitStatus) ExitStatus() int ++func (w WaitStatus) Signal() Signal ++func (w WaitStatus) StopSignal() Signal ++func (w WaitStatus) TrapCause() int ++ ++//sys Mkfifo(path string, mode uint32) (err error) ++//mkfifo(path *byte, mode Mode_t) _C_int ++ ++//sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) ++//select(nfd _C_int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) _C_int ++ ++const nfdbits = int(unsafe.Sizeof(fds_bits_type(0)) * 8) ++ ++type FdSet struct { ++ Bits [(FD_SETSIZE + nfdbits - 1) / nfdbits]fds_bits_type ++} ++ ++func FDSet(fd int, set *FdSet) { ++ set.Bits[fd/nfdbits] |= (1 << (uint)(fd%nfdbits)) ++} ++ ++func FDClr(fd int, set *FdSet) { ++ set.Bits[fd/nfdbits] &^= (1 << (uint)(fd%nfdbits)) ++} ++ ++func FDIsSet(fd int, set *FdSet) bool { ++ if set.Bits[fd/nfdbits]&(1<<(uint)(fd%nfdbits)) != 0 { ++ return true ++ } else { ++ return false ++ } ++} ++ ++func FDZero(set *FdSet) { ++ for i := range set.Bits { ++ set.Bits[i] = 0 ++ } ++} ++ ++//sys Access(path string, mode uint32) (err error) ++//access(path *byte, mode _C_int) _C_int ++ ++//sys Chdir(path string) (err error) ++//chdir(path *byte) _C_int ++ ++//sys Chmod(path string, mode uint32) (err error) ++//chmod(path *byte, mode Mode_t) _C_int ++ ++//sys Chown(path string, uid int, gid int) (err error) ++//chown(path *byte, uid Uid_t, gid Gid_t) _C_int ++ ++//sys Chroot(path string) (err error) ++//chroot(path *byte) _C_int ++ ++//sys Close(fd int) (err error) ++//close(fd _C_int) _C_int ++ ++//sys Creat(path string, mode uint32) (fd int, err error) ++//creat(path *byte, mode Mode_t) _C_int ++ ++//sysnb Dup(oldfd int) (fd int, err error) ++//dup(oldfd _C_int) _C_int ++ ++//sysnb Dup2(oldfd int, newfd int) (err error) ++//dup2(oldfd _C_int, newfd _C_int) _C_int ++ ++//sys Fchdir(fd int) (err error) ++//fchdir(fd _C_int) _C_int ++ ++//sys Fchmod(fd int, mode uint32) (err error) ++//fchmod(fd _C_int, mode Mode_t) _C_int ++ ++//sys Fchown(fd int, uid int, gid int) (err error) ++//fchown(fd _C_int, uid Uid_t, gid Gid_t) _C_int ++ ++//sys fcntl(fd int, cmd int, arg int) (val int, err error) ++//__go_fcntl(fd _C_int, cmd _C_int, arg _C_int) _C_int ++ ++//sys FcntlFlock(fd uintptr, cmd int, lk *Flock_t) (err error) ++//__go_fcntl_flock(fd _C_int, cmd _C_int, arg *Flock_t) _C_int ++ ++//sys Fdatasync(fd int) (err error) ++//fdatasync(fd _C_int) _C_int ++ ++//sys Fsync(fd int) (err error) ++//fsync(fd _C_int) _C_int ++ ++//sysnb Getegid() (egid int) ++//getegid() Gid_t ++ ++//sysnb Geteuid() (euid int) ++//geteuid() Uid_t ++ ++//sysnb Getgid() (gid int) ++//getgid() Gid_t ++ ++//sysnb Getpgid(pid int) (pgid int, err error) ++//getpgid(pid Pid_t) Pid_t ++ ++//sysnb Getpgrp() (pid int) ++//getpgrp() Pid_t ++ ++//sysnb Getpid() (pid int) ++//getpid() Pid_t ++ ++//sysnb Getppid() (ppid int) ++//getppid() Pid_t ++ ++//sys Getpriority(which int, who int) (prio int, err error) ++//getpriority(which _C_int, who _C_int) _C_int ++ ++//sysnb Getrusage(who int, rusage *Rusage) (err error) ++//getrusage(who _C_int, rusage *Rusage) _C_int ++ ++//sysnb gettimeofday(tv *Timeval, tz *byte) (err error) ++//gettimeofday(tv *Timeval, tz *byte) _C_int ++func Gettimeofday(tv *Timeval) (err error) { ++ return gettimeofday(tv, nil) ++} ++ ++//sysnb Getuid() (uid int) ++//getuid() Uid_t ++ ++//sysnb Kill(pid int, sig Signal) (err error) ++//kill(pid Pid_t, sig _C_int) _C_int ++ ++//sys Lchown(path string, uid int, gid int) (err error) ++//lchown(path *byte, uid Uid_t, gid Gid_t) _C_int ++ ++//sys Link(oldpath string, newpath string) (err error) ++//link(oldpath *byte, newpath *byte) _C_int ++ ++//sys Mkdir(path string, mode uint32) (err error) ++//mkdir(path *byte, mode Mode_t) _C_int ++ ++//sys Mknod(path string, mode uint32, dev int) (err error) ++//mknod(path *byte, mode Mode_t, dev _dev_t) _C_int ++ ++//sys Nanosleep(time *Timespec, leftover *Timespec) (err error) ++//nanosleep(time *Timespec, leftover *Timespec) _C_int ++ ++//sys Pause() (err error) ++//pause() _C_int ++ ++//sys read(fd int, p []byte) (n int, err error) ++//read(fd _C_int, buf *byte, count Size_t) Ssize_t ++ ++//sys readlen(fd int, p *byte, np int) (n int, err error) ++//read(fd _C_int, buf *byte, count Size_t) Ssize_t ++ ++//sys Readlink(path string, buf []byte) (n int, err error) ++//readlink(path *byte, buf *byte, bufsiz Size_t) Ssize_t ++ ++//sys Rename(oldpath string, newpath string) (err error) ++//rename(oldpath *byte, newpath *byte) _C_int ++ ++//sys Rmdir(path string) (err error) ++//rmdir(path *byte) _C_int ++ ++//sys Setdomainname(p []byte) (err error) ++//setdomainname(name *byte, len Size_t) _C_int ++ ++//sys Sethostname(p []byte) (err error) ++//sethostname(name *byte, len Size_t) _C_int ++ ++//sysnb Setgid(gid int) (err error) ++//setgid(gid Gid_t) _C_int ++ ++//sysnb Setregid(rgid int, egid int) (err error) ++//setregid(rgid Gid_t, egid Gid_t) _C_int ++ ++//sysnb Setpgid(pid int, pgid int) (err error) ++//setpgid(pid Pid_t, pgid Pid_t) _C_int ++ ++//sys Setpriority(which int, who int, prio int) (err error) ++//setpriority(which _C_int, who _C_int, prio _C_int) _C_int ++ ++//sysnb Setreuid(ruid int, euid int) (err error) ++//setreuid(ruid Uid_t, euid Uid_t) _C_int ++ ++//sysnb Setsid() (pid int, err error) ++//setsid() Pid_t ++ ++//sysnb settimeofday(tv *Timeval, tz *byte) (err error) ++//settimeofday(tv *Timeval, tz *byte) _C_int ++ ++func Settimeofday(tv *Timeval) (err error) { ++ return settimeofday(tv, nil) ++} ++ ++//sysnb Setuid(uid int) (err error) ++//setuid(uid Uid_t) _C_int ++ ++//sys Symlink(oldpath string, newpath string) (err error) ++//symlink(oldpath *byte, newpath *byte) _C_int ++ ++//sys Sync() ++//sync() ++ ++//sysnb Time(t *Time_t) (tt Time_t, err error) ++//time(t *Time_t) Time_t ++ ++//sysnb Times(tms *Tms) (ticks uintptr, err error) ++//times(tms *Tms) _clock_t ++ ++//sysnb Umask(mask int) (oldmask int) ++//umask(mask Mode_t) Mode_t ++ ++//sys Unlink(path string) (err error) ++//unlink(path *byte) _C_int ++ ++//sys Utime(path string, buf *Utimbuf) (err error) ++//utime(path *byte, buf *Utimbuf) _C_int ++ ++//sys write(fd int, p []byte) (n int, err error) ++//write(fd _C_int, buf *byte, count Size_t) Ssize_t ++ ++//sys writelen(fd int, p *byte, np int) (n int, err error) ++//write(fd _C_int, buf *byte, count Size_t) Ssize_t ++ ++//sys munmap(addr uintptr, length uintptr) (err error) ++//munmap(addr *byte, length Size_t) _C_int ++ ++//sys Mprotect(b []byte, prot int) (err error) ++//mprotect(addr *byte, len Size_t, prot _C_int) _C_int ++ ++//sys Mlock(b []byte) (err error) ++//mlock(addr *byte, len Size_t) _C_int ++ ++//sys Munlock(b []byte) (err error) ++//munlock(addr *byte, len Size_t) _C_int ++ ++//sys Mlockall(flags int) (err error) ++//mlockall(flags _C_int) _C_int ++ ++//sys Munlockall() (err error) ++//munlockall() _C_int ++ ++func setTimespec(sec, nsec int64) Timespec { ++ return Timespec{Sec: Timespec_sec_t(sec), Nsec: Timespec_nsec_t(nsec)} ++} ++ ++func setTimeval(sec, usec int64) Timeval { ++ return Timeval{Sec: Timeval_sec_t(sec), Usec: Timeval_usec_t(usec)} ++} ++ ++//sysnb Tcgetattr(fd int, p *Termios) (err error) ++//tcgetattr(fd _C_int, p *Termios) _C_int ++ ++//sys Tcsetattr(fd int, actions int, p *Termios) (err error) ++//tcsetattr(fd _C_int, actions _C_int, p *Termios) _C_int ++ ++//sys sysconf(name int) (ret int64, err error) ++//sysconf(name _C_int) _C_long ++ ++func Sysconf(name int) (ret int64, err error) { ++ // If an option is not available, sysconf returns -1 without ++ // changing errno. Detect this case and return err == nil. ++ SetErrno(0) ++ ret, err = sysconf(name) ++ if err == Errno(0) { ++ err = nil ++ } ++ return ret, err ++} +Index: gcc-8-8-20180218/src/libgo/go/syscall/socket_gnu.go +=================================================================== +--- /dev/null ++++ gcc-8-8-20180218/src/libgo/go/syscall/socket_gnu.go +@@ -0,0 +1,91 @@ ++// socket_gnu.go -- Socket handling specific to GNU/Hurd. ++ ++// Copyright 2010 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. ++// This file is derived from syscall_bsd.go ++ ++// +build gnu ++ ++package syscall ++ ++import "unsafe" ++ ++const SizeofSockaddrInet4 = 16 ++const SizeofSockaddrInet6 = 28 ++const SizeofSockaddrUnix = 110 ++ ++type RawSockaddrInet4 struct { ++ Len uint8 ++ Family uint8 ++ Port uint16 ++ Addr [4]byte /* in_addr */ ++ Zero [8]uint8 ++} ++ ++func (sa *RawSockaddrInet4) setLen() Socklen_t { ++ sa.Len = SizeofSockaddrInet4 ++ return SizeofSockaddrInet4 ++} ++ ++type RawSockaddrInet6 struct { ++ Len uint8 ++ Family uint8 ++ Port uint16 ++ Flowinfo uint32 ++ Addr [16]byte /* in6_addr */ ++ Scope_id uint32 ++} ++ ++func (sa *RawSockaddrInet6) setLen() Socklen_t { ++ sa.Len = SizeofSockaddrInet6 ++ return SizeofSockaddrInet6 ++} ++ ++type RawSockaddrUnix struct { ++ Len uint8 ++ Family uint8 ++ Path [108]int8 ++} ++ ++func (sa *RawSockaddrUnix) setLen(n int) { ++ sa.Len = uint8(3 + n) // 2 for Family, Len; 1 for NUL. ++} ++ ++func (sa *RawSockaddrUnix) getLen() (int, error) { ++ if sa.Len < 3 || sa.Len > SizeofSockaddrUnix { ++ return 0, EINVAL ++ } ++ // Assume path ends at NUL. ++ n := 0 ++ for n < len(sa.Path) && sa.Path[n] != 0 { ++ n++ ++ } ++ return n, nil ++} ++ ++func (sa *RawSockaddrUnix) adjustAbstract(sl Socklen_t) Socklen_t { ++ return sl ++} ++ ++type RawSockaddr struct { ++ Len uint8 ++ Family uint8 ++ Data [14]int8 ++} ++ ++// BindToDevice binds the socket associated with fd to device. ++func BindToDevice(fd int, device string) (err error) { ++ return ENOSYS ++} ++ ++func anyToSockaddrOS(rsa *RawSockaddrAny) (Sockaddr, error) { ++ return nil, EAFNOSUPPORT ++} ++ ++func GetsockoptIPv6MTUInfo(fd, level, opt int) (*IPv6MTUInfo, error) { ++ var value IPv6MTUInfo ++ vallen := Socklen_t(SizeofIPv6MTUInfo) ++ err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen) ++ return &value, err ++} +Index: gcc-8-8-20180218/src/libgo/go/syscall/syscall_gnu.go +=================================================================== +--- /dev/null ++++ gcc-8-8-20180218/src/libgo/go/syscall/syscall_gnu.go +@@ -0,0 +1,24 @@ ++// Copyright 2009 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. ++// This file is identical to syscall_linux.go ++ ++package syscall ++ ++import "unsafe" ++ ++func direntIno(buf []byte) (uint64, bool) { ++ return readInt(buf, unsafe.Offsetof(Dirent{}.Ino), unsafe.Sizeof(Dirent{}.Ino)) ++} ++ ++func direntReclen(buf []byte) (uint64, bool) { ++ return readInt(buf, unsafe.Offsetof(Dirent{}.Reclen), unsafe.Sizeof(Dirent{}.Reclen)) ++} ++ ++func direntNamlen(buf []byte) (uint64, bool) { ++ reclen, ok := direntReclen(buf) ++ if !ok { ++ return 0, false ++ } ++ return reclen - uint64(unsafe.Offsetof(Dirent{}.Name)), true ++} +Index: gcc-8-8-20180218/src/libgo/go/syscall/wait.c +=================================================================== +--- gcc-8-8-20180218.orig/src/libgo/go/syscall/wait.c ++++ gcc-8-8-20180218/src/libgo/go/syscall/wait.c +@@ -8,6 +8,9 @@ + OS-independent. */ + + #include ++#ifndef WCONTINUED ++#define WCONTINUED 0 ++#endif + #include + + #include "runtime.h" --- gcc-8-8.3.0.orig/debian/patches/src_libgo_go_syscall_syscall_errno.go.diff +++ gcc-8-8.3.0/debian/patches/src_libgo_go_syscall_syscall_errno.go.diff @@ -0,0 +1,11 @@ +--- a/src/libgo/go/syscall/syscall_errno.go 2015-01-17 11:50:12.000000000 +0100 ++++ b/src/libgo/go/syscall/syscall_errno.go 2018-02-27 17:29:33.000000000 +0100 +@@ -11,7 +11,7 @@ + // if errno != 0 { + // err = errno + // } +-type Errno uintptr ++type Errno int32 + + func (e Errno) Error() string { + return Errstr(int(e)) --- gcc-8-8.3.0.orig/debian/patches/src_libgo_go_syscall_syscall_gnu_test.go.diff +++ gcc-8-8.3.0/debian/patches/src_libgo_go_syscall_syscall_gnu_test.go.diff @@ -0,0 +1,361 @@ +Index: gcc-8-8-20171108-1.1/src/libgo/go/syscall/syscall_gnu_test.go +=================================================================== +--- /dev/null ++++ gcc-8-8-20171108-1.1/src/libgo/go/syscall/syscall_gnu_test.go +@@ -0,0 +1,356 @@ ++// Copyright 2013 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. ++ ++// +build gnu ++ ++package syscall_test ++ ++import ( ++ "flag" ++ "fmt" ++ "internal/testenv" ++ "io/ioutil" ++ "net" ++ "os" ++ "os/exec" ++ "path/filepath" ++ "runtime" ++ "syscall" ++ "testing" ++ "time" ++) ++ ++// Tests that below functions, structures and constants are consistent ++// on all Unix-like systems. ++func _() { ++ // program scheduling priority functions and constants ++ var ( ++ _ func(int, int, int) error = syscall.Setpriority ++ _ func(int, int) (int, error) = syscall.Getpriority ++ ) ++ const ( ++ _ int = syscall.PRIO_USER ++ _ int = syscall.PRIO_PROCESS ++ _ int = syscall.PRIO_PGRP ++ ) ++ ++ // termios constants ++ const ( ++ _ int = syscall.TCIFLUSH ++ _ int = syscall.TCIOFLUSH ++ _ int = syscall.TCOFLUSH ++ ) ++ ++ // fcntl file locking structure and constants ++ var ( ++ _ = syscall.Flock_t{ ++ Type: int32(0), ++ Whence: int32(0), ++ Start: int64(0), ++ Len: int64(0), ++ Pid: int32(0), ++ } ++ ) ++ const ( ++ _ = syscall.F_GETLK ++ _ = syscall.F_SETLK ++ _ = syscall.F_SETLKW ++ ) ++} ++ ++// TestFcntlFlock tests whether the file locking structure matches ++// the calling convention of each kernel. ++// On some Linux systems, glibc uses another set of values for the ++// commands and translates them to the correct value that the kernel ++// expects just before the actual fcntl syscall. As Go uses raw ++// syscalls directly, it must use the real value, not the glibc value. ++// Thus this test also verifies that the Flock_t structure can be ++// roundtripped with F_SETLK and F_GETLK. ++func TestFcntlFlock(t *testing.T) { ++ if runtime.GOOS == "darwin" && (runtime.GOARCH == "arm" || runtime.GOARCH == "arm64") { ++ t.Skip("skipping; no child processes allowed on iOS") ++ } ++ flock := syscall.Flock_t{ ++ Type: syscall.F_WRLCK, ++ Start: 31415, Len: 271828, Whence: 1, ++ } ++ if os.Getenv("GO_WANT_HELPER_PROCESS") == "" { ++ // parent ++ name := filepath.Join(os.TempDir(), "TestFcntlFlock") ++ fd, err := syscall.Open(name, syscall.O_CREAT|syscall.O_RDWR|syscall.O_CLOEXEC, 0) ++ if err != nil { ++ t.Fatalf("Open failed: %v", err) ++ } ++ defer syscall.Unlink(name) ++ defer syscall.Close(fd) ++ if err := syscall.Ftruncate(fd, 1<<20); err != nil { ++ t.Fatalf("Ftruncate(1<<20) failed: %v", err) ++ } ++ if err := syscall.FcntlFlock(uintptr(fd), syscall.F_SETLK, &flock); err != nil { ++ t.Fatalf("FcntlFlock(F_SETLK) failed: %v", err) ++ } ++ cmd := exec.Command(os.Args[0], "-test.run=^TestFcntlFlock$") ++ cmd.Env = append(os.Environ(), "GO_WANT_HELPER_PROCESS=1") ++ cmd.ExtraFiles = []*os.File{os.NewFile(uintptr(fd), name)} ++ out, err := cmd.CombinedOutput() ++ if len(out) > 0 || err != nil { ++ t.Fatalf("child process: %q, %v", out, err) ++ } ++ } else { ++ // child ++ got := flock ++ // make sure the child lock is conflicting with the parent lock ++ got.Start-- ++ got.Len++ ++ if err := syscall.FcntlFlock(3, syscall.F_GETLK, &got); err != nil { ++ t.Fatalf("FcntlFlock(F_GETLK) failed: %v", err) ++ } ++ flock.Pid = int32(syscall.Getppid()) ++ // Linux kernel always set Whence to 0 ++ flock.Whence = 0 ++ if got.Type == flock.Type && got.Start == flock.Start && got.Len == flock.Len && got.Pid == flock.Pid && got.Whence == flock.Whence { ++ os.Exit(0) ++ } ++ t.Fatalf("FcntlFlock got %v, want %v", got, flock) ++ } ++} ++ ++// TestPassFD tests passing a file descriptor over a Unix socket. ++// ++// This test involved both a parent and child process. The parent ++// process is invoked as a normal test, with "go test", which then ++// runs the child process by running the current test binary with args ++// "-test.run=^TestPassFD$" and an environment variable used to signal ++// that the test should become the child process instead. ++func TestPassFD(t *testing.T) { ++ switch runtime.GOOS { ++ case "dragonfly": ++ // TODO(jsing): Figure out why sendmsg is returning EINVAL. ++ t.Skip("skipping test on dragonfly") ++ case "solaris": ++ // TODO(aram): Figure out why ReadMsgUnix is returning empty message. ++ t.Skip("skipping test on solaris, see issue 7402") ++ } ++ ++ testenv.MustHaveExec(t) ++ ++ if os.Getenv("GO_WANT_HELPER_PROCESS") == "1" { ++ passFDChild() ++ return ++ } ++ ++ tempDir, err := ioutil.TempDir("", "TestPassFD") ++ if err != nil { ++ t.Fatal(err) ++ } ++ defer os.RemoveAll(tempDir) ++ ++ fds, err := syscall.Socketpair(syscall.AF_LOCAL, syscall.SOCK_STREAM, 0) ++ if err != nil { ++ t.Fatalf("Socketpair: %v", err) ++ } ++ defer syscall.Close(fds[0]) ++ defer syscall.Close(fds[1]) ++ writeFile := os.NewFile(uintptr(fds[0]), "child-writes") ++ readFile := os.NewFile(uintptr(fds[1]), "parent-reads") ++ defer writeFile.Close() ++ defer readFile.Close() ++ ++ cmd := exec.Command(os.Args[0], "-test.run=^TestPassFD$", "--", tempDir) ++ cmd.Env = append(os.Environ(), "GO_WANT_HELPER_PROCESS=1") ++ cmd.ExtraFiles = []*os.File{writeFile} ++ ++ out, err := cmd.CombinedOutput() ++ if len(out) > 0 || err != nil { ++ t.Fatalf("child process: %q, %v", out, err) ++ } ++ ++ c, err := net.FileConn(readFile) ++ if err != nil { ++ t.Fatalf("FileConn: %v", err) ++ } ++ defer c.Close() ++ ++ uc, ok := c.(*net.UnixConn) ++ if !ok { ++ t.Fatalf("unexpected FileConn type; expected UnixConn, got %T", c) ++ } ++ ++ buf := make([]byte, 32) // expect 1 byte ++ oob := make([]byte, 32) // expect 24 bytes ++ closeUnix := time.AfterFunc(5*time.Second, func() { ++ t.Logf("timeout reading from unix socket") ++ uc.Close() ++ }) ++ _, oobn, _, _, err := uc.ReadMsgUnix(buf, oob) ++ closeUnix.Stop() ++ ++ scms, err := syscall.ParseSocketControlMessage(oob[:oobn]) ++ if err != nil { ++ t.Fatalf("ParseSocketControlMessage: %v", err) ++ } ++ if len(scms) != 1 { ++ t.Fatalf("expected 1 SocketControlMessage; got scms = %#v", scms) ++ } ++ scm := scms[0] ++ gotFds, err := syscall.ParseUnixRights(&scm) ++ if err != nil { ++ t.Fatalf("syscall.ParseUnixRights: %v", err) ++ } ++ if len(gotFds) != 1 { ++ t.Fatalf("wanted 1 fd; got %#v", gotFds) ++ } ++ ++ f := os.NewFile(uintptr(gotFds[0]), "fd-from-child") ++ defer f.Close() ++ ++ got, err := ioutil.ReadAll(f) ++ want := "Hello from child process!\n" ++ if string(got) != want { ++ t.Errorf("child process ReadAll: %q, %v; want %q", got, err, want) ++ } ++} ++ ++// passFDChild is the child process used by TestPassFD. ++func passFDChild() { ++ defer os.Exit(0) ++ ++ // Look for our fd. It should be fd 3, but we work around an fd leak ++ // bug here (https://golang.org/issue/2603) to let it be elsewhere. ++ var uc *net.UnixConn ++ for fd := uintptr(3); fd <= 10; fd++ { ++ f := os.NewFile(fd, "unix-conn") ++ var ok bool ++ netc, _ := net.FileConn(f) ++ uc, ok = netc.(*net.UnixConn) ++ if ok { ++ break ++ } ++ } ++ if uc == nil { ++ fmt.Println("failed to find unix fd") ++ return ++ } ++ ++ // Make a file f to send to our parent process on uc. ++ // We make it in tempDir, which our parent will clean up. ++ flag.Parse() ++ tempDir := flag.Arg(0) ++ f, err := ioutil.TempFile(tempDir, "") ++ if err != nil { ++ fmt.Printf("TempFile: %v", err) ++ return ++ } ++ ++ f.Write([]byte("Hello from child process!\n")) ++ f.Seek(0, 0) ++ ++ rights := syscall.UnixRights(int(f.Fd())) ++ dummyByte := []byte("x") ++ n, oobn, err := uc.WriteMsgUnix(dummyByte, rights, nil) ++ if err != nil { ++ fmt.Printf("WriteMsgUnix: %v", err) ++ return ++ } ++ if n != 1 || oobn != len(rights) { ++ fmt.Printf("WriteMsgUnix = %d, %d; want 1, %d", n, oobn, len(rights)) ++ return ++ } ++} ++ ++// TestUnixRightsRoundtrip tests that UnixRights, ParseSocketControlMessage, ++// and ParseUnixRights are able to successfully round-trip lists of file descriptors. ++func TestUnixRightsRoundtrip(t *testing.T) { ++ testCases := [...][][]int{ ++ {{42}}, ++ {{1, 2}}, ++ {{3, 4, 5}}, ++ {{}}, ++ {{1, 2}, {3, 4, 5}, {}, {7}}, ++ } ++ for _, testCase := range testCases { ++ b := []byte{} ++ var n int ++ for _, fds := range testCase { ++ // Last assignment to n wins ++ n = len(b) + syscall.CmsgLen(4*len(fds)) ++ b = append(b, syscall.UnixRights(fds...)...) ++ } ++ // Truncate b ++ b = b[:n] ++ ++ scms, err := syscall.ParseSocketControlMessage(b) ++ if err != nil { ++ t.Fatalf("ParseSocketControlMessage: %v", err) ++ } ++ if len(scms) != len(testCase) { ++ t.Fatalf("expected %v SocketControlMessage; got scms = %#v", len(testCase), scms) ++ } ++ for i, scm := range scms { ++ gotFds, err := syscall.ParseUnixRights(&scm) ++ if err != nil { ++ t.Fatalf("ParseUnixRights: %v", err) ++ } ++ wantFds := testCase[i] ++ if len(gotFds) != len(wantFds) { ++ t.Fatalf("expected %v fds, got %#v", len(wantFds), gotFds) ++ } ++ for j, fd := range gotFds { ++ if fd != wantFds[j] { ++ t.Fatalf("expected fd %v, got %v", wantFds[j], fd) ++ } ++ } ++ } ++ } ++} ++ ++func TestRlimit(t *testing.T) { ++ var rlimit, zero syscall.Rlimit ++ err := syscall.Getrlimit(syscall.RLIMIT_NOFILE, &rlimit) ++ if err != nil { ++ t.Fatalf("Getrlimit: save failed: %v", err) ++ } ++ if zero == rlimit { ++ t.Fatalf("Getrlimit: save failed: got zero value %#v", rlimit) ++ } ++ set := rlimit ++ set.Cur = set.Max - 1 ++ err = syscall.Setrlimit(syscall.RLIMIT_NOFILE, &set) ++ if err != nil { ++ t.Fatalf("Setrlimit: set failed: %#v %v", set, err) ++ } ++ var get syscall.Rlimit ++ err = syscall.Getrlimit(syscall.RLIMIT_NOFILE, &get) ++ if err != nil { ++ t.Fatalf("Getrlimit: get failed: %v", err) ++ } ++ set = rlimit ++ set.Cur = set.Max - 1 ++ if set != get { ++ // Seems like Darwin requires some privilege to ++ // increase the soft limit of rlimit sandbox, though ++ // Setrlimit never reports an error. ++ switch runtime.GOOS { ++ case "darwin": ++ default: ++ t.Fatalf("Rlimit: change failed: wanted %#v got %#v", set, get) ++ } ++ } ++ err = syscall.Setrlimit(syscall.RLIMIT_NOFILE, &rlimit) ++ if err != nil { ++ t.Fatalf("Setrlimit: restore failed: %#v %v", rlimit, err) ++ } ++} ++ ++func TestSeekFailure(t *testing.T) { ++ _, err := syscall.Seek(-1, 0, 0) ++ if err == nil { ++ t.Fatalf("Seek(-1, 0, 0) did not fail") ++ } ++ str := err.Error() // used to crash on Linux ++ t.Logf("Seek: %v", str) ++ if str == "" { ++ t.Fatalf("Seek(-1, 0, 0) return error with empty message") ++ } ++} --- gcc-8-8.3.0.orig/debian/patches/src_libgo_runtime.diff +++ gcc-8-8.3.0/debian/patches/src_libgo_runtime.diff @@ -0,0 +1,34 @@ +Index: gcc-8-8-20180308-1.1/src/libgo/runtime/getncpu-gnu.c +=================================================================== +--- /dev/null ++++ gcc-8-8-20180308-1.1/src/libgo/runtime/getncpu-gnu.c +@@ -0,0 +1,16 @@ ++// Copyright 2012 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. ++ ++#include ++ ++#include "runtime.h" ++#include "defs.h" ++ ++int32 ++getproccount(void) ++{ ++ int32 n; ++ n = (int32)sysconf(_SC_NPROCESSORS_ONLN); ++ return n > 1 ? n : 1; ++} +Index: gcc-8-8-20180308-1.1/src/libgo/runtime/go-caller.c +=================================================================== +--- gcc-8-8-20180308-1.1.orig/src/libgo/runtime/go-caller.c ++++ gcc-8-8-20180308-1.1/src/libgo/runtime/go-caller.c +@@ -116,7 +116,7 @@ __go_get_backtrace_state () + argv[0] (http://gcc.gnu.org/PR61895). It would be nice to + have a better check for whether this file is the real + executable. */ +- if (stat (filename, &s) < 0 || s.st_size < 1024) ++ if (filename != NULL && (stat (filename, &s) < 0 || s.st_size < 1024)) + filename = NULL; + + back_state = backtrace_create_state (filename, 1, error_callback, NULL); --- gcc-8-8.3.0.orig/debian/patches/src_libgo_testsuite_gotest.diff +++ gcc-8-8.3.0/debian/patches/src_libgo_testsuite_gotest.diff @@ -0,0 +1,17 @@ +Index: gcc-8-8-20171108-1.1/src/libgo/testsuite/gotest +=================================================================== +--- gcc-8-8-20171108-1.1.orig/src/libgo/testsuite/gotest ++++ gcc-8-8-20171108-1.1/src/libgo/testsuite/gotest +@@ -624,7 +624,11 @@ xno) + wait $pid + status=$? + if ! test -f gotest-timeout; then +- sleeppid=`ps -o pid,ppid,comm | grep " $alarmpid " | grep sleep | sed -e 's/ *\([0-9]*\) .*$/\1/'` ++ if test "$goos" = "gnu"; then ++ sleeppid=`ps -o pid,ppid | grep " $alarmpid " | grep sleep | sed -e 's/ *\([0-9]*\) .*$/\1/'` ++ else ++ sleeppid=`ps -o pid,ppid,comm | grep " $alarmpid " | grep sleep | sed -e 's/ *\([0-9]*\) .*$/\1/'` ++ fi + kill $alarmpid + wait $alarmpid + if test "$sleeppid" != ""; then --- gcc-8-8.3.0.orig/debian/patches/svn-doc-updates.diff +++ gcc-8-8.3.0/debian/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' + --- gcc-8-8.3.0.orig/debian/patches/svn-updates.diff +++ gcc-8-8.3.0/debian/patches/svn-updates.diff @@ -0,0 +1,63662 @@ +# DP: updates from the 8 branch upto 20191127 (r278756). + +last_update() +{ + cat > ${dir}LAST_UPDATED ++ ++ Backport from mainline ++ 2018-08-03 Sergei Trofimovich ++ ++ PR target/86712 ++ * config/sh/sjlj.S: Adjust to use PIC vs normal code to avoid ++ absolute relocation in a shared library. ++ + 2019-02-22 Release Manager + + * GCC 8.3.0 released. +Index: libitm/config/sh/sjlj.S +=================================================================== +--- a/src/libitm/config/sh/sjlj.S (.../tags/gcc_8_3_0_release) ++++ b/src/libitm/config/sh/sjlj.S (.../branches/gcc-8-branch) +@@ -53,7 +53,7 @@ + #else + cfi_def_cfa_offset (4*10) + #endif +-#if defined HAVE_ATTRIBUTE_VISIBILITY || !defined __PIC__ ++#if !defined __PIC__ + mov.l .Lbegin, r1 + jsr @r1 + mov r15, r5 +@@ -78,7 +78,7 @@ + + .align 2 + .Lbegin: +-#if defined HAVE_ATTRIBUTE_VISIBILITY || !defined __PIC__ ++#if !defined __PIC__ + .long GTM_begin_transaction + #else + .long GTM_begin_transaction@PCREL-(.Lbegin0-.) +Index: libgomp/ChangeLog +=================================================================== +--- a/src/libgomp/ChangeLog (.../tags/gcc_8_3_0_release) ++++ b/src/libgomp/ChangeLog (.../branches/gcc-8-branch) +@@ -1,3 +1,19 @@ ++2019-08-29 Jakub Jelinek ++ ++ Backported from mainline ++ 2019-05-24 Jakub Jelinek ++ ++ PR libgomp/90585 ++ * plugin/plugin-hsa.c (print_kernel_dispatch, run_kernel): Use PRIu64 ++ macro instead of "lu". ++ (release_kernel_dispatch): Likewise. Cast shadow->debug to uintptr_t ++ before casting to void *. ++ ++2019-06-11 Jakub Jelinek ++ ++ PR target/90811 ++ * testsuite/libgomp.c/pr90811.c: New test. ++ + 2019-02-22 Release Manager + + * GCC 8.3.0 released. +Index: libgomp/testsuite/libgomp.c/pr90811.c +=================================================================== +--- a/src/libgomp/testsuite/libgomp.c/pr90811.c (.../tags/gcc_8_3_0_release) ++++ b/src/libgomp/testsuite/libgomp.c/pr90811.c (.../branches/gcc-8-branch) +@@ -0,0 +1,29 @@ ++/* PR target/90811 */ ++ ++int ++main () ++{ ++ long long a[100], b[100]; ++ int i; ++ for (i = 0; i < 100; i++) ++ { ++ a[i] = i; ++ b[i] = i % 10; ++ } ++ #pragma omp target teams distribute parallel for simd map(tofrom: a[:100], b[:100]) ++ for (i = 0; i < 100; i++) ++ { ++ long long c = 0; ++ const long long d[] = { 1, 3, 5, 7, 9 }; ++ for (int j = 4; j >= 0; j--) ++ c = d[j] + b[i] * c; ++ a[i] += c; ++ } ++ for (i = 0; i < 100; i++) ++ { ++ const long long r[] = { 1, 26, 229, 976, 2849, 6646, 13381, 24284, 40801, 64594 }; ++ if (a[i] != r[i % 10] + (i / 10 * 10)) ++ __builtin_abort (); ++ } ++ return 0; ++} +Index: libgomp/plugin/plugin-hsa.c +=================================================================== +--- a/src/libgomp/plugin/plugin-hsa.c (.../tags/gcc_8_3_0_release) ++++ b/src/libgomp/plugin/plugin-hsa.c (.../branches/gcc-8-branch) +@@ -1154,8 +1154,9 @@ + static void + release_kernel_dispatch (struct GOMP_hsa_kernel_dispatch *shadow) + { +- HSA_DEBUG ("Released kernel dispatch: %p has value: %lu (%p)\n", shadow, +- shadow->debug, (void *) shadow->debug); ++ HSA_DEBUG ("Released kernel dispatch: %p has value: %" PRIu64 " (%p)\n", ++ shadow, shadow->debug, ++ (void *) (uintptr_t) shadow->debug); + + hsa_fns.hsa_memory_free_fn (shadow->kernarg_address); + +@@ -1276,9 +1277,9 @@ + indent_stream (stderr, indent); + fprintf (stderr, "kernarg_address: %p\n", dispatch->kernarg_address); + indent_stream (stderr, indent); +- fprintf (stderr, "object: %lu\n", dispatch->object); ++ fprintf (stderr, "object: %" PRIu64 "\n", dispatch->object); + indent_stream (stderr, indent); +- fprintf (stderr, "signal: %lu\n", dispatch->signal); ++ fprintf (stderr, "signal: %" PRIu64 "\n", dispatch->signal); + indent_stream (stderr, indent); + fprintf (stderr, "private_segment_size: %u\n", + dispatch->private_segment_size); +@@ -1286,7 +1287,7 @@ + fprintf (stderr, "group_segment_size: %u\n", + dispatch->group_segment_size); + indent_stream (stderr, indent); +- fprintf (stderr, "children dispatches: %lu\n", ++ fprintf (stderr, "children dispatches: %" PRIu64 "\n", + dispatch->kernel_dispatch_count); + indent_stream (stderr, indent); + fprintf (stderr, "omp_num_threads: %u\n", +@@ -1594,7 +1595,7 @@ + hsa_signal_t child_s; + child_s.handle = shadow->children_dispatches[i]->signal; + +- HSA_DEBUG ("Waiting for children completion signal: %lu\n", ++ HSA_DEBUG ("Waiting for children completion signal: %" PRIu64 "\n", + shadow->children_dispatches[i]->signal); + hsa_fns.hsa_signal_load_acquire_fn (child_s); + } +Index: libquadmath/ChangeLog +=================================================================== +--- a/src/libquadmath/ChangeLog (.../tags/gcc_8_3_0_release) ++++ b/src/libquadmath/ChangeLog (.../branches/gcc-8-branch) +@@ -1,3 +1,12 @@ ++2019-11-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-02-22 Release Manager + + * GCC 8.3.0 released. +Index: libquadmath/quadmath.h +=================================================================== +--- a/src/libquadmath/quadmath.h (.../tags/gcc_8_3_0_release) ++++ b/src/libquadmath/quadmath.h (.../branches/gcc-8-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. +@@ -163,19 +163,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: libstdc++-v3/configure +=================================================================== +--- a/src/libstdc++-v3/configure (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/configure (.../branches/gcc-8-branch) +@@ -638,6 +638,7 @@ + XSL_STYLE_DIR + XMLLINT + XSLTPROC ++XMLCATALOG + DOT + DOXYGEN + BUILD_INFO_FALSE +@@ -11608,7 +11609,7 @@ + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +-#line 11611 "configure" ++#line 11612 "configure" + #include "confdefs.h" + + #if HAVE_DLFCN_H +@@ -11714,7 +11715,7 @@ + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +-#line 11717 "configure" ++#line 11718 "configure" + #include "confdefs.h" + + #if HAVE_DLFCN_H +@@ -15400,7 +15401,7 @@ + # Fake what AC_TRY_COMPILE does. + + cat > conftest.$ac_ext << EOF +-#line 15403 "configure" ++#line 15404 "configure" + int main() + { + typedef bool atomic_type; +@@ -15435,7 +15436,7 @@ + rm -f conftest* + + cat > conftest.$ac_ext << EOF +-#line 15438 "configure" ++#line 15439 "configure" + int main() + { + typedef short atomic_type; +@@ -15470,7 +15471,7 @@ + rm -f conftest* + + cat > conftest.$ac_ext << EOF +-#line 15473 "configure" ++#line 15474 "configure" + int main() + { + // NB: _Atomic_word not necessarily int. +@@ -15506,7 +15507,7 @@ + rm -f conftest* + + cat > conftest.$ac_ext << EOF +-#line 15509 "configure" ++#line 15510 "configure" + int main() + { + typedef long long atomic_type; +@@ -15587,7 +15588,7 @@ + # unnecessary for this test. + + cat > conftest.$ac_ext << EOF +-#line 15590 "configure" ++#line 15591 "configure" + int main() + { + _Decimal32 d1; +@@ -15629,7 +15630,7 @@ + # unnecessary for this test. + + cat > conftest.$ac_ext << EOF +-#line 15632 "configure" ++#line 15633 "configure" + template + struct same + { typedef T2 type; }; +@@ -15663,7 +15664,7 @@ + rm -f conftest* + + cat > conftest.$ac_ext << EOF +-#line 15666 "configure" ++#line 15667 "configure" + template + struct same + { typedef T2 type; }; +@@ -80857,6 +80858,44 @@ + + + # Check for docbook ++# Extract the first word of "xmlcatalog", so it can be a program name with args. ++set dummy xmlcatalog; ac_word=$2 ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 ++$as_echo_n "checking for $ac_word... " >&6; } ++if test "${ac_cv_prog_XMLCATALOG+set}" = set; then : ++ $as_echo_n "(cached) " >&6 ++else ++ if test -n "$XMLCATALOG"; then ++ ac_cv_prog_XMLCATALOG="$XMLCATALOG" # Let the user override the test. ++else ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ++ ac_cv_prog_XMLCATALOG="yes" ++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 ++ break 2 ++ fi ++done ++ done ++IFS=$as_save_IFS ++ ++ test -z "$ac_cv_prog_XMLCATALOG" && ac_cv_prog_XMLCATALOG="no" ++fi ++fi ++XMLCATALOG=$ac_cv_prog_XMLCATALOG ++if test -n "$XMLCATALOG"; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XMLCATALOG" >&5 ++$as_echo "$XMLCATALOG" >&6; } ++else ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++fi ++ ++ + # Extract the first word of "xsltproc", so it can be a program name with args. + set dummy xsltproc; ac_word=$2 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +@@ -80935,31 +80974,28 @@ + + + +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for docbook stylesheets for documentation creation" >&5 +-$as_echo_n "checking for docbook stylesheets for documentation creation... " >&6; } +-glibcxx_stylesheets=no +-if test x${XSLTPROC} = xyes && echo '' | xsltproc --noout --nonet --xinclude http://docbook.sourceforge.net/release/xsl-ns/current/xhtml-1_1/docbook.xsl - 2>/dev/null; then +- glibcxx_stylesheets=yes +-fi +-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_stylesheets" >&5 +-$as_echo "$glibcxx_stylesheets" >&6; } ++glibcxx_docbook_url=http://docbook.sourceforge.net/release/xsl-ns/current/ + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for local stylesheet directory" >&5 + $as_echo_n "checking for local stylesheet directory... " >&6; } + glibcxx_local_stylesheets=no +-if test x"$glibcxx_stylesheets" = x"yes"; then +- if test -d /usr/share/sgml/docbook/xsl-ns-stylesheets; then +- glibcxx_local_stylesheets=yes +- XSL_STYLE_DIR=/usr/share/sgml/docbook/xsl-ns-stylesheets +- fi +- if test -d /usr/share/xml/docbook/stylesheet/docbook-xsl-ns; then +- glibcxx_local_stylesheets=yes +- XSL_STYLE_DIR=/usr/share/xml/docbook/stylesheet/docbook-xsl-ns +- fi +- if test -d /usr/share/xml/docbook/stylesheet/nwalsh5/current; then +- glibcxx_local_stylesheets=yes +- XSL_STYLE_DIR=/usr/share/xml/docbook/stylesheet/nwalsh5/current +- fi ++if test x${XMLCATALOG} = xyes && xsl_style_dir=`xmlcatalog "" $glibcxx_docbook_url 2>/dev/null` ++then ++ XSL_STYLE_DIR=`echo $xsl_style_dir | sed -n 's;^file://;;p'` ++ glibcxx_local_stylesheets=yes ++else ++ for dir in \ ++ /usr/share/sgml/docbook/xsl-ns-stylesheets \ ++ /usr/share/xml/docbook/stylesheet/docbook-xsl-ns \ ++ /usr/share/xml/docbook/stylesheet/nwalsh5/current \ ++ /usr/share/xml/docbook/stylesheet/nwalsh/current ++ do ++ if test -d $dir; then ++ glibcxx_local_stylesheets=yes ++ XSL_STYLE_DIR=$dir ++ break ++ fi ++ done + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_local_stylesheets" >&5 + $as_echo "$glibcxx_local_stylesheets" >&6; } +@@ -80968,6 +81004,18 @@ + + { $as_echo "$as_me:${as_lineno-$LINENO}: $XSL_STYLE_DIR" >&5 + $as_echo "$as_me: $XSL_STYLE_DIR" >&6;} ++ ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for docbook stylesheets for documentation creation" >&5 ++$as_echo_n "checking for docbook stylesheets for documentation creation... " >&6; } ++ glibcxx_stylesheets=no ++ if test x${XMLCATALOG} = xno || xmlcatalog "" $glibcxx_docbook_url/xhtml/docbook.xsl >/dev/null 2>&1; then ++ if test x${XSLTPROC} = xyes && echo '<title/>' | xsltproc --noout --nonet --xinclude $glibcxx_docbook_url/xhtml/docbook.xsl - 2>/dev/null; then ++ glibcxx_stylesheets=yes ++ fi ++ fi ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_stylesheets" >&5 ++$as_echo "$glibcxx_stylesheets" >&6; } ++ + else + glibcxx_stylesheets=no + fi +Index: libstdc++-v3/python/Makefile.in +=================================================================== +--- a/src/libstdc++-v3/python/Makefile.in (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/python/Makefile.in (.../branches/gcc-8-branch) +@@ -235,6 +235,7 @@ + VTV_PCH_CXXFLAGS = @VTV_PCH_CXXFLAGS@ + WARN_FLAGS = @WARN_FLAGS@ + WERROR = @WERROR@ ++XMLCATALOG = @XMLCATALOG@ + XMLLINT = @XMLLINT@ + XSLTPROC = @XSLTPROC@ + XSL_STYLE_DIR = @XSL_STYLE_DIR@ +Index: libstdc++-v3/python/libstdcxx/v6/xmethods.py +=================================================================== +--- a/src/libstdc++-v3/python/libstdcxx/v6/xmethods.py (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/python/libstdcxx/v6/xmethods.py (.../branches/gcc-8-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/Makefile.in +=================================================================== +--- a/src/libstdc++-v3/Makefile.in (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/Makefile.in (.../branches/gcc-8-branch) +@@ -233,6 +233,7 @@ + VTV_PCH_CXXFLAGS = @VTV_PCH_CXXFLAGS@ + WARN_FLAGS = @WARN_FLAGS@ + WERROR = @WERROR@ ++XMLCATALOG = @XMLCATALOG@ + XMLLINT = @XMLLINT@ + XSLTPROC = @XSLTPROC@ + XSL_STYLE_DIR = @XSL_STYLE_DIR@ +Index: libstdc++-v3/src/c++17/Makefile.in +=================================================================== +--- a/src/libstdc++-v3/src/c++17/Makefile.in (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/src/c++17/Makefile.in (.../branches/gcc-8-branch) +@@ -0,0 +1,754 @@ ++# 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@ ++ ++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 = src/c++17 ++ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 ++am__aclocal_m4_deps = $(top_srcdir)/../config/acx.m4 \ ++ $(top_srcdir)/../config/enable.m4 \ ++ $(top_srcdir)/../config/futex.m4 \ ++ $(top_srcdir)/../config/hwcaps.m4 \ ++ $(top_srcdir)/../config/iconv.m4 \ ++ $(top_srcdir)/../config/lead-dot.m4 \ ++ $(top_srcdir)/../config/lib-ld.m4 \ ++ $(top_srcdir)/../config/lib-link.m4 \ ++ $(top_srcdir)/../config/lib-prefix.m4 \ ++ $(top_srcdir)/../config/lthostflags.m4 \ ++ $(top_srcdir)/../config/multi.m4 \ ++ $(top_srcdir)/../config/no-executables.m4 \ ++ $(top_srcdir)/../config/override.m4 \ ++ $(top_srcdir)/../config/stdint.m4 \ ++ $(top_srcdir)/../config/unwind_ipinfo.m4 \ ++ $(top_srcdir)/../libtool.m4 $(top_srcdir)/../ltoptions.m4 \ ++ $(top_srcdir)/../ltsugar.m4 $(top_srcdir)/../ltversion.m4 \ ++ $(top_srcdir)/../lt~obsolete.m4 $(top_srcdir)/crossconfig.m4 \ ++ $(top_srcdir)/linkage.m4 $(top_srcdir)/acinclude.m4 \ ++ $(top_srcdir)/../config/gc++filt.m4 \ ++ $(top_srcdir)/../config/tls.m4 $(top_srcdir)/../config/gthr.m4 \ ++ $(top_srcdir)/../config/cet.m4 $(top_srcdir)/configure.ac ++am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ ++ $(ACLOCAL_M4) ++DIST_COMMON = $(srcdir)/Makefile.am ++CONFIG_HEADER = $(top_builddir)/config.h ++CONFIG_CLEAN_FILES = ++CONFIG_CLEAN_VPATH_FILES = ++LTLIBRARIES = $(noinst_LTLIBRARIES) ++libc__17convenience_la_LIBADD = ++@ENABLE_DUAL_ABI_TRUE@am__objects_1 = cow-fs_dir.lo cow-fs_ops.lo \ ++@ENABLE_DUAL_ABI_TRUE@ cow-fs_path.lo ++am__objects_2 = fs_dir.lo fs_ops.lo fs_path.lo memory_resource.lo \ ++ $(am__objects_1) ++@ENABLE_DUAL_ABI_TRUE@am__objects_3 = cow-string-inst.lo ++@ENABLE_EXTERN_TEMPLATE_TRUE@am__objects_4 = ostream-inst.lo \ ++@ENABLE_EXTERN_TEMPLATE_TRUE@ string-inst.lo $(am__objects_3) ++am_libc__17convenience_la_OBJECTS = $(am__objects_2) $(am__objects_4) ++libc__17convenience_la_OBJECTS = $(am_libc__17convenience_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 = ++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@ -I$(top_builddir) ++depcomp = ++am__depfiles_maybe = ++CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ ++ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) ++AM_V_CXX = $(am__v_CXX_@AM_V@) ++am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) ++am__v_CXX_0 = @echo " CXX " $@; ++am__v_CXX_1 = ++CXXLD = $(CXX) ++AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) ++am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) ++am__v_CXXLD_0 = @echo " CXXLD " $@; ++am__v_CXXLD_1 = ++SOURCES = $(libc__17convenience_la_SOURCES) ++am__can_run_installinfo = \ ++ case $$AM_UPDATE_INFO_DIR in \ ++ n|no|NO) false;; \ ++ *) (install-info --version) >/dev/null 2>&1;; \ ++ esac ++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 ++ABI_TWEAKS_SRCDIR = @ABI_TWEAKS_SRCDIR@ ++ACLOCAL = @ACLOCAL@ ++ALLOCATOR_H = @ALLOCATOR_H@ ++ALLOCATOR_NAME = @ALLOCATOR_NAME@ ++AMTAR = @AMTAR@ ++AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ ++AR = @AR@ ++AS = @AS@ ++ATOMICITY_SRCDIR = @ATOMICITY_SRCDIR@ ++ATOMIC_FLAGS = @ATOMIC_FLAGS@ ++ATOMIC_WORD_SRCDIR = @ATOMIC_WORD_SRCDIR@ ++AUTOCONF = @AUTOCONF@ ++AUTOHEADER = @AUTOHEADER@ ++AUTOMAKE = @AUTOMAKE@ ++AWK = @AWK@ ++BASIC_FILE_CC = @BASIC_FILE_CC@ ++BASIC_FILE_H = @BASIC_FILE_H@ ++CC = @CC@ ++CCODECVT_CC = @CCODECVT_CC@ ++CCOLLATE_CC = @CCOLLATE_CC@ ++CCTYPE_CC = @CCTYPE_CC@ ++CFLAGS = @CFLAGS@ ++CLOCALE_CC = @CLOCALE_CC@ ++CLOCALE_H = @CLOCALE_H@ ++CLOCALE_INTERNAL_H = @CLOCALE_INTERNAL_H@ ++CMESSAGES_CC = @CMESSAGES_CC@ ++CMESSAGES_H = @CMESSAGES_H@ ++CMONEY_CC = @CMONEY_CC@ ++CNUMERIC_CC = @CNUMERIC_CC@ ++CPP = @CPP@ ++CPPFLAGS = @CPPFLAGS@ ++CPU_DEFINES_SRCDIR = @CPU_DEFINES_SRCDIR@ ++CPU_OPT_BITS_RANDOM = @CPU_OPT_BITS_RANDOM@ ++CPU_OPT_EXT_RANDOM = @CPU_OPT_EXT_RANDOM@ ++CSTDIO_H = @CSTDIO_H@ ++CTIME_CC = @CTIME_CC@ ++CTIME_H = @CTIME_H@ ++CXX = @CXX@ ++CXXCPP = @CXXCPP@ ++CXXFILT = @CXXFILT@ ++CXXFLAGS = @CXXFLAGS@ ++CYGPATH_W = @CYGPATH_W@ ++C_INCLUDE_DIR = @C_INCLUDE_DIR@ ++DBLATEX = @DBLATEX@ ++DEBUG_FLAGS = @DEBUG_FLAGS@ ++DEFS = @DEFS@ ++DOT = @DOT@ ++DOXYGEN = @DOXYGEN@ ++DSYMUTIL = @DSYMUTIL@ ++DUMPBIN = @DUMPBIN@ ++ECHO_C = @ECHO_C@ ++ECHO_N = @ECHO_N@ ++ECHO_T = @ECHO_T@ ++EGREP = @EGREP@ ++ERROR_CONSTANTS_SRCDIR = @ERROR_CONSTANTS_SRCDIR@ ++EXEEXT = @EXEEXT@ ++EXTRA_CFLAGS = @EXTRA_CFLAGS@ ++EXTRA_CXX_FLAGS = @EXTRA_CXX_FLAGS@ ++FGREP = @FGREP@ ++GLIBCXX_INCLUDES = @GLIBCXX_INCLUDES@ ++GLIBCXX_LIBS = @GLIBCXX_LIBS@ ++GREP = @GREP@ ++HWCAP_CFLAGS = @HWCAP_CFLAGS@ ++INSTALL = @INSTALL@ ++INSTALL_DATA = @INSTALL_DATA@ ++INSTALL_PROGRAM = @INSTALL_PROGRAM@ ++INSTALL_SCRIPT = @INSTALL_SCRIPT@ ++INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ ++LD = @LD@ ++LDFLAGS = @LDFLAGS@ ++LIBICONV = @LIBICONV@ ++LIBOBJS = @LIBOBJS@ ++LIBS = @LIBS@ ++LIBTOOL = @LIBTOOL@ ++LIPO = @LIPO@ ++LN_S = @LN_S@ ++LONG_DOUBLE_COMPAT_FLAGS = @LONG_DOUBLE_COMPAT_FLAGS@ ++LTLIBICONV = @LTLIBICONV@ ++LTLIBOBJS = @LTLIBOBJS@ ++MAINT = @MAINT@ ++MAKEINFO = @MAKEINFO@ ++MKDIR_P = @MKDIR_P@ ++NM = @NM@ ++NMEDIT = @NMEDIT@ ++OBJDUMP = @OBJDUMP@ ++OBJEXT = @OBJEXT@ ++OPTIMIZE_CXXFLAGS = @OPTIMIZE_CXXFLAGS@ ++OPT_LDFLAGS = @OPT_LDFLAGS@ ++OS_INC_SRCDIR = @OS_INC_SRCDIR@ ++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@ ++PDFLATEX = @PDFLATEX@ ++RANLIB = @RANLIB@ ++SECTION_FLAGS = @SECTION_FLAGS@ ++SECTION_LDFLAGS = @SECTION_LDFLAGS@ ++SED = @SED@ ++SET_MAKE = @SET_MAKE@ ++SHELL = @SHELL@ ++STRIP = @STRIP@ ++SYMVER_FILE = @SYMVER_FILE@ ++TOPLEVEL_INCLUDES = @TOPLEVEL_INCLUDES@ ++USE_NLS = @USE_NLS@ ++VERSION = @VERSION@ ++VTV_CXXFLAGS = @VTV_CXXFLAGS@ ++VTV_CXXLINKFLAGS = @VTV_CXXLINKFLAGS@ ++VTV_PCH_CXXFLAGS = @VTV_PCH_CXXFLAGS@ ++WARN_FLAGS = @WARN_FLAGS@ ++XMLCATALOG = @XMLCATALOG@ ++XMLLINT = @XMLLINT@ ++XSLTPROC = @XSLTPROC@ ++XSL_STYLE_DIR = @XSL_STYLE_DIR@ ++abs_builddir = @abs_builddir@ ++abs_srcdir = @abs_srcdir@ ++abs_top_builddir = @abs_top_builddir@ ++abs_top_srcdir = @abs_top_srcdir@ ++ac_ct_CC = @ac_ct_CC@ ++ac_ct_CXX = @ac_ct_CXX@ ++ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ++am__leading_dot = @am__leading_dot@ ++am__tar = @am__tar@ ++am__untar = @am__untar@ ++baseline_dir = @baseline_dir@ ++baseline_subdir_switch = @baseline_subdir_switch@ ++bindir = @bindir@ ++build = @build@ ++build_alias = @build_alias@ ++build_cpu = @build_cpu@ ++build_os = @build_os@ ++build_vendor = @build_vendor@ ++builddir = @builddir@ ++check_msgfmt = @check_msgfmt@ ++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@ ++glibcxx_MOFILES = @glibcxx_MOFILES@ ++glibcxx_PCHFLAGS = @glibcxx_PCHFLAGS@ ++glibcxx_POFILES = @glibcxx_POFILES@ ++glibcxx_builddir = @glibcxx_builddir@ ++glibcxx_compiler_pic_flag = @glibcxx_compiler_pic_flag@ ++glibcxx_compiler_shared_flag = @glibcxx_compiler_shared_flag@ ++glibcxx_cxx98_abi = @glibcxx_cxx98_abi@ ++glibcxx_localedir = @glibcxx_localedir@ ++glibcxx_lt_pic_flag = @glibcxx_lt_pic_flag@ ++glibcxx_prefixdir = @glibcxx_prefixdir@ ++glibcxx_srcdir = @glibcxx_srcdir@ ++glibcxx_toolexecdir = @glibcxx_toolexecdir@ ++glibcxx_toolexeclibdir = @glibcxx_toolexeclibdir@ ++gxx_include_dir = @gxx_include_dir@ ++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@ ++libtool_VERSION = @libtool_VERSION@ ++localedir = @localedir@ ++localstatedir = @localstatedir@ ++lt_host_flags = @lt_host_flags@ ++mandir = @mandir@ ++mkdir_p = @mkdir_p@ ++multi_basedir = @multi_basedir@ ++oldincludedir = @oldincludedir@ ++pdfdir = @pdfdir@ ++port_specific_symbol_files = @port_specific_symbol_files@ ++prefix = @prefix@ ++program_transform_name = @program_transform_name@ ++psdir = @psdir@ ++python_mod_dir = @python_mod_dir@ ++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@ ++thread_header = @thread_header@ ++top_build_prefix = @top_build_prefix@ ++top_builddir = @top_builddir@ ++top_srcdir = @top_srcdir@ ++toplevel_builddir = @toplevel_builddir@ ++toplevel_srcdir = @toplevel_srcdir@ ++ ++# May be used by various substitution variables. ++gcc_version := $(shell @get_gcc_base_ver@ $(top_srcdir)/../gcc/BASE-VER) ++MAINT_CHARSET = latin1 ++mkinstalldirs = $(SHELL) $(toplevel_srcdir)/mkinstalldirs ++PWD_COMMAND = $${PWDCMD-pwd} ++STAMP = echo timestamp > ++toolexecdir = $(glibcxx_toolexecdir) ++toolexeclibdir = $(glibcxx_toolexeclibdir) ++@ENABLE_WERROR_FALSE@WERROR_FLAG = ++@ENABLE_WERROR_TRUE@WERROR_FLAG = -Werror ++@ENABLE_EXTERN_TEMPLATE_FALSE@XTEMPLATE_FLAGS = ++@ENABLE_EXTERN_TEMPLATE_TRUE@XTEMPLATE_FLAGS = -fno-implicit-templates ++ ++# These bits are all figured out from configure. Look in acinclude.m4 ++# or configure.ac to see how they are set. See GLIBCXX_EXPORT_FLAGS. ++CONFIG_CXXFLAGS = \ ++ $(SECTION_FLAGS) $(HWCAP_CFLAGS) -frandom-seed=$@ ++ ++WARN_CXXFLAGS = \ ++ $(WARN_FLAGS) $(WERROR_FLAG) -fdiagnostics-show-location=once ++ ++ ++# -I/-D flags to pass when compiling. ++AM_CPPFLAGS = $(GLIBCXX_INCLUDES) $(CPPFLAGS) ++ ++# Convenience library for C++17 runtime. ++noinst_LTLIBRARIES = libc++17convenience.la ++headers = ++@ENABLE_DUAL_ABI_FALSE@extra_string_inst_sources = ++@ENABLE_DUAL_ABI_TRUE@extra_string_inst_sources = cow-string-inst.cc ++@ENABLE_DUAL_ABI_FALSE@extra_fs_sources = ++@ENABLE_DUAL_ABI_TRUE@extra_fs_sources = \ ++@ENABLE_DUAL_ABI_TRUE@ cow-fs_dir.cc \ ++@ENABLE_DUAL_ABI_TRUE@ cow-fs_ops.cc \ ++@ENABLE_DUAL_ABI_TRUE@ cow-fs_path.cc ++ ++# XTEMPLATE_FLAGS = ++@ENABLE_EXTERN_TEMPLATE_FALSE@inst_sources = ++ ++# XTEMPLATE_FLAGS = -fno-implicit-templates ++@ENABLE_EXTERN_TEMPLATE_TRUE@inst_sources = \ ++@ENABLE_EXTERN_TEMPLATE_TRUE@ ostream-inst.cc \ ++@ENABLE_EXTERN_TEMPLATE_TRUE@ string-inst.cc \ ++@ENABLE_EXTERN_TEMPLATE_TRUE@ $(extra_string_inst_sources) ++ ++sources = \ ++ fs_dir.cc \ ++ fs_ops.cc \ ++ fs_path.cc \ ++ memory_resource.cc \ ++ $(extra_fs_sources) ++ ++libc__17convenience_la_SOURCES = $(sources) $(inst_sources) ++ ++# AM_CXXFLAGS needs to be in each subdirectory so that it can be ++# modified in a per-library or per-sub-library way. Need to manually ++# set this option because CONFIG_CXXFLAGS has to be after ++# OPTIMIZE_CXXFLAGS on the compile line so that -O2 can be overridden ++# as the occasion calls for it. ++AM_CXXFLAGS = \ ++ -std=gnu++17 \ ++ $(glibcxx_lt_pic_flag) $(glibcxx_compiler_shared_flag) \ ++ $(XTEMPLATE_FLAGS) $(VTV_CXXFLAGS) \ ++ $(WARN_CXXFLAGS) $(OPTIMIZE_CXXFLAGS) $(CONFIG_CXXFLAGS) \ ++ -fimplicit-templates ++ ++AM_MAKEFLAGS = \ ++ "gxx_include_dir=$(gxx_include_dir)" ++ ++ ++# Libtool notes ++ ++# 1) In general, libtool expects an argument such as `--tag=CXX' when ++# using the C++ compiler, because that will enable the settings ++# detected when C++ support was being configured. However, when no ++# such flag is given in the command line, libtool attempts to figure ++# it out by matching the compiler name in each configuration section ++# against a prefix of the command line. The problem is that, if the ++# compiler name and its initial flags stored in the libtool ++# configuration file don't match those in the command line, libtool ++# can't decide which configuration to use, and it gives up. The ++# correct solution is to add `--tag CXX' to LTCXXCOMPILE and maybe ++# CXXLINK, just after $(LIBTOOL), so that libtool doesn't have to ++# attempt to infer which configuration to use. ++# ++# The second tag argument, `--tag disable-shared` means that libtool ++# only compiles each source once, for static objects. In actuality, ++# glibcxx_lt_pic_flag and glibcxx_compiler_shared_flag are added to ++# the libtool command that is used create the object, which is ++# suitable for shared libraries. The `--tag disable-shared` must be ++# placed after --tag CXX lest things CXX undo the affect of ++# disable-shared. ++ ++# 2) Need to explicitly set LTCXXCOMPILE so that EXTRA_CXX_FLAGS is ++# last. (That way, things like -O2 passed down from the toplevel can ++# be overridden by --enable-debug.) ++LTCXXCOMPILE = \ ++ $(LIBTOOL) --tag CXX --tag disable-shared \ ++ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ ++ --mode=compile $(CXX) $(TOPLEVEL_INCLUDES) \ ++ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) $(EXTRA_CXX_FLAGS) ++ ++LTLDFLAGS = $(shell $(SHELL) $(top_srcdir)/../libtool-ldflags $(LDFLAGS)) ++ ++# 3) We'd have a problem when building the shared libstdc++ object if ++# the rules automake generates would be used. We cannot allow g++ to ++# be used since this would add -lstdc++ to the link line which of ++# course is problematic at this point. So, we get the top-level ++# directory to configure libstdc++-v3 to use gcc as the C++ ++# compilation driver. ++CXXLINK = \ ++ $(LIBTOOL) --tag CXX --tag disable-shared \ ++ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ ++ --mode=link $(CXX) \ ++ $(VTV_CXXLINKFLAGS) \ ++ $(OPT_LDFLAGS) $(SECTION_LDFLAGS) $(AM_CXXFLAGS) $(LTLDFLAGS) -o $@ ++ ++all: all-am ++ ++.SUFFIXES: ++.SUFFIXES: .cc .lo .o .obj ++$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/fragment.am $(am__configure_deps) ++ @for dep in $?; do \ ++ case '$(am__configure_deps)' in \ ++ *$$dep*) \ ++ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ ++ && { if test -f $@; then exit 0; else break; fi; }; \ ++ exit 1;; \ ++ esac; \ ++ done; \ ++ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign --ignore-deps src/c++17/Makefile'; \ ++ $(am__cd) $(top_srcdir) && \ ++ $(AUTOMAKE) --foreign --ignore-deps src/c++17/Makefile ++Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status ++ @case '$?' in \ ++ *config.status*) \ ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ ++ *) \ ++ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ ++ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ ++ esac; ++$(top_srcdir)/fragment.am $(am__empty): ++ ++$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ++ ++$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ++$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) ++ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ++$(am__aclocal_m4_deps): ++ ++clean-noinstLTLIBRARIES: ++ -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) ++ @list='$(noinst_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}; \ ++ } ++ ++libc++17convenience.la: $(libc__17convenience_la_OBJECTS) $(libc__17convenience_la_DEPENDENCIES) $(EXTRA_libc__17convenience_la_DEPENDENCIES) ++ $(AM_V_CXXLD)$(CXXLINK) $(libc__17convenience_la_OBJECTS) $(libc__17convenience_la_LIBADD) $(LIBS) ++ ++mostlyclean-compile: ++ -rm -f *.$(OBJEXT) ++ ++distclean-compile: ++ -rm -f *.tab.c ++ ++.cc.o: ++ $(AM_V_CXX)$(CXXCOMPILE) -c -o $@ $< ++ ++.cc.obj: ++ $(AM_V_CXX)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` ++ ++.cc.lo: ++ $(AM_V_CXX)$(LTCXXCOMPILE) -c -o $@ $< ++ ++mostlyclean-libtool: ++ -rm -f *.lo ++ ++clean-libtool: ++ -rm -rf .libs _libs ++ ++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" ++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 ++check-am: all-am ++check: check-am ++all-am: Makefile $(LTLIBRARIES) ++installdirs: ++install: 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: ++ ++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." ++clean: clean-am ++ ++clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ ++ mostlyclean-am ++ ++distclean: distclean-am ++ -rm -f Makefile ++distclean-am: clean-am distclean-compile distclean-generic \ ++ distclean-tags ++ ++dvi: dvi-am ++ ++dvi-am: ++ ++html: html-am ++ ++html-am: ++ ++info: info-am ++ ++info-am: ++ ++install-data-am: ++ ++install-dvi: install-dvi-am ++ ++install-dvi-am: ++ ++install-exec-am: ++ ++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 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: ++ ++.MAKE: install-am install-strip ++ ++.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ ++ clean-libtool clean-noinstLTLIBRARIES 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-html install-html-am install-info install-info-am \ ++ install-man install-pdf install-pdf-am 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 ++ ++.PRECIOUS: Makefile ++ ++ ++vpath % $(top_srcdir)/src/c++17 ++ ++# 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: +Index: libstdc++-v3/src/Makefile.in +=================================================================== +--- a/src/libstdc++-v3/src/Makefile.in (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/src/Makefile.in (.../branches/gcc-8-branch) +@@ -268,6 +268,7 @@ + VTV_PCH_CXXFLAGS = @VTV_PCH_CXXFLAGS@ + WARN_FLAGS = @WARN_FLAGS@ + WERROR = @WERROR@ ++XMLCATALOG = @XMLCATALOG@ + XMLLINT = @XMLLINT@ + XSLTPROC = @XSLTPROC@ + XSL_STYLE_DIR = @XSL_STYLE_DIR@ +@@ -993,7 +994,7 @@ + fi; \ + echo `date` > stamp-libstdc++convenience; + stamp-debug: +- if test ! -d ${debugdir}; then \ ++ if test ! -d ${debugdir} || test ! -f ${debugdir}/Makefile ; then \ + mkdir -p ${debugdir}; \ + for d in $(SUBDIRS); do mkdir -p ${debugdir}/$$d; done; \ + (cd ${debugdir}; \ +Index: libstdc++-v3/src/filesystem/path.cc +=================================================================== +--- a/src/libstdc++-v3/src/filesystem/path.cc (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/src/filesystem/path.cc (.../branches/gcc-8-branch) +@@ -334,6 +334,28 @@ + if (_M_pathname.empty()) + return; + ++ { ++ // Approximate count of components, to reserve space in _M_cmpts vector: ++ int count = 1; ++ bool saw_sep_last = _S_is_dir_sep(_M_pathname[0]); ++ bool saw_non_sep = !saw_sep_last; ++ for (value_type c : _M_pathname) ++ { ++ if (_S_is_dir_sep(c)) ++ saw_sep_last = true; ++ else if (saw_sep_last) ++ { ++ ++count; ++ saw_sep_last = false; ++ saw_non_sep = true; ++ } ++ } ++ if (saw_non_sep && saw_sep_last) ++ ++count; // empty filename after trailing slash ++ if (count > 1) ++ _M_cmpts.reserve(count); ++ } ++ + size_t pos = 0; + const size_t len = _M_pathname.size(); + +@@ -356,9 +378,13 @@ + pos = 3; + while (pos < len && !_S_is_dir_sep(_M_pathname[pos])) + ++pos; ++ if (pos == len) ++ { ++ _M_type = _Type::_Root_name; ++ return; ++ } + _M_add_root_name(pos); +- if (pos < len) // also got root directory +- _M_add_root_dir(pos); ++ _M_add_root_dir(pos); + } + else + { +@@ -367,6 +393,11 @@ + _M_add_root_dir(0); + } + } ++ else if (len == 1) // got root directory only ++ { ++ _M_type = _Type::_Root_dir; ++ return; ++ } + else // got root directory + _M_add_root_dir(0); + ++pos; +@@ -375,6 +406,11 @@ + else if (len > 1 && _M_pathname[1] == L':') + { + // got disk designator ++ if (len == 2) ++ { ++ _M_type = _Type::_Root_name; ++ return; ++ } + _M_add_root_name(2); + if (len > 2 && _S_is_dir_sep(_M_pathname[2])) + _M_add_root_dir(2); +@@ -381,6 +417,17 @@ + pos = 2; + } + #endif ++ else ++ { ++ size_t n = 1; ++ for (; n < _M_pathname.size() && !_S_is_dir_sep(_M_pathname[n]); ++n) ++ { } ++ if (n == _M_pathname.size()) ++ { ++ _M_type = _Type::_Filename; ++ return; ++ } ++ } + + size_t back = pos; + while (pos < len) +Index: libstdc++-v3/src/filesystem/Makefile.in +=================================================================== +--- a/src/libstdc++-v3/src/filesystem/Makefile.in (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/src/filesystem/Makefile.in (.../branches/gcc-8-branch) +@@ -249,6 +249,7 @@ + VTV_PCH_CXXFLAGS = @VTV_PCH_CXXFLAGS@ + WARN_FLAGS = @WARN_FLAGS@ + WERROR = @WERROR@ ++XMLCATALOG = @XMLCATALOG@ + XMLLINT = @XMLLINT@ + XSLTPROC = @XSLTPROC@ + XSL_STYLE_DIR = @XSL_STYLE_DIR@ +Index: libstdc++-v3/src/filesystem/std-dir.cc +=================================================================== +--- a/src/libstdc++-v3/src/filesystem/std-dir.cc (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/src/filesystem/std-dir.cc (.../branches/gcc-8-branch) +@@ -57,7 +57,13 @@ + { + if (const auto entp = _Dir_base::advance(skip_permission_denied, ec)) + { +- entry = fs::directory_entry{path / entp->d_name, get_file_type(*entp)}; ++ file_type type = file_type::none; ++#ifdef _GLIBCXX_HAVE_STRUCT_DIRENT_D_TYPE ++ // Even if the OS supports dirent::d_type the filesystem might not: ++ if (entp->d_type != DT_UNKNOWN) ++ type = get_file_type(*entp); ++#endif ++ entry = fs::directory_entry{path / entp->d_name, type}; + return true; + } + else if (!ec) +Index: libstdc++-v3/src/filesystem/std-path.cc +=================================================================== +--- a/src/libstdc++-v3/src/filesystem/std-path.cc (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/src/filesystem/std-path.cc (.../branches/gcc-8-branch) +@@ -539,6 +539,28 @@ + } + _M_type = _Type::_Multi; + ++ { ++ // Approximate count of components, to reserve space in _M_cmpts vector: ++ int count = 1; ++ bool saw_sep_last = _S_is_dir_sep(_M_pathname[0]); ++ bool saw_non_sep = !saw_sep_last; ++ for (value_type c : _M_pathname) ++ { ++ if (_S_is_dir_sep(c)) ++ saw_sep_last = true; ++ else if (saw_sep_last) ++ { ++ ++count; ++ saw_sep_last = false; ++ saw_non_sep = true; ++ } ++ } ++ if (saw_non_sep && saw_sep_last) ++ ++count; // empty filename after trailing slash ++ if (count > 1) ++ _M_cmpts.reserve(count); ++ } ++ + size_t pos = 0; + const size_t len = _M_pathname.size(); + +@@ -555,9 +577,13 @@ + pos = 3; + while (pos < len && !_S_is_dir_sep(_M_pathname[pos])) + ++pos; ++ if (pos == len) ++ { ++ _M_type = _Type::_Root_name; ++ return; ++ } + _M_add_root_name(pos); +- if (pos < len) // also got root directory +- _M_add_root_dir(pos); ++ _M_add_root_dir(pos); + } + else + { +@@ -584,6 +610,11 @@ + else if (len > 1 && _M_pathname[1] == L':') + { + // got disk designator ++ if (len == 2) ++ { ++ _M_type = _Type::_Root_name; ++ return; ++ } + _M_add_root_name(2); + if (len > 2 && _S_is_dir_sep(_M_pathname[2])) + _M_add_root_dir(2); +@@ -590,6 +621,17 @@ + pos = 2; + } + #endif ++ else ++ { ++ size_t n = 1; ++ for (; n < _M_pathname.size() && !_S_is_dir_sep(_M_pathname[n]); ++n) ++ { } ++ if (n == _M_pathname.size()) ++ { ++ _M_type = _Type::_Filename; ++ return; ++ } ++ } + + size_t back = pos; + while (pos < len) +Index: libstdc++-v3/src/filesystem/std-ops.cc +=================================================================== +--- a/src/libstdc++-v3/src/filesystem/std-ops.cc (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/src/filesystem/std-ops.cc (.../branches/gcc-8-branch) +@@ -77,6 +77,9 @@ + std::make_error_code(errc::not_supported))); + return ret; + #else ++ if (p.empty()) ++ _GLIBCXX_THROW_OR_ABORT(filesystem_error("cannot make absolute path", p, ++ make_error_code(std::errc::invalid_argument))); + return current_path() / p; + #endif + } +@@ -87,7 +90,7 @@ + path ret; + if (p.empty()) + { +- ec = make_error_code(std::errc::no_such_file_or_directory); ++ ec = make_error_code(std::errc::invalid_argument); + return ret; + } + if (p.is_absolute()) +Index: libstdc++-v3/src/Makefile.am +=================================================================== +--- a/src/libstdc++-v3/src/Makefile.am (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/src/Makefile.am (.../branches/gcc-8-branch) +@@ -321,7 +321,7 @@ + # Take care to fix all possibly-relative paths. + debugdir = ${glibcxx_builddir}/src/debug + stamp-debug: +- if test ! -d ${debugdir}; then \ ++ if test ! -d ${debugdir} || test ! -f ${debugdir}/Makefile ; then \ + mkdir -p ${debugdir}; \ + for d in $(SUBDIRS); do mkdir -p ${debugdir}/$$d; done; \ + (cd ${debugdir}; \ +Index: libstdc++-v3/src/c++98/Makefile.in +=================================================================== +--- a/src/libstdc++-v3/src/c++98/Makefile.in (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/src/c++98/Makefile.in (.../branches/gcc-8-branch) +@@ -239,6 +239,7 @@ + VTV_PCH_CXXFLAGS = @VTV_PCH_CXXFLAGS@ + WARN_FLAGS = @WARN_FLAGS@ + WERROR = @WERROR@ ++XMLCATALOG = @XMLCATALOG@ + XMLLINT = @XMLLINT@ + XSLTPROC = @XSLTPROC@ + XSL_STYLE_DIR = @XSL_STYLE_DIR@ +Index: libstdc++-v3/src/c++11/Makefile.in +=================================================================== +--- a/src/libstdc++-v3/src/c++11/Makefile.in (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/src/c++11/Makefile.in (.../branches/gcc-8-branch) +@@ -243,6 +243,7 @@ + VTV_PCH_CXXFLAGS = @VTV_PCH_CXXFLAGS@ + WARN_FLAGS = @WARN_FLAGS@ + WERROR = @WERROR@ ++XMLCATALOG = @XMLCATALOG@ + XMLLINT = @XMLLINT@ + XSLTPROC = @XSLTPROC@ + XSL_STYLE_DIR = @XSL_STYLE_DIR@ +Index: libstdc++-v3/configure.ac +=================================================================== +--- a/src/libstdc++-v3/configure.ac (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/configure.ac (.../branches/gcc-8-branch) +@@ -442,6 +442,7 @@ + AC_CHECK_PROG([DOT], dot, yes, no) + + # Check for docbook ++AC_CHECK_PROG([XMLCATALOG], xmlcatalog, yes, no) + AC_CHECK_PROG([XSLTPROC], xsltproc, yes, no) + AC_CHECK_PROG([XMLLINT], xmllint, yes, no) + GLIBCXX_CONFIGURE_DOCBOOK +Index: libstdc++-v3/doc/xml/faq.xml +=================================================================== +--- a/src/libstdc++-v3/doc/xml/faq.xml (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/doc/xml/faq.xml (.../branches/gcc-8-branch) +@@ -1001,21 +1001,31 @@ + <qandaentry xml:id="faq.memory_leaks"> + <question xml:id="q-memory_leaks"> + <para> +- <quote>Memory leaks</quote> in containers ++ <quote>Memory leaks</quote> in libstdc++ + </para> + </question> + <answer xml:id="a-memory_leaks"> +- <note> +- <para>This answer is old and probably no longer be relevant.</para> +- </note> + <para> +- A few people have reported that the standard containers appear ++ Since GCC 5.1.0, libstdc++ automatically allocates a pool ++ of a few dozen kilobytes on startup. This pool is used to ensure it's ++ possible to throw exceptions (such as <classname>bad_alloc</classname>) ++ even when <code>malloc</code> is unable to allocate any more memory. ++ With some versions of <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://valgrind.org/"><command>valgrind</command></link> ++ this pool will be shown as "still reachable" when the process exits, e.g. ++ <code>still reachable: 72,704 bytes in 1 blocks</code>. ++ This memory is not a leak, because it's still in use by libstdc++, ++ and the memory will be returned to the OS when the process exits. ++ Later versions of <command>valgrind</command> know how to free this ++ pool as the process exits, and so won't show any "still reachable" memory. ++ </para> ++ <para> ++ In the past, a few people reported that the standard containers appear + to leak memory when tested with memory checkers such as + <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://valgrind.org/"><command>valgrind</command></link>. + Under some (non-default) configurations the library's allocators keep + free memory in a +- pool for later reuse, rather than returning it to the OS. Although +- this memory is always reachable by the library and is never ++ pool for later reuse, rather than deallocating it with <code>delete</code> ++ Although this memory is always reachable by the library and is never + lost, memory debugging tools can report it as a leak. If you + want to test the library for memory leaks please read + <link linkend="debug.memory">Tips for memory leak hunting</link> +Index: libstdc++-v3/doc/xml/manual/allocator.xml +=================================================================== +--- a/src/libstdc++-v3/doc/xml/manual/allocator.xml (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/doc/xml/manual/allocator.xml (.../branches/gcc-8-branch) +@@ -502,12 +502,12 @@ + </biblioentry> + + <biblioentry> +- <title> +- <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 + +@@ -515,12 +515,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/intro.xml +=================================================================== +--- a/src/libstdc++-v3/doc/xml/manual/intro.xml (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/doc/xml/manual/intro.xml (.../branches/gcc-8-branch) +@@ -1105,6 +1105,14 @@ + ill-formed. + + ++ 2537: ++ Constructors for priority_queue taking allocators ++ should call make_heap ++ ++ ++ Call make_heap. ++ ++ + 2583: + There is no way to supply an allocator for basic_string(str, pos) + +@@ -1112,6 +1120,14 @@ + Add new constructor + + ++ 2586: ++ Wrong value category used in scoped_allocator_adaptor::construct() ++ ++ ++ Change internal helper for uses-allocator construction ++ to always check using const lvalue allocators. ++ ++ + 2684: + priority_queue lacking comparator typedef + +Index: libstdc++-v3/doc/xml/manual/shared_ptr.xml +=================================================================== +--- a/src/libstdc++-v3/doc/xml/manual/shared_ptr.xml (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/doc/xml/manual/shared_ptr.xml (.../branches/gcc-8-branch) +@@ -239,7 +239,7 @@ + + + +- _S_Atomic ++ _S_atomic + + + Selected when GCC supports a builtin atomic compare-and-swap operation +@@ -252,7 +252,7 @@ + + + +- _S_Mutex ++ _S_mutex + + + The _Sp_counted_base specialization for this policy contains a mutex, +@@ -263,7 +263,7 @@ + + + +- _S_Single ++ _S_single + + + This policy uses a non-reentrant add_ref_lock() with no locking. It is +Index: libstdc++-v3/doc/xml/manual/status_cxx2017.xml +=================================================================== +--- a/src/libstdc++-v3/doc/xml/manual/status_cxx2017.xml (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/doc/xml/manual/status_cxx2017.xml (.../branches/gcc-8-branch) +@@ -25,8 +25,8 @@ + + + +-The following table lists new library features that have been accepted into +-the C++17 working draft. The "Proposal" column provides a link to the ++The following table lists new library features that are included in ++the C++17 standard. The "Proposal" column provides a link to the + ISO C++ committee proposal that describes the feature, while the "Status" + column indicates the first version of GCC that contains an implementation of + this feature (if it has been implemented). +@@ -382,7 +382,7 @@ + + + 7.1 +- ++ __cpp_lib_raw_memory_algorithms >= 201606L + + + +@@ -788,7 +788,32 @@ + __cpp_lib_to_chars >= 201611 + + ++ ++ Homogeneous interface for variant, any and optional ++ ++ ++ P0032R3 ++ ++ ++ 7.1 ++ ++ __cpp_lib_any >= 201606 , ++ __cpp_lib_optional >= 201606 , ++ __cpp_lib_variant >= 201606 ++ ++ + ++ ++ Making Optional Greater Equal Again ++ ++ ++ P0307R2 ++ ++ ++ 7.1 ++ __cpp_lib_optional >= 201606 ++ ++ + + + +@@ -1049,7 +1074,7 @@ + + 30.10.2.1 [fs.conform.9945] + The behavior of the filesystem library implementation will depend on +- the target operating system. Some features will not be not supported ++ the target operating system. Some features will not be supported + on some targets. + + +Index: libstdc++-v3/doc/xml/manual/evolution.xml +=================================================================== +--- a/src/libstdc++-v3/doc/xml/manual/evolution.xml (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/doc/xml/manual/evolution.xml (.../branches/gcc-8-branch) +@@ -80,11 +80,12 @@ + + For GCC releases from 2.95 through the 3.1 series, defining + __USE_MALLOC on the gcc command line would change the +- default allocation strategy to instead use malloc and +- free. For the 3.2 and 3.3 release series the same ++ default allocation strategy to instead use malloc and ++ free. For the 3.2 and 3.3 release series the same + functionality was spelled _GLIBCXX_FORCE_NEW. From +- GCC 3.4 onwards the functionality is enabled by setting +- GLIBCXX_FORCE_NEW in the environment, see ++ GCC 3.4 onwards the default allocator uses new anyway, ++ but for the optional pooling allocators the functionality is enabled by ++ setting GLIBCXX_FORCE_NEW in the environment, see + the mt allocator chapter + for details. + +Index: libstdc++-v3/doc/xml/manual/using.xml +=================================================================== +--- a/src/libstdc++-v3/doc/xml/manual/using.xml (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/doc/xml/manual/using.xml (.../branches/gcc-8-branch) +@@ -1130,8 +1130,8 @@ + enabled for + std::vector<T, std::allocator<T>> + and only when std::allocator is derived from +- new_allocator +- or malloc_allocator. The annotations ++ new_allocator ++ or malloc_allocator. The annotations + must be present on all vector operations or none, so this macro must + be defined to the same value for all translation units that create, + destroy or modify vectors. +Index: libstdc++-v3/doc/xml/manual/debug.xml +=================================================================== +--- a/src/libstdc++-v3/doc/xml/manual/debug.xml (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/doc/xml/manual/debug.xml (.../branches/gcc-8-branch) +@@ -94,50 +94,35 @@ + +
Memory Leak Hunting + ++ ++ On many targets GCC supports AddressSanitizer, a fast memory error detector, ++ which is enabled by the option. ++ + + +- There are various third party memory tracing and debug utilities ++ There are also various third party memory tracing and debug utilities + that can be used to provide detailed memory allocation information + about C++ code. An exhaustive list of tools is not going to be + attempted, but includes mtrace, valgrind, +- mudflap, and the non-free commercial product +- purify. In addition, libcwd has a +- replacement for the global new and delete operators that can track +- memory allocation and deallocation and provide useful memory +- statistics. ++ mudflap (no longer supported since GCC 4.9.0), ElectricFence, ++ and the non-free commercial product purify. ++ In addition, libcwd, jemalloc and TCMalloc have replacements ++ for the global new and delete operators ++ that can track memory allocation and deallocation and provide useful ++ memory statistics. + + + +- Regardless of the memory debugging tool being used, there is one +- thing of great importance to keep in mind when debugging C++ code +- that uses new and delete: there are +- different kinds of allocation schemes that can be used by +- std::allocator. For implementation details, see the mt allocator documentation and +- look specifically for GLIBCXX_FORCE_NEW. +- +- +- +- In a nutshell, the optional mt_allocator +- is a high-performance pool allocator, and can +- give the mistaken impression that in a suspect executable, memory is +- being leaked, when in reality the memory "leak" is a pool being used +- by the library's allocator and is reclaimed after program +- termination. +- +- +- + For valgrind, there are some specific items to keep in mind. First + of all, use a version of valgrind that will work with current GNU + C++ tools: the first that can do this is valgrind 1.0.4, but later +- versions should work at least as well. Second of all, use a +- completely unoptimized build to avoid confusing valgrind. Third, use +- GLIBCXX_FORCE_NEW to keep extraneous pool allocation noise from +- cluttering debug information. ++ versions should work better. Second, using an unoptimized build ++ might avoid confusing valgrind. + + + +- Fourth, it may be necessary to force deallocation in other libraries +- as well, namely the "C" library. On linux, this can be accomplished ++ Third, it may be necessary to force deallocation in other libraries ++ as well, namely the "C" library. On GNU/Linux, this can be accomplished + with the appropriate use of the __cxa_atexit or + atexit functions. + +@@ -157,7 +142,6 @@ + } + + +- + or, using __cxa_atexit: + + +@@ -184,8 +168,41 @@ + valgrind -v --num-callers=20 --leak-check=yes --leak-resolution=high --show-reachable=yes a.out + + ++
++Non-memory leaks in Pool and MT allocators ++ ++ ++ There are different kinds of allocation schemes that can be used by ++ std::allocator. Prior to GCC 3.4.0 the default was to use ++ a pooling allocator, pool_allocator, ++ which is still available as the optional ++ __pool_alloc extension. ++ Another optional extension, __mt_alloc, ++ is a high-performance pool allocator. ++ ++ ++ ++ In a suspect executable these pooling allocators can give ++ the mistaken impression that memory is being leaked, ++ when in reality the memory "leak" is a pool being used ++ by the library's allocator and is reclaimed after program ++ termination. ++ ++ ++ ++ If you're using memory debugging tools on a program that uses ++ one of these pooling allocators, you can set the environment variable ++ GLIBCXX_FORCE_NEW to keep extraneous pool allocation ++ noise from cluttering debug information. ++ For more details, see the ++ mt allocator ++ documentation and look specifically for GLIBCXX_FORCE_NEW. ++ ++ +
+ ++
++ +
Data Race Hunting + + All synchronization primitives used in the library internals need to be +Index: libstdc++-v3/doc/xml/manual/documentation_hacking.xml +=================================================================== +--- a/src/libstdc++-v3/doc/xml/manual/documentation_hacking.xml (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/doc/xml/manual/documentation_hacking.xml (.../branches/gcc-8-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/Makefile.in +=================================================================== +--- a/src/libstdc++-v3/doc/Makefile.in (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/doc/Makefile.in (.../branches/gcc-8-branch) +@@ -205,6 +205,7 @@ + VTV_PCH_CXXFLAGS = @VTV_PCH_CXXFLAGS@ + WARN_FLAGS = @WARN_FLAGS@ + WERROR = @WERROR@ ++XMLCATALOG = @XMLCATALOG@ + + # Validate existing XML structure. + XMLLINT = xmllint +@@ -926,7 +927,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 + +@@ -978,6 +978,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/faq.html +=================================================================== +--- a/src/libstdc++-v3/doc/html/faq.html (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/doc/html/faq.html (.../branches/gcc-8-branch) +@@ -70,7 +70,7 @@ + Program crashes when using library code in a + dynamically-loaded library +
6.7. +- “Memory leaks” in containers ++ “Memory leaks” in libstdc++ +
6.8. + list::size() is O(n)! +
6.9. +@@ -593,7 +593,7 @@ + Program crashes when using library code in a + dynamically-loaded library +
6.7. +- “Memory leaks” in containers ++ “Memory leaks” in libstdc++ +
6.8. + list::size() is O(n)! +
6.9. +@@ -708,15 +708,27 @@ +     Link the executable:
+     g++ -fPIC -rdynamic -o foo ... -L. -lfoo -ldl
+     

6.7.

+- Memory leaks in containers +-

Note

This answer is old and probably no longer be relevant.

+- A few people have reported that the standard containers appear ++ Memory leaks in libstdc++ ++

++ Since GCC 5.1.0, libstdc++ automatically allocates a pool ++ of a few dozen kilobytes on startup. This pool is used to ensure it's ++ possible to throw exceptions (such as bad_alloc) ++ even when malloc is unable to allocate any more memory. ++ With some versions of valgrind ++ this pool will be shown as "still reachable" when the process exits, e.g. ++ still reachable: 72,704 bytes in 1 blocks. ++ This memory is not a leak, because it's still in use by libstdc++, ++ and the memory will be returned to the OS when the process exits. ++ Later versions of valgrind know how to free this ++ pool as the process exits, and so won't show any "still reachable" memory. ++

++ In the past, a few people reported that the standard containers appear + to leak memory when tested with memory checkers such as + valgrind. + Under some (non-default) configurations the library's allocators keep + free memory in a +- pool for later reuse, rather than returning it to the OS. Although +- this memory is always reachable by the library and is never ++ pool for later reuse, rather than deallocating it with delete ++ Although this memory is always reachable by the library and is never + lost, memory debugging tools can report it as a leak. If you + want to test the library for memory leaks please read + Tips for memory leak hunting +Index: libstdc++-v3/doc/html/index.html +=================================================================== +--- a/src/libstdc++-v3/doc/html/index.html (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/doc/html/index.html (.../branches/gcc-8-branch) +@@ -23,7 +23,7 @@ +


Table of Contents

The GNU C++ Library Manual
I. + Introduction + +-
1. Status
Implementation Status
C++ 1998/2003
Implementation Status
Implementation Specific Behavior
C++ 2011
Implementation Specific Behavior
C++ 2014
C++ 2017
Implementation Specific Behavior
C++ TR1
Implementation Specific Behavior
C++ TR 24733
C++ IS 29124
Implementation Specific Behavior
License
The Code: GPL
The Documentation: GPL, FDL
Bugs
Implementation Bugs
Standard Bugs
2. Setup
Prerequisites
Configure
Make
3. Using
Command Options
Headers
Header Files
Mixing Headers
The C Headers and namespace std
Precompiled Headers
Macros
Dual ABI
Troubleshooting
Namespaces
Available Namespaces
namespace std
Using Namespace Composition
Linking
Almost Nothing
Finding Dynamic or Shared Libraries
Experimental Library Extensions
Concurrency
Prerequisites
Thread Safety
Atomics
IO
Structure
Defaults
Future
Alternatives
Containers
Exceptions
Exception Safety
Exception Neutrality
Doing without
Compatibility
With C
With POSIX thread cancellation
Debugging Support
Using g++
Debug Versions of Library Binary Files
Memory Leak Hunting
Data Race Hunting
Using gdb
Tracking uncaught exceptions
Debug Mode
Compile Time Checking
Profile-based Performance Analysis
II. ++
1. Status
Implementation Status
C++ 1998/2003
Implementation Status
Implementation Specific Behavior
C++ 2011
Implementation Specific Behavior
C++ 2014
C++ 2017
Implementation Specific Behavior
C++ TR1
Implementation Specific Behavior
C++ TR 24733
C++ IS 29124
Implementation Specific Behavior
License
The Code: GPL
The Documentation: GPL, FDL
Bugs
Implementation Bugs
Standard Bugs
2. Setup
Prerequisites
Configure
Make
3. Using
Command Options
Headers
Header Files
Mixing Headers
The C Headers and namespace std
Precompiled Headers
Macros
Dual ABI
Troubleshooting
Namespaces
Available Namespaces
namespace std
Using Namespace Composition
Linking
Almost Nothing
Finding Dynamic or Shared Libraries
Experimental Library Extensions
Concurrency
Prerequisites
Thread Safety
Atomics
IO
Structure
Defaults
Future
Alternatives
Containers
Exceptions
Exception Safety
Exception Neutrality
Doing without
Compatibility
With C
With POSIX thread cancellation
Debugging Support
Using g++
Debug Versions of Library Binary Files
Memory Leak Hunting
Non-memory leaks in Pool and MT allocators
Data Race Hunting
Using gdb
Tracking uncaught exceptions
Debug Mode
Compile Time Checking
Profile-based Performance Analysis
II. + Standard Contents +
4. + Support +Index: libstdc++-v3/doc/html/manual/status.html +=================================================================== +--- a/src/libstdc++-v3/doc/html/manual/status.html (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/doc/html/manual/status.html (.../branches/gcc-8-branch) +@@ -526,8 +526,8 @@ + This section describes the C++17 and library TS support in mainline GCC SVN, + not in any particular release. +

+-The following table lists new library features that have been accepted into +-the C++17 working draft. The "Proposal" column provides a link to the ++The following table lists new library features that are included in ++the C++17 standard. The "Proposal" column provides a link to the + ISO C++ committee proposal that describes the feature, while the "Status" + column indicates the first version of GCC that contains an implementation of + this feature (if it has been implemented). +@@ -665,7 +665,7 @@ + + P0040R3 + +- 7.1 shared_ptr::weak_type ++ 7.1 __cpp_lib_raw_memory_algorithms >= 201606L shared_ptr::weak_type + + P0163R0 + +@@ -821,7 +821,19 @@ + P0067R5 + + 8 (only integral types supported) __has_include(<charconv>) +- __cpp_lib_to_chars >= 201611


++ __cpp_lib_to_chars >= 201611 Homogeneous interface for variant, any and optional ++ ++ P0032R3 ++ ++ 7.1 ++ __cpp_lib_any >= 201606 , ++ __cpp_lib_optional >= 201606 , ++ __cpp_lib_variant >= 201606 ++ Making Optional Greater Equal Again ++ ++ P0307R2 ++ ++ 7.1 __cpp_lib_optional >= 201606

+ Note 1: This feature is supported in GCC 7.1 and 7.2 but before GCC 7.3 the + __cpp_lib macro is not defined, and compilation will fail if the + header is included without using -std to enable C++17 support. +@@ -939,7 +951,7 @@ +

+ 30.10.2.1 [fs.conform.9945] + The behavior of the filesystem library implementation will depend on +- the target operating system. Some features will not be not supported ++ the target operating system. Some features will not be supported + on some targets. +

+ 30.10.5 [fs.filesystem.syn] +Index: libstdc++-v3/doc/html/manual/using.html +=================================================================== +--- a/src/libstdc++-v3/doc/html/manual/using.html (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/doc/html/manual/using.html (.../branches/gcc-8-branch) +@@ -2,7 +2,7 @@ + Chapter 3. Using

Chapter 3. Using

Command Options

++ Next


Chapter 3. Using

Command Options

+ The set of features available in the GNU C++ library is shaped by + several GCC + Command Options. Options that impact libstdc++ are +Index: libstdc++-v3/doc/html/manual/using_macros.html +=================================================================== +--- a/src/libstdc++-v3/doc/html/manual/using_macros.html (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/doc/html/manual/using_macros.html (.../branches/gcc-8-branch) +@@ -116,7 +116,8 @@ + enabled for + std::vector<T, std::allocator<T>> + and only when std::allocator is derived from +- the section called “Implementation”. The annotations ++ new_allocator ++ or malloc_allocator. The annotations + must be present on all vector operations or none, so this macro must + be defined to the same value for all translation units that create, + destroy or modify vectors. +Index: libstdc++-v3/doc/html/manual/intro.html +=================================================================== +--- a/src/libstdc++-v3/doc/html/manual/intro.html (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/doc/html/manual/intro.html (.../branches/gcc-8-branch) +@@ -5,4 +5,4 @@ + Prev The GNU C++ Library Manual Next


+\ No newline at end of file ++
+\ No newline at end of file +Index: libstdc++-v3/doc/html/manual/bugs.html +=================================================================== +--- a/src/libstdc++-v3/doc/html/manual/bugs.html (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/doc/html/manual/bugs.html (.../branches/gcc-8-branch) +@@ -492,10 +492,20 @@ + +

Avoid using dynamic_cast when it would be + ill-formed. ++

2537: ++ Constructors for priority_queue taking allocators ++ should call make_heap ++ ++

Call make_heap. +

2583: + There is no way to supply an allocator for basic_string(str, pos) + +

Add new constructor ++

2586: ++ Wrong value category used in scoped_allocator_adaptor::construct() ++ ++

Change internal helper for uses-allocator construction ++ to always check using const lvalue allocators. +

2684: + priority_queue lacking comparator typedef + +Index: libstdc++-v3/doc/html/manual/memory.html +=================================================================== +--- a/src/libstdc++-v3/doc/html/manual/memory.html (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/doc/html/manual/memory.html (.../branches/gcc-8-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 +- .

+@@ -554,7 +554,7 @@ + extra template parameter, even if it had a default value. The + available policies are: +

3.2

+

Symbol versioning introduced for shared library.

Removal of include backward/strstream.h.

Allocator changes. Change __malloc_alloc to malloc_allocator and __new_alloc to new_allocator.

For GCC releases from 2.95 through the 3.1 series, defining + __USE_MALLOC on the gcc command line would change the +- default allocation strategy to instead use malloc and +- free. For the 3.2 and 3.3 release series the same ++ default allocation strategy to instead use malloc and ++ free. For the 3.2 and 3.3 release series the same + functionality was spelled _GLIBCXX_FORCE_NEW. From +- GCC 3.4 onwards the functionality is enabled by setting +- GLIBCXX_FORCE_NEW in the environment, see ++ GCC 3.4 onwards the default allocator uses new anyway, ++ but for the optional pooling allocators the functionality is enabled by ++ setting GLIBCXX_FORCE_NEW in the environment, see + the mt allocator chapter + for details. +

Error handling in iostreams cleaned up, made consistent.

3.3

+Index: libstdc++-v3/doc/html/manual/documentation_hacking.html +=================================================================== +--- a/src/libstdc++-v3/doc/html/manual/documentation_hacking.html (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/doc/html/manual/documentation_hacking.html (.../branches/gcc-8-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/html/manual/debug.html +=================================================================== +--- a/src/libstdc++-v3/doc/html/manual/debug.html (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/doc/html/manual/debug.html (.../branches/gcc-8-branch) +@@ -53,40 +53,28 @@ + This quick and dirty approach is often sufficient for quick + debugging tasks, when you cannot or don't want to recompile your + application to use the debug mode.

Memory Leak Hunting

+- There are various third party memory tracing and debug utilities ++ On many targets GCC supports AddressSanitizer, a fast memory error detector, ++ which is enabled by the -fsanitize=address option. ++

++ There are also various third party memory tracing and debug utilities + that can be used to provide detailed memory allocation information + about C++ code. An exhaustive list of tools is not going to be + attempted, but includes mtrace, valgrind, +- mudflap, and the non-free commercial product +- purify. In addition, libcwd has a +- replacement for the global new and delete operators that can track +- memory allocation and deallocation and provide useful memory +- statistics. ++ mudflap (no longer supported since GCC 4.9.0), ElectricFence, ++ and the non-free commercial product purify. ++ In addition, libcwd, jemalloc and TCMalloc have replacements ++ for the global new and delete operators ++ that can track memory allocation and deallocation and provide useful ++ memory statistics. +

+- Regardless of the memory debugging tool being used, there is one +- thing of great importance to keep in mind when debugging C++ code +- that uses new and delete: there are +- different kinds of allocation schemes that can be used by +- std::allocator. For implementation details, see the mt allocator documentation and +- look specifically for GLIBCXX_FORCE_NEW. +-

+- In a nutshell, the optional mt_allocator +- is a high-performance pool allocator, and can +- give the mistaken impression that in a suspect executable, memory is +- being leaked, when in reality the memory "leak" is a pool being used +- by the library's allocator and is reclaimed after program +- termination. +-

+ For valgrind, there are some specific items to keep in mind. First + of all, use a version of valgrind that will work with current GNU + C++ tools: the first that can do this is valgrind 1.0.4, but later +- versions should work at least as well. Second of all, use a +- completely unoptimized build to avoid confusing valgrind. Third, use +- GLIBCXX_FORCE_NEW to keep extraneous pool allocation noise from +- cluttering debug information. ++ versions should work better. Second, using an unoptimized build ++ might avoid confusing valgrind. +

+- Fourth, it may be necessary to force deallocation in other libraries +- as well, namely the "C" library. On linux, this can be accomplished ++ Third, it may be necessary to force deallocation in other libraries ++ as well, namely the "C" library. On GNU/Linux, this can be accomplished + with the appropriate use of the __cxa_atexit or + atexit functions. +

+@@ -121,7 +109,29 @@
+   up the runtime environment, library, and test file, might be:
+ 

+    valgrind -v --num-callers=20 --leak-check=yes --leak-resolution=high --show-reachable=yes a.out
+-

Data Race Hunting

++

Non-memory leaks in Pool and MT allocators

++ There are different kinds of allocation schemes that can be used by ++ std::allocator. Prior to GCC 3.4.0 the default was to use ++ a pooling allocator, pool_allocator, ++ which is still available as the optional ++ __pool_alloc extension. ++ Another optional extension, __mt_alloc, ++ is a high-performance pool allocator. ++

++ In a suspect executable these pooling allocators can give ++ the mistaken impression that memory is being leaked, ++ when in reality the memory "leak" is a pool being used ++ by the library's allocator and is reclaimed after program ++ termination. ++

++ If you're using memory debugging tools on a program that uses ++ one of these pooling allocators, you can set the environment variable ++ GLIBCXX_FORCE_NEW to keep extraneous pool allocation ++ noise from cluttering debug information. ++ For more details, see the ++ mt allocator ++ documentation and look specifically for GLIBCXX_FORCE_NEW. ++

Data Race Hunting

+ All synchronization primitives used in the library internals need to be + understood by race detectors so that they do not produce false reports. +

+Index: libstdc++-v3/doc/html/manual/index.html +=================================================================== +--- a/src/libstdc++-v3/doc/html/manual/index.html (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/doc/html/manual/index.html (.../branches/gcc-8-branch) +@@ -4,7 +4,7 @@ +


Table of Contents

I. + Introduction + +-
1. Status
Implementation Status
C++ 1998/2003
Implementation Status
Implementation Specific Behavior
C++ 2011
Implementation Specific Behavior
C++ 2014
C++ 2017
Implementation Specific Behavior
C++ TR1
Implementation Specific Behavior
C++ TR 24733
C++ IS 29124
Implementation Specific Behavior
License
The Code: GPL
The Documentation: GPL, FDL
Bugs
Implementation Bugs
Standard Bugs
2. Setup
Prerequisites
Configure
Make
3. Using
Command Options
Headers
Header Files
Mixing Headers
The C Headers and namespace std
Precompiled Headers
Macros
Dual ABI
Troubleshooting
Namespaces
Available Namespaces
namespace std
Using Namespace Composition
Linking
Almost Nothing
Finding Dynamic or Shared Libraries
Experimental Library Extensions
Concurrency
Prerequisites
Thread Safety
Atomics
IO
Structure
Defaults
Future
Alternatives
Containers
Exceptions
Exception Safety
Exception Neutrality
Doing without
Compatibility
With C
With POSIX thread cancellation
Debugging Support
Using g++
Debug Versions of Library Binary Files
Memory Leak Hunting
Data Race Hunting
Using gdb
Tracking uncaught exceptions
Debug Mode
Compile Time Checking
Profile-based Performance Analysis
II. ++
1. Status
Implementation Status
C++ 1998/2003
Implementation Status
Implementation Specific Behavior
C++ 2011
Implementation Specific Behavior
C++ 2014
C++ 2017
Implementation Specific Behavior
C++ TR1
Implementation Specific Behavior
C++ TR 24733
C++ IS 29124
Implementation Specific Behavior
License
The Code: GPL
The Documentation: GPL, FDL
Bugs
Implementation Bugs
Standard Bugs
2. Setup
Prerequisites
Configure
Make
3. Using
Command Options
Headers
Header Files
Mixing Headers
The C Headers and namespace std
Precompiled Headers
Macros
Dual ABI
Troubleshooting
Namespaces
Available Namespaces
namespace std
Using Namespace Composition
Linking
Almost Nothing
Finding Dynamic or Shared Libraries
Experimental Library Extensions
Concurrency
Prerequisites
Thread Safety
Atomics
IO
Structure
Defaults
Future
Alternatives
Containers
Exceptions
Exception Safety
Exception Neutrality
Doing without
Compatibility
With C
With POSIX thread cancellation
Debugging Support
Using g++
Debug Versions of Library Binary Files
Memory Leak Hunting
Non-memory leaks in Pool and MT allocators
Data Race Hunting
Using gdb
Tracking uncaught exceptions
Debug Mode
Compile Time Checking
Profile-based Performance Analysis
II. + Standard Contents +
4. + Support +Index: libstdc++-v3/doc/Makefile.am +=================================================================== +--- a/src/libstdc++-v3/doc/Makefile.am (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/doc/Makefile.am (.../branches/gcc-8-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/po/Makefile.in +=================================================================== +--- a/src/libstdc++-v3/po/Makefile.in (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/po/Makefile.in (.../branches/gcc-8-branch) +@@ -205,6 +205,7 @@ + VTV_PCH_CXXFLAGS = @VTV_PCH_CXXFLAGS@ + WARN_FLAGS = @WARN_FLAGS@ + WERROR = @WERROR@ ++XMLCATALOG = @XMLCATALOG@ + XMLLINT = @XMLLINT@ + XSLTPROC = @XSLTPROC@ + XSL_STYLE_DIR = @XSL_STYLE_DIR@ +Index: libstdc++-v3/include/Makefile.in +=================================================================== +--- a/src/libstdc++-v3/include/Makefile.in (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/include/Makefile.in (.../branches/gcc-8-branch) +@@ -205,6 +205,7 @@ + VTV_PCH_CXXFLAGS = @VTV_PCH_CXXFLAGS@ + WARN_FLAGS = @WARN_FLAGS@ + WERROR = @WERROR@ ++XMLCATALOG = @XMLCATALOG@ + XMLLINT = @XMLLINT@ + XSLTPROC = @XSLTPROC@ + XSL_STYLE_DIR = @XSL_STYLE_DIR@ +Index: libstdc++-v3/include/std/optional +=================================================================== +--- a/src/libstdc++-v3/include/std/optional (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/include/std/optional (.../branches/gcc-8-branch) +@@ -51,7 +51,7 @@ + * @{ + */ + +-#define __cpp_lib_optional 201603 ++#define __cpp_lib_optional 201606L + + template + class optional; +@@ -1256,7 +1256,7 @@ + } + + template +- _Tp ++ constexpr _Tp + value_or(_Up&& __u) && + { + static_assert(is_move_constructible_v<_Tp>); +Index: libstdc++-v3/include/std/any +=================================================================== +--- a/src/libstdc++-v3/include/std/any (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/include/std/any (.../branches/gcc-8-branch) +@@ -66,7 +66,7 @@ + #endif + } + +-#define __cpp_lib_any 201603 ++#define __cpp_lib_any 201606L + + /** + * @brief A type-safe container of any type. +@@ -503,20 +503,34 @@ + } + // @} + ++ /// @cond undocumented + template + void* __any_caster(const any* __any) + { +- if constexpr (is_copy_constructible_v>) ++ // any_cast returns non-null if __any->type() == typeid(T) and ++ // typeid(T) ignores cv-qualifiers so remove them: ++ using _Up = remove_cv_t<_Tp>; ++ // The contained value has a decayed type, so if decay_t is not U, ++ // then it's not possible to have a contained value of type U: ++ if constexpr (!is_same_v, _Up>) ++ return nullptr; ++ // Only copy constructible types can be used for contained values: ++ else if constexpr (!is_copy_constructible_v<_Up>) ++ return nullptr; ++ // First try comparing function addresses, which works without RTTI ++ else if (__any->_M_manager == &any::_Manager<_Up>::_S_manage ++#if __cpp_rtti ++ || __any->type() == typeid(_Tp) ++#endif ++ ) + { +- if (__any->_M_manager == &any::_Manager>::_S_manage) +- { +- any::_Arg __arg; +- __any->_M_manager(any::_Op_access, __any, &__arg); +- return __arg._M_obj; +- } ++ any::_Arg __arg; ++ __any->_M_manager(any::_Op_access, __any, &__arg); ++ return __arg._M_obj; + } + return nullptr; + } ++ /// @endcond + + /** + * @brief Access the contained object. +@@ -532,8 +546,9 @@ + template + inline const _ValueType* any_cast(const any* __any) noexcept + { +- if (__any) +- return static_cast<_ValueType*>(__any_caster<_ValueType>(__any)); ++ if constexpr (is_object_v<_ValueType>) ++ if (__any) ++ return static_cast<_ValueType*>(__any_caster<_ValueType>(__any)); + return nullptr; + } + +@@ -540,8 +555,9 @@ + template + inline _ValueType* any_cast(any* __any) noexcept + { +- if (__any) +- return static_cast<_ValueType*>(__any_caster<_ValueType>(__any)); ++ if constexpr (is_object_v<_ValueType>) ++ if (__any) ++ return static_cast<_ValueType*>(__any_caster<_ValueType>(__any)); + return nullptr; + } + // @} +Index: libstdc++-v3/include/std/type_traits +=================================================================== +--- a/src/libstdc++-v3/include/std/type_traits (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/include/std/type_traits (.../branches/gcc-8-branch) +@@ -867,60 +867,18 @@ + : public __is_nt_destructible_safe<_Tp>::type + { }; + +- struct __do_is_default_constructible_impl +- { +- template +- static true_type __test(int); +- +- template +- static false_type __test(...); +- }; +- +- template +- struct __is_default_constructible_impl +- : public __do_is_default_constructible_impl +- { +- typedef decltype(__test<_Tp>(0)) type; +- }; +- +- template +- struct __is_default_constructible_atom +- : public __and_<__not_>, +- __is_default_constructible_impl<_Tp>> ++ /// is_constructible ++ template ++ struct is_constructible ++ : public __bool_constant<__is_constructible(_Tp, _Args...)> + { }; + +- template::value> +- struct __is_default_constructible_safe; +- +- // The following technique is a workaround for a current core language +- // restriction, which does not allow for array types to occur in +- // functional casts of the form T(). Complete arrays can be default- +- // constructed, if the element type is default-constructible, but +- // arrays with unknown bounds are not. +- template +- struct __is_default_constructible_safe<_Tp, true> +- : public __and_<__is_array_known_bounds<_Tp>, +- __is_default_constructible_atom::type>> +- { }; +- +- template +- struct __is_default_constructible_safe<_Tp, false> +- : public __is_default_constructible_atom<_Tp>::type +- { }; +- + /// is_default_constructible + template + struct is_default_constructible +- : public __is_default_constructible_safe<_Tp>::type ++ : public is_constructible<_Tp>::type + { }; + +- /// is_constructible +- template +- struct is_constructible +- : public __bool_constant<__is_constructible(_Tp, _Args...)> +- { }; +- + template::value> + struct __is_copy_constructible_impl; + +@@ -2024,9 +1982,14 @@ + struct __expanded_common_type_wrapper<__failure_type, _Args...> + { typedef __failure_type type; }; + ++ template<> ++ struct common_type<> ++ { }; ++ + template + struct common_type<_Tp> +- { typedef typename decay<_Tp>::type type; }; ++ : common_type<_Tp, _Tp> ++ { }; + + template + struct common_type<_Tp, _Up> +Index: libstdc++-v3/include/std/variant +=================================================================== +--- a/src/libstdc++-v3/include/std/variant (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/include/std/variant (.../branches/gcc-8-branch) +@@ -68,7 +68,7 @@ + } // namespace __variant + } // namespace __detail + +-#define __cpp_lib_variant 201603 ++#define __cpp_lib_variant 201606L + + template class tuple; + template class variant; +@@ -809,9 +809,8 @@ + { + using _Alternative = variant_alternative_t<__index, _Next>; + __element = __gen_vtable_impl< +- remove_reference_t< +- decltype(__element)>, tuple<_Variants...>, +- std::index_sequence<__indices..., __index>>::_S_apply(); ++ remove_reference_t, tuple<_Variants...>, ++ std::index_sequence<__indices..., __index>>::_S_apply(); + } + }; + +@@ -824,11 +823,11 @@ + using _Array_type = + _Multi_array<_Result_type (*)(_Visitor&&, _Variants...)>; + +- decltype(auto) +- static constexpr __visit_invoke(_Visitor&& __visitor, _Variants... __vars) ++ static constexpr decltype(auto) ++ __visit_invoke(_Visitor&& __visitor, _Variants... __vars) + { + return std::__invoke(std::forward<_Visitor>(__visitor), +- std::get<__indices>(std::forward<_Variants>(__vars))...); ++ __variant::__get<__indices>(std::forward<_Variants>(__vars))...); + } + + static constexpr auto +@@ -869,8 +868,8 @@ + } // namespace __detail + + template +- inline constexpr bool holds_alternative(const variant<_Types...>& __v) +- noexcept ++ constexpr bool ++ holds_alternative(const variant<_Types...>& __v) noexcept + { + static_assert(__detail::__variant::__exactly_once<_Tp, _Types...>, + "T should occur for exactly once in alternatives"); +@@ -878,7 +877,7 @@ + } + + template +- constexpr inline _Tp& get(variant<_Types...>& __v) ++ constexpr _Tp& get(variant<_Types...>& __v) + { + static_assert(__detail::__variant::__exactly_once<_Tp, _Types...>, + "T should occur for exactly once in alternatives"); +@@ -887,7 +886,7 @@ + } + + template +- constexpr inline _Tp&& get(variant<_Types...>&& __v) ++ constexpr _Tp&& get(variant<_Types...>&& __v) + { + static_assert(__detail::__variant::__exactly_once<_Tp, _Types...>, + "T should occur for exactly once in alternatives"); +@@ -897,7 +896,7 @@ + } + + template +- constexpr inline const _Tp& get(const variant<_Types...>& __v) ++ constexpr const _Tp& get(const variant<_Types...>& __v) + { + static_assert(__detail::__variant::__exactly_once<_Tp, _Types...>, + "T should occur for exactly once in alternatives"); +@@ -906,7 +905,7 @@ + } + + template +- constexpr inline const _Tp&& get(const variant<_Types...>&& __v) ++ constexpr const _Tp&& get(const variant<_Types...>&& __v) + { + static_assert(__detail::__variant::__exactly_once<_Tp, _Types...>, + "T should occur for exactly once in alternatives"); +@@ -916,8 +915,7 @@ + } + + template +- constexpr inline +- add_pointer_t>> ++ constexpr add_pointer_t>> + get_if(variant<_Types...>* __ptr) noexcept + { + using _Alternative_type = variant_alternative_t<_Np, variant<_Types...>>; +@@ -930,7 +928,7 @@ + } + + template +- constexpr inline ++ constexpr + add_pointer_t>> + get_if(const variant<_Types...>* __ptr) noexcept + { +@@ -944,7 +942,7 @@ + } + + template +- constexpr inline add_pointer_t<_Tp> ++ constexpr add_pointer_t<_Tp> + get_if(variant<_Types...>* __ptr) noexcept + { + static_assert(__detail::__variant::__exactly_once<_Tp, _Types...>, +@@ -955,7 +953,7 @@ + } + + template +- constexpr inline add_pointer_t ++ constexpr add_pointer_t + get_if(const variant<_Types...>* __ptr) + noexcept + { +@@ -1076,6 +1074,17 @@ + + using _Traits = __detail::__variant::_Traits<_Types...>; + ++ template ++ struct __is_in_place_tag : false_type { }; ++ template ++ struct __is_in_place_tag> : true_type { }; ++ template ++ struct __is_in_place_tag> : true_type { }; ++ ++ template ++ static constexpr bool __not_in_place_tag ++ = !__is_in_place_tag>::value; ++ + public: + variant() = default; + variant(const variant& __rhs) = default; +@@ -1087,6 +1096,7 @@ + template, variant>>, + typename = enable_if_t<(sizeof...(_Types)>0)>, ++ typename = enable_if_t<__not_in_place_tag<_Tp>>, + typename = enable_if_t<__exactly_once<__accepted_type<_Tp&&>> + && is_constructible_v<__accepted_type<_Tp&&>, _Tp&&>>> + constexpr +@@ -1275,7 +1285,7 @@ + { &__detail::__variant::__erased_##__NAME< \ + const variant&, __indices>... }; \ + template \ +- constexpr inline bool \ ++ constexpr bool \ + _M_##__NAME(const variant& __rhs, \ + std::index_sequence<__indices...>) const \ + { \ +Index: libstdc++-v3/include/std/ostream +=================================================================== +--- a/src/libstdc++-v3/include/std/ostream (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/include/std/ostream (.../branches/gcc-8-branch) +@@ -444,6 +444,8 @@ + explicit + sentry(basic_ostream<_CharT, _Traits>& __os); + ++#pragma GCC diagnostic push ++#pragma GCC diagnostic ignored "-Wdeprecated-declarations" + /** + * @brief Possibly flushes the stream. + * +@@ -461,6 +463,7 @@ + _M_os.setstate(ios_base::badbit); + } + } ++#pragma GCC diagnostic pop + + /** + * @brief Quick status checking. +Index: libstdc++-v3/include/experimental/any +=================================================================== +--- a/src/libstdc++-v3/include/experimental/any (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/include/experimental/any (.../branches/gcc-8-branch) +@@ -300,7 +300,8 @@ + _Storage _M_storage; + + template +- friend void* __any_caster(const any* __any); ++ friend enable_if_t::value, void*> ++ __any_caster(const any* __any); + + // Manage in-place contained object. + template +@@ -410,19 +411,45 @@ + } + // @} + ++ /// @cond undocumented + template +- void* __any_caster(const any* __any) ++ enable_if_t::value, void*> ++ __any_caster(const any* __any) + { +- struct _None { }; +- using _Up = decay_t<_Tp>; +- using _Vp = conditional_t::value, _Up, _None>; +- if (__any->_M_manager != &any::_Manager<_Vp>::_S_manage) +- return nullptr; +- any::_Arg __arg; +- __any->_M_manager(any::_Op_access, __any, &__arg); +- return __arg._M_obj; ++ // any_cast returns non-null if __any->type() == typeid(T) and ++ // typeid(T) ignores cv-qualifiers so remove them: ++ using _Up = remove_cv_t<_Tp>; ++ // The contained value has a decayed type, so if decay_t is not U, ++ // then it's not possible to have a contained value of type U. ++ using __does_not_decay = is_same, _Up>; ++ // Only copy constructible types can be used for contained values. ++ using __is_copyable = is_copy_constructible<_Up>; ++ // If the type _Tp could never be stored in an any we don't want to ++ // instantiate _Manager<_Tp>, so use _Manager instead, which ++ // is explicitly specialized and has a no-op _S_manage function. ++ using _Vp = conditional_t<__and_<__does_not_decay, __is_copyable>::value, ++ _Up, any::_Op>; ++ // First try comparing function addresses, which works without RTTI ++ if (__any->_M_manager == &any::_Manager<_Vp>::_S_manage ++#if __cpp_rtti ++ || __any->type() == typeid(_Tp) ++#endif ++ ) ++ { ++ any::_Arg __arg; ++ __any->_M_manager(any::_Op_access, __any, &__arg); ++ return __arg._M_obj; ++ } ++ return nullptr; + } + ++ // This overload exists so that std::any_cast(a) is well-formed. ++ template ++ enable_if_t::value, _Tp*> ++ __any_caster(const any*) noexcept ++ { return nullptr; } ++ /// @endcond ++ + /** + * @brief Access the contained object. + * +@@ -517,6 +544,14 @@ + } + } + ++ // Dummy specialization used by __any_caster. ++ template<> ++ struct any::_Manager_internal ++ { ++ static void ++ _S_manage(_Op, const any*, _Arg*) { } ++ }; ++ + // @} group any + } // namespace fundamentals_v1 + } // namespace experimental +Index: libstdc++-v3/include/experimental/bits/fs_path.h +=================================================================== +--- a/src/libstdc++-v3/include/experimental/bits/fs_path.h (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/include/experimental/bits/fs_path.h (.../branches/gcc-8-branch) +@@ -120,11 +120,12 @@ + : decltype(__is_path_src(std::declval<_Source>(), 0)) + { }; + +- template ++ template::type, ++ typename _Tp1_noptr = typename remove_pointer<_Tp1>::type> + using _Path = typename +- std::enable_if<__and_<__not_::type, +- path>>, +- __not_>, ++ std::enable_if<__and_<__not_>, ++ __not_>, + __constructible_from<_Tp1, _Tp2>>::value, + path>::type; + +@@ -185,7 +186,8 @@ + path(path&& __p) noexcept + : _M_pathname(std::move(__p._M_pathname)), _M_type(__p._M_type) + { +- _M_split_cmpts(); ++ if (_M_type == _Type::_Multi) ++ _M_split_cmpts(); + __p.clear(); + } + +@@ -459,7 +461,7 @@ + return _S_convert_loc(__tmp.data(), __tmp.data()+__tmp.size(), __loc); + } + +- bool _S_is_dir_sep(value_type __ch) ++ static bool _S_is_dir_sep(value_type __ch) + { + #ifdef _GLIBCXX_FILESYSTEM_IS_WINDOWS + return __ch == L'/' || __ch == preferred_separator; +Index: libstdc++-v3/include/experimental/type_traits +=================================================================== +--- a/src/libstdc++-v3/include/experimental/type_traits (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/include/experimental/type_traits (.../branches/gcc-8-branch) +@@ -251,12 +251,12 @@ + template class _Op, typename... _Args> + using detected_or_t = typename detected_or<_Default, _Op, _Args...>::type; + +-template class _Op, typename... _Args> +- using is_detected_exact = is_same>; ++template class _Op, typename... _Args> ++ using is_detected_exact = is_same<_Expected, detected_t<_Op, _Args...>>; + +-template class _Op, typename... _Args> ++template class _Op, typename... _Args> + constexpr bool is_detected_exact_v +- = is_detected_exact::value; ++ = is_detected_exact<_Expected, _Op, _Args...>::value; + + template class _Op, typename... _Args> + using is_detected_convertible +Index: libstdc++-v3/include/bits/hashtable.h +=================================================================== +--- a/src/libstdc++-v3/include/bits/hashtable.h (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/include/bits/hashtable.h (.../branches/gcc-8-branch) +@@ -192,11 +192,6 @@ + static_assert(is_same{}, + "unordered container must have the same value_type as its allocator"); + #endif +- static_assert(__is_invocable{}, +- "hash function must be invocable with an argument of key type"); +- static_assert(__is_invocable{}, +- "key equality predicate must be invocable with two arguments of " +- "key type"); + + using __traits_type = _Traits; + using __hash_cached = typename __traits_type::__hash_cached; +Index: libstdc++-v3/include/bits/stl_algobase.h +=================================================================== +--- a/src/libstdc++-v3/include/bits/stl_algobase.h (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/include/bits/stl_algobase.h (.../branches/gcc-8-branch) +@@ -998,27 +998,27 @@ + // Precondition: __n > 0. + inline _GLIBCXX_CONSTEXPR int + __lg(int __n) +- { return sizeof(int) * __CHAR_BIT__ - 1 - __builtin_clz(__n); } ++ { return (int)sizeof(int) * __CHAR_BIT__ - 1 - __builtin_clz(__n); } + + inline _GLIBCXX_CONSTEXPR unsigned + __lg(unsigned __n) +- { return sizeof(int) * __CHAR_BIT__ - 1 - __builtin_clz(__n); } ++ { return (int)sizeof(int) * __CHAR_BIT__ - 1 - __builtin_clz(__n); } + + inline _GLIBCXX_CONSTEXPR long + __lg(long __n) +- { return sizeof(long) * __CHAR_BIT__ - 1 - __builtin_clzl(__n); } ++ { return (int)sizeof(long) * __CHAR_BIT__ - 1 - __builtin_clzl(__n); } + + inline _GLIBCXX_CONSTEXPR unsigned long + __lg(unsigned long __n) +- { return sizeof(long) * __CHAR_BIT__ - 1 - __builtin_clzl(__n); } ++ { return (int)sizeof(long) * __CHAR_BIT__ - 1 - __builtin_clzl(__n); } + + inline _GLIBCXX_CONSTEXPR long long + __lg(long long __n) +- { return sizeof(long long) * __CHAR_BIT__ - 1 - __builtin_clzll(__n); } ++ { return (int)sizeof(long long) * __CHAR_BIT__ - 1 - __builtin_clzll(__n); } + + inline _GLIBCXX_CONSTEXPR unsigned long long + __lg(unsigned long long __n) +- { return sizeof(long long) * __CHAR_BIT__ - 1 - __builtin_clzll(__n); } ++ { return (int)sizeof(long long) * __CHAR_BIT__ - 1 - __builtin_clzll(__n); } + + _GLIBCXX_BEGIN_NAMESPACE_ALGO + +Index: libstdc++-v3/include/bits/stl_queue.h +=================================================================== +--- a/src/libstdc++-v3/include/bits/stl_queue.h (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/include/bits/stl_queue.h (.../branches/gcc-8-branch) +@@ -504,14 +504,18 @@ + priority_queue(const _Compare& __x, const _Alloc& __a) + : c(__a), comp(__x) { } + ++ // _GLIBCXX_RESOLVE_LIB_DEFECTS ++ // 2537. Constructors [...] taking allocators should call make_heap + template> + priority_queue(const _Compare& __x, const _Sequence& __c, + const _Alloc& __a) +- : c(__c, __a), comp(__x) { } ++ : c(__c, __a), comp(__x) ++ { std::make_heap(c.begin(), c.end(), comp); } + + template> + priority_queue(const _Compare& __x, _Sequence&& __c, const _Alloc& __a) +- : c(std::move(__c), __a), comp(__x) { } ++ : c(std::move(__c), __a), comp(__x) ++ { std::make_heap(c.begin(), c.end(), comp); } + + template> + priority_queue(const priority_queue& __q, const _Alloc& __a) +Index: libstdc++-v3/include/bits/hashtable_policy.h +=================================================================== +--- a/src/libstdc++-v3/include/bits/hashtable_policy.h (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/include/bits/hashtable_policy.h (.../branches/gcc-8-branch) +@@ -1296,7 +1296,11 @@ + + __hash_code + _M_hash_code(const _Key& __k) const +- { return _M_h1()(__k); } ++ { ++ static_assert(__is_invocable{}, ++ "hash function must be invocable with an argument of key type"); ++ return _M_h1()(__k); ++ } + + std::size_t + _M_bucket_index(const _Key&, __hash_code __c, std::size_t __n) const +@@ -1384,7 +1388,11 @@ + + __hash_code + _M_hash_code(const _Key& __k) const +- { return _M_h1()(__k); } ++ { ++ static_assert(__is_invocable{}, ++ "hash function must be invocable with an argument of key type"); ++ return _M_h1()(__k); ++ } + + std::size_t + _M_bucket_index(const _Key&, __hash_code __c, +@@ -1830,6 +1838,9 @@ + bool + _M_equals(const _Key& __k, __hash_code __c, __node_type* __n) const + { ++ static_assert(__is_invocable{}, ++ "key equality predicate must be invocable with two arguments of " ++ "key type"); + return _EqualHelper::_S_equals(_M_eq(), this->_M_extract(), + __k, __c, __n); + } +Index: libstdc++-v3/include/bits/fs_path.h +=================================================================== +--- a/src/libstdc++-v3/include/bits/fs_path.h (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/include/bits/fs_path.h (.../branches/gcc-8-branch) +@@ -107,7 +107,7 @@ + template + using _Path = typename + std::enable_if<__and_<__not_, path>>, +- __not_>, ++ __not_>>, + __constructible_from<_Tp1, _Tp2>>::value, + path>::type; + +@@ -168,7 +168,8 @@ + path(path&& __p) noexcept + : _M_pathname(std::move(__p._M_pathname)), _M_type(__p._M_type) + { +- _M_split_cmpts(); ++ if (_M_type == _Type::_Multi) ++ _M_split_cmpts(); + __p.clear(); + } + +@@ -478,7 +479,7 @@ + static basic_string<_CharT, _Traits, _Allocator> + _S_str_convert(const string_type&, const _Allocator& __a); + +- bool _S_is_dir_sep(value_type __ch) ++ static bool _S_is_dir_sep(value_type __ch) + { + #ifdef _GLIBCXX_FILESYSTEM_IS_WINDOWS + return __ch == L'/' || __ch == preferred_separator; +@@ -789,6 +790,9 @@ + inline path& + path::operator=(path&& __p) noexcept + { ++ if (&__p == this) ++ return *this; ++ + _M_pathname = std::move(__p._M_pathname); + _M_cmpts = std::move(__p._M_cmpts); + _M_type = __p._M_type; +Index: libstdc++-v3/include/bits/unique_ptr.h +=================================================================== +--- a/src/libstdc++-v3/include/bits/unique_ptr.h (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/include/bits/unique_ptr.h (.../branches/gcc-8-branch) +@@ -174,14 +174,9 @@ + // unique_ptr + template + using __safe_conversion_up = __and_< +- is_convertible::pointer, pointer>, +- __not_>, +- __or_<__and_, +- is_same>, +- __and_<__not_>, +- is_convertible<_Ep, deleter_type>> +- > +- >; ++ is_convertible::pointer, pointer>, ++ __not_> ++ >; + + // Constructors. + +@@ -425,16 +420,14 @@ + // helper template for detecting a safe conversion from another + // unique_ptr + template, +- typename _Up_element_type = typename _Up_up::element_type> ++ typename _UPtr = unique_ptr<_Up, _Ep>, ++ typename _UP_pointer = typename _UPtr::pointer, ++ typename _UP_element_type = typename _UPtr::element_type> + using __safe_conversion_up = __and_< + is_array<_Up>, + is_same, +- is_same, +- is_convertible<_Up_element_type(*)[], element_type(*)[]>, +- __or_<__and_, is_same>, +- __and_<__not_>, +- is_convertible<_Ep, deleter_type>>> ++ is_same<_UP_pointer, _UP_element_type*>, ++ is_convertible<_UP_element_type(*)[], element_type(*)[]> + >; + + // helper template for detecting a safe conversion from a raw pointer +@@ -519,8 +512,11 @@ + typename = _DeleterConstraint<_Up>> + constexpr unique_ptr(nullptr_t) noexcept : _M_t() { } + +- template>> ++ template, ++ typename conditional::value, ++ is_same<_Ep, _Dp>, ++ is_convertible<_Ep, _Dp>>::type>> + unique_ptr(unique_ptr<_Up, _Ep>&& __u) noexcept + : _M_t(__u.release(), std::forward<_Ep>(__u.get_deleter())) + { } +Index: libstdc++-v3/include/bits/stl_vector.h +=================================================================== +--- a/src/libstdc++-v3/include/bits/stl_vector.h (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/include/bits/stl_vector.h (.../branches/gcc-8-branch) +@@ -1600,11 +1600,11 @@ + { _Alloc_traits::destroy(_M_this->_M_impl, _M_ptr()); } + + value_type& +- _M_val() { return *reinterpret_cast<_Tp*>(&__buf); } ++ _M_val() { return *_M_ptr(); } + + private: +- pointer +- _M_ptr() { return pointer_traits::pointer_to(_M_val()); } ++ _Tp* ++ _M_ptr() { return reinterpret_cast<_Tp*>(&__buf); } + + vector* _M_this; + typename aligned_storage::type __buf; +Index: libstdc++-v3/include/bits/stl_uninitialized.h +=================================================================== +--- a/src/libstdc++-v3/include/bits/stl_uninitialized.h (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/include/bits/stl_uninitialized.h (.../branches/gcc-8-branch) +@@ -826,7 +826,9 @@ + + #endif + +-#if __cplusplus > 201402L ++#if __cplusplus >= 201703L ++# define __cpp_lib_raw_memory_algorithms 201606L ++ + template + inline void + uninitialized_default_construct(_ForwardIterator __first, +@@ -877,7 +879,7 @@ + __count, __result); + return {__res.first.base(), __res.second}; + } +-#endif ++#endif // C++17 + + _GLIBCXX_END_NAMESPACE_VERSION + } // namespace +Index: libstdc++-v3/include/bits/char_traits.h +=================================================================== +--- a/src/libstdc++-v3/include/bits/char_traits.h (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/include/bits/char_traits.h (.../branches/gcc-8-branch) +@@ -248,7 +248,7 @@ + __constant_char_array_p(const _CharT* __a, size_t __n) + { + size_t __i = 0; +- while (__builtin_constant_p(__a[__i]) && __i < __n) ++ while (__i < __n && __builtin_constant_p(__a[__i])) + __i++; + return __i == __n; + } +Index: libstdc++-v3/include/bits/forward_list.tcc +=================================================================== +--- a/src/libstdc++-v3/include/bits/forward_list.tcc (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/include/bits/forward_list.tcc (.../branches/gcc-8-branch) +@@ -375,7 +375,7 @@ + auto __iy = __ly.cbegin(); + while (__ix != __lx.cend() && __iy != __ly.cend()) + { +- if (*__ix != *__iy) ++ if (!(*__ix == *__iy)) + return false; + ++__ix; + ++__iy; +@@ -445,9 +445,9 @@ + __p = static_cast<_Node*>(__p->_M_next); + --__psize; + } +- else if (__comp(*__p->_M_valptr(), *__q->_M_valptr())) ++ else if (!__comp(*__q->_M_valptr(), *__p->_M_valptr())) + { +- // First node of p is lower; e must come from p. ++ // First node of q is not lower; e must come from p. + __e = __p; + __p = static_cast<_Node*>(__p->_M_next); + --__psize; +Index: libstdc++-v3/include/bits/memoryfwd.h +=================================================================== +--- a/src/libstdc++-v3/include/bits/memoryfwd.h (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/include/bits/memoryfwd.h (.../branches/gcc-8-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/bits/uses_allocator.h +=================================================================== +--- a/src/libstdc++-v3/include/bits/uses_allocator.h (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/include/bits/uses_allocator.h (.../branches/gcc-8-branch) +@@ -83,14 +83,17 @@ + template + struct __uses_alloc + : conditional< +- is_constructible<_Tp, allocator_arg_t, _Alloc, _Args...>::value, ++ is_constructible<_Tp, allocator_arg_t, const _Alloc&, _Args...>::value, + __uses_alloc1<_Alloc>, + __uses_alloc2<_Alloc>>::type + { ++ // _GLIBCXX_RESOLVE_LIB_DEFECTS ++ // 2586. Wrong value category used in scoped_allocator_adaptor::construct + static_assert(__or_< +- is_constructible<_Tp, allocator_arg_t, _Alloc, _Args...>, +- is_constructible<_Tp, _Args..., _Alloc>>::value, "construction with" +- " an allocator must be possible if uses_allocator is true"); ++ is_constructible<_Tp, allocator_arg_t, const _Alloc&, _Args...>, ++ is_constructible<_Tp, _Args..., const _Alloc&>>::value, ++ "construction with an allocator must be possible" ++ " if uses_allocator is true"); + }; + + template +Index: libstdc++-v3/include/bits/random.h +=================================================================== +--- a/src/libstdc++-v3/include/bits/random.h (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/include/bits/random.h (.../branches/gcc-8-branch) +@@ -5982,9 +5982,9 @@ + size_t size() const noexcept + { return _M_v.size(); } + +- template ++ template + void +- param(OutputIterator __dest) const ++ param(_OutputIterator __dest) const + { std::copy(_M_v.begin(), _M_v.end(), __dest); } + + // no copy functions +Index: libstdc++-v3/include/bits/stl_tree.h +=================================================================== +--- a/src/libstdc++-v3/include/bits/stl_tree.h (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/include/bits/stl_tree.h (.../branches/gcc-8-branch) +@@ -448,17 +448,6 @@ + + typedef __gnu_cxx::__alloc_traits<_Node_allocator> _Alloc_traits; + +-#if __cplusplus >= 201103L +- static_assert(__is_invocable<_Compare&, const _Key&, const _Key&>{}, +- "comparison object must be invocable with two arguments of key type"); +-# if __cplusplus >= 201703L +- // _GLIBCXX_RESOLVE_LIB_DEFECTS +- // 2542. Missing const requirements for associative containers +- static_assert(is_invocable_v, +- "comparison object must be invocable as const"); +-# endif // C++17 +-#endif // C++11 +- + protected: + typedef _Rb_tree_node_base* _Base_ptr; + typedef const _Rb_tree_node_base* _Const_Base_ptr; +@@ -773,8 +762,26 @@ + + static const _Key& + _S_key(_Const_Link_type __x) +- { return _KeyOfValue()(_S_value(__x)); } ++ { ++#if __cplusplus >= 201103L ++ // If we're asking for the key we're presumably using the comparison ++ // object, and so this is a good place to sanity check it. ++ static_assert(__is_invocable<_Compare&, const _Key&, const _Key&>{}, ++ "comparison object must be invocable " ++ "with two arguments of key type"); ++# if __cplusplus >= 201703L ++ // _GLIBCXX_RESOLVE_LIB_DEFECTS ++ // 2542. Missing const requirements for associative containers ++ if constexpr (__is_invocable<_Compare&, const _Key&, const _Key&>{}) ++ static_assert( ++ is_invocable_v, ++ "comparison object must be invocable as const"); ++# endif // C++17 ++#endif // C++11 + ++ return _KeyOfValue()(*__x->_M_valptr()); ++ } ++ + static _Link_type + _S_left(_Base_ptr __x) _GLIBCXX_NOEXCEPT + { return static_cast<_Link_type>(__x->_M_left); } +@@ -797,7 +804,7 @@ + + static const _Key& + _S_key(_Const_Base_ptr __x) +- { return _KeyOfValue()(_S_value(__x)); } ++ { return _S_key(static_cast<_Const_Link_type>(__x)); } + + static _Base_ptr + _S_minimum(_Base_ptr __x) _GLIBCXX_NOEXCEPT +Index: libstdc++-v3/include/tr2/dynamic_bitset.tcc +=================================================================== +--- a/src/libstdc++-v3/include/tr2/dynamic_bitset.tcc (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/include/tr2/dynamic_bitset.tcc (.../branches/gcc-8-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_8_3_0_release) ++++ b/src/libstdc++-v3/include/tr2/dynamic_bitset (.../branches/gcc-8-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(); } + + /** +@@ -733,6 +716,8 @@ + this->_M_unchecked_set(this->_M_Nb, __bit); + } + ++ // XXX why is there no pop_back() member in the proposal? ++ + /** + * @brief Append a block. + */ +@@ -769,36 +754,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; +@@ -812,7 +797,7 @@ + * + * These should be self-explanatory. + */ +- dynamic_bitset<_WordT, _Alloc>& ++ dynamic_bitset& + operator<<=(size_type __pos) + { + if (__builtin_expect(__pos < this->_M_Nb, 1)) +@@ -825,7 +810,7 @@ + return *this; + } + +- dynamic_bitset<_WordT, _Alloc>& ++ dynamic_bitset& + operator>>=(size_type __pos) + { + if (__builtin_expect(__pos < this->_M_Nb, 1)) +@@ -843,7 +828,7 @@ + /** + * @brief Sets every bit to true. + */ +- dynamic_bitset<_WordT, _Alloc>& ++ dynamic_bitset& + set() + { + this->_M_do_set(); +@@ -857,7 +842,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) +@@ -868,7 +853,7 @@ + /** + * @brief Sets every bit to false. + */ +- dynamic_bitset<_WordT, _Alloc>& ++ dynamic_bitset& + reset() + { + this->_M_do_reset(); +@@ -882,7 +867,7 @@ + * + * Same as writing @c set(__pos, false). + */ +- dynamic_bitset<_WordT, _Alloc>& ++ dynamic_bitset& + reset(size_type __pos) + { + if (__pos >= _M_Nb) +@@ -893,7 +878,7 @@ + /** + * @brief Toggles every bit to its opposite value. + */ +- dynamic_bitset<_WordT, _Alloc>& ++ dynamic_bitset& + flip() + { + this->_M_do_flip(); +@@ -906,7 +891,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) +@@ -915,7 +900,7 @@ + } + + /// See the no-argument flip(). +- dynamic_bitset<_WordT, _Alloc> ++ dynamic_bitset + operator~() const + { return dynamic_bitset<_WordT, _Alloc>(*this).flip(); } + +@@ -977,19 +962,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 +@@ -1064,13 +1053,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; } + //@} + + /** +@@ -1101,14 +1090,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++/Makefile.in +=================================================================== +--- a/src/libstdc++-v3/libsupc++/Makefile.in (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/libsupc++/Makefile.in (.../branches/gcc-8-branch) +@@ -278,6 +278,7 @@ + VTV_PCH_CXXFLAGS = @VTV_PCH_CXXFLAGS@ + WARN_FLAGS = @WARN_FLAGS@ + WERROR = @WERROR@ ++XMLCATALOG = @XMLCATALOG@ + XMLLINT = @XMLLINT@ + XSLTPROC = @XSLTPROC@ + XSL_STYLE_DIR = @XSL_STYLE_DIR@ +Index: libstdc++-v3/libsupc++/guard_error.cc +=================================================================== +--- a/src/libstdc++-v3/libsupc++/guard_error.cc (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/libsupc++/guard_error.cc (.../branches/gcc-8-branch) +@@ -26,6 +26,6 @@ + + namespace __gnu_cxx + { +- recursive_init_error::~recursive_init_error() throw() { } ++ recursive_init_error::recursive_init_error() noexcept { } ++ recursive_init_error::~recursive_init_error() noexcept { } + } +- +Index: libstdc++-v3/libsupc++/new_opa.cc +=================================================================== +--- a/src/libstdc++-v3/libsupc++/new_opa.cc (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/libsupc++/new_opa.cc (.../branches/gcc-8-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++/hash_bytes.cc +=================================================================== +--- a/src/libstdc++-v3/libsupc++/hash_bytes.cc (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/libsupc++/hash_bytes.cc (.../branches/gcc-8-branch) +@@ -139,7 +139,7 @@ + + // Remove the bytes not divisible by the sizeof(size_t). This + // allows the main loop to process the data as 64-bit integers. +- const int len_aligned = len & ~0x7; ++ const size_t len_aligned = len & ~(size_t)0x7; + const char* const end = buf + len_aligned; + size_t hash = seed ^ (len * mul); + for (const char* p = buf; p != end; p += 8) +Index: libstdc++-v3/libsupc++/exception +=================================================================== +--- a/src/libstdc++-v3/libsupc++/exception (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/libsupc++/exception (.../branches/gcc-8-branch) +@@ -101,8 +101,8 @@ + _GLIBCXX17_DEPRECATED + bool uncaught_exception() _GLIBCXX_USE_NOEXCEPT __attribute__ ((__pure__)); + +-#if __cplusplus > 201402L || !defined(__STRICT_ANSI__) // c++17 or gnu++98 +-#define __cpp_lib_uncaught_exceptions 201411 ++#if __cplusplus >= 201703L || !defined(__STRICT_ANSI__) // c++17 or gnu++98 ++#define __cpp_lib_uncaught_exceptions 201411L + /// The number of uncaught exceptions. + int uncaught_exceptions() _GLIBCXX_USE_NOEXCEPT __attribute__ ((__pure__)); + #endif +Index: libstdc++-v3/libsupc++/cxxabi.h +=================================================================== +--- a/src/libstdc++-v3/libsupc++/cxxabi.h (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/libsupc++/cxxabi.h (.../branches/gcc-8-branch) +@@ -683,8 +683,9 @@ + * @brief Exception thrown by __cxa_guard_acquire. + * @ingroup exceptions + * +- * 6.7[stmt.dcl]/4: If control re-enters the declaration (recursively) +- * while the object is being initialized, the behavior is undefined. ++ * C++ 2011 6.7 [stmt.dcl]/4: If control re-enters the declaration ++ * recursively while the variable is being initialized, the behavior ++ * is undefined. + * + * Since we already have a library function to handle locking, we might + * as well check for this situation and throw an exception. +@@ -694,8 +695,8 @@ + class recursive_init_error: public std::exception + { + public: +- recursive_init_error() throw() { } +- virtual ~recursive_init_error() throw (); ++ recursive_init_error() _GLIBCXX_NOTHROW; ++ virtual ~recursive_init_error() _GLIBCXX_NOTHROW; + }; + } + #endif // __cplusplus +Index: libstdc++-v3/ChangeLog +=================================================================== +--- a/src/libstdc++-v3/ChangeLog (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/ChangeLog (.../branches/gcc-8-branch) +@@ -1,3 +1,555 @@ ++2019-10-24 Jonathan Wakely ++ ++ 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. ++ ++ 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-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-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-11 Jonathan Wakely ++ ++ * python/libstdcxx/v6/xmethods.py (SharedPtrUseCountWorker.__call__): ++ Fix syntax error. ++ ++2019-09-02 Jonathan Wakely ++ ++ * doc/html/*: Regenerate. ++ ++ * testsuite/20_util/unique_ptr/assign/48635_neg.cc: Replace dg-error ++ with dg-prune-output for enable_if failure. ++ * testsuite/20_util/unique_ptr/cons/cv_qual_neg.cc: Add ++ dg-prune-output for enable_if failure. ++ ++2019-08-30 Jonathan Wakely ++ ++ Backport from mainline ++ 2018-10-02 Jonathan Wakely ++ ++ * include/std/variant (__gen_vtable_impl::__visit_invoke): Call __get ++ directly instead of get, as caller ensures correct index is used. ++ (holds_alternative, get, get_if): Remove redundant inline specifiers. ++ (_VARIANT_RELATION_FUNCTION_TEMPLATE): Likewise. ++ ++2019-08-30 Jonathan Wakely ++ ++ Backport from mainline ++ 2018-08-16 Jonathan Wakely ++ ++ * include/std/ostream (basic_ostream::sentry::~sentry): Suppress ++ deprecation warnings for using uncaught_exception(). ++ ++2019-08-30 Jonathan Wakely ++ ++ Backport from mainline ++ 2019-07-31 Jonathan Wakely ++ ++ PR libstdc++/91308 ++ * include/bits/unique_ptr.h (unique_ptr::__safe_conversion_up): Remove ++ constraints on deleter that should only apply to the constructor. ++ (unique_ptr::__safe_conversion_up): Likewise. ++ (unique_ptr::unique_ptr(unique_ptr&&)): Restore ++ constraints on deleter here. ++ * testsuite/20_util/unique_ptr/assign/91308.cc: New test. ++ ++2019-08-30 Jonathan Wakely ++ ++ Backport from mainline ++ 2019-07-29 Jonathan Wakely ++ ++ PR libstdc++/51333 ++ * libsupc++/cxxabi.h (__gnu_cxx::recursive_init_error): Do not define ++ constructor inline. ++ * libsupc++/guard_error.cc (__gnu_cxx::recursive_init_error): Define ++ constructor. ++ * testsuite/18_support/51333.cc: New test. ++ ++2019-08-30 Jonathan Wakely ++ ++ Backport from mainline ++ 2019-05-23 Jonathan Wakely ++ ++ * doc/xml/manual/status_cxx2017.xml: Add feature test macro for ++ P0040R3. ++ * doc/html/*: Regenerate. ++ ++ Backport from mainline ++ 2019-06-20 Jonathan Wakely ++ ++ * doc/xml/manual/status_cxx2017.xml: Fix outdated reference to ++ C++17 working draft. ++ ++ Backport from mainline ++ 2019-05-21 Jonathan Wakely ++ ++ * doc/xml/manual/shared_ptr.xml: Fix names of lock policy constants. ++ ++2019-08-30 Jonathan Wakely ++ ++ Backport from mainline ++ 2018-09-21 Jonathan Wakely ++ ++ PR libstdc++/78179 ++ * testsuite/26_numerics/headers/cmath/hypot.cc: Use lower tolerance ++ when sizeof(long double) == sizeof(double). ++ ++2019-08-30 Jonathan Wakely ++ ++ Backport from mainline ++ 2019-03-22 Jonathan Wakely ++ ++ * include/bits/stl_algobase.h (__lg): Do arithmetic on type int to ++ avoid -Wconversion warnings. ++ ++2019-08-30 Jonathan Wakely ++ ++ Backport from mainline ++ 2019-06-07 Jonathan Wakely ++ ++ PR libstdc++/90770 ++ * src/Makefile.am (stamp-debug): Also test for missing makefile. ++ * src/Makefile.in: Regenerate. ++ ++2019-08-30 Jonathan Wakely ++ ++ Backport from mainline ++ 2019-05-17 Jonathan Wakely ++ ++ * include/bits/random.h (seed_seq::param): Fix non-reserved name. ++ * include/experimental/type_traits (is_detected_exact) ++ (is_detected_exact_v): Likewise. ++ * testsuite/17_intro/names.cc: Check for more non-reserved names. ++ * testsuite/experimental/names.cc: New test. ++ ++2019-08-30 Jonathan Wakely ++ ++ Backport from mainline ++ 2019-05-17 Jonathan Wakely ++ ++ PR libstdc++/85965 ++ * include/bits/hashtable.h (_Hashtable::~_Hashtable()): Remove static ++ assertions from the destructor. ++ * include/bits/hashtable_policy.h (_Hash_code_base::_M_hash_code): ++ Move static_assert for hash function to here. ++ (_Hash_table_base::_M_equals): Move static_assert for equality ++ predicate to here. ++ * include/bits/stl_tree.h (_Rb_tree::_S_key(_Const_Link_type)): Move ++ assertions here. Access the value directly instead of calling _S_value. ++ (_Rb_tree::_S_key(_Const_Base_ptr)): Do downcast and forward to ++ _S_key(_Const_Link_type). ++ * testsuite/23_containers/set/85965.cc: Check construction, ++ destruction, assignment and size() do not trigger the assertions. ++ * testsuite/23_containers/unordered_set/85965.cc: Likewise. ++ * testsuite/23_containers/map/48101_neg.cc: Call find and adjust ++ expected errors. ++ * testsuite/23_containers/multimap/48101_neg.cc: Likewise. ++ * testsuite/23_containers/multiset/48101_neg.cc: Likewise. ++ * testsuite/23_containers/set/48101_neg.cc: Likewise. ++ * testsuite/23_containers/unordered_map/48101_neg.cc: Likewise. ++ * testsuite/23_containers/unordered_multimap/48101_neg.cc: Likewise. ++ * testsuite/23_containers/unordered_multiset/48101_neg.cc: Likewise. ++ * testsuite/23_containers/unordered_set/48101_neg.cc: Likewise. ++ ++2019-08-30 Jonathan Wakely ++ ++ Backport from mainline ++ 2018-09-03 Jonathan Wakely ++ ++ * include/bits/stl_vector.h (vector::_Temporary_value::_M_ptr): ++ Return raw pointer not allocator's pointer type. ++ (vector::_Temporary_value::_M_val): Use _M_ptr. ++ ++2019-06-01 Iain Sandoe ++ ++ Backport from mainline ++ 2018-12-22 Iain Sandoe ++ ++ * /config/os/bsd/darwin/ppc-extra.ver: Append long double symbols. ++ ++2019-05-30 Jonathan Wakely ++ ++ * doc/xml/manual/status_cxx2017.xml: Fix typo in documentation of ++ implementation-defined support for [fs.conform.9945]. ++ * doc/html/*: Regenerate. ++ ++2019-05-28 Jonathan Wakely ++ ++ PR libstdc++/90634 ++ * src/filesystem/path.cc (path::_M_split_cmpts()): Fix check for "/". ++ * testsuite/27_io/filesystem/path/construct/90634.cc: New test. ++ * testsuite/experimental/filesystem/path/construct/90634.cc: New test. ++ ++ PR libstdc++/90634 ++ * include/bits/fs_path.h (path::path(path&&)): Only call ++ _M_split_cmpts() for a path with multiple components. ++ (path::_S_is_dir_sep()): Add missing 'static' keyword to function. ++ * include/experimental/bits/fs_path.h: Likewise. ++ * src/filesystem/path.cc (path::_M_split_cmpts()): Count number of ++ components and reserve space in vector. Return early when there is ++ only one component. ++ * src/filesystem/std-path.cc (path::_M_split_cmpts()): Likewise. ++ ++2019-05-23 Jonathan Wakely ++ ++ Backport from mainline ++ 2019-02-27 Jonathan Wakely ++ ++ PR libstdc++/89466 ++ * acinclude.m4 (GLIBCXX_CONFIGURE_DOCBOOK): Reorder check for local ++ stylesheet directories before check for xsltproc. Try to use ++ xmlcatalog to find local stylesheet directory before trying hardcoded ++ paths. Add path used by suse to hardcoded paths. Adjust xsltproc ++ check to look for the same stylesheet as doc/Makefile.am uses. Don't ++ use xsltproc if xmlcatalog fails to find a local stylesheet. ++ * configure.ac: Check for xmlcatalog. ++ * Makefile.in: Regenerate. ++ * configure: Likewise. ++ * doc/Makefile.in: Likewise. ++ * include/Makefile.in: Likewise. ++ * libsupc++/Makefile.in: Likewise. ++ * po/Makefile.in: Likewise. ++ * python/Makefile.in: Likewise. ++ * src/Makefile.in: Likewise. ++ * src/c++11/Makefile.in: Likewise. ++ * src/c++17/Makefile.in: Likewise. ++ * src/c++98/Makefile.in: Likewise. ++ * src/filesystem/Makefile.in: Likewise. ++ * testsuite/Makefile.in: Likewise. ++ ++2019-05-23 Jonathan Wakely ++ ++ * doc/html/*: Regenerate. ++ ++2019-05-23 Jonathan Wakely ++ ++ Backport from mainline ++ 2019-05-23 Jonathan Wakely ++ ++ * include/experimental/any (__any_caster): Use RTTI if comparing ++ addresses fails, to support non-unique addresses in shared libraries. ++ * include/std/any (__any_caster): Likewise. ++ * testsuite/experimental/any/misc/any_cast_neg.cc: Use 0 for dg-error ++ line number. ++ ++2019-05-23 Jonathan Wakely ++ ++ Backport from mainline ++ 2019-05-23 Jonathan Wakely ++ ++ PR libstdc++/90220 ++ * include/experimental/any (__any_caster): Constrain to only be ++ callable for object types. Use remove_cv_t instead of decay_t. ++ If the type decays or isn't copy constructible, compare the manager ++ function to a dummy specialization. ++ (__any_caster): Add overload constrained for non-object types. ++ (any::_Manager_internal<_Op>): Add dummy specialization. ++ * testsuite/experimental/any/misc/any_cast.cc: Test function types ++ and array types. ++ ++ Backport from mainline ++ 2019-04-24 Jonathan Wakely ++ ++ PR libstdc++/90220 ++ * include/std/any (__any_caster): Use remove_cv_t instead of decay_t. ++ Avoid a runtime check for types that can never be stored in std::any. ++ * testsuite/20_util/any/misc/any_cast.cc: Test std::any_cast with ++ array types. ++ ++ Backport from mainline ++ 2019-04-24 Jonathan Wakely ++ ++ PR libstdc++/90220 (partial) ++ * include/std/any (any_cast(any*), any_cast(const any*)): Do ++ not attempt ill-formed static_cast to pointers to non-object types. ++ * testsuite/20_util/any/misc/any_cast.cc: Test std::any_cast with ++ function types. ++ ++2019-05-23 Jonathan Wakely ++ ++ Backported from mainline ++ 2019-01-15 Jonathan Wakely ++ ++ * doc/xml/manual/status_cxx2017.xml: Document P0032R3 and P0307R2 ++ status. ++ * include/bits/stl_uninitialized.h (__cpp_lib_raw_memory_algorithms): ++ Define. ++ * include/std/any (__cpp_lib_any): Define as 201606L, because P0032R3 ++ changes are supported. ++ * include/std/optional (__cpp_lib_optional): Likewise. ++ * include/std/variant (__cpp_lib_variant): Likewise. ++ * libsupc++/exception (__cpp_lib_uncaught_exceptions): Define as long ++ integer. ++ ++2019-05-20 Jonathan Wakely ++ ++ Backported from mainline ++ 2019-05-20 Jonathan Wakely ++ ++ PR c++/90532 Ensure __is_constructible(T[]) is false ++ * include/std/type_traits (__do_is_default_constructible_impl) ++ (__is_default_constructible_atom, __is_default_constructible_safe): ++ Remove. ++ (is_default_constructible): Use is_constructible. ++ * testsuite/20_util/is_constructible/value.cc: Check int[] case. ++ * testsuite/20_util/is_default_constructible/value.cc: Likewise. ++ * testsuite/20_util/is_trivially_constructible/value.cc: Likewise. ++ * testsuite/20_util/is_trivially_default_constructible/value.cc: ++ Likewise. ++ ++2019-05-17 Jonathan Wakely ++ ++ Backport from mainline ++ 2019-05-04 Jonathan Wakely ++ ++ PR libstdc++/90299 ++ * src/filesystem/std-ops.cc (absolute(const path&)): Report an error ++ if the argument is an empty path. ++ (absolute(const path&, error_code&)): Use invalid_argument as error ++ code instead of no_such_file_or_directory. ++ * testsuite/27_io/filesystem/operations/absolute.cc: Check handling ++ of non-existent paths and empty paths with both overloads of absolute. ++ ++2019-05-15 Jonathan Wakely ++ ++ Backport from mainline ++ 2019-04-30 Jonathan Wakely ++ ++ * testsuite/27_io/filesystem/path/decompose/root_path.cc: Remove ++ macros accidentally left in. ++ ++ Backport from mainline ++ 2019-05-13 Jonathan Wakely ++ ++ PR libstdc++/90454.cc path construction from void* ++ * include/bits/fs_path.h (path::_Path): Use remove_pointer so that ++ pointers to void are rejected as well as void. ++ * include/experimental/bits/fs_path.h (path::_Path): Likewise. ++ * testsuite/27_io/filesystem/path/construct/80762.cc: Also check ++ pointers to void. ++ * testsuite/experimental/filesystem/path/construct/80762.cc: Likewise. ++ ++2019-05-11 Jonathan Wakely ++ ++ Backport from mainline ++ 2019-05-10 Jonathan Wakely ++ ++ PR libstdc++/81266 ++ * testsuite/util/thread/all.h: Do not use remove_pointer for ++ std::thread::native_handle_type. ++ ++2019-05-07 Jonathan Wakely ++ ++ Backport from mainline ++ 2019-02-06 Jonathan Wakely ++ ++ PR libstdc++/89102 (partial) ++ * include/std/type_traits (common_type<>): Define. ++ (common_type): Derive from common_type. ++ * testsuite/20_util/common_type/requirements/explicit_instantiation.cc: ++ Test zero-length template argument list. ++ * testsuite/20_util/common_type/requirements/sfinae_friendly_1.cc: ++ Test additional single argument cases. ++ * testsuite/20_util/common_type/requirements/sfinae_friendly_2.cc: ++ Adjust expected error. ++ ++ Backport from mainline ++ 2019-01-22 Jonathan Wakely ++ ++ PR libstdc++/88740 ++ * testsuite/util/testsuite_hooks.h [stderr] (VERIFY): Use fprintf to ++ write to stderr instead of using printf. ++ ++ Backport from mainline ++ 2019-04-23 Jonathan Wakely ++ ++ PR libstdc++/90165 ++ * include/std/variant (variant::__is_in_place_tag) ++ (variant::__not_in_place_tag): New helpers for variant(T&&) ++ constructor constraint. ++ (variant::variant(T&&)): Use __not_in_place_tag in constraints. ++ * testsuite/20_util/variant/compile.cc: Check variant(T&&) constructor ++ isn't used for in_place_type or in_place_index arguments. ++ ++ Backport from mainline ++ 2019-04-17 Jonathan Wakely ++ ++ PR libstdc++/90105 ++ * include/bits/forward_list.tcc (operator==): Do not use operator!= to ++ compare elements. ++ (forward_list::sort(Comp)): When elements are equal take the one ++ earlier in the list, so that sort is stable. ++ * testsuite/23_containers/forward_list/operations/90105.cc: New test. ++ * testsuite/23_containers/forward_list/comparable.cc: Test with ++ types that meet the minimum EqualityComparable and LessThanComparable ++ requirements. Remove irrelevant comment. ++ ++ Backport from mainline ++ 2019-04-17 Jonathan Wakely ++ ++ * include/std/optional (optional::value_or(U&&) &&): Add missing ++ constexpr specifier. ++ * testsuite/20_util/optional/constexpr/observers/4.cc: Check value_or ++ for disengaged optionals and rvalue optionals. ++ * testsuite/20_util/optional/observers/4.cc: Likewise. ++ ++ Backport from mainline ++ 2019-04-10 Jonathan Wakely ++ ++ * doc/xml/faq.xml: Add information about emergency EH pool. ++ * doc/xml/manual/debug.xml: Update list of memory debugging tools. ++ Move outdated information on mt_allocator to a separate section. ++ * doc/xml/manual/evolution.xml: Clarify that GLIBCXX_FORCE_NEW ++ doesn't affect the default allocator. ++ ++ Backport from mainline ++ 2019-04-05 Jonathan Wakely ++ ++ * src/filesystem/std-dir.cc (_Dir::advance(bool, error_code&)): Handle ++ d_type == DT_UNKNOWN immediately. ++ (_Dir::should_recurse(bool, error_code&)): Remove file_type::unknown ++ handling here. ++ * testsuite/27_io/filesystem/iterators/caching.cc: New test. ++ ++ Backport from mainline ++ 2019-04-05 Jonathan Wakely ++ ++ * include/bits/fs_path.h (path::operator=(path&&)): Check for self ++ assignment. ++ * testsuite/27_io/filesystem/path/assign/copy.cc: Test self ++ assignment. ++ ++ Backport from mainline ++ 2019-03-26 Jonathan Wakely ++ ++ PR libstdc++/85965 ++ * include/bits/hashtable.h (_Hashtable): Move static assertions to ++ destructor so they are not evaluated until the _Key type is complete. ++ * include/bits/stl_tree.h (_Rb_tree): Likewise. ++ * testsuite/23_containers/set/85965.cc: New test. ++ * testsuite/23_containers/unordered_set/85965.cc: New test. ++ * testsuite/23_containers/map/48101_neg.cc: Replace "here" errors ++ with regexp matching the corresponding _Rb_tree specialization. ++ * testsuite/23_containers/multimap/48101_neg.cc: Likewise. ++ * testsuite/23_containers/multiset/48101_neg.cc: Remove "here" error. ++ * testsuite/23_containers/set/48101_neg.cc: Likewise. ++ * testsuite/23_containers/unordered_map/48101_neg.cc: Likewise. ++ * testsuite/23_containers/unordered_multimap/48101_neg.cc: Likewise. ++ * testsuite/23_containers/unordered_multiset/48101_neg.cc: Likewise. ++ * testsuite/23_containers/unordered_set/48101_neg.cc: Likewise. ++ ++ Backport from mainline ++ 2019-03-11 Jonathan Wakely ++ ++ PR libstdc++/89629 ++ * libsupc++/hash_bytes.cc [__SIZEOF_SIZE_T__ == 8] (_Hash_bytes): ++ Use correct type for len_aligned. ++ * testsuite/20_util/hash/89629.cc: New test. ++ ++ Backport from mainline ++ 2019-03-08 Jonathan Wakely ++ ++ * doc/xml/manual/using.xml: Use link element instead of xref. ++ ++ Backport from mainline ++ 2019-02-14 Jonathan Wakely ++ ++ * doc/xml/manual/intro.xml: Document LWG 2586 status. ++ * include/bits/uses_allocator.h (__uses_alloc): Use const lvalue ++ allocator type in is_constructible checks. ++ * testsuite/20_util/scoped_allocator/69293_neg.cc: Adjust dg-error. ++ * testsuite/20_util/scoped_allocator/dr2586.cc: New test. ++ * testsuite/20_util/tuple/cons/allocators.cc: Add test using ++ problematic type from LWG 2586 discussion. ++ * testsuite/20_util/uses_allocator/69293_neg.cc: Adjust dg-error. ++ * testsuite/20_util/uses_allocator/cons_neg.cc: Likewise. ++ ++ Backport from mainline ++ 2019-02-14 Jonathan Wakely ++ ++ * doc/xml/manual/intro.xml: Document LWG 2537 status. ++ * include/bits/stl_queue.h ++ (priority_queue(const Compare&, const Container&, const Alloc&)) ++ (priority_queue(const Compare&, Container&&, const Alloc&)): Call ++ make_heap. ++ * testsuite/23_containers/priority_queue/dr2537.cc: New test. ++ ++2019-02-22 Jonathan Wakely ++ ++ PR libstdc++/89446 ++ * include/bits/char_traits.h (__constant_char_array): Check index is ++ in range before dereferencing. ++ * testsuite/21_strings/basic_string_view/operators/char/89446.cc: ++ New test. ++ + 2019-02-22 Release Manager + + * GCC 8.3.0 released. +Index: libstdc++-v3/testsuite/Makefile.in +=================================================================== +--- a/src/libstdc++-v3/testsuite/Makefile.in (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/testsuite/Makefile.in (.../branches/gcc-8-branch) +@@ -205,6 +205,7 @@ + VTV_PCH_CXXFLAGS = @VTV_PCH_CXXFLAGS@ + WARN_FLAGS = @WARN_FLAGS@ + WERROR = @WERROR@ ++XMLCATALOG = @XMLCATALOG@ + XMLLINT = @XMLLINT@ + XSLTPROC = @XSLTPROC@ + XSL_STYLE_DIR = @XSL_STYLE_DIR@ +Index: libstdc++-v3/testsuite/18_support/51333.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/18_support/51333.cc (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/testsuite/18_support/51333.cc (.../branches/gcc-8-branch) +@@ -0,0 +1,22 @@ ++// 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 "-fkeep-inline-functions" } ++// { dg-do link } ++ ++#include ++int main() { } // PR libstdc++/51333 +Index: libstdc++-v3/testsuite/tr2/dynamic_bitset/cmp.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/tr2/dynamic_bitset/cmp.cc (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/testsuite/tr2/dynamic_bitset/cmp.cc (.../branches/gcc-8-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_8_3_0_release) ++++ b/src/libstdc++-v3/testsuite/tr2/dynamic_bitset/cons.cc (.../branches/gcc-8-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_8_3_0_release) ++++ b/src/libstdc++-v3/testsuite/tr2/dynamic_bitset/move.cc (.../branches/gcc-8-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_8_3_0_release) ++++ b/src/libstdc++-v3/testsuite/tr2/dynamic_bitset/copy.cc (.../branches/gcc-8-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_8_3_0_release) ++++ b/src/libstdc++-v3/testsuite/tr2/dynamic_bitset/pr92059.cc (.../branches/gcc-8-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/48101_neg.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/23_containers/unordered_map/48101_neg.cc (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/testsuite/23_containers/unordered_map/48101_neg.cc (.../branches/gcc-8-branch) +@@ -23,9 +23,11 @@ + test01() + { + using namespace std; +- unordered_map, hash> c2; // { dg-error "here" } ++ unordered_map, hash> c2; ++ c2.find(2); // { dg-error "here" } + } + + // { dg-error "hash function must be invocable" "" { target *-*-* } 0 } + // { dg-error "key equality predicate must be invocable" "" { target *-*-* } 0 } + // { dg-prune-output "use of deleted function" } ++// { dg-prune-output "no match for call" } +Index: libstdc++-v3/testsuite/23_containers/priority_queue/dr2537.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/23_containers/priority_queue/dr2537.cc (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/testsuite/23_containers/priority_queue/dr2537.cc (.../branches/gcc-8-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 ++ ++struct Q : std::priority_queue ++{ ++ using priority_queue::priority_queue; ++ ++ bool is_heap() const ++ { return std::is_heap(c.begin(), c.end()); } ++}; ++ ++void ++test01() ++{ ++ const Q::value_compare cmp; ++ const Q::container_type c{ 2, 3, 5, 7, 11, 13, 17, 19, 23 }; ++ const Q::container_type::allocator_type a; ++ ++ Q q1(cmp, c, a); ++ VERIFY( q1.is_heap() ); ++ ++ auto c2 = c; ++ Q q2(cmp, std::move(c2), a); ++ VERIFY( q2.is_heap() ); ++} ++ ++int ++main() ++{ ++ test01(); ++} +Index: libstdc++-v3/testsuite/23_containers/multimap/48101_neg.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/23_containers/multimap/48101_neg.cc (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/testsuite/23_containers/multimap/48101_neg.cc (.../branches/gcc-8-branch) +@@ -23,8 +23,14 @@ + void + test01() + { +- std::multimap> c; // { dg-error "here" } +- std::multimap> c2; // { dg-error "here" } ++ std::multimap> c; ++ c.find(1); // { dg-error "here" } ++ std::multimap> c2; ++ c2.find(2); // { dg-error "here" } + } + ++// { dg-error "_Compare = std::less" "" { target *-*-* } 0 } ++// { dg-error "_Compare = std::allocator" "" { target *-*-* } 0 } + // { dg-error "comparison object must be invocable" "" { target *-*-* } 0 } ++// { dg-prune-output "no match for call" } ++// { dg-prune-output "invalid conversion" } +Index: libstdc++-v3/testsuite/23_containers/set/85965.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/23_containers/set/85965.cc (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/testsuite/23_containers/set/85965.cc (.../branches/gcc-8-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 ++ ++struct Base { }; ++struct Derived; // derives from Base, but incomplete at this point ++ ++struct Foo ++{ ++ // PR libstdc++/85965 ++ std::set> s; ++}; ++ ++std::size_t ++test01(std::set> s) ++{ ++ // these operations should not require the comparison object ++ auto copy = s; ++ copy = s; ++ return s.size(); ++} +Index: libstdc++-v3/testsuite/23_containers/set/48101_neg.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/23_containers/set/48101_neg.cc (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/testsuite/23_containers/set/48101_neg.cc (.../branches/gcc-8-branch) +@@ -23,9 +23,12 @@ + test01() + { + std::set c; // { dg-error "here" } +- std::set> c2; // { dg-error "here" } ++ std::set> c2; ++ c2.find(2); // { dg-error "here" } + } + + // { dg-error "non-const, non-volatile value_type" "" { target *-*-* } 0 } + // { dg-error "comparison object must be invocable" "" { target *-*-* } 0 } + // { dg-prune-output "std::allocator<.* has no member named " } ++// { dg-prune-output "no match for call" } ++// { dg-prune-output "invalid conversion" } +Index: libstdc++-v3/testsuite/23_containers/forward_list/operations/90105.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/23_containers/forward_list/operations/90105.cc (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/testsuite/23_containers/forward_list/operations/90105.cc (.../branches/gcc-8-branch) +@@ -0,0 +1,60 @@ ++// 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 ++ ++// PR libstdc++/90105 - std::forward_list::sort() is not "stable" ++ ++struct X ++{ ++ int key; ++ int val; ++}; ++ ++bool operator<(const X& l, const X& r) ++{ return l.key < r.key; } ++ ++bool operator==(const X& l, const X& r) ++{ return l.key == r.key && l.val == r.val; } ++ ++void ++test01() ++{ ++ std::forward_list l{ {1, 1}, {2, 2}, {1, 3}, {0, 4}, {2, 5}, {0, 6} }; ++ l.sort(); ++ std::forward_list exp{ {0, 4}, {0, 6}, {1, 1}, {1, 3}, {2, 2}, {2, 5} }; ++ VERIFY( l == exp ); ++} ++ ++void ++test02() ++{ ++ std::forward_list l{ {1, 1}, {1, 2}, {1, 3}, {1, 4}, {1, 5}, {1, 6} }; ++ const std::forward_list exp = l; ++ l.sort(); ++ VERIFY( l == exp ); ++} ++ ++int ++main() ++{ ++ test01(); ++ test02(); ++} +Index: libstdc++-v3/testsuite/23_containers/forward_list/comparable.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/23_containers/forward_list/comparable.cc (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/testsuite/23_containers/forward_list/comparable.cc (.../branches/gcc-8-branch) +@@ -17,15 +17,11 @@ + // with this library; see the file COPYING3. If not see + // . + +- +-// NOTE: This makes use of the fact that we know how moveable +-// is implemented on list (via swap). If the implementation changed +-// this test may begin to fail. +- + #include + #include + +-int main() ++void ++test01() + { + std::forward_list a = {0.0, 1.0, 2.0, 3.0, 4.0}; + std::forward_list b = {0.0, 1.0, 2.0, 3.0, 4.0, 5.0}; +@@ -43,6 +39,40 @@ + VERIFY((b > a) == true); + VERIFY((b >= a) == true); + VERIFY((b <= a) == false); ++} + +- return 0; ++void ++test02() ++{ ++ // The EqualityComparable requirements only require == ++ struct X { ++ bool operator==(const X&) const { return true; } ++ }; ++ ++ std::forward_list a(2); ++ const auto b = a; ++ VERIFY( a == b ); + } ++ ++void ++test03() ++{ ++ // The LessThanComparable requirements only require < ++ struct X { ++ bool operator<(const X&) const { return false; } ++ }; ++ ++ std::forward_list a(2); ++ const auto b = a; ++ VERIFY( !(a < b) ); ++ VERIFY( !(a > b) ); ++ VERIFY( a <= b ); ++ VERIFY( a >= b ); ++} ++ ++int main() ++{ ++ test01(); ++ test02(); ++ test03(); ++} +Index: libstdc++-v3/testsuite/23_containers/unordered_multimap/48101_neg.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/23_containers/unordered_multimap/48101_neg.cc (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/testsuite/23_containers/unordered_multimap/48101_neg.cc (.../branches/gcc-8-branch) +@@ -23,9 +23,11 @@ + test01() + { + using namespace std; +- unordered_multimap, hash> c2; // { dg-error "here" } ++ unordered_multimap, hash> c2; ++ c2.find(2); // { dg-error "here" } + } + + // { dg-error "hash function must be invocable" "" { target *-*-* } 0 } + // { dg-error "key equality predicate must be invocable" "" { target *-*-* } 0 } + // { dg-prune-output "use of deleted function" } ++// { dg-prune-output "no match for call" } +Index: libstdc++-v3/testsuite/23_containers/unordered_set/85965.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/23_containers/unordered_set/85965.cc (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/testsuite/23_containers/unordered_set/85965.cc (.../branches/gcc-8-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 ++ ++struct Base { }; ++struct Derived; // derives from Base, but incomplete at this point ++ ++struct Foo ++{ ++ // PR libstdc++/85965 ++ std::unordered_set, std::hash> u; ++}; ++ ++std::size_t ++test01(std::unordered_set, std::hash> s) ++{ ++ // these operations should not require the comparison object ++ auto copy = s; ++ copy = s; ++ return s.size(); ++} +Index: libstdc++-v3/testsuite/23_containers/unordered_set/48101_neg.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/23_containers/unordered_set/48101_neg.cc (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/testsuite/23_containers/unordered_set/48101_neg.cc (.../branches/gcc-8-branch) +@@ -24,7 +24,8 @@ + { + using namespace std; + unordered_set> c; // { dg-error "here" } +- unordered_set, hash> c2; // { dg-error "here" } ++ unordered_set, hash> c2; ++ c2.find(2); // { dg-error "here" } + } + + // { dg-error "non-const, non-volatile value_type" "" { target *-*-* } 0 } +@@ -31,3 +32,4 @@ + // { dg-error "hash function must be invocable" "" { target *-*-* } 0 } + // { dg-error "key equality predicate must be invocable" "" { target *-*-* } 0 } + // { dg-prune-output "use of deleted function" } ++// { dg-prune-output "no match for call" } +Index: libstdc++-v3/testsuite/23_containers/multiset/48101_neg.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/23_containers/multiset/48101_neg.cc (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/testsuite/23_containers/multiset/48101_neg.cc (.../branches/gcc-8-branch) +@@ -23,9 +23,12 @@ + test01() + { + std::multiset c; // { dg-error "here" } +- std::multiset> c2; // { dg-error "here" } ++ std::multiset> c2; ++ c2.find(2); // { dg-error "here" } + } + + // { dg-error "non-const, non-volatile value_type" "" { target *-*-* } 0 } + // { dg-error "comparison object must be invocable" "" { target *-*-* } 0 } + // { dg-prune-output "std::allocator<.* has no member named " } ++// { dg-prune-output "no match for call" } ++// { dg-prune-output "invalid conversion" } +Index: libstdc++-v3/testsuite/23_containers/unordered_multiset/48101_neg.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/23_containers/unordered_multiset/48101_neg.cc (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/testsuite/23_containers/unordered_multiset/48101_neg.cc (.../branches/gcc-8-branch) +@@ -24,7 +24,8 @@ + { + using namespace std; + unordered_multiset> c; // { dg-error "here" } +- unordered_multiset, hash> c2; // { dg-error "here" } ++ unordered_multiset, hash> c2; ++ c2.find(2); // { dg-error "here" } + } + + // { dg-error "non-const, non-volatile value_type" "" { target *-*-* } 0 } +@@ -31,3 +32,4 @@ + // { dg-error "hash function must be invocable" "" { target *-*-* } 0 } + // { dg-error "key equality predicate must be invocable" "" { target *-*-* } 0 } + // { dg-prune-output "use of deleted function" } ++// { dg-prune-output "no match for call" } +Index: libstdc++-v3/testsuite/23_containers/map/48101_neg.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/23_containers/map/48101_neg.cc (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/testsuite/23_containers/map/48101_neg.cc (.../branches/gcc-8-branch) +@@ -23,8 +23,14 @@ + void + test01() + { +- std::map> c; // { dg-error "here" } +- std::map> c2; // { dg-error "here" } ++ std::map> c; ++ c.find(1); // { dg-error "here" } ++ std::map> c2; ++ c2.find(2); // { dg-error "here" } + } + ++// { dg-error "_Compare = std::less" "" { target *-*-* } 0 } ++// { dg-error "_Compare = std::allocator" "" { target *-*-* } 0 } + // { dg-error "comparison object must be invocable" "" { target *-*-* } 0 } ++// { dg-prune-output "no match for call" } ++// { dg-prune-output "invalid conversion" } +Index: libstdc++-v3/testsuite/27_io/filesystem/operations/absolute.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/27_io/filesystem/operations/absolute.cc (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/testsuite/27_io/filesystem/operations/absolute.cc (.../branches/gcc-8-branch) +@@ -50,9 +50,37 @@ + VERIFY( absolute(p3) == (std::filesystem::current_path()/p3) ); + } + ++void ++test03() ++{ ++ // PR libstdc++/90299 ++ const path p = __gnu_test::nonexistent_path(); ++ std::error_code ec; ++ const path pabs = absolute(p, ec); ++ VERIFY( !ec ); ++ VERIFY( pabs.is_absolute() ); ++ ++ const path pabs2 = absolute(p); ++ VERIFY( pabs2 == pabs ); ++ ++ const path eabs = absolute(path{}, ec); ++ VERIFY( ec == std::errc::invalid_argument ); ++ VERIFY( eabs.empty() ); ++ ++ try { ++ absolute(path{}); ++ VERIFY( false ); ++ } catch (const std::filesystem::filesystem_error& e) { ++ VERIFY( e.code() == std::errc::invalid_argument ); ++ VERIFY( e.path1().empty() ); ++ VERIFY( e.path2().empty() ); ++ } ++} ++ + int + main() + { + test01(); + test02(); ++ test03(); + } +Index: libstdc++-v3/testsuite/27_io/filesystem/iterators/caching.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/27_io/filesystem/iterators/caching.cc (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/testsuite/27_io/filesystem/iterators/caching.cc (.../branches/gcc-8-branch) +@@ -0,0 +1,76 @@ ++// 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 -lstdc++fs" } ++// { dg-do run { target c++17 } } ++// { dg-require-filesystem-ts "" } ++ ++#include ++#include ++#include ++ ++namespace fs = std::filesystem; ++ ++__gnu_test::scoped_file ++create_dir(fs::path dir = __gnu_test::nonexistent_path()) ++{ ++ fs::create_directory(dir); ++ return { dir, __gnu_test::scoped_file::adopt_file }; ++} ++ ++void ++test01() ++{ ++ auto testdir = create_dir(); ++ __gnu_test::scoped_file file1(testdir.path/"file1"); ++ __gnu_test::scoped_file file2(testdir.path/"file2"); ++ ++ fs::directory_iterator it(testdir.path); ++ VERIFY( it->is_regular_file() ); ++ ++it; ++ VERIFY( it->is_regular_file() ); ++ ++it; ++ VERIFY( it == fs::directory_iterator{} ); ++} ++ ++void ++test02() ++{ ++ auto testdir = create_dir(); ++ const auto sub1 = create_dir(testdir.path/"sub1"); ++ __gnu_test::scoped_file file1(sub1.path / "file"); ++ const auto sub2 = create_dir(testdir.path/"sub2"); ++ __gnu_test::scoped_file file2(sub2.path / "file"); ++ ++ fs::recursive_directory_iterator it(testdir.path); ++ VERIFY( it->is_directory() ); ++ ++it; ++ VERIFY( it->is_regular_file() ); ++ ++it; ++ VERIFY( it->is_directory() ); ++ ++it; ++ VERIFY( it->is_regular_file() ); ++ ++it; ++ VERIFY( it == fs::recursive_directory_iterator{} ); ++} ++ ++int ++main() ++{ ++ test01(); ++ test02(); ++} +Index: libstdc++-v3/testsuite/27_io/filesystem/path/assign/copy.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/27_io/filesystem/path/assign/copy.cc (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/testsuite/27_io/filesystem/path/assign/copy.cc (.../branches/gcc-8-branch) +@@ -21,6 +21,7 @@ + + #include + #include ++#include + + using std::filesystem::path; + using __gnu_test::compare_paths; +@@ -48,9 +49,26 @@ + } + } + ++void ++test03() ++{ ++ // self assignment should have no effect ++ const path orig = "foo/bar/baz"; ++ path p = orig; ++ const auto ptr1 = p.c_str(); ++ const auto ptr2 = p.begin()->c_str(); ++ p = std::move(p); ++ __gnu_test::compare_paths(p, orig); ++ p = p; ++ __gnu_test::compare_paths(p, orig); ++ VERIFY( ptr1 == p.c_str() ); ++ VERIFY( ptr2 == p.begin()->c_str() ); ++} ++ + int + main() + { + test01(); + test02(); ++ test03(); + } +Index: libstdc++-v3/testsuite/27_io/filesystem/path/construct/90634.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/27_io/filesystem/path/construct/90634.cc (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/testsuite/27_io/filesystem/path/construct/90634.cc (.../branches/gcc-8-branch) +@@ -0,0 +1,70 @@ ++// 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 -lstdc++fs" } ++// { dg-do run { target c++17 } } ++// { dg-require-filesystem-ts "" } ++ ++#include ++#include ++#include ++ ++std::size_t bytes_allocated = 0; ++ ++void* operator new(std::size_t n) ++{ ++ bytes_allocated += n; ++ return std::malloc(n); ++} ++ ++void operator delete(void* p) noexcept { std::free(p); } ++#if __cpp_sized_deallocation ++void operator delete(void* p, std::size_t) noexcept { std::free(p); } ++#endif ++ ++void ++test01() ++{ ++ std::string s0; ++ std::string s1 = "/"; ++ std::string s2 = "///"; ++ std::string s3 = "filename"; ++ std::string s4 = "C:"; ++ std::string s5 = "\\"; ++ ++ using std::filesystem::path; ++ ++ bytes_allocated = 0; ++ path p0 = std::move(s0); ++ VERIFY( bytes_allocated == 0 ); ++ path p1 = std::move(s1); ++ VERIFY( bytes_allocated == 0 ); ++ path p2 = std::move(s2); ++ VERIFY( bytes_allocated == 0 ); ++ path p3 = std::move(s3); ++ VERIFY( bytes_allocated == 0 ); ++ path p4 = std::move(s4); ++ VERIFY( bytes_allocated == 0 ); ++ path p5 = std::move(s5); ++ VERIFY( bytes_allocated == 0 ); ++} ++ ++int ++main() ++{ ++ test01(); ++} +Index: libstdc++-v3/testsuite/27_io/filesystem/path/construct/80762.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/27_io/filesystem/path/construct/80762.cc (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/testsuite/27_io/filesystem/path/construct/80762.cc (.../branches/gcc-8-branch) +@@ -22,8 +22,18 @@ + + using std::filesystem::path; + ++// PR libstdc++/80762.cc + static_assert( !std::is_constructible_v ); + static_assert( !std::is_constructible_v ); + static_assert( !std::is_constructible_v ); + static_assert( !std::is_constructible_v ); + static_assert( !std::is_constructible_v ); ++ ++// PR libstdc++/90454.cc ++static_assert( !std::is_constructible_v ); ++static_assert( !std::is_constructible_v ); ++static_assert( !std::is_constructible_v ); ++static_assert( !std::is_constructible_v ); ++static_assert( !std::is_constructible_v ); ++static_assert( !std::is_constructible_v ); ++static_assert( !std::is_constructible_v ); +Index: libstdc++-v3/testsuite/27_io/filesystem/path/decompose/root_path.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/27_io/filesystem/path/decompose/root_path.cc (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/testsuite/27_io/filesystem/path/decompose/root_path.cc (.../branches/gcc-8-branch) +@@ -36,10 +36,6 @@ + VERIFY( p2.root_path() == path("/") ); + } + +-#undef VERIFY +-#define VERIFY(X) do { if (!(X)) { __builtin_puts("FAIL: " #X); } } while(false) +-#define DUMP(X, Y, Z) do { if (!(Y == Z)) { __builtin_printf("%s %s %s\n", X.c_str(), Y.c_str(), Z.c_str()); } } while(false) +- + void + test02() + { +@@ -49,7 +45,6 @@ + path rootn = p.root_name(); + path rootd = p.root_directory(); + VERIFY( rootp == (rootn / rootd) ); +- DUMP(p, rootp , (rootn / rootd) ); + } + } + +Index: libstdc++-v3/testsuite/21_strings/basic_string_view/operators/char/89446.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/21_strings/basic_string_view/operators/char/89446.cc (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/testsuite/21_strings/basic_string_view/operators/char/89446.cc (.../branches/gcc-8-branch) +@@ -0,0 +1,28 @@ ++// 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 -fexceptions -fnon-call-exceptions -O1" } ++// { dg-do run { target { powerpc*-*-linux* i?86-*-linux* x86_64-*-linux* } } } ++// { dg-require-effective-target c++17 } ++ ++#include ++ ++int main() ++{ ++ std::string_view s1, s2; ++ return s1 != s2; ++} +Index: libstdc++-v3/testsuite/26_numerics/headers/cmath/hypot.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/26_numerics/headers/cmath/hypot.cc (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/testsuite/26_numerics/headers/cmath/hypot.cc (.../branches/gcc-8-branch) +@@ -1,4 +1,4 @@ +-// Copyright (C) 2016-2018 Free Software Foundation, Inc. ++// 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 +@@ -17,7 +17,6 @@ + + // { dg-options "-std=gnu++17" } + // { dg-do run { target c++17 } } +-// { dg-xfail-run-if "AIX long double" { powerpc-ibm-aix* } } + + #include + #include +@@ -128,7 +127,10 @@ + { + test(data1, toler1); + test(data2, toler2); +- test(data3, toler3); ++ if (sizeof(long double) > sizeof(double)) ++ test(data3, toler3); ++ else ++ test(data3, (long double)toler1); + } + + int +Index: libstdc++-v3/testsuite/experimental/any/misc/any_cast.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/experimental/any/misc/any_cast.cc (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/testsuite/experimental/any/misc/any_cast.cc (.../branches/gcc-8-branch) +@@ -24,6 +24,7 @@ + + using std::experimental::any; + using std::experimental::any_cast; ++using std::experimental::bad_any_cast; + + void test01() + { +@@ -56,7 +57,6 @@ + + void test02() + { +- using std::experimental::bad_any_cast; + any x(1); + auto p = any_cast(&x); + VERIFY(p == nullptr); +@@ -105,7 +105,7 @@ + MoveDeleted&& md3 = any_cast(any(std::move(md))); + } + +-void test04() ++void test05() + { + // PR libstdc++/69321 + struct noncopyable { +@@ -117,10 +117,60 @@ + VERIFY( p == nullptr ); + } + ++void test06() ++{ ++ // The contained value of a std::any is always an object type, ++ // but any_cast does not forbid checking for function types. ++ ++ any a(1); ++ void (*p1)() = any_cast(&a); ++ VERIFY( p1 == nullptr ); ++ int (*p2)(int) = any_cast(&a); ++ VERIFY( p2 == nullptr ); ++ int (*p3)() = any_cast(&const_cast(a)); ++ VERIFY( p3 == nullptr ); ++ ++ try { ++ any_cast(a); ++ VERIFY( false ); ++ } catch (const bad_any_cast&) { ++ } ++ ++ try { ++ any_cast(std::move(a)); ++ VERIFY( false ); ++ } catch (const bad_any_cast&) { ++ } ++ ++ try { ++ any_cast(const_cast(a)); ++ VERIFY( false ); ++ } catch (const bad_any_cast&) { ++ } ++} ++ ++void test07() ++{ ++ int arr[3]; ++ any a(arr); ++ VERIFY( a.type() == typeid(int*) ); // contained value is decayed ++ ++ int (*p1)[3] = any_cast(&a); ++ VERIFY( a.type() != typeid(int[3]) ); // so any_cast should return nullptr ++ VERIFY( p1 == nullptr ); ++ int (*p2)[] = any_cast(&a); ++ VERIFY( a.type() != typeid(int[]) ); // so any_cast should return nullptr ++ VERIFY( p2 == nullptr ); ++ const int (*p3)[] = any_cast(&const_cast(a)); ++ VERIFY( p3 == nullptr ); ++} ++ + int main() + { + test01(); + test02(); + test03(); +- test04(); ++ test05(); ++ test06(); ++ test07(); + } +Index: libstdc++-v3/testsuite/experimental/any/misc/any_cast_neg.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/experimental/any/misc/any_cast_neg.cc (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/testsuite/experimental/any/misc/any_cast_neg.cc (.../branches/gcc-8-branch) +@@ -25,5 +25,5 @@ + using std::experimental::any_cast; + + const any y(1); +- any_cast(y); // { dg-error "qualifiers" "" { target { *-*-* } } 357 } ++ any_cast(y); // { dg-error "qualifiers" "" { target { *-*-* } } 0 } + } +Index: libstdc++-v3/testsuite/experimental/filesystem/path/construct/90634.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/experimental/filesystem/path/construct/90634.cc (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/testsuite/experimental/filesystem/path/construct/90634.cc (.../branches/gcc-8-branch) +@@ -0,0 +1,67 @@ ++// 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 "-DUSE_FILESYSTEM_TS -lstdc++fs" } ++// { dg-do run { target c++11 } } ++// { dg-require-filesystem-ts "" } ++ ++#include ++#include ++#include ++ ++std::size_t bytes_allocated = 0; ++ ++void* operator new(std::size_t n) ++{ ++ bytes_allocated += n; ++ return std::malloc(n); ++} ++ ++void operator delete(void* p) noexcept { std::free(p); } ++#if __cpp_sized_deallocation ++void operator delete(void* p, std::size_t) noexcept { std::free(p); } ++#endif ++ ++void ++test01() ++{ ++ std::string s0; ++ std::string s1 = "/"; ++ std::string s2 = "filename"; ++ std::string s3 = "C:"; ++ std::string s4 = "\\"; ++ ++ using std::experimental::filesystem::path; ++ ++ bytes_allocated = 0; ++ path p0 = std::move(s0); ++ VERIFY( bytes_allocated == 0 ); ++ path p1 = std::move(s1); ++ VERIFY( bytes_allocated == 0 ); ++ path p2 = std::move(s2); ++ VERIFY( bytes_allocated == 0 ); ++ path p3 = std::move(s3); ++ VERIFY( bytes_allocated == 0 ); ++ path p4 = std::move(s4); ++ VERIFY( bytes_allocated == 0 ); ++} ++ ++int ++main() ++{ ++ test01(); ++} +Index: libstdc++-v3/testsuite/experimental/filesystem/path/construct/80762.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/experimental/filesystem/path/construct/80762.cc (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/testsuite/experimental/filesystem/path/construct/80762.cc (.../branches/gcc-8-branch) +@@ -22,8 +22,18 @@ + + using std::experimental::filesystem::path; + ++// PR libstdc++/80762.cc + static_assert( !std::is_constructible::value, "" ); + static_assert( !std::is_constructible::value, "" ); + static_assert( !std::is_constructible::value, "" ); + static_assert( !std::is_constructible::value, "" ); + static_assert( !std::is_constructible::value, "" ); ++ ++// PR libstdc++/90454.cc ++static_assert( !std::is_constructible::value, "" ); ++static_assert( !std::is_constructible::value, "" ); ++static_assert( !std::is_constructible::value, "" ); ++static_assert( !std::is_constructible::value, "" ); ++static_assert( !std::is_constructible::value, "" ); ++static_assert( !std::is_constructible::value, "" ); ++static_assert( !std::is_constructible::value, "" ); +Index: libstdc++-v3/testsuite/experimental/names.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/experimental/names.cc (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/testsuite/experimental/names.cc (.../branches/gcc-8-branch) +@@ -0,0 +1,62 @@ ++// Copyright (C) 2017-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 } } ++ ++// Define macros for some common variables names that we must not use for ++// naming variables, parameters etc. in the library. ++ ++#include "../17_intro/names.cc" ++// Filesystem ++#if __has_include() ++# include ++#endif ++ ++#if __cplusplus >= 201402L ++ ++// Library Fundamentals ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#endif // C++14 +Index: libstdc++-v3/testsuite/17_intro/names.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/17_intro/names.cc (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/testsuite/17_intro/names.cc (.../branches/gcc-8-branch) +@@ -19,7 +19,6 @@ + + // Define macros for some common variables names that we must not use for + // naming variables, parameters etc. in the library. +-#define tmp ( + #define A ( + #define B ( + #define C ( +@@ -99,6 +98,82 @@ + #define y ( + #define z ( + ++#define tmp ( ++ ++#if __cplusplus < 201103L ++#define uses_allocator ( ++#endif ++ ++#if __cplusplus < 201703L ++// defines to_chars_result::ptr and to_chars_result::ec ++#define ec ( ++#define ptr ( ++#endif ++ ++// Common template parameter names ++#define OutputIterator OutputIterator is not a reserved name ++#define InputIterator InputIterator is not a reserved name ++#define ForwardIterator ForwardIterator is not a reserved name ++#define BidirectionalIterator BidirectionalIterator is not a reserved name ++#define RandomAccessIterator RandomAccessIterator is not a reserved name ++#define RandomAccessOutputIterator RandomAccessOutputIterator is not a reserved name ++#define RAIter RAIter is not a reserved name ++#define FwdIter FwdIter is not a reserved name ++#define OutIter OutIter is not a reserved name ++#define InIter InIter is not a reserved name ++ ++#define Alloc Alloc is not a reserved name ++#define BinaryFunction1 BinaryFunction1 is not a reserved name ++#define BinaryFunction2 BinaryFunction2 is not a reserved name ++#define Char Char is not a reserved name ++#define CharT CharT is not a reserved name ++#define Cmp Cmp is not a reserved name ++#define Compare Compare is not a reserved name ++#define Const_Iterator Const_Iterator is not a reserved name ++#define Const_Key_Reference Const_Key_Reference is not a reserved name ++#define Const_Node_Iter Const_Node_Iter is not a reserved name ++#define Const_Pointer Const_Pointer is not a reserved name ++#define Const_Reference Const_Reference is not a reserved name ++#define Data Data is not a reserved name ++#define DiffType DiffType is not a reserved name ++#define Eq Eq is not a reserved name ++#define ExecPolicy ExecPolicy is not a reserved name ++#define Expected Expected is not a reserved name ++#define External_Load_Access External_Load_Access is not a reserved name ++#define External_Size_Access External_Size_Access is not a reserved name ++#define Fn Fn is not a reserved name ++#define Function Function is not a reserved name ++#define Functor Functor is not a reserved name ++#define Hash Hash is not a reserved name ++#define H1 H1 is not a reserved name ++#define H2 H2 is not a reserved name ++#define Head Head is not a reserved name ++#define It It is not a reserved name ++#define Iter Iter is not a reserved name ++#define Iterator Iterator is not a reserved name ++#define Key Key is not a reserved name ++#define Mapped Mapped is not a reserved name ++#define Node Node is not a reserved name ++#define Node_iter Node_iter is not a reserved name ++#define Node_ptr Node_ptr is not a reserved name ++#define Overflow Overflow is not a reserved name ++#define Pointer Pointer is not a reserved name ++#define Policy Policy is not a reserved name ++#define Pred Pred is not a reserved name ++#define Ptr Ptr is not a reserved name ++#define Reference Reference is not a reserved name ++#define Seq Seq is not a reserved name ++#define Seq_RAIter Seq_RAIter is not a reserved name ++#define Series Series is not a reserved name ++#define Set Set is not a reserved name ++#define String String is not a reserved name ++#define Tp Tp is not a reserved name ++#define Traits Traits is not a reserved name ++#define Type Type is not a reserved name ++#define Value Value is not a reserved name ++#define ValueT ValueT is not a reserved name ++#define ValueType ValueType is not a reserved name ++ + #ifdef _AIX + // See https://gcc.gnu.org/ml/libstdc++/2017-03/msg00015.html + #undef f +@@ -116,4 +191,9 @@ + #undef y + #endif + ++#ifdef __sun__ ++// See https://gcc.gnu.org/ml/libstdc++/2019-05/msg00175.html ++#undef ptr ++#endif ++ + #include +Index: libstdc++-v3/testsuite/util/thread/all.h +=================================================================== +--- a/src/libstdc++-v3/testsuite/util/thread/all.h (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/testsuite/util/thread/all.h (.../branches/gcc-8-branch) +@@ -25,6 +25,7 @@ + #include + #include + #include ++#include + + // C++11 only. + namespace __gnu_test +@@ -39,7 +40,12 @@ + + // Remove possible pointer type. + typedef typename test_type::native_handle_type native_handle; +- typedef typename std::remove_pointer::type native_type; ++ // For std::thread native_handle_type is the type of its data member, ++ // for other types it's a pointer to the type of the data member. ++ typedef typename std::conditional< ++ std::is_same::value, ++ native_handle, ++ typename std::remove_pointer::type>::type native_type; + + int st = sizeof(test_type); + int snt = sizeof(native_type); +Index: libstdc++-v3/testsuite/util/testsuite_hooks.h +=================================================================== +--- a/src/libstdc++-v3/testsuite/util/testsuite_hooks.h (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/testsuite/util/testsuite_hooks.h (.../branches/gcc-8-branch) +@@ -46,18 +46,25 @@ + #include + #include + #include ++#include + + #ifdef _GLIBCXX_HAVE_SYS_STAT_H + #include + #endif + ++#ifdef stderr ++# define _VERIFY_PRINT(S, F, L, P, C) __builtin_fprintf(stderr, S, F, L, P, C) ++#else ++# define _VERIFY_PRINT(S, F, L, P, C) __builtin_printf(S, F, L, P, C) ++#endif ++ + #define VERIFY(fn) \ + do \ + { \ + if (! (fn)) \ + { \ +- __builtin_printf("%s:%d: %s: Assertion '%s' failed.\n", \ +- __FILE__, __LINE__, __PRETTY_FUNCTION__, #fn); \ ++ _VERIFY_PRINT("%s:%d: %s: Assertion '%s' failed.\n", \ ++ __FILE__, __LINE__, __PRETTY_FUNCTION__, #fn); \ + __builtin_abort(); \ + } \ + } while (false) +Index: libstdc++-v3/testsuite/20_util/scoped_allocator/69293_neg.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/20_util/scoped_allocator/69293_neg.cc (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/testsuite/20_util/scoped_allocator/69293_neg.cc (.../branches/gcc-8-branch) +@@ -46,5 +46,5 @@ + scoped_alloc sa; + auto p = sa.allocate(1); + sa.construct(p); // this is required to be ill-formed +- // { dg-error "static assertion failed" "" { target *-*-* } 90 } ++ // { dg-error "failed: .* uses_allocator is true" "" { target *-*-* } 0 } + } +Index: libstdc++-v3/testsuite/20_util/scoped_allocator/dr2586.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/20_util/scoped_allocator/dr2586.cc (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/testsuite/20_util/scoped_allocator/dr2586.cc (.../branches/gcc-8-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-do compile { target c++11 } } ++ ++#include ++#include ++ ++// DR 2586. Wrong value category used in scoped_allocator_adaptor::construct() ++ ++struct X { ++ using allocator_type = std::allocator; ++ X(std::allocator_arg_t, allocator_type&&) { } ++ X(const allocator_type&) { } ++}; ++ ++int main() { ++ std::scoped_allocator_adaptor> sa; ++ sa.construct(sa.allocate(1)); ++} +Index: libstdc++-v3/testsuite/20_util/hash/89629.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/20_util/hash/89629.cc (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/testsuite/20_util/hash/89629.cc (.../branches/gcc-8-branch) +@@ -0,0 +1,43 @@ ++// 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 { lp64 || llp64 } } } ++// { dg-require-effective-target c++11 } ++// { dg-require-effective-target run_expensive_tests } ++ ++#include ++#include ++ ++void ++test01() ++{ ++ const std::size_t big = std::size_t(1) << 31; ++ std::string s; ++ try { ++ s.resize(big, 'a'); ++ } catch (const std::bad_alloc&) { ++ return; // try to avoid a FAIL if memory allocation fails ++ } ++ // PR libstdc++/89629 ++ (void) std::hash{}(s); ++} ++ ++int ++main() ++{ ++ test01(); ++} +Index: libstdc++-v3/testsuite/20_util/any/misc/any_cast.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/20_util/any/misc/any_cast.cc (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/testsuite/20_util/any/misc/any_cast.cc (.../branches/gcc-8-branch) +@@ -20,6 +20,7 @@ + + #include + #include ++#include + #include + #include + +@@ -121,6 +122,54 @@ + VERIFY( p == nullptr ); + } + ++void test06() ++{ ++ // The contained value of a std::any is always an object type, ++ // but std::any_cast does not forbid checking for function types. ++ ++ any a(1); ++ void (*p1)() = any_cast(&a); ++ VERIFY( p1 == nullptr ); ++ int (*p2)(int) = any_cast(&a); ++ VERIFY( p2 == nullptr ); ++ int (*p3)() = any_cast(&std::as_const(a)); ++ VERIFY( p3 == nullptr ); ++ ++ try { ++ any_cast(a); ++ VERIFY( false ); ++ } catch (const std::bad_any_cast&) { ++ } ++ ++ try { ++ any_cast(std::move(a)); ++ VERIFY( false ); ++ } catch (const std::bad_any_cast&) { ++ } ++ ++ try { ++ any_cast(std::as_const(a)); ++ VERIFY( false ); ++ } catch (const std::bad_any_cast&) { ++ } ++} ++ ++void test07() ++{ ++ int arr[3]; ++ any a(arr); ++ VERIFY( a.type() == typeid(int*) ); // contained value is decayed ++ ++ int (*p1)[3] = any_cast(&a); ++ VERIFY( a.type() != typeid(int[3]) ); // so any_cast should return nullptr ++ VERIFY( p1 == nullptr ); ++ int (*p2)[] = any_cast(&a); ++ VERIFY( a.type() != typeid(int[]) ); // so any_cast should return nullptr ++ VERIFY( p2 == nullptr ); ++ const int (*p3)[] = any_cast(&std::as_const(a)); ++ VERIFY( p3 == nullptr ); ++} ++ + int main() + { + test01(); +@@ -128,4 +177,6 @@ + test03(); + test04(); + test05(); ++ test06(); ++ test07(); + } +Index: libstdc++-v3/testsuite/20_util/unique_ptr/cons/cv_qual_neg.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/20_util/unique_ptr/cons/cv_qual_neg.cc (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/testsuite/20_util/unique_ptr/cons/cv_qual_neg.cc (.../branches/gcc-8-branch) +@@ -39,7 +39,7 @@ + std::unique_ptr cA3(p); // { dg-error "no matching function" } + std::unique_ptr vA3(p); // { dg-error "no matching function" } + std::unique_ptr cvA3(p); // { dg-error "no matching function" } +- // { dg-error "no type" "" { target *-*-* } 473 } ++ // { dg-prune-output "no type" } + } + + template +Index: libstdc++-v3/testsuite/20_util/unique_ptr/assign/48635_neg.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/20_util/unique_ptr/assign/48635_neg.cc (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/testsuite/20_util/unique_ptr/assign/48635_neg.cc (.../branches/gcc-8-branch) +@@ -42,10 +42,9 @@ + std::unique_ptr ud(nullptr, d); + ub = std::move(ud); // { dg-error "no match" } + ub2 = ud; // { dg-error "no match" } +-// { dg-error "no type" "" { target *-*-* } 307 } + + std::unique_ptr uba(nullptr, b); + std::unique_ptr uda(nullptr, d); + uba = std::move(uda); // { dg-error "no match" } +-// { dg-error "no type" "" { target *-*-* } 566 } + } ++// { dg-prune-output "no type" } +Index: libstdc++-v3/testsuite/20_util/unique_ptr/assign/91308.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/20_util/unique_ptr/assign/91308.cc (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/testsuite/20_util/unique_ptr/assign/91308.cc (.../branches/gcc-8-branch) +@@ -0,0 +1,46 @@ ++// 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 D1 ++{ ++ void operator()(int* p) const noexcept { } ++}; ++ ++struct D2 : D1 ++{ ++ D2& operator=(D1&&) noexcept { return *this; } ++}; ++ ++void ++test01() ++{ ++ std::unique_ptr d1; ++ std::unique_ptr d2; ++ d2 = std::move(d1); ++} ++ ++void ++test02() ++{ ++ std::unique_ptr d1; ++ std::unique_ptr d2; ++ d2 = std::move(d1); ++} +Index: libstdc++-v3/testsuite/20_util/variant/compile.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/20_util/variant/compile.cc (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/testsuite/20_util/variant/compile.cc (.../branches/gcc-8-branch) +@@ -129,10 +129,15 @@ + static_assert(noexcept(variant(DefaultNoexcept{})), ""); + } + ++struct none { none() = delete; }; ++struct any { template any(T&&) {} }; ++ + void in_place_index_ctor() + { + variant a(in_place_index<0>, "a"); + variant b(in_place_index<1>, {'a'}); ++ ++ static_assert(!is_constructible_v, std::in_place_index_t<0>>, "PR libstdc++/90165"); + } + + void in_place_type_ctor() +@@ -140,6 +145,7 @@ + variant a(in_place_type, "a"); + variant b(in_place_type, {'a'}); + static_assert(!is_constructible_v, in_place_type_t, const char*>, ""); ++ static_assert(!is_constructible_v, std::in_place_type_t>, "PR libstdc++/90165"); + } + + void dtor() +Index: libstdc++-v3/testsuite/20_util/tuple/cons/allocators.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/20_util/tuple/cons/allocators.cc (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/testsuite/20_util/tuple/cons/allocators.cc (.../branches/gcc-8-branch) +@@ -181,9 +181,23 @@ + test_type empty = make_tuple(); + } + ++void test03() ++{ ++ struct dr2586 ++ { ++ using allocator_type = std::allocator; ++ dr2586(std::allocator_arg_t, allocator_type&&) { } ++ dr2586(const allocator_type&) { } ++ }; ++ ++ const dr2586::allocator_type a; ++ std::tuple t{std::allocator_arg, a}; ++} ++ + int main() + { + test01(); + test02(); ++ test03(); + return 0; + } +Index: libstdc++-v3/testsuite/20_util/is_trivially_default_constructible/value.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/20_util/is_trivially_default_constructible/value.cc (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/testsuite/20_util/is_trivially_default_constructible/value.cc (.../branches/gcc-8-branch) +@@ -62,4 +62,13 @@ + construct::Nontrivial>(false), ""); + static_assert(test_category(true), ""); ++ ++ static_assert(test_category(false), "PR c++/90532"); ++ struct A { }; ++ static_assert(test_category(false), "PR c++/90532"); ++ struct B { B() { } }; ++ static_assert(test_category(false), "PR c++/90532"); + } +Index: libstdc++-v3/testsuite/20_util/uses_allocator/cons_neg.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/20_util/uses_allocator/cons_neg.cc (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/testsuite/20_util/uses_allocator/cons_neg.cc (.../branches/gcc-8-branch) +@@ -43,4 +43,4 @@ + + tuple t(allocator_arg, a, 1); + } +-// { dg-error "static assertion failed" "" { target *-*-* } 90 } ++// { dg-error "failed: .* uses_allocator is true" "" { target *-*-* } 0 } +Index: libstdc++-v3/testsuite/20_util/uses_allocator/69293_neg.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/20_util/uses_allocator/69293_neg.cc (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/testsuite/20_util/uses_allocator/69293_neg.cc (.../branches/gcc-8-branch) +@@ -44,5 +44,5 @@ + { + alloc_type a; + std::tuple t(std::allocator_arg, a); // this is required to be ill-formed +- // { dg-error "static assertion failed" "" { target *-*-* } 90 } ++ // { dg-error "failed: .* uses_allocator is true" "" { target *-*-* } 0 } + } +Index: libstdc++-v3/testsuite/20_util/is_default_constructible/value.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/20_util/is_default_constructible/value.cc (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/testsuite/20_util/is_default_constructible/value.cc (.../branches/gcc-8-branch) +@@ -138,3 +138,13 @@ + static_assert(!std::is_default_constructible::value, "Error"); + static_assert(!std::is_default_constructible::value, "Error"); + static_assert(!std::is_default_constructible::value, "Error"); ++ ++static_assert(!std::is_default_constructible::value, "PR c++/90532"); ++static_assert(!std::is_default_constructible::value, "PR c++/90532"); ++static_assert(!std::is_default_constructible::value, "PR c++/90532"); ++static_assert(!std::is_default_constructible::value, "PR c++/90532"); ++static_assert(!std::is_default_constructible::value, "PR c++/90532"); ++static_assert(!std::is_default_constructible::value, "PR c++/90532"); ++static_assert(!std::is_default_constructible::value, "PR c++/90532"); ++static_assert(!std::is_default_constructible::value, "PR c++/90532"); ++static_assert(!std::is_default_constructible::value, "PR c++/90532"); +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_8_3_0_release) ++++ b/src/libstdc++-v3/testsuite/20_util/is_nothrow_invocable/value.cc (.../branches/gcc-8-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/optional/constexpr/observers/4.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/20_util/optional/constexpr/observers/4.cc (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/testsuite/20_util/optional/constexpr/observers/4.cc (.../branches/gcc-8-branch) +@@ -25,10 +25,42 @@ + int i; + }; + +-int main() ++void test01() + { + constexpr std::optional o { value_type { 51 } }; + constexpr value_type fallback { 3 }; +- static_assert( o.value_or(fallback).i == 51, "" ); +- static_assert( o.value_or(fallback).i == (*o).i, "" ); ++ static_assert( o.value_or(fallback).i == 51 ); ++ static_assert( o.value_or(fallback).i == (*o).i ); + } ++ ++void test02() ++{ ++ constexpr std::optional o; ++ constexpr value_type fallback { 3 }; ++ static_assert( o.value_or(fallback).i == 3 ); ++} ++ ++template ++ constexpr std::optional ++ make_rvalue(T t) ++ { return std::optional{t}; } ++ ++void test03() ++{ ++ constexpr value_type fallback { 3 }; ++ static_assert( make_rvalue(value_type{51}).value_or(fallback).i == 51 ); ++} ++ ++void test04() ++{ ++ constexpr value_type fallback { 3 }; ++ static_assert( make_rvalue(std::nullopt).value_or(fallback).i == 3 ); ++} ++ ++int main() ++{ ++ test01(); ++ test02(); ++ test03(); ++ test04(); ++} +Index: libstdc++-v3/testsuite/20_util/optional/observers/4.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/20_util/optional/observers/4.cc (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/testsuite/20_util/optional/observers/4.cc (.../branches/gcc-8-branch) +@@ -26,7 +26,7 @@ + int i; + }; + +-int main() ++void test01() + { + std::optional o { value_type { 51 } }; + value_type fallback { 3 }; +@@ -33,3 +33,35 @@ + VERIFY( o.value_or(fallback).i == 51 ); + VERIFY( o.value_or(fallback).i == (*o).i ); + } ++ ++void test02() ++{ ++ std::optional o; ++ value_type fallback { 3 }; ++ VERIFY( o.value_or(fallback).i == 3 ); ++} ++ ++void test03() ++{ ++ std::optional o { value_type { 51 } }; ++ value_type fallback { 3 }; ++ VERIFY( std::move(o).value_or(fallback).i == 51 ); ++ VERIFY( o.has_value() ); ++ VERIFY( std::move(o).value_or(fallback).i == (*o).i ); ++} ++ ++void test04() ++{ ++ std::optional o; ++ value_type fallback { 3 }; ++ VERIFY( std::move(o).value_or(fallback).i == 3 ); ++ VERIFY( !o.has_value() ); ++} ++ ++int main() ++{ ++ test01(); ++ test02(); ++ test03(); ++ test04(); ++} +Index: libstdc++-v3/testsuite/20_util/common_type/requirements/sfinae_friendly_1.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/20_util/common_type/requirements/sfinae_friendly_1.cc (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/testsuite/20_util/common_type/requirements/sfinae_friendly_1.cc (.../branches/gcc-8-branch) +@@ -159,7 +159,10 @@ + }; + } + ++static_assert(is_type, int>(), ""); ++static_assert(is_type, int>(), ""); + static_assert(is_type, int>(), ""); ++static_assert(is_type, int>(), ""); + static_assert(is_type, ScEn>(), ""); + static_assert(is_type, UnscEn>(), ""); + static_assert(is_type, int>(), ""); +@@ -180,6 +183,8 @@ + const volatile int*>(), ""); + static_assert(is_type, + const volatile void*>(), ""); ++static_assert(is_type, void>(), ""); ++static_assert(is_type, void>(), ""); + static_assert(is_type, void>(), ""); + static_assert(is_type, void>(), ""); + static_assert(is_type, int>(), ""); +@@ -316,6 +321,14 @@ + static_assert(!has_type, + std::initializer_list>>(), ""); + ++// PR libstdc++/89102 ++static_assert(!has_type>(), ""); ++static_assert(!has_type>(), ""); ++static_assert(!has_type>(), ""); ++static_assert(!has_type>(), ""); ++static_assert(!has_type>(), ""); ++static_assert(!has_type>(), ""); ++ + void test(int i) + { + auto local_lmd1 = [=](int, double) { return i + i; }; +Index: libstdc++-v3/testsuite/20_util/common_type/requirements/sfinae_friendly_2.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/20_util/common_type/requirements/sfinae_friendly_2.cc (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/testsuite/20_util/common_type/requirements/sfinae_friendly_2.cc (.../branches/gcc-8-branch) +@@ -25,7 +25,7 @@ + constexpr + std::array::type, + sizeof...(Args)> +-make_array(Args&&... args) // { dg-error "invalid use" } ++make_array(Args&&... args) // { dg-error "no type.*common_type<>" } + { + typedef typename std::common_type::type CT; + return std::array{static_cast +Index: libstdc++-v3/testsuite/20_util/common_type/requirements/explicit_instantiation.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/20_util/common_type/requirements/explicit_instantiation.cc (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/testsuite/20_util/common_type/requirements/explicit_instantiation.cc (.../branches/gcc-8-branch) +@@ -30,6 +30,7 @@ + typedef void test_type5; + typedef const void test_type6; + ++ template struct common_type<>; + template struct common_type; + template struct common_type; + template struct common_type; +Index: libstdc++-v3/testsuite/20_util/is_trivially_constructible/value.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/20_util/is_trivially_constructible/value.cc (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/testsuite/20_util/is_trivially_constructible/value.cc (.../branches/gcc-8-branch) +@@ -180,4 +180,6 @@ + MoveOnly, const MoveOnly&>(false), ""); + static_assert(test_property(false), ""); ++ static_assert(test_property(false), "PR c++/90532"); + } +Index: libstdc++-v3/testsuite/20_util/is_constructible/value.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/20_util/is_constructible/value.cc (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/testsuite/20_util/is_constructible/value.cc (.../branches/gcc-8-branch) +@@ -35,4 +35,11 @@ + static_assert(test_property(false), ""); + static_assert(test_property(false), ""); ++ static_assert(test_property(false), "PR c++/90532"); ++ static_assert(test_property(false), "PR c++/90532"); ++ static_assert(test_property(false), "PR c++/90532"); ++ static_assert(test_property(false), "PR c++/90532"); + } +Index: libstdc++-v3/config/os/bsd/darwin/ppc-extra.ver +=================================================================== +--- a/src/libstdc++-v3/config/os/bsd/darwin/ppc-extra.ver (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/config/os/bsd/darwin/ppc-extra.ver (.../branches/gcc-8-branch) +@@ -1 +1,22 @@ + __eprintf; ++# 3.4 ++ _ZNSt14numeric_limitsIgE*; ++ _ZNSirsERg; ++ _ZNSolsEg; ++ _ZNSt13basic_istreamIwSt11char_traitsIwEErsERg; ++ _ZNSt13basic_ostreamIwSt11char_traitsIwEElsEg; ++ _ZSt14__convert_to_vIgEvPKcRT_RSt12_Ios_IostateRKP*; ++ _ZStlsIg[cw]St11char_traitsI[cw]EERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E; ++ _ZStrsIg[cw]St11char_traitsI[cw]EERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E; ++# 3.4.7 ++ _ZNSi10_M_extractIgEERSiRT_; ++ _ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIgEERS2_RT_; ++ _ZNSo9_M_insertIgEERSoT_; ++ _ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIgEERS2_T_; ++# 3.4.10 ++ _ZNKSt3tr14hashIgEclEg; ++ _ZNKSt4hashIgEclEg; ++# ldbl 1.3 ++ _ZT[IS]g; ++ _ZT[IS]Pg; ++ _ZT[IS]PKg; +Index: libstdc++-v3/acinclude.m4 +=================================================================== +--- a/src/libstdc++-v3/acinclude.m4 (.../tags/gcc_8_3_0_release) ++++ b/src/libstdc++-v3/acinclude.m4 (.../branches/gcc-8-branch) +@@ -642,28 +642,27 @@ + dnl + AC_DEFUN([GLIBCXX_CONFIGURE_DOCBOOK], [ + +-AC_MSG_CHECKING([for docbook stylesheets for documentation creation]) +-glibcxx_stylesheets=no +-if test x${XSLTPROC} = xyes && echo '' | xsltproc --noout --nonet --xinclude http://docbook.sourceforge.net/release/xsl-ns/current/xhtml-1_1/docbook.xsl - 2>/dev/null; then +- glibcxx_stylesheets=yes +-fi +-AC_MSG_RESULT($glibcxx_stylesheets) ++glibcxx_docbook_url=http://docbook.sourceforge.net/release/xsl-ns/current/ + + AC_MSG_CHECKING([for local stylesheet directory]) + glibcxx_local_stylesheets=no +-if test x"$glibcxx_stylesheets" = x"yes"; then +- if test -d /usr/share/sgml/docbook/xsl-ns-stylesheets; then +- glibcxx_local_stylesheets=yes +- XSL_STYLE_DIR=/usr/share/sgml/docbook/xsl-ns-stylesheets +- fi +- if test -d /usr/share/xml/docbook/stylesheet/docbook-xsl-ns; then +- glibcxx_local_stylesheets=yes +- XSL_STYLE_DIR=/usr/share/xml/docbook/stylesheet/docbook-xsl-ns +- fi +- if test -d /usr/share/xml/docbook/stylesheet/nwalsh5/current; then +- glibcxx_local_stylesheets=yes +- XSL_STYLE_DIR=/usr/share/xml/docbook/stylesheet/nwalsh5/current +- fi ++if test x${XMLCATALOG} = xyes && xsl_style_dir=`xmlcatalog "" $glibcxx_docbook_url 2>/dev/null` ++then ++ XSL_STYLE_DIR=`echo $xsl_style_dir | sed -n 's;^file://;;p'` ++ glibcxx_local_stylesheets=yes ++else ++ for dir in \ ++ /usr/share/sgml/docbook/xsl-ns-stylesheets \ ++ /usr/share/xml/docbook/stylesheet/docbook-xsl-ns \ ++ /usr/share/xml/docbook/stylesheet/nwalsh5/current \ ++ /usr/share/xml/docbook/stylesheet/nwalsh/current ++ do ++ if test -d $dir; then ++ glibcxx_local_stylesheets=yes ++ XSL_STYLE_DIR=$dir ++ break ++ fi ++ done + fi + AC_MSG_RESULT($glibcxx_local_stylesheets) + +@@ -670,6 +669,16 @@ + if test x"$glibcxx_local_stylesheets" = x"yes"; then + AC_SUBST(XSL_STYLE_DIR) + AC_MSG_NOTICE($XSL_STYLE_DIR) ++ ++ AC_MSG_CHECKING([for docbook stylesheets for documentation creation]) ++ glibcxx_stylesheets=no ++ if test x${XMLCATALOG} = xno || xmlcatalog "" $glibcxx_docbook_url/xhtml/docbook.xsl >/dev/null 2>&1; then ++ if test x${XSLTPROC} = xyes && echo '<title/>' | xsltproc --noout --nonet --xinclude $glibcxx_docbook_url/xhtml/docbook.xsl - 2>/dev/null; then ++ glibcxx_stylesheets=yes ++ fi ++ fi ++ AC_MSG_RESULT($glibcxx_stylesheets) ++ + else + glibcxx_stylesheets=no + fi +Index: include/ChangeLog +=================================================================== +--- a/src/include/ChangeLog (.../tags/gcc_8_3_0_release) ++++ b/src/include/ChangeLog (.../branches/gcc-8-branch) +@@ -1,3 +1,11 @@ ++2019-04-08 Claudiu Zissulescu <claziss@synopsys.com> ++ ++ backport mainline ++ Vineet Gupta <vgupta@synopsys.com> ++ PR 89877 ++ * longlong.h [__arc__] (add_ssaaaa): Add cc clobber. ++ (sub_ddmmss): Likewise. ++ + 2019-02-22 Release Manager + + * GCC 8.3.0 released. +Index: include/longlong.h +=================================================================== +--- a/src/include/longlong.h (.../tags/gcc_8_3_0_release) ++++ b/src/include/longlong.h (.../branches/gcc-8-branch) +@@ -199,7 +199,8 @@ + : "%r" ((USItype) (ah)), \ + "rICal" ((USItype) (bh)), \ + "%r" ((USItype) (al)), \ +- "rICal" ((USItype) (bl))) ++ "rICal" ((USItype) (bl)) \ ++ : "cc") + #define sub_ddmmss(sh, sl, ah, al, bh, bl) \ + __asm__ ("sub.f %1, %4, %5\n\tsbc %0, %2, %3" \ + : "=r" ((USItype) (sh)), \ +@@ -207,7 +208,8 @@ + : "r" ((USItype) (ah)), \ + "rICal" ((USItype) (bh)), \ + "r" ((USItype) (al)), \ +- "rICal" ((USItype) (bl))) ++ "rICal" ((USItype) (bl)) \ ++ : "cc") + + #define __umulsidi3(u,v) ((UDItype)(USItype)u*(USItype)v) + #ifdef __ARC_NORM__ +Index: libiberty/simple-object-elf.c +=================================================================== +--- a/src/libiberty/simple-object-elf.c (.../tags/gcc_8_3_0_release) ++++ b/src/libiberty/simple-object-elf.c (.../branches/gcc-8-branch) +@@ -549,6 +549,14 @@ + return NULL; + } + ++ if (eor->shstrndx == 0) ++ { ++ *errmsg = "invalid ELF shstrndx == 0"; ++ *err = 0; ++ XDELETE (eor); ++ return NULL; ++ } ++ + return (void *) eor; + } + +Index: libiberty/ChangeLog +=================================================================== +--- a/src/libiberty/ChangeLog (.../tags/gcc_8_3_0_release) ++++ b/src/libiberty/ChangeLog (.../branches/gcc-8-branch) +@@ -1,3 +1,12 @@ ++2019-07-25 Richard Biener <rguenther@suse.de> ++ ++ PR lto/90924 ++ Backport from mainline ++ 2019-07-12 Ren Kimura <rkx1209dev@gmail.com> ++ ++ * simple-object-elf.c (simple_object_elf_match): Check zero value ++ shstrndx. ++ + 2019-02-22 Release Manager + + * GCC 8.3.0 released. +Index: contrib/ChangeLog +=================================================================== +--- a/src/contrib/ChangeLog (.../tags/gcc_8_3_0_release) ++++ b/src/contrib/ChangeLog (.../branches/gcc-8-branch) +@@ -1,3 +1,7 @@ ++2019-08-16 Uros Bizjak <ubizjak@gmail.com> ++ ++ * test_summary: Do not escape "=". ++ + 2019-02-22 Release Manager + + * GCC 8.3.0 released. +Index: contrib/test_summary +=================================================================== +--- a/src/contrib/test_summary (.../tags/gcc_8_3_0_release) ++++ b/src/contrib/test_summary (.../branches/gcc-8-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: libatomic/ChangeLog +=================================================================== +--- a/src/libatomic/ChangeLog (.../tags/gcc_8_3_0_release) ++++ b/src/libatomic/ChangeLog (.../branches/gcc-8-branch) +@@ -1,3 +1,18 @@ ++2019-03-20 Florian Weimer <fweimer@redhat.com> ++ ++ PR libgcc/60790 ++ x86: Do not assume ELF constructors run before IFUNC resolvers. ++ * config/x86/host-config.h (libat_feat1_ecx, libat_feat1_edx): ++ Remove declarations. ++ (__libat_feat1, __libat_feat1_init): Declare. ++ (FEAT1_REGISTER): Define. ++ (load_feat1): New function. ++ (IFUNC_COND_1): Adjust. ++ * config/x86/init.c (libat_feat1_ecx, libat_feat1_edx) ++ (init_cpuid): Remove definitions. ++ (__libat_feat1): New variable. ++ (__libat_feat1_init): New function. ++ + 2019-02-22 Release Manager + + * GCC 8.3.0 released. +Index: libatomic/config/x86/init.c +=================================================================== +--- a/src/libatomic/config/x86/init.c (.../tags/gcc_8_3_0_release) ++++ b/src/libatomic/config/x86/init.c (.../branches/gcc-8-branch) +@@ -26,13 +26,17 @@ + + #if HAVE_IFUNC + +-unsigned int libat_feat1_ecx, libat_feat1_edx; ++unsigned int __libat_feat1; + +-static void __attribute__((constructor)) +-init_cpuid (void) ++unsigned int ++__libat_feat1_init (void) + { +- unsigned int eax, ebx; +- __get_cpuid (1, &eax, &ebx, &libat_feat1_ecx, &libat_feat1_edx); ++ unsigned int eax, ebx, ecx, edx; ++ FEAT1_REGISTER = 0; ++ __get_cpuid (1, &eax, &ebx, &ecx, &edx); ++ /* See the load in load_feat1. */ ++ __atomic_store_n (&__libat_feat1, FEAT1_REGISTER, __ATOMIC_RELAXED); ++ return FEAT1_REGISTER; + } + + #endif /* HAVE_IFUNC */ +Index: libatomic/config/x86/host-config.h +=================================================================== +--- a/src/libatomic/config/x86/host-config.h (.../tags/gcc_8_3_0_release) ++++ b/src/libatomic/config/x86/host-config.h (.../branches/gcc-8-branch) +@@ -25,13 +25,39 @@ + #if HAVE_IFUNC + #include <cpuid.h> + +-extern unsigned int libat_feat1_ecx HIDDEN; +-extern unsigned int libat_feat1_edx HIDDEN; ++#ifdef __x86_64__ ++# define FEAT1_REGISTER ecx ++#else ++# define FEAT1_REGISTER edx ++#endif + ++/* Value of the CPUID feature register FEAT1_REGISTER for the cmpxchg ++ bit for IFUNC_COND1 below. */ ++extern unsigned int __libat_feat1 HIDDEN; ++ ++/* Initialize libat_feat1 and return its value. */ ++unsigned int __libat_feat1_init (void) HIDDEN; ++ ++/* Return the value of the relevant feature register for the relevant ++ cmpxchg bit, or 0 if there is no CPUID support. */ ++static inline unsigned int ++__attribute__ ((const)) ++load_feat1 (void) ++{ ++ /* See the store in __libat_feat1_init. */ ++ unsigned int feat1 = __atomic_load_n (&__libat_feat1, __ATOMIC_RELAXED); ++ if (feat1 == 0) ++ /* Assume that initialization has not happened yet. This may get ++ called repeatedly if the CPU does not have any feature bits at ++ all. */ ++ feat1 = __libat_feat1_init (); ++ return feat1; ++} ++ + #ifdef __x86_64__ +-# define IFUNC_COND_1 (libat_feat1_ecx & bit_CMPXCHG16B) ++# define IFUNC_COND_1 (load_feat1 () & bit_CMPXCHG16B) + #else +-# define IFUNC_COND_1 (libat_feat1_edx & bit_CMPXCHG8B) ++# define IFUNC_COND_1 (load_feat1 () & bit_CMPXCHG8B) + #endif + + #ifdef __x86_64__ +Index: libgcc/config.host +=================================================================== +--- a/src/libgcc/config.host (.../tags/gcc_8_3_0_release) ++++ b/src/libgcc/config.host (.../branches/gcc-8-branch) +@@ -1018,12 +1018,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_8_3_0_release) ++++ b/src/libgcc/ChangeLog (.../branches/gcc-8-branch) +@@ -1,3 +1,85 @@ ++2019-11-17 John David Anglin <danglin@gcc.gnu.org> ++ ++ * config/pa/linux-atomic.c (__kernel_cmpxchg): Change argument 1 to ++ volatile void *. Remove trap check. ++ (__kernel_cmpxchg2): Likewise. ++ (FETCH_AND_OP_2): Adjust operand types. ++ (OP_AND_FETCH_2): Likewise. ++ (FETCH_AND_OP_WORD): Likewise. ++ (OP_AND_FETCH_WORD): Likewise. ++ (COMPARE_AND_SWAP_2): Likewise. ++ (__sync_val_compare_and_swap_4): Likewise. ++ (__sync_bool_compare_and_swap_4): Likewise. ++ (SYNC_LOCK_TEST_AND_SET_2): Likewise. ++ (__sync_lock_test_and_set_4): Likewise. ++ (SYNC_LOCK_RELEASE_1): Likewise. Use __kernel_cmpxchg2 for release. ++ (__sync_lock_release_4): Adjust operand types. Use __kernel_cmpxchg ++ for release. ++ (__sync_lock_release_8): Remove. ++ ++2019-11-04 John David Anglin <danglin@gcc.gnu.org> ++ ++ Backport from mainline ++ 2019-10-12 John David Anglin <danglin@gcc.gnu.org> ++ ++ * 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-11-04 John David Anglin <danglin@gcc.gnu.org> ++ ++ Backport from mainline ++ 2019-10-15 John David Anglin <danglin@gcc.gnu.org> ++ ++ * 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-31 Iain Sandoe <iain@sandoe.co.uk> ++ ++ Backport from mainline. ++ 2019-07-03 Iain Sandoe <iain@sandoe.co.uk> ++ ++ * 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-31 Iain Sandoe <iain@sandoe.co.uk> ++ ++ Backport from mainline. ++ 2019-06-25 Iain Sandoe <iain@sandoe.co.uk> ++ ++ * 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-08-27 Iain Sandoe <iain@sandoe.co.uk> ++ ++ Backport from mainline. ++ 2019-06-06 Iain Sandoe <iain@sandoe.co.uk> ++ ++ * config/rs6000/t-darwin: Ensure that the unwinder is built with ++ altivec enabled. ++ ++2019-08-11 Iain Sandoe <iain@sandoe.co.uk> ++ ++ Backport from mainline. ++ 2019-05-12 Iain Sandoe <iain@sandoe.co.uk> ++ ++ * config/rs6000/darwin-vecsave.S: Set .machine appropriately. ++ + 2019-02-22 Release Manager + + * GCC 8.3.0 released. +Index: libgcc/config/t-darwin +=================================================================== +--- a/src/libgcc/config/t-darwin (.../tags/gcc_8_3_0_release) ++++ b/src/libgcc/config/t-darwin (.../branches/gcc-8-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 +Index: libgcc/config/rs6000/t-darwin +=================================================================== +--- a/src/libgcc/config/rs6000/t-darwin (.../tags/gcc_8_3_0_release) ++++ b/src/libgcc/config/rs6000/t-darwin (.../branches/gcc-8-branch) +@@ -1,23 +1,58 @@ +-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 ++ + LIB2ADDEH += $(srcdir)/config/rs6000/darwin-fallback.c +Index: libgcc/config/rs6000/t-darwin64 +=================================================================== +--- a/src/libgcc/config/rs6000/t-darwin64 (.../tags/gcc_8_3_0_release) ++++ b/src/libgcc/config/rs6000/t-darwin64 (.../branches/gcc-8-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/rs6000/darwin-vecsave.S +=================================================================== +--- a/src/libgcc/config/rs6000/darwin-vecsave.S (.../tags/gcc_8_3_0_release) ++++ b/src/libgcc/config/rs6000/darwin-vecsave.S (.../branches/gcc-8-branch) +@@ -31,8 +31,14 @@ + (4 bytes) to do the operation; for Vector regs, 2 instructions are + required (8 bytes.). */ + ++/* With some assemblers, we need the correct machine directive to get the ++ right CPU type / subtype in the file header. */ ++#if __ppc64__ ++ .machine ppc64 ++#else + .machine ppc7400 +-.text ++#endif ++ .text + .align 2 + + .private_extern saveVEC +Index: libgcc/config/pa/milli64.S +=================================================================== +--- a/src/libgcc/config/pa/milli64.S (.../tags/gcc_8_3_0_release) ++++ b/src/libgcc/config/pa/milli64.S (.../branches/gcc-8-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_8_3_0_release) ++++ b/src/libgcc/config/pa/lib2funcs.S (.../branches/gcc-8-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/linux-atomic.c +=================================================================== +--- a/src/libgcc/config/pa/linux-atomic.c (.../tags/gcc_8_3_0_release) ++++ b/src/libgcc/config/pa/linux-atomic.c (.../branches/gcc-8-branch) +@@ -41,7 +41,7 @@ + + /* Kernel helper for compare-and-exchange a 32-bit value. */ + static inline long +-__kernel_cmpxchg (int *mem, int oldval, int newval) ++__kernel_cmpxchg (volatile void *mem, int oldval, int newval) + { + register unsigned long lws_mem asm("r26") = (unsigned long) (mem); + register int lws_old asm("r25") = oldval; +@@ -54,20 +54,18 @@ + : "i" (LWS_CAS), "r" (lws_mem), "r" (lws_old), "r" (lws_new) + : "r1", "r20", "r22", "r23", "r29", "r31", "memory" + ); +- if (__builtin_expect (lws_errno == -EFAULT || lws_errno == -ENOSYS, 0)) +- __builtin_trap (); + + /* If the kernel LWS call succeeded (lws_errno == 0), lws_ret contains + the old value from memory. If this value is equal to OLDVAL, the + new value was written to memory. If not, return -EBUSY. */ + if (!lws_errno && lws_ret != oldval) +- lws_errno = -EBUSY; ++ return -EBUSY; + + return lws_errno; + } + + static inline long +-__kernel_cmpxchg2 (void *mem, const void *oldval, const void *newval, ++__kernel_cmpxchg2 (volatile void *mem, const void *oldval, const void *newval, + int val_size) + { + register unsigned long lws_mem asm("r26") = (unsigned long) (mem); +@@ -88,9 +86,6 @@ + if (__builtin_expect (lws_ret == 0, 1)) + return 0; + +- if (__builtin_expect (lws_errno == -EFAULT || lws_errno == -ENOSYS, 0)) +- __builtin_trap (); +- + /* If the kernel LWS call fails with no error, return -EBUSY */ + if (__builtin_expect (!lws_errno, 0)) + return -EBUSY; +@@ -108,13 +103,13 @@ + + #define FETCH_AND_OP_2(OP, PFX_OP, INF_OP, TYPE, WIDTH, INDEX) \ + TYPE HIDDEN \ +- __sync_fetch_and_##OP##_##WIDTH (TYPE *ptr, TYPE val) \ ++ __sync_fetch_and_##OP##_##WIDTH (volatile void *ptr, TYPE val) \ + { \ + TYPE tmp, newval; \ + long failure; \ + \ + do { \ +- tmp = __atomic_load_n (ptr, __ATOMIC_RELAXED); \ ++ tmp = __atomic_load_n ((volatile TYPE *)ptr, __ATOMIC_RELAXED); \ + newval = PFX_OP (tmp INF_OP val); \ + failure = __kernel_cmpxchg2 (ptr, &tmp, &newval, INDEX); \ + } while (failure != 0); \ +@@ -122,36 +117,36 @@ + return tmp; \ + } + +-FETCH_AND_OP_2 (add, , +, long long, 8, 3) +-FETCH_AND_OP_2 (sub, , -, long long, 8, 3) +-FETCH_AND_OP_2 (or, , |, long long, 8, 3) +-FETCH_AND_OP_2 (and, , &, long long, 8, 3) +-FETCH_AND_OP_2 (xor, , ^, long long, 8, 3) +-FETCH_AND_OP_2 (nand, ~, &, long long, 8, 3) ++FETCH_AND_OP_2 (add, , +, long long unsigned int, 8, 3) ++FETCH_AND_OP_2 (sub, , -, long long unsigned int, 8, 3) ++FETCH_AND_OP_2 (or, , |, long long unsigned int, 8, 3) ++FETCH_AND_OP_2 (and, , &, long long unsigned int, 8, 3) ++FETCH_AND_OP_2 (xor, , ^, long long unsigned int, 8, 3) ++FETCH_AND_OP_2 (nand, ~, &, long long unsigned int, 8, 3) + +-FETCH_AND_OP_2 (add, , +, short, 2, 1) +-FETCH_AND_OP_2 (sub, , -, short, 2, 1) +-FETCH_AND_OP_2 (or, , |, short, 2, 1) +-FETCH_AND_OP_2 (and, , &, short, 2, 1) +-FETCH_AND_OP_2 (xor, , ^, short, 2, 1) +-FETCH_AND_OP_2 (nand, ~, &, short, 2, 1) ++FETCH_AND_OP_2 (add, , +, short unsigned int, 2, 1) ++FETCH_AND_OP_2 (sub, , -, short unsigned int, 2, 1) ++FETCH_AND_OP_2 (or, , |, short unsigned int, 2, 1) ++FETCH_AND_OP_2 (and, , &, short unsigned int, 2, 1) ++FETCH_AND_OP_2 (xor, , ^, short unsigned int, 2, 1) ++FETCH_AND_OP_2 (nand, ~, &, short unsigned int, 2, 1) + +-FETCH_AND_OP_2 (add, , +, signed char, 1, 0) +-FETCH_AND_OP_2 (sub, , -, signed char, 1, 0) +-FETCH_AND_OP_2 (or, , |, signed char, 1, 0) +-FETCH_AND_OP_2 (and, , &, signed char, 1, 0) +-FETCH_AND_OP_2 (xor, , ^, signed char, 1, 0) +-FETCH_AND_OP_2 (nand, ~, &, signed char, 1, 0) ++FETCH_AND_OP_2 (add, , +, unsigned char, 1, 0) ++FETCH_AND_OP_2 (sub, , -, unsigned char, 1, 0) ++FETCH_AND_OP_2 (or, , |, unsigned char, 1, 0) ++FETCH_AND_OP_2 (and, , &, unsigned char, 1, 0) ++FETCH_AND_OP_2 (xor, , ^, unsigned char, 1, 0) ++FETCH_AND_OP_2 (nand, ~, &, unsigned char, 1, 0) + + #define OP_AND_FETCH_2(OP, PFX_OP, INF_OP, TYPE, WIDTH, INDEX) \ + TYPE HIDDEN \ +- __sync_##OP##_and_fetch_##WIDTH (TYPE *ptr, TYPE val) \ ++ __sync_##OP##_and_fetch_##WIDTH (volatile void *ptr, TYPE val) \ + { \ + TYPE tmp, newval; \ + long failure; \ + \ + do { \ +- tmp = __atomic_load_n (ptr, __ATOMIC_RELAXED); \ ++ tmp = __atomic_load_n ((volatile TYPE *)ptr, __ATOMIC_RELAXED); \ + newval = PFX_OP (tmp INF_OP val); \ + failure = __kernel_cmpxchg2 (ptr, &tmp, &newval, INDEX); \ + } while (failure != 0); \ +@@ -159,36 +154,37 @@ + return PFX_OP (tmp INF_OP val); \ + } + +-OP_AND_FETCH_2 (add, , +, long long, 8, 3) +-OP_AND_FETCH_2 (sub, , -, long long, 8, 3) +-OP_AND_FETCH_2 (or, , |, long long, 8, 3) +-OP_AND_FETCH_2 (and, , &, long long, 8, 3) +-OP_AND_FETCH_2 (xor, , ^, long long, 8, 3) +-OP_AND_FETCH_2 (nand, ~, &, long long, 8, 3) ++OP_AND_FETCH_2 (add, , +, long long unsigned int, 8, 3) ++OP_AND_FETCH_2 (sub, , -, long long unsigned int, 8, 3) ++OP_AND_FETCH_2 (or, , |, long long unsigned int, 8, 3) ++OP_AND_FETCH_2 (and, , &, long long unsigned int, 8, 3) ++OP_AND_FETCH_2 (xor, , ^, long long unsigned int, 8, 3) ++OP_AND_FETCH_2 (nand, ~, &, long long unsigned int, 8, 3) + +-OP_AND_FETCH_2 (add, , +, short, 2, 1) +-OP_AND_FETCH_2 (sub, , -, short, 2, 1) +-OP_AND_FETCH_2 (or, , |, short, 2, 1) +-OP_AND_FETCH_2 (and, , &, short, 2, 1) +-OP_AND_FETCH_2 (xor, , ^, short, 2, 1) +-OP_AND_FETCH_2 (nand, ~, &, short, 2, 1) ++OP_AND_FETCH_2 (add, , +, short unsigned int, 2, 1) ++OP_AND_FETCH_2 (sub, , -, short unsigned int, 2, 1) ++OP_AND_FETCH_2 (or, , |, short unsigned int, 2, 1) ++OP_AND_FETCH_2 (and, , &, short unsigned int, 2, 1) ++OP_AND_FETCH_2 (xor, , ^, short unsigned int, 2, 1) ++OP_AND_FETCH_2 (nand, ~, &, short unsigned int, 2, 1) + +-OP_AND_FETCH_2 (add, , +, signed char, 1, 0) +-OP_AND_FETCH_2 (sub, , -, signed char, 1, 0) +-OP_AND_FETCH_2 (or, , |, signed char, 1, 0) +-OP_AND_FETCH_2 (and, , &, signed char, 1, 0) +-OP_AND_FETCH_2 (xor, , ^, signed char, 1, 0) +-OP_AND_FETCH_2 (nand, ~, &, signed char, 1, 0) ++OP_AND_FETCH_2 (add, , +, unsigned char, 1, 0) ++OP_AND_FETCH_2 (sub, , -, unsigned char, 1, 0) ++OP_AND_FETCH_2 (or, , |, unsigned char, 1, 0) ++OP_AND_FETCH_2 (and, , &, unsigned char, 1, 0) ++OP_AND_FETCH_2 (xor, , ^, unsigned char, 1, 0) ++OP_AND_FETCH_2 (nand, ~, &, unsigned char, 1, 0) + + #define FETCH_AND_OP_WORD(OP, PFX_OP, INF_OP) \ +- int HIDDEN \ +- __sync_fetch_and_##OP##_4 (int *ptr, int val) \ ++ unsigned int HIDDEN \ ++ __sync_fetch_and_##OP##_4 (volatile void *ptr, unsigned int val) \ + { \ +- int tmp; \ ++ unsigned int tmp; \ + long failure; \ + \ + do { \ +- tmp = __atomic_load_n (ptr, __ATOMIC_RELAXED); \ ++ tmp = __atomic_load_n ((volatile unsigned int *)ptr, \ ++ __ATOMIC_RELAXED); \ + failure = __kernel_cmpxchg (ptr, tmp, PFX_OP (tmp INF_OP val)); \ + } while (failure != 0); \ + \ +@@ -203,14 +199,15 @@ + FETCH_AND_OP_WORD (nand, ~, &) + + #define OP_AND_FETCH_WORD(OP, PFX_OP, INF_OP) \ +- int HIDDEN \ +- __sync_##OP##_and_fetch_4 (int *ptr, int val) \ ++ unsigned int HIDDEN \ ++ __sync_##OP##_and_fetch_4 (volatile void *ptr, unsigned int val) \ + { \ +- int tmp; \ ++ unsigned int tmp; \ + long failure; \ + \ + do { \ +- tmp = __atomic_load_n (ptr, __ATOMIC_RELAXED); \ ++ tmp = __atomic_load_n ((volatile unsigned int *)ptr, \ ++ __ATOMIC_RELAXED); \ + failure = __kernel_cmpxchg (ptr, tmp, PFX_OP (tmp INF_OP val)); \ + } while (failure != 0); \ + \ +@@ -228,7 +225,7 @@ + + #define COMPARE_AND_SWAP_2(TYPE, WIDTH, INDEX) \ + TYPE HIDDEN \ +- __sync_val_compare_and_swap_##WIDTH (TYPE *ptr, TYPE oldval, \ ++ __sync_val_compare_and_swap_##WIDTH (volatile void *ptr, TYPE oldval, \ + TYPE newval) \ + { \ + TYPE actual_oldval; \ +@@ -236,7 +233,8 @@ + \ + while (1) \ + { \ +- actual_oldval = __atomic_load_n (ptr, __ATOMIC_RELAXED); \ ++ actual_oldval = __atomic_load_n ((volatile TYPE *)ptr, \ ++ __ATOMIC_RELAXED); \ + \ + if (__builtin_expect (oldval != actual_oldval, 0)) \ + return actual_oldval; \ +@@ -248,27 +246,29 @@ + } \ + } \ + \ +- bool HIDDEN \ +- __sync_bool_compare_and_swap_##WIDTH (TYPE *ptr, TYPE oldval, \ +- TYPE newval) \ ++ _Bool HIDDEN \ ++ __sync_bool_compare_and_swap_##WIDTH (volatile void *ptr, \ ++ TYPE oldval, TYPE newval) \ + { \ + long failure = __kernel_cmpxchg2 (ptr, &oldval, &newval, INDEX); \ + return (failure == 0); \ + } + +-COMPARE_AND_SWAP_2 (long long, 8, 3) +-COMPARE_AND_SWAP_2 (short, 2, 1) +-COMPARE_AND_SWAP_2 (char, 1, 0) ++COMPARE_AND_SWAP_2 (long long unsigned int, 8, 3) ++COMPARE_AND_SWAP_2 (short unsigned int, 2, 1) ++COMPARE_AND_SWAP_2 (unsigned char, 1, 0) + +-int HIDDEN +-__sync_val_compare_and_swap_4 (int *ptr, int oldval, int newval) ++unsigned int HIDDEN ++__sync_val_compare_and_swap_4 (volatile void *ptr, unsigned int oldval, ++ unsigned int newval) + { + long fail; +- int actual_oldval; ++ unsigned int actual_oldval; + + while (1) + { +- actual_oldval = __atomic_load_n (ptr, __ATOMIC_RELAXED); ++ actual_oldval = __atomic_load_n ((volatile unsigned int *)ptr, ++ __ATOMIC_RELAXED); + + if (__builtin_expect (oldval != actual_oldval, 0)) + return actual_oldval; +@@ -280,8 +280,9 @@ + } + } + +-bool HIDDEN +-__sync_bool_compare_and_swap_4 (int *ptr, int oldval, int newval) ++_Bool HIDDEN ++__sync_bool_compare_and_swap_4 (volatile void *ptr, unsigned int oldval, ++ unsigned int newval) + { + long failure = __kernel_cmpxchg (ptr, oldval, newval); + return (failure == 0); +@@ -289,13 +290,14 @@ + + #define SYNC_LOCK_TEST_AND_SET_2(TYPE, WIDTH, INDEX) \ + TYPE HIDDEN \ +- __sync_lock_test_and_set_##WIDTH (TYPE *ptr, TYPE val) \ ++ __sync_lock_test_and_set_##WIDTH (volatile void *ptr, TYPE val) \ + { \ + TYPE oldval; \ + long failure; \ + \ + do { \ +- oldval = __atomic_load_n (ptr, __ATOMIC_RELAXED); \ ++ oldval = __atomic_load_n ((volatile TYPE *)ptr, \ ++ __ATOMIC_RELAXED); \ + failure = __kernel_cmpxchg2 (ptr, &oldval, &val, INDEX); \ + } while (failure != 0); \ + \ +@@ -302,18 +304,18 @@ + return oldval; \ + } + +-SYNC_LOCK_TEST_AND_SET_2 (long long, 8, 3) +-SYNC_LOCK_TEST_AND_SET_2 (short, 2, 1) +-SYNC_LOCK_TEST_AND_SET_2 (signed char, 1, 0) ++SYNC_LOCK_TEST_AND_SET_2 (long long unsigned int, 8, 3) ++SYNC_LOCK_TEST_AND_SET_2 (short unsigned int, 2, 1) ++SYNC_LOCK_TEST_AND_SET_2 (unsigned char, 1, 0) + +-int HIDDEN +-__sync_lock_test_and_set_4 (int *ptr, int val) ++unsigned int HIDDEN ++__sync_lock_test_and_set_4 (volatile void *ptr, unsigned int val) + { + long failure; +- int oldval; ++ unsigned int oldval; + + do { +- oldval = __atomic_load_n (ptr, __ATOMIC_RELAXED); ++ oldval = __atomic_load_n ((volatile unsigned int *)ptr, __ATOMIC_RELAXED); + failure = __kernel_cmpxchg (ptr, oldval, val); + } while (failure != 0); + +@@ -320,24 +322,32 @@ + return oldval; + } + +-void HIDDEN +-__sync_lock_release_8 (long long *ptr) +-{ +- /* All accesses must be complete before we release the lock. */ +- __sync_synchronize (); +- *(double *)ptr = 0; +-} +- +-#define SYNC_LOCK_RELEASE_1(TYPE, WIDTH) \ ++#define SYNC_LOCK_RELEASE_1(TYPE, WIDTH, INDEX) \ + void HIDDEN \ +- __sync_lock_release_##WIDTH (TYPE *ptr) \ ++ __sync_lock_release_##WIDTH (volatile void *ptr) \ + { \ +- /* All accesses must be complete before we release \ +- the lock. */ \ +- __sync_synchronize (); \ +- *ptr = 0; \ ++ TYPE oldval, val = 0; \ ++ long failure; \ ++ \ ++ do { \ ++ oldval = __atomic_load_n ((volatile TYPE *)ptr, \ ++ __ATOMIC_RELAXED); \ ++ failure = __kernel_cmpxchg2 (ptr, &oldval, &val, INDEX); \ ++ } while (failure != 0); \ + } + +-SYNC_LOCK_RELEASE_1 (int, 4) +-SYNC_LOCK_RELEASE_1 (short, 2) +-SYNC_LOCK_RELEASE_1 (signed char, 1) ++SYNC_LOCK_RELEASE_1 (long long unsigned int, 8, 3) ++SYNC_LOCK_RELEASE_1 (short unsigned int, 2, 1) ++SYNC_LOCK_RELEASE_1 (unsigned char, 1, 0) ++ ++void HIDDEN ++__sync_lock_release_4 (volatile void *ptr) ++{ ++ long failure; ++ unsigned int oldval; ++ ++ do { ++ oldval = __atomic_load_n ((volatile unsigned int *)ptr, __ATOMIC_RELAXED); ++ failure = __kernel_cmpxchg (ptr, oldval, 0); ++ } while (failure != 0); ++} +Index: libgcc/config/pa/fptr.c +=================================================================== +--- a/src/libgcc/config/pa/fptr.c (.../tags/gcc_8_3_0_release) ++++ b/src/libgcc/config/pa/fptr.c (.../branches/gcc-8-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_8_3_0_release) ++++ b/src/gcc/tree-vrp.c (.../branches/gcc-8-branch) +@@ -1618,10 +1618,13 @@ + max_ovf = 1; + } + +- /* If we have overflow for the constant part and the resulting +- range will be symbolic, drop to VR_VARYING. */ +- if ((min_ovf && sym_min_op0 != sym_min_op1) +- || (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) ++ && (min_ovf || max_ovf ++ || (min_op0 != max_op0 && min_op1 != max_op1))) + { + set_value_range_to_varying (vr); + return; +Index: gcc/attribs.c +=================================================================== +--- a/src/gcc/attribs.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/attribs.c (.../branches/gcc-8-branch) +@@ -1685,8 +1685,11 @@ + a function global scope, unless declared static. */ + if (current_function_decl != NULL_TREE && !TREE_STATIC (node)) + TREE_PUBLIC (node) = 1; +- /* Clear TREE_STATIC because DECL_EXTERNAL is set. */ +- TREE_STATIC (node) = 0; ++ /* Clear TREE_STATIC because DECL_EXTERNAL is set, unless ++ it is a C++ static data member. */ ++ if (DECL_CONTEXT (node) == NULL_TREE ++ || !RECORD_OR_UNION_TYPE_P (DECL_CONTEXT (node))) ++ TREE_STATIC (node) = 0; + } + + if (*no_add_attrs == false) +Index: gcc/opts-common.c +=================================================================== +--- a/src/gcc/opts-common.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/opts-common.c (.../branches/gcc-8-branch) +@@ -463,7 +463,8 @@ + + extra_args = 0; + +- opt_index = find_opt (argv[0] + 1, lang_mask); ++ const char *opt_value = argv[0] + 1; ++ opt_index = find_opt (opt_value, lang_mask); + i = 0; + while (opt_index == OPT_SPECIAL_unknown + && i < ARRAY_SIZE (option_map)) +@@ -666,7 +667,24 @@ + /* Check if this is a switch for a different front end. */ + if (!option_ok_for_language (option, lang_mask)) + errors |= CL_ERR_WRONG_LANG; ++ else if (strcmp (option->opt_text, "-Werror=") == 0 ++ && strchr (opt_value, ',') == NULL) ++ { ++ /* Verify that -Werror argument is a valid warning ++ for a language. */ ++ char *werror_arg = xstrdup (opt_value + 6); ++ werror_arg[0] = 'W'; + ++ size_t warning_index = find_opt (werror_arg, lang_mask); ++ if (warning_index != OPT_SPECIAL_unknown) ++ { ++ const struct cl_option *warning_option ++ = &cl_options[warning_index]; ++ if (!option_ok_for_language (warning_option, lang_mask)) ++ errors |= CL_ERR_WRONG_LANG; ++ } ++ } ++ + /* Convert the argument to lowercase if appropriate. */ + if (arg && option->cl_tolower) + { +Index: gcc/c-family/ChangeLog +=================================================================== +--- a/src/gcc/c-family/ChangeLog (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/c-family/ChangeLog (.../branches/gcc-8-branch) +@@ -1,3 +1,54 @@ ++2019-09-03 Iain Sandoe <iain@sandoe.co.uk> ++ ++ Backport from mainline ++ 2019-08-23 Iain Sandoe <iain@sandoe.co.uk> ++ ++ PR pch/61250 ++ * c-lex.c (c_lex_with_flags): Don't call ++ c_common_no_more_pch () from here. ++ ++2019-08-30 Richard Biener <rguenther@suse.de> ++ ++ Backport from mainline ++ 2019-05-15 Richard Biener <rguenther@suse.de> ++ ++ PR c/90474 ++ * c-common.c (c_common_mark_addressable_vec): Also mark ++ a COMPOUND_LITERAL_EXPR_DECL addressable similar to ++ c_mark_addressable. ++ ++2019-08-29 Jakub Jelinek <jakub@redhat.com> ++ ++ Backported from mainline ++ 2019-06-25 Jakub Jelinek <jakub@redhat.com> ++ ++ PR sanitizer/90954 ++ * c-omp.c (c_finish_omp_atomic): Allow tree_invariant_p in addition ++ to SAVE_EXPR in first operand of a COMPOUND_EXPR. ++ ++2019-05-22 Eric Botcazou <ebotcazou@adacore.com> ++ ++ Backport from mainline ++ 2018-05-10 Eric Botcazou <ebotcazou@adacore.com> ++ ++ PR c++/85400 ++ * c-attribs.c (handle_visibility_attribute): Do not set no_add_attrs. ++ ++2019-04-30 Jakub Jelinek <jakub@redhat.com> ++ ++ Backported from mainline ++ 2019-04-12 Jakub Jelinek <jakub@redhat.com> ++ ++ PR c/89946 ++ * c-attribs.c (handle_patchable_function_entry_attribute): Add ++ function comment. Warn if arguments of the attribute are not positive ++ integer constants. ++ ++2019-04-09 Eric Botcazou <ebotcazou@adacore.com> ++ ++ * c-ada-spec.c (print_destructor): Deal with deleting destructors. ++ (dump_ada_declaration) <FUNCTION_DECL>: Likewise. ++ + 2019-02-22 Release Manager + + * GCC 8.3.0 released. +Index: gcc/c-family/c-lex.c +=================================================================== +--- a/src/gcc/c-family/c-lex.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/c-family/c-lex.c (.../branches/gcc-8-branch) +@@ -392,7 +392,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; +@@ -626,12 +625,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-common.c +=================================================================== +--- a/src/gcc/c-family/c-common.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/c-family/c-common.c (.../branches/gcc-8-branch) +@@ -6440,6 +6440,8 @@ + return; + if (!VAR_P (t) || !DECL_HARD_REGISTER (t)) + TREE_ADDRESSABLE (t) = 1; ++ if (TREE_CODE (t) == COMPOUND_LITERAL_EXPR) ++ TREE_ADDRESSABLE (COMPOUND_LITERAL_EXPR_DECL (t)) = 1; + } + + +Index: gcc/c-family/c-omp.c +=================================================================== +--- a/src/gcc/c-family/c-omp.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/c-family/c-omp.c (.../branches/gcc-8-branch) +@@ -300,7 +300,7 @@ + if (TREE_CODE (x) == COMPOUND_EXPR) + { + pre = TREE_OPERAND (x, 0); +- gcc_assert (TREE_CODE (pre) == SAVE_EXPR); ++ gcc_assert (TREE_CODE (pre) == SAVE_EXPR || tree_invariant_p (pre)); + x = TREE_OPERAND (x, 1); + } + gcc_assert (TREE_CODE (x) == MODIFY_EXPR); +Index: gcc/c-family/c-attribs.c +=================================================================== +--- a/src/gcc/c-family/c-attribs.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/c-family/c-attribs.c (.../branches/gcc-8-branch) +@@ -2310,14 +2310,13 @@ + + static tree + handle_tls_model_attribute (tree *node, tree name, tree args, +- int ARG_UNUSED (flags), bool *no_add_attrs) ++ int ARG_UNUSED (flags), ++ bool *ARG_UNUSED (no_add_attrs)) + { + tree id; + tree decl = *node; + enum tls_model kind; + +- *no_add_attrs = true; +- + if (!VAR_P (decl) || !DECL_THREAD_LOCAL_P (decl)) + { + warning (OPT_Wattributes, "%qE attribute ignored", name); +@@ -3562,9 +3561,28 @@ + return NULL_TREE; + } + ++/* Handle a "patchable_function_entry" attributes; arguments as in ++ struct attribute_spec.handler. */ ++ + static tree +-handle_patchable_function_entry_attribute (tree *, tree, tree, int, bool *) ++handle_patchable_function_entry_attribute (tree *, tree name, tree args, ++ int, bool *no_add_attrs) + { +- /* Nothing to be done here. */ ++ for (; args; args = TREE_CHAIN (args)) ++ { ++ tree val = TREE_VALUE (args); ++ if (val && TREE_CODE (val) != IDENTIFIER_NODE ++ && TREE_CODE (val) != FUNCTION_DECL) ++ val = default_conversion (val); ++ ++ if (!tree_fits_uhwi_p (val)) ++ { ++ warning (OPT_Wattributes, ++ "%qE attribute argument %qE is not an integer constant", ++ name, val); ++ *no_add_attrs = true; ++ return NULL_TREE; ++ } ++ } + return NULL_TREE; + } +Index: gcc/c-family/c-ada-spec.c +=================================================================== +--- a/src/gcc/c-family/c-ada-spec.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/c-family/c-ada-spec.c (.../branches/gcc-8-branch) +@@ -2686,6 +2686,8 @@ + tree decl_name = DECL_NAME (TYPE_NAME (type)); + + pp_string (buffer, "Delete_"); ++ if (strncmp (IDENTIFIER_POINTER (DECL_NAME (t)), "__dt_del", 8) == 0) ++ pp_string (buffer, "And_Free_"); + pp_ada_tree_identifier (buffer, decl_name, t, 0, false); + } + +@@ -2937,9 +2939,10 @@ + if (DECL_ARTIFICIAL (t)) + return 0; + +- /* Only consider constructors/destructors for complete objects. */ ++ /* Only consider complete constructors and deleting destructors. */ + if (strncmp (IDENTIFIER_POINTER (decl_name), "__ct_comp", 9) != 0 +- && strncmp (IDENTIFIER_POINTER (decl_name), "__dt_comp", 9) != 0) ++ && strncmp (IDENTIFIER_POINTER (decl_name), "__dt_comp", 9) != 0 ++ && strncmp (IDENTIFIER_POINTER (decl_name), "__dt_del", 8) != 0) + return 0; + } + +Index: gcc/c/ChangeLog +=================================================================== +--- a/src/gcc/c/ChangeLog (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/c/ChangeLog (.../branches/gcc-8-branch) +@@ -1,3 +1,68 @@ ++2019-11-21 Jakub Jelinek <jakub@redhat.com> ++ ++ Backported from mainline ++ 2019-08-09 Jakub Jelinek <jakub@redhat.com> ++ ++ 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-09-03 Iain Sandoe <iain@sandoe.co.uk> ++ ++ Backport from mainline. ++ 2019-08-23 Iain Sandoe <iain@sandoe.co.uk> ++ ++ 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-29 Jakub Jelinek <jakub@redhat.com> ++ ++ Backported from mainline ++ 2019-04-26 Jakub Jelinek <jakub@redhat.com> ++ ++ PR debug/90197 ++ * c-tree.h (c_finish_loop): Add 2 further location_t arguments. ++ * c-parser.c (c_parser_while_statement): Adjust c_finish_loop caller. ++ (c_parser_do_statement): Likewise. ++ (c_parser_for_statement): Likewise. Formatting fixes. ++ * c-typeck.c (c_finish_loop): Add COND_LOCUS and INCR_LOCUS arguments, ++ emit DEBUG_BEGIN_STMTs if needed. ++ ++2019-07-21 Richard Sandiford <richard.sandiford@arm.com> ++ ++ Backport from mainline ++ 2019-07-18 Richard Sandiford <richard.sandiford@arm.com> ++ ++ PR c/53633 ++ * c-decl.c (finish_function): Check targetm.warn_func_return ++ before issuing a -Wreturn-type warning. ++ ++2019-04-30 Jakub Jelinek <jakub@redhat.com> ++ ++ Backported from mainline ++ 2019-04-19 Jakub Jelinek <jakub@redhat.com> ++ ++ PR c++/90108 ++ * c-decl.c (merge_decls): If remove is main variant and ++ DECL_ORIGINAL_TYPE is some other type, remove a DECL_ORIGINAL_TYPE ++ variant that has newdecl as TYPE_NAME if any. ++ ++ 2019-04-12 Jakub Jelinek <jakub@redhat.com> ++ ++ PR c/89933 ++ * c-decl.c (merge_decls): When newdecl's type is its main variant, ++ don't try to remove it from the variant list, but instead assert ++ it has no variants. ++ ++ 2019-03-19 Jakub Jelinek <jakub@redhat.com> ++ ++ PR c/89734 ++ * c-decl.c (grokdeclarator): Call c_build_qualified_type on function ++ return type even if quals_used is 0. Formatting fixes. ++ + 2019-02-22 Release Manager + + * GCC 8.3.0 released. +Index: gcc/c/c-parser.c +=================================================================== +--- a/src/gcc/c/c-parser.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/c/c-parser.c (.../branches/gcc-8-branch) +@@ -5933,7 +5933,8 @@ + location_t loc_after_labels; + bool open_brace = c_parser_next_token_is (parser, CPP_OPEN_BRACE); + body = c_parser_c99_block_statement (parser, if_p, &loc_after_labels); +- c_finish_loop (loc, cond, NULL, body, c_break_label, c_cont_label, true); ++ c_finish_loop (loc, loc, cond, UNKNOWN_LOCATION, NULL, body, ++ c_break_label, c_cont_label, true); + add_stmt (c_end_compound_stmt (loc, block, flag_isoc99)); + c_parser_maybe_reclassify_token (parser); + +@@ -5978,6 +5979,7 @@ + c_break_label = save_break; + new_cont = c_cont_label; + c_cont_label = save_cont; ++ location_t cond_loc = c_parser_peek_token (parser)->location; + cond = c_parser_paren_condition (parser); + if (ivdep && cond != error_mark_node) + cond = build3 (ANNOTATE_EXPR, TREE_TYPE (cond), cond, +@@ -5991,7 +5993,8 @@ + build_int_cst (integer_type_node, unroll)); + if (!c_parser_require (parser, CPP_SEMICOLON, "expected %<;%>")) + c_parser_skip_to_end_of_block_or_statement (parser); +- c_finish_loop (loc, cond, NULL, body, new_break, new_cont, false); ++ c_finish_loop (loc, cond_loc, cond, UNKNOWN_LOCATION, NULL, body, ++ new_break, new_cont, false); + add_stmt (c_end_compound_stmt (loc, block, flag_isoc99)); + } + +@@ -6064,7 +6067,9 @@ + /* Silence the bogus uninitialized warning. */ + tree collection_expression = NULL; + location_t loc = c_parser_peek_token (parser)->location; +- location_t for_loc = c_parser_peek_token (parser)->location; ++ location_t for_loc = loc; ++ location_t cond_loc = UNKNOWN_LOCATION; ++ location_t incr_loc = UNKNOWN_LOCATION; + bool is_foreach_statement = false; + gcc_assert (c_parser_next_token_is_keyword (parser, RID_FOR)); + token_indent_info for_tinfo +@@ -6098,7 +6103,8 @@ + c_parser_consume_token (parser); + is_foreach_statement = true; + if (check_for_loop_decls (for_loc, true) == NULL_TREE) +- c_parser_error (parser, "multiple iterating variables in fast enumeration"); ++ c_parser_error (parser, "multiple iterating variables in " ++ "fast enumeration"); + } + else + check_for_loop_decls (for_loc, flag_isoc99); +@@ -6128,7 +6134,8 @@ + c_parser_consume_token (parser); + is_foreach_statement = true; + if (check_for_loop_decls (for_loc, true) == NULL_TREE) +- c_parser_error (parser, "multiple iterating variables in fast enumeration"); ++ c_parser_error (parser, "multiple iterating variables in " ++ "fast enumeration"); + } + else + check_for_loop_decls (for_loc, flag_isoc99); +@@ -6150,8 +6157,10 @@ + c_parser_consume_token (parser); + is_foreach_statement = true; + if (! lvalue_p (init_expression)) +- c_parser_error (parser, "invalid iterating variable in fast enumeration"); +- object_expression = c_fully_fold (init_expression, false, NULL); ++ c_parser_error (parser, "invalid iterating variable in " ++ "fast enumeration"); ++ object_expression ++ = c_fully_fold (init_expression, false, NULL); + } + else + { +@@ -6158,7 +6167,8 @@ + ce = convert_lvalue_to_rvalue (loc, ce, true, false); + init_expression = ce.value; + c_finish_expr_stmt (loc, init_expression); +- c_parser_skip_until_found (parser, CPP_SEMICOLON, "expected %<;%>"); ++ c_parser_skip_until_found (parser, CPP_SEMICOLON, ++ "expected %<;%>"); + } + } + } +@@ -6167,18 +6177,19 @@ + gcc_assert (!parser->objc_could_be_foreach_context); + if (!is_foreach_statement) + { ++ cond_loc = c_parser_peek_token (parser)->location; + if (c_parser_next_token_is (parser, CPP_SEMICOLON)) + { + if (ivdep) + { +- c_parser_error (parser, "missing loop condition in loop with " +- "%<GCC ivdep%> pragma"); ++ c_parser_error (parser, "missing loop condition in loop " ++ "with %<GCC ivdep%> pragma"); + cond = error_mark_node; + } + else if (unroll) + { +- c_parser_error (parser, "missing loop condition in loop with " +- "%<GCC unroll%> pragma"); ++ c_parser_error (parser, "missing loop condition in loop " ++ "with %<GCC unroll%> pragma"); + cond = error_mark_node; + } + else +@@ -6207,11 +6218,13 @@ + /* Parse the increment expression (the third expression in a + for-statement). In the case of a foreach-statement, this is + the expression that follows the 'in'. */ ++ loc = incr_loc = c_parser_peek_token (parser)->location; + if (c_parser_next_token_is (parser, CPP_CLOSE_PAREN)) + { + if (is_foreach_statement) + { +- c_parser_error (parser, "missing collection in fast enumeration"); ++ c_parser_error (parser, ++ "missing collection in fast enumeration"); + collection_expression = error_mark_node; + } + else +@@ -6220,8 +6233,8 @@ + else + { + if (is_foreach_statement) +- collection_expression = c_fully_fold (c_parser_expression (parser).value, +- false, NULL); ++ collection_expression ++ = c_fully_fold (c_parser_expression (parser).value, false, NULL); + else + { + struct c_expr ce = c_parser_expression (parser); +@@ -6244,10 +6257,14 @@ + body = c_parser_c99_block_statement (parser, if_p, &loc_after_labels); + + if (is_foreach_statement) +- objc_finish_foreach_loop (loc, object_expression, collection_expression, body, c_break_label, c_cont_label); ++ objc_finish_foreach_loop (for_loc, object_expression, ++ collection_expression, body, c_break_label, ++ c_cont_label); + else +- c_finish_loop (loc, cond, incr, body, c_break_label, c_cont_label, true); +- add_stmt (c_end_compound_stmt (loc, block, flag_isoc99 || c_dialect_objc ())); ++ c_finish_loop (for_loc, cond_loc, cond, incr_loc, incr, body, ++ c_break_label, c_cont_label, true); ++ add_stmt (c_end_compound_stmt (for_loc, block, ++ flag_isoc99 || c_dialect_objc ())); + c_parser_maybe_reclassify_token (parser); + + token_indent_info next_tinfo +@@ -13832,7 +13849,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; + +@@ -18461,6 +18481,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<c_parser> (); + *the_parser = tparser; +Index: gcc/c/c-typeck.c +=================================================================== +--- a/src/gcc/c/c-typeck.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/c/c-typeck.c (.../branches/gcc-8-branch) +@@ -10528,11 +10528,14 @@ + the beginning of the loop. COND is the loop condition. COND_IS_FIRST + is false for DO loops. INCR is the FOR increment expression. BODY is + the statement controlled by the loop. BLAB is the break label. CLAB is +- the continue label. Everything is allowed to be NULL. */ ++ the continue label. Everything is allowed to be NULL. ++ COND_LOCUS is the location of the loop condition, INCR_LOCUS is the ++ location of the FOR increment expression. */ + + void +-c_finish_loop (location_t start_locus, tree cond, tree incr, tree body, +- tree blab, tree clab, bool cond_is_first) ++c_finish_loop (location_t start_locus, location_t cond_locus, tree cond, ++ location_t incr_locus, tree incr, tree body, tree blab, ++ tree clab, bool cond_is_first) + { + tree entry = NULL, exit = NULL, t; + +@@ -10574,12 +10577,8 @@ + } + + t = build_and_jump (&blab); +- if (cond_is_first) +- exit = fold_build3_loc (start_locus, +- COND_EXPR, void_type_node, cond, exit, t); +- else +- exit = fold_build3_loc (input_location, +- COND_EXPR, void_type_node, cond, exit, t); ++ exit = fold_build3_loc (cond_is_first ? start_locus : input_location, ++ COND_EXPR, void_type_node, cond, exit, t); + } + else + { +@@ -10600,9 +10599,23 @@ + if (clab) + add_stmt (build1 (LABEL_EXPR, void_type_node, clab)); + if (incr) +- add_stmt (incr); ++ { ++ if (MAY_HAVE_DEBUG_MARKER_STMTS && incr_locus != UNKNOWN_LOCATION) ++ { ++ t = build0 (DEBUG_BEGIN_STMT, void_type_node); ++ SET_EXPR_LOCATION (t, incr_locus); ++ add_stmt (t); ++ } ++ add_stmt (incr); ++ } + if (entry) + add_stmt (entry); ++ if (MAY_HAVE_DEBUG_MARKER_STMTS && cond_locus != UNKNOWN_LOCATION) ++ { ++ t = build0 (DEBUG_BEGIN_STMT, void_type_node); ++ SET_EXPR_LOCATION (t, cond_locus); ++ add_stmt (t); ++ } + if (exit) + add_stmt (exit); + if (blab) +Index: gcc/c/c-tree.h +=================================================================== +--- a/src/gcc/c/c-tree.h (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/c/c-tree.h (.../branches/gcc-8-branch) +@@ -684,7 +684,8 @@ + extern tree c_begin_compound_stmt (bool); + extern tree c_end_compound_stmt (location_t, tree, bool); + extern void c_finish_if_stmt (location_t, tree, tree, tree); +-extern void c_finish_loop (location_t, tree, tree, tree, tree, tree, bool); ++extern void c_finish_loop (location_t, location_t, tree, location_t, tree, ++ tree, tree, tree, bool); + extern tree c_begin_stmt_expr (void); + extern tree c_finish_stmt_expr (location_t, tree); + extern tree c_process_expr_stmt (location_t, tree); +Index: gcc/c/c-decl.c +=================================================================== +--- a/src/gcc/c/c-decl.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/c/c-decl.c (.../branches/gcc-8-branch) +@@ -2352,13 +2352,33 @@ + if (TYPE_NAME (TREE_TYPE (newdecl)) == newdecl) + { + tree remove = TREE_TYPE (newdecl); +- for (tree t = TYPE_MAIN_VARIANT (remove); ; +- t = TYPE_NEXT_VARIANT (t)) +- if (TYPE_NEXT_VARIANT (t) == remove) +- { +- TYPE_NEXT_VARIANT (t) = TYPE_NEXT_VARIANT (remove); +- break; +- } ++ if (TYPE_MAIN_VARIANT (remove) == remove) ++ { ++ gcc_assert (TYPE_NEXT_VARIANT (remove) == NULL_TREE); ++ /* If remove is the main variant, no need to remove that ++ from the list. One of the DECL_ORIGINAL_TYPE ++ variants, e.g. created for aligned attribute, might still ++ refer to the newdecl TYPE_DECL though, so remove that one ++ in that case. */ ++ if (DECL_ORIGINAL_TYPE (newdecl) ++ && DECL_ORIGINAL_TYPE (newdecl) != remove) ++ for (tree t = TYPE_MAIN_VARIANT (DECL_ORIGINAL_TYPE (newdecl)); ++ t; t = TYPE_MAIN_VARIANT (t)) ++ if (TYPE_NAME (TYPE_NEXT_VARIANT (t)) == newdecl) ++ { ++ TYPE_NEXT_VARIANT (t) ++ = TYPE_NEXT_VARIANT (TYPE_NEXT_VARIANT (t)); ++ break; ++ } ++ } ++ else ++ for (tree t = TYPE_MAIN_VARIANT (remove); ; ++ t = TYPE_NEXT_VARIANT (t)) ++ if (TYPE_NEXT_VARIANT (t) == remove) ++ { ++ TYPE_NEXT_VARIANT (t) = TYPE_NEXT_VARIANT (remove); ++ break; ++ } + } + } + +@@ -6436,10 +6456,12 @@ + quals_used &= TYPE_QUAL_ATOMIC; + if (quals_used && VOID_TYPE_P (type) && really_funcdef) + pedwarn (specs_loc, 0, +- "function definition has qualified void return type"); ++ "function definition has qualified void " ++ "return type"); + else + warning_at (specs_loc, OPT_Wignored_qualifiers, +- "type qualifiers ignored on function return type"); ++ "type qualifiers ignored on function " ++ "return type"); + + /* Ensure an error for restrict on invalid types; the + DR#423 resolution is not entirely clear about +@@ -6449,8 +6471,7 @@ + && (!POINTER_TYPE_P (type) + || !C_TYPE_OBJECT_OR_INCOMPLETE_P (TREE_TYPE (type)))) + error_at (loc, "invalid use of %<restrict%>"); +- if (quals_used) +- type = c_build_qualified_type (type, quals_used); ++ type = c_build_qualified_type (type, quals_used); + } + type_quals = TYPE_UNQUALIFIED; + +@@ -9485,7 +9506,8 @@ + && !C_FUNCTION_IMPLICIT_INT (fndecl) + /* Normally, with -Wreturn-type, flow will complain, but we might + optimize out static functions. */ +- && !TREE_PUBLIC (fndecl)) ++ && !TREE_PUBLIC (fndecl) ++ && targetm.warn_func_return (fndecl)) + { + warning (OPT_Wreturn_type, + "no return statement in function returning non-void"); +Index: gcc/cgraph.c +=================================================================== +--- a/src/gcc/cgraph.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/cgraph.c (.../branches/gcc-8-branch) +@@ -3007,42 +3007,55 @@ + return redirect_callers; + } + +-/* Return TRUE if NODE2 a clone of NODE or is equivalent to it. */ + ++/* Return TRUE if NODE2 a clone of NODE or is equivalent to it. Return ++ optimistically true if this cannot be determined. */ ++ + static bool + clone_of_p (cgraph_node *node, cgraph_node *node2) + { +- bool skipped_thunk = false; + node = node->ultimate_alias_target (); + node2 = node2->ultimate_alias_target (); + ++ if (node2->clone_of == node ++ || node2->former_clone_of == node->decl) ++ return true; ++ ++ if (!node->thunk.thunk_p && !node->former_thunk_p ()) ++ { ++ while (node2 && node->decl != node2->decl) ++ node2 = node2->clone_of; ++ return node2 != NULL; ++ } ++ + /* There are no virtual clones of thunks so check former_clone_of or if we + might have skipped thunks because this adjustments are no longer + necessary. */ +- while (node->thunk.thunk_p) ++ while (node->thunk.thunk_p || node->former_thunk_p ()) + { +- if (node2->former_clone_of == node->decl) +- return true; + if (!node->thunk.this_adjusting) + return false; ++ /* In case of instrumented expanded thunks, which can have multiple calls ++ in them, we do not know how to continue and just have to be ++ optimistic. */ ++ if (node->callees->next_callee) ++ return true; + node = node->callees->callee->ultimate_alias_target (); +- skipped_thunk = true; +- } + +- if (skipped_thunk) +- { + if (!node2->clone.args_to_skip + || !bitmap_bit_p (node2->clone.args_to_skip, 0)) + return false; + if (node2->former_clone_of == node->decl) + return true; +- else if (!node2->clone_of) +- return false; ++ ++ cgraph_node *n2 = node2; ++ while (n2 && node->decl != n2->decl) ++ n2 = n2->clone_of; ++ if (n2) ++ return true; + } + +- while (node != node2 && node2) +- node2 = node2->clone_of; +- return node2 != NULL; ++ return false; + } + + /* Verify edge count and frequency. */ +Index: gcc/cgraph.h +=================================================================== +--- a/src/gcc/cgraph.h (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/cgraph.h (.../branches/gcc-8-branch) +@@ -997,12 +997,17 @@ + If non-NULL BLOCK_TO_COPY determine what basic blocks to copy. + If non_NULL NEW_ENTRY determine new entry BB of the clone. + ++ If TARGET_ATTRIBUTES is non-null, when creating a new declaration, ++ add the attributes to DECL_ATTRIBUTES. And call valid_attribute_p ++ that will promote value of the attribute DECL_FUNCTION_SPECIFIC_TARGET ++ of the declaration. ++ + Return the new version's cgraph node. */ + cgraph_node *create_version_clone_with_body + (vec<cgraph_edge *> redirect_callers, + vec<ipa_replace_map *, va_gc> *tree_map, bitmap args_to_skip, + bool skip_return, bitmap bbs_to_copy, basic_block new_entry_block, +- const char *clone_name); ++ const char *clone_name, tree target_attributes = NULL_TREE); + + /* Insert a new cgraph_function_version_info node into cgraph_fnver_htab + corresponding to cgraph_node. */ +@@ -1258,6 +1263,9 @@ + Note that at WPA stage, the function body may not be present in memory. */ + inline bool has_gimple_body_p (void); + ++ /* Return true if this node represents a former, i.e. an expanded, thunk. */ ++ inline bool former_thunk_p (void); ++ + /* Return true if function should be optimized for size. */ + bool optimize_for_size_p (void); + +@@ -2858,6 +2866,16 @@ + return definition && !thunk.thunk_p && !alias; + } + ++/* Return true if this node represents a former, i.e. an expanded, thunk. */ ++ ++inline bool ++cgraph_node::former_thunk_p (void) ++{ ++ return (!thunk.thunk_p ++ && (thunk.fixed_offset ++ || thunk.virtual_offset_p)); ++} ++ + /* Walk all functions with body defined. */ + #define FOR_EACH_FUNCTION_WITH_GIMPLE_BODY(node) \ + for ((node) = symtab->first_function_with_gimple_body (); (node); \ +Index: gcc/cfgloopmanip.c +=================================================================== +--- a/src/gcc/cfgloopmanip.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/cfgloopmanip.c (.../branches/gcc-8-branch) +@@ -1019,6 +1019,7 @@ + target->warned_aggressive_loop_optimizations + |= loop->warned_aggressive_loop_optimizations; + target->in_oacc_kernels_region = loop->in_oacc_kernels_region; ++ target->owned_clique = loop->owned_clique; + } + + /* Copies copy of LOOP as subloop of TARGET loop, placing newly +Index: gcc/optabs.c +=================================================================== +--- a/src/gcc/optabs.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/optabs.c (.../branches/gcc-8-branch) +@@ -5778,6 +5778,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_8_3_0_release) ++++ b/src/gcc/DATESTAMP (.../branches/gcc-8-branch) +@@ -1 +1 @@ +-20190222 ++20191127 +Index: gcc/tree-ssa-loop-ch.c +=================================================================== +--- a/src/gcc/tree-ssa-loop-ch.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/tree-ssa-loop-ch.c (.../branches/gcc-8-branch) +@@ -99,7 +99,7 @@ + } + + last = last_stmt (header); +- if (gimple_code (last) != GIMPLE_COND) ++ if (!last || gimple_code (last) != GIMPLE_COND) + { + if (dump_file && (dump_flags & TDF_DETAILS)) + fprintf (dump_file, +@@ -376,11 +376,23 @@ + { + gimple *stmt = gsi_stmt (bsi); + if (gimple_code (stmt) == GIMPLE_COND) +- gimple_set_no_warning (stmt, true); ++ { ++ tree lhs = gimple_cond_lhs (stmt); ++ if (gimple_cond_code (stmt) != EQ_EXPR ++ && gimple_cond_code (stmt) != NE_EXPR ++ && INTEGRAL_TYPE_P (TREE_TYPE (lhs)) ++ && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (lhs))) ++ gimple_set_no_warning (stmt, true); ++ } + else if (is_gimple_assign (stmt)) + { + enum tree_code rhs_code = gimple_assign_rhs_code (stmt); +- if (TREE_CODE_CLASS (rhs_code) == tcc_comparison) ++ tree rhs1 = gimple_assign_rhs1 (stmt); ++ if (TREE_CODE_CLASS (rhs_code) == tcc_comparison ++ && rhs_code != EQ_EXPR ++ && rhs_code != NE_EXPR ++ && INTEGRAL_TYPE_P (TREE_TYPE (rhs1)) ++ && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (rhs1))) + gimple_set_no_warning (stmt, true); + } + } +Index: gcc/tree-tailcall.c +=================================================================== +--- a/src/gcc/tree-tailcall.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/tree-tailcall.c (.../branches/gcc-8-branch) +@@ -37,6 +37,7 @@ + #include "tree-into-ssa.h" + #include "tree-dfa.h" + #include "except.h" ++#include "tree-eh.h" + #include "dbgcnt.h" + #include "cfgloop.h" + #include "common/common-target.h" +@@ -472,6 +473,12 @@ + && !auto_var_in_fn_p (ass_var, cfun->decl)) + return; + ++ /* If the call might throw an exception that wouldn't propagate out of ++ cfun, we can't transform to a tail or sibling call (82081). */ ++ if (stmt_could_throw_p (stmt) ++ && !stmt_can_throw_external (stmt)) ++ return; ++ + /* We found the call, check whether it is suitable. */ + tail_recursion = false; + func = gimple_call_fndecl (call); +Index: gcc/tree-ssa-strlen.c +=================================================================== +--- a/src/gcc/tree-ssa-strlen.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/tree-ssa-strlen.c (.../branches/gcc-8-branch) +@@ -996,10 +996,18 @@ + return false; + + tree callee = gimple_call_fndecl (stmt); ++ tree decl = builtin_decl_explicit (DECL_FUNCTION_CODE (callee)); ++ if (decl ++ && decl != callee ++ && !gimple_builtin_call_types_compatible_p (stmt, decl)) ++ return false; ++ + switch (DECL_FUNCTION_CODE (callee)) + { + case BUILT_IN_MEMCMP: + case BUILT_IN_MEMCMP_EQ: ++ case BUILT_IN_STRCMP: ++ case BUILT_IN_STRNCMP: + case BUILT_IN_STRCHR: + case BUILT_IN_STRCHR_CHKP: + case BUILT_IN_STRLEN: +@@ -1024,6 +1032,8 @@ + case BUILT_IN_STPCPY_CHK: + case BUILT_IN_STPCPY_CHKP: + case BUILT_IN_STPCPY_CHK_CHKP: ++ case BUILT_IN_STPNCPY: ++ case BUILT_IN_STPNCPY_CHK: + case BUILT_IN_STRCAT: + case BUILT_IN_STRCAT_CHK: + case BUILT_IN_STRCAT_CHKP: +@@ -1032,6 +1042,10 @@ + case BUILT_IN_STRCPY_CHK: + case BUILT_IN_STRCPY_CHKP: + case BUILT_IN_STRCPY_CHK_CHKP: ++ case BUILT_IN_STRNCAT: ++ case BUILT_IN_STRNCAT_CHK: ++ case BUILT_IN_STRNCPY: ++ case BUILT_IN_STRNCPY_CHK: + /* The above functions should be neither const nor pure. Punt if they + aren't. */ + if (gimple_vdef (stmt) == NULL_TREE || gimple_vuse (stmt) == NULL_TREE) +Index: gcc/tree.c +=================================================================== +--- a/src/gcc/tree.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/tree.c (.../branches/gcc-8-branch) +@@ -5133,8 +5133,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; + } + } +Index: gcc/tree.h +=================================================================== +--- a/src/gcc/tree.h (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/tree.h (.../branches/gcc-8-branch) +@@ -909,6 +909,11 @@ + (TREE_CHECK2 (NODE, VAR_DECL, \ + RESULT_DECL)->decl_common.decl_nonshareable_flag) + ++/* In a PARM_DECL, set for Fortran hidden string length arguments that some ++ buggy callers don't pass to the callee. */ ++#define DECL_HIDDEN_STRING_LENGTH(NODE) \ ++ (TREE_CHECK (NODE, PARM_DECL)->decl_common.decl_nonshareable_flag) ++ + /* In a CALL_EXPR, means that the call is the jump from a thunk to the + thunked-to function. */ + #define CALL_FROM_THUNK_P(NODE) (CALL_EXPR_CHECK (NODE)->base.protected_flag) +Index: gcc/ipa-cp.c +=================================================================== +--- a/src/gcc/ipa-cp.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/ipa-cp.c (.../branches/gcc-8-branch) +@@ -1082,7 +1082,6 @@ + if (TREE_CODE_CLASS (code) == tcc_binary) + { + tree type = TREE_TYPE (operand); +- gcc_assert (INTEGRAL_TYPE_P (type)); + widest_int o_value, o_mask; + get_value_and_mask (operand, &o_value, &o_mask); + +@@ -2852,12 +2851,19 @@ + base_time -= time; + if (base_time > 65535) + base_time = 65535; +- time_benefit = base_time.to_int () +- + devirtualization_time_bonus (node, known_csts, known_contexts, +- known_aggs_ptrs) +- + hint_time_bonus (hints) +- + removable_params_cost + est_move_cost; + ++ /* Extern inline functions have no cloning local time benefits because they ++ will be inlined anyway. The only reason to clone them is if it enables ++ optimization in any of the functions they call. */ ++ if (DECL_EXTERNAL (node->decl) && DECL_DECLARED_INLINE_P (node->decl)) ++ time_benefit = 0; ++ else ++ time_benefit = base_time.to_int () ++ + devirtualization_time_bonus (node, known_csts, known_contexts, ++ known_aggs_ptrs) ++ + hint_time_bonus (hints) ++ + removable_params_cost + est_move_cost; ++ + gcc_checking_assert (size >=0); + /* The inliner-heuristics based estimates may think that in certain + contexts some functions do not have any size at all but we want +Index: gcc/tree-scalar-evolution.c +=================================================================== +--- a/src/gcc/tree-scalar-evolution.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/tree-scalar-evolution.c (.../branches/gcc-8-branch) +@@ -875,7 +875,7 @@ + gimple *stmt; + + stmt = last_stmt (exit_edge->src); +- if (gcond *cond_stmt = dyn_cast <gcond *> (stmt)) ++ if (gcond *cond_stmt = safe_dyn_cast <gcond *> (stmt)) + res = cond_stmt; + } + +@@ -1421,6 +1421,11 @@ + return build_polynomial_chrec (loop->num, init_cond, right); + } + ++ /* The affine code only deals with pointer and integer types. */ ++ if (!POINTER_TYPE_P (type) ++ && !INTEGRAL_TYPE_P (type)) ++ return chrec_dont_know; ++ + /* Try harder to check if they are equal. */ + tree_to_aff_combination_expand (left, type, &aff1, &peeled_chrec_map); + tree_to_aff_combination_expand (step_val, type, &aff2, &peeled_chrec_map); +Index: gcc/rtlanal.c +=================================================================== +--- a/src/gcc/rtlanal.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/rtlanal.c (.../branches/gcc-8-branch) +@@ -358,10 +358,10 @@ + if (to == from) + return 0; + +- /* It is not safe to call INITIAL_ELIMINATION_OFFSET +- before the reload pass. We need to give at least +- an estimation for the resulting frame size. */ +- if (! reload_completed) ++ /* It is not safe to call INITIAL_ELIMINATION_OFFSET before the epilogue ++ is completed, but we need to give at least an estimate for the stack ++ pointer based on the frame size. */ ++ if (!epilogue_completed) + { + offset1 = crtl->outgoing_args_size + get_frame_size (); + #if !STACK_GROWS_DOWNWARD +@@ -4756,7 +4756,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/configure +=================================================================== +--- a/src/gcc/configure (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/configure (.../branches/gcc-8-branch) +@@ -666,6 +666,7 @@ + all_selected_languages + all_languages + all_lang_makefrags ++all_lang_configurefrags + all_gtfiles + all_compilers + srcdir +@@ -18448,7 +18449,7 @@ + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +-#line 18451 "configure" ++#line 18452 "configure" + #include "confdefs.h" + + #if HAVE_DLFCN_H +@@ -18554,7 +18555,7 @@ + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +-#line 18557 "configure" ++#line 18558 "configure" + #include "confdefs.h" + + #if HAVE_DLFCN_H +@@ -22799,17 +22800,13 @@ + # + # ld: Software Generation Utilities - Solaris Link Editors: 5.11-1.1701:onnv-ab196087-6931056-03/25/10 + # +- # In Solaris 11.4, this was changed to +- # +- # ld: Solaris ELF Utilities: 11.4-1.3123 +- # + # ld and ld.so.1 are guaranteed to be updated in lockstep, so ld version + # numbers can be used in ld.so.1 feature checks even if a different + # linker is configured. + ld_ver=`$gcc_cv_ld -V 2>&1` +- if echo "$ld_ver" | $EGREP 'Solaris Link Editors|Solaris ELF Utilities' > /dev/null; then ++ if echo "$ld_ver" | grep 'Solaris Link Editors' > /dev/null; then + ld_vers=`echo $ld_ver | sed -n \ +- -e 's,^.*: \(5\|1[0-9]\)\.[0-9][0-9]*-\([0-9]\.[0-9][0-9]*\).*$,\2,p'` ++ -e 's,^.*: 5\.[0-9][0-9]*-\([0-9]\.[0-9][0-9]*\).*$,\1,p'` + ld_vers_major=`expr "$ld_vers" : '\([0-9]*\)'` + ld_vers_minor=`expr "$ld_vers" : '[0-9]*\.\([0-9]*\)'` + fi +@@ -29516,7 +29513,8 @@ + all_languages= + all_compilers= + all_outputs='Makefile' +-# List of language makefile fragments. ++# List of language configure and makefile fragments. ++all_lang_configurefrags= + all_lang_makefrags= + # Additional files for gengtype + all_gtfiles="$target_gtfiles" +@@ -29602,6 +29600,7 @@ + esac + $ok || continue + ++ all_lang_configurefrags="$all_lang_configurefrags \$(srcdir)/$gcc_subdir/config-lang.in" + all_lang_makefrags="$all_lang_makefrags \$(srcdir)/$gcc_subdir/Make-lang.in" + if test -f $srcdir/$gcc_subdir/lang.opt; then + lang_opt_files="$lang_opt_files $srcdir/$gcc_subdir/lang.opt" +@@ -29752,6 +29751,7 @@ + + + ++ + + + +Index: gcc/internal-fn.c +=================================================================== +--- a/src/gcc/internal-fn.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/internal-fn.c (.../branches/gcc-8-branch) +@@ -1385,7 +1385,7 @@ + /* s1 * s2 -> ur */ + if (!uns0_p && !uns1_p && unsr_p) + { +- rtx tem, tem2; ++ rtx tem; + switch (pos_neg0 | pos_neg1) + { + case 1: /* Both operands known to be non-negative. */ +@@ -1415,10 +1415,8 @@ + ops.op2 = NULL_TREE; + ops.location = loc; + res = expand_expr_real_2 (&ops, NULL_RTX, mode, EXPAND_NORMAL); +- tem = expand_binop (mode, and_optab, op0, op1, NULL_RTX, false, +- OPTAB_LIB_WIDEN); +- do_compare_rtx_and_jump (tem, const0_rtx, EQ, true, mode, +- NULL_RTX, NULL, done_label, ++ do_compare_rtx_and_jump (pos_neg0 == 1 ? op0 : op1, const0_rtx, EQ, ++ true, mode, NULL_RTX, NULL, done_label, + profile_probability::very_likely ()); + goto do_error_label; + } +@@ -1449,16 +1447,23 @@ + arg1 = error_mark_node; + emit_jump (do_main_label); + emit_label (after_negate_label); +- tem2 = expand_binop (mode, xor_optab, op0, op1, NULL_RTX, false, +- OPTAB_LIB_WIDEN); +- do_compare_rtx_and_jump (tem2, const0_rtx, GE, false, mode, NULL_RTX, +- NULL, do_main_label, profile_probability::very_likely ()); ++ tem = expand_binop (mode, xor_optab, op0, op1, NULL_RTX, false, ++ OPTAB_LIB_WIDEN); ++ do_compare_rtx_and_jump (tem, const0_rtx, GE, false, mode, NULL_RTX, ++ NULL, do_main_label, ++ profile_probability::very_likely ()); + /* One argument is negative here, the other positive. This + overflows always, unless one of the arguments is 0. But + if e.g. s2 is 0, (U) s1 * 0 doesn't overflow, whatever s1 + is, thus we can keep do_main code oring in overflow as is. */ +- do_compare_rtx_and_jump (tem, const0_rtx, EQ, true, mode, NULL_RTX, +- NULL, do_main_label, profile_probability::very_likely ()); ++ if (pos_neg0 != 2) ++ do_compare_rtx_and_jump (op0, const0_rtx, EQ, true, mode, NULL_RTX, ++ NULL, do_main_label, ++ profile_probability::very_unlikely ()); ++ if (pos_neg1 != 2) ++ do_compare_rtx_and_jump (op1, const0_rtx, EQ, true, mode, NULL_RTX, ++ NULL, do_main_label, ++ profile_probability::very_unlikely ()); + expand_arith_set_overflow (lhs, target); + emit_label (do_main_label); + goto do_main; +Index: gcc/builtins.c +=================================================================== +--- a/src/gcc/builtins.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/builtins.c (.../branches/gcc-8-branch) +@@ -2560,7 +2560,7 @@ + tree arg; + + if (!validate_arglist (exp, REAL_TYPE, VOID_TYPE)) +- gcc_unreachable (); ++ return NULL_RTX; + + arg = CALL_EXPR_ARG (exp, 0); + +@@ -2696,7 +2696,7 @@ + enum built_in_function fallback_fn = BUILT_IN_NONE; + + if (!validate_arglist (exp, REAL_TYPE, VOID_TYPE)) +- gcc_unreachable (); ++ return NULL_RTX; + + arg = CALL_EXPR_ARG (exp, 0); + +@@ -10088,6 +10088,9 @@ + static void + maybe_emit_free_warning (tree exp) + { ++ if (call_expr_nargs (exp) != 1) ++ return; ++ + tree arg = CALL_EXPR_ARG (exp, 0); + + STRIP_NOPS (arg); +Index: gcc/input.c +=================================================================== +--- a/src/gcc/input.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/input.c (.../branches/gcc-8-branch) +@@ -3538,6 +3538,34 @@ + ASSERT_EQ (num_cases_tested, 2 * 12); + } + ++/* Verify that when presented with a consecutive pair of locations with ++ a very large line offset, we don't attempt to consolidate them into ++ a single ordinary linemap where the line offsets within the line map ++ would lead to overflow (PR lto/88147). */ ++ ++static void ++test_line_offset_overflow () ++{ ++ line_table_test ltt (line_table_case (5, 0)); ++ ++ linemap_add (line_table, LC_ENTER, false, "foo.c", 0); ++ linemap_line_start (line_table, 1, 100); ++ location_t loc_a = linemap_line_start (line_table, 2578, 255); ++ assert_loceq ("foo.c", 2578, 0, loc_a); ++ ++ const line_map_ordinary *ordmap_a = LINEMAPS_LAST_ORDINARY_MAP (line_table); ++ ASSERT_EQ (ordmap_a->m_column_and_range_bits, 13); ++ ASSERT_EQ (ordmap_a->m_range_bits, 5); ++ ++ location_t loc_b = linemap_line_start (line_table, 404198, 512); ++ assert_loceq ("foo.c", 404198, 0, loc_b); ++ ++ /* We should have started a new linemap, rather than attempting to store ++ a very large line offset. */ ++ const line_map_ordinary *ordmap_b = LINEMAPS_LAST_ORDINARY_MAP (line_table); ++ ASSERT_NE (ordmap_a, ordmap_b); ++} ++ + /* Run all of the selftests within this file. */ + + void +@@ -3577,6 +3605,8 @@ + for_each_line_table_case (test_lexer_char_constants); + + test_reading_source_line (); ++ ++ test_line_offset_overflow (); + } + + } // namespace selftest +Index: gcc/cfghooks.c +=================================================================== +--- a/src/gcc/cfghooks.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/cfghooks.c (.../branches/gcc-8-branch) +@@ -1066,7 +1066,7 @@ + AFTER. */ + + basic_block +-duplicate_block (basic_block bb, edge e, basic_block after) ++duplicate_block (basic_block bb, edge e, basic_block after, copy_bb_data *id) + { + edge s, n; + basic_block new_bb; +@@ -1082,7 +1082,7 @@ + + gcc_checking_assert (can_duplicate_block_p (bb)); + +- new_bb = cfg_hooks->duplicate_block (bb); ++ new_bb = cfg_hooks->duplicate_block (bb, id); + if (after) + move_block_after (new_bb, after); + +@@ -1337,6 +1337,7 @@ + unsigned i, j; + basic_block bb, new_bb, dom_bb; + edge e; ++ copy_bb_data id; + + /* Mark the blocks to be copied. This is used by edge creation hooks + to decide whether to reallocate PHI nodes capacity to avoid reallocating +@@ -1349,7 +1350,7 @@ + { + /* Duplicate. */ + bb = bbs[i]; +- new_bb = new_bbs[i] = duplicate_block (bb, NULL, after); ++ new_bb = new_bbs[i] = duplicate_block (bb, NULL, after, &id); + after = new_bb; + if (bb->loop_father) + { +Index: gcc/cfghooks.h +=================================================================== +--- a/src/gcc/cfghooks.h (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/cfghooks.h (.../branches/gcc-8-branch) +@@ -54,7 +54,20 @@ + bool run; + }; + ++typedef int_hash <unsigned short, 0> dependence_hash; + ++/* Optional data for duplicate_block. */ ++ ++struct copy_bb_data ++{ ++ copy_bb_data() : dependence_map (NULL) {} ++ ~copy_bb_data () { delete dependence_map; } ++ ++ /* A map from the copied BBs dependence info cliques to ++ equivalents in the BBs duplicated to. */ ++ hash_map<dependence_hash, unsigned short> *dependence_map; ++}; ++ + struct cfg_hooks + { + /* Name of the corresponding ir. */ +@@ -112,7 +125,7 @@ + bool (*can_duplicate_block_p) (const_basic_block a); + + /* Duplicate block A. */ +- basic_block (*duplicate_block) (basic_block a); ++ basic_block (*duplicate_block) (basic_block a, copy_bb_data *); + + /* Higher level functions representable by primitive operations above if + we didn't have some oddities in RTL and Tree representations. */ +@@ -227,7 +240,8 @@ + extern void predict_edge (edge e, enum br_predictor predictor, int probability); + extern bool predicted_by_p (const_basic_block bb, enum br_predictor predictor); + extern bool can_duplicate_block_p (const_basic_block); +-extern basic_block duplicate_block (basic_block, edge, basic_block); ++extern basic_block duplicate_block (basic_block, edge, basic_block, ++ copy_bb_data * = NULL); + extern bool block_ends_with_call_p (basic_block bb); + extern bool empty_block_p (basic_block); + extern basic_block split_block_before_cond_jump (basic_block); +Index: gcc/fold-const.c +=================================================================== +--- a/src/gcc/fold-const.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/fold-const.c (.../branches/gcc-8-branch) +@@ -3179,10 +3179,16 @@ + switch (TREE_CODE (arg0)) + { + case INDIRECT_REF: +- if (!(flags & OEP_ADDRESS_OF) +- && (TYPE_ALIGN (TREE_TYPE (arg0)) +- != TYPE_ALIGN (TREE_TYPE (arg1)))) +- return 0; ++ if (!(flags & OEP_ADDRESS_OF)) ++ { ++ if (TYPE_ALIGN (TREE_TYPE (arg0)) ++ != TYPE_ALIGN (TREE_TYPE (arg1))) ++ return 0; ++ /* Verify that the access types are compatible. */ ++ if (TYPE_MAIN_VARIANT (TREE_TYPE (arg0)) ++ != TYPE_MAIN_VARIANT (TREE_TYPE (arg1))) ++ return 0; ++ } + flags &= ~OEP_ADDRESS_OF; + return OP_SAME (0); + +@@ -4239,7 +4245,7 @@ + There are problems with FP fields since the type_for_size call + below can fail for, e.g., XFmode. */ + if (! INTEGRAL_TYPE_P (TREE_TYPE (exp))) +- return 0; ++ return NULL_TREE; + + /* We are interested in the bare arrangement of bits, so strip everything + that doesn't affect the machine mode. However, record the type of the +@@ -4255,7 +4261,7 @@ + exp = TREE_OPERAND (exp, 0); + STRIP_NOPS (exp); STRIP_NOPS (and_mask); + if (TREE_CODE (and_mask) != INTEGER_CST) +- return 0; ++ return NULL_TREE; + } + + poly_int64 poly_bitsize, poly_bitpos; +@@ -4271,8 +4277,12 @@ + || (! AGGREGATE_TYPE_P (TREE_TYPE (inner)) + && compare_tree_int (TYPE_SIZE (TREE_TYPE (inner)), + *pbitpos + *pbitsize) < 0)) +- return 0; ++ return NULL_TREE; + ++ unsigned_type = lang_hooks.types.type_for_size (*pbitsize, 1); ++ if (unsigned_type == NULL_TREE) ++ return NULL_TREE; ++ + *exp_ = exp; + + /* If the number of bits in the reference is the same as the bitsize of +@@ -4282,7 +4292,6 @@ + *punsignedp = TYPE_UNSIGNED (outer_type); + + /* Compute the mask to access the bitfield. */ +- unsigned_type = lang_hooks.types.type_for_size (*pbitsize, 1); + precision = TYPE_PRECISION (unsigned_type); + + mask = build_int_cst_type (unsigned_type, -1); +@@ -5515,12 +5524,15 @@ + /* On machines where the branch cost is expensive, if this is a + short-circuited branch and the underlying object on both sides + is the same, make a non-short-circuit operation. */ +- else if (LOGICAL_OP_NON_SHORT_CIRCUIT +- && !flag_sanitize_coverage +- && lhs != 0 && rhs != 0 +- && (code == TRUTH_ANDIF_EXPR +- || code == TRUTH_ORIF_EXPR) +- && operand_equal_p (lhs, rhs, 0)) ++ bool logical_op_non_short_circuit = LOGICAL_OP_NON_SHORT_CIRCUIT; ++ if (PARAM_VALUE (PARAM_LOGICAL_OP_NON_SHORT_CIRCUIT) != -1) ++ logical_op_non_short_circuit ++ = PARAM_VALUE (PARAM_LOGICAL_OP_NON_SHORT_CIRCUIT); ++ if (logical_op_non_short_circuit ++ && !flag_sanitize_coverage ++ && lhs != 0 && rhs != 0 ++ && (code == TRUTH_ANDIF_EXPR || code == TRUTH_ORIF_EXPR) ++ && operand_equal_p (lhs, rhs, 0)) + { + /* If simple enough, just rewrite. Otherwise, make a SAVE_EXPR + unless we are at top level or LHS contains a PLACEHOLDER_EXPR, in +@@ -8165,7 +8177,11 @@ + if ((tem = fold_truth_andor_1 (loc, code, type, arg0, arg1)) != 0) + return tem; + +- if (LOGICAL_OP_NON_SHORT_CIRCUIT ++ bool logical_op_non_short_circuit = LOGICAL_OP_NON_SHORT_CIRCUIT; ++ if (PARAM_VALUE (PARAM_LOGICAL_OP_NON_SHORT_CIRCUIT) != -1) ++ logical_op_non_short_circuit ++ = PARAM_VALUE (PARAM_LOGICAL_OP_NON_SHORT_CIRCUIT); ++ if (logical_op_non_short_circuit + && !flag_sanitize_coverage + && (code == TRUTH_AND_EXPR + || code == TRUTH_ANDIF_EXPR +@@ -13994,13 +14010,13 @@ + { + tree elem0 = VECTOR_CST_ELT (op0, i); + tree elem1 = VECTOR_CST_ELT (op1, i); +- tree tmp = fold_relational_const (code, type, elem0, elem1); ++ tree tmp = fold_relational_const (EQ_EXPR, type, elem0, elem1); + if (tmp == NULL_TREE) + return NULL_TREE; + if (integer_zerop (tmp)) +- return constant_boolean_node (false, type); ++ return constant_boolean_node (code == NE_EXPR, type); + } +- return constant_boolean_node (true, type); ++ return constant_boolean_node (code == EQ_EXPR, type); + } + tree_vector_builder elts; + if (!elts.new_binary_operation (type, op0, op1, false)) +@@ -14671,6 +14687,7 @@ + tree type = build_vector_type (inner_type, 4); + tree zero = build_zero_cst (type); + tree one = build_one_cst (type); ++ tree index = build_index_vector (type, 0, 1); + + /* Verify equality tests that return a scalar boolean result. */ + tree res_type = boolean_type_node; +@@ -14678,6 +14695,13 @@ + ASSERT_TRUE (integer_nonzerop (fold_build2 (EQ_EXPR, res_type, zero, zero))); + ASSERT_TRUE (integer_nonzerop (fold_build2 (NE_EXPR, res_type, zero, one))); + ASSERT_FALSE (integer_nonzerop (fold_build2 (NE_EXPR, res_type, one, one))); ++ ASSERT_TRUE (integer_nonzerop (fold_build2 (NE_EXPR, res_type, index, one))); ++ ASSERT_FALSE (integer_nonzerop (fold_build2 (EQ_EXPR, res_type, ++ index, one))); ++ ASSERT_FALSE (integer_nonzerop (fold_build2 (NE_EXPR, res_type, ++ index, index))); ++ ASSERT_TRUE (integer_nonzerop (fold_build2 (EQ_EXPR, res_type, ++ index, index))); + } + + /* Verify folding of VEC_DUPLICATE_EXPRs. */ +Index: gcc/gimple-ssa-sprintf.c +=================================================================== +--- a/src/gcc/gimple-ssa-sprintf.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/gimple-ssa-sprintf.c (.../branches/gcc-8-branch) +@@ -376,9 +376,14 @@ + overlong strings just like the translated strings are. */ + if (target_to_host_charmap['\0'] == 1) + { +- strncpy (hostr, targstr, hostsz - 4); +- if (strlen (targstr) >= hostsz) +- strcpy (hostr + hostsz - 4, "..."); ++ size_t len = strlen (targstr); ++ if (len >= hostsz) ++ { ++ memcpy (hostr, targstr, hostsz - 4); ++ strcpy (hostr + hostsz - 4, "..."); ++ } ++ else ++ memcpy (hostr, targstr, len + 1); + return hostr; + } + +@@ -392,10 +397,9 @@ + if (!*targstr) + break; + +- if (size_t (ph - hostr) == hostsz - 4) ++ if (size_t (ph - hostr) == hostsz) + { +- *ph = '\0'; +- strcat (ph, "..."); ++ strcpy (ph - 4, "..."); + break; + } + } +@@ -3662,10 +3666,10 @@ + are badly declared. */ + && !stmt_ends_bb_p (info.callstmt)) + { +- tree cst = build_int_cst (integer_type_node, retval[0]); ++ tree cst = build_int_cst (lhs ? TREE_TYPE (lhs) : integer_type_node, ++ retval[0]); + +- if (lhs == NULL_TREE +- && info.nowrite) ++ if (lhs == NULL_TREE && info.nowrite) + { + /* Remove the call to the bounded function with a zero size + (e.g., snprintf(0, 0, "%i", 123)) if there is no lhs. */ +@@ -3706,7 +3710,7 @@ + } + } + } +- else if (lhs) ++ else if (lhs && types_compatible_p (TREE_TYPE (lhs), integer_type_node)) + { + bool setrange = false; + +Index: gcc/omp-low.c +=================================================================== +--- a/src/gcc/omp-low.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/omp-low.c (.../branches/gcc-8-branch) +@@ -851,6 +851,7 @@ + ctx->cb.copy_decl = omp_copy_decl; + ctx->cb.eh_lp_nr = 0; + ctx->cb.transform_call_graph_edges = CB_CGE_MOVE; ++ ctx->cb.dont_remap_vla_if_no_change = true; + ctx->depth = 1; + } + +Index: gcc/objc/ChangeLog +=================================================================== +--- a/src/gcc/objc/ChangeLog (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/objc/ChangeLog (.../branches/gcc-8-branch) +@@ -1,3 +1,22 @@ ++2019-08-29 Jakub Jelinek <jakub@redhat.com> ++ ++ Backported from mainline ++ 2019-05-10 Jakub Jelinek <jakub@redhat.com> ++ ++ PR pch/90326 ++ * config-lang.in (gtfiles): Add c-family/c-format.c. ++ ++2019-08-28 Iain Sandoe <iain@sandoe.co.uk> ++ ++ Backport from mainline. ++ 2019-05-18 Iain Sandoe <iain@sandoe.co.uk> ++ ++ * objc/objc-act.h (OCTI_INSTANCE_TYPE, OCTI_INSTANCETYPE_NAME): New. ++ (objc_global_trees): Add instance type and name. ++ (INSTANCE_TYPEDEF_NAME): New. ++ * objc/objc-act.c (synth_module_prologue): Build decls for ++ objc_instancetype_type and objc_instancetype_name. ++ + 2019-02-22 Release Manager + + * GCC 8.3.0 released. +Index: gcc/objc/config-lang.in +=================================================================== +--- a/src/gcc/objc/config-lang.in (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/objc/config-lang.in (.../branches/gcc-8-branch) +@@ -35,4 +35,4 @@ + # Order is important. If you change this list, make sure you test + # building without C++ as well; that is, remove the gcc/cp directory, + # and build with --enable-languages=c,objc. +-gtfiles="\$(srcdir)/objc/objc-map.h \$(srcdir)/c-family/c-objc.h \$(srcdir)/objc/objc-act.h \$(srcdir)/objc/objc-act.c \$(srcdir)/objc/objc-runtime-shared-support.c \$(srcdir)/objc/objc-gnu-runtime-abi-01.c \$(srcdir)/objc/objc-next-runtime-abi-01.c \$(srcdir)/objc/objc-next-runtime-abi-02.c \$(srcdir)/c/c-parser.h \$(srcdir)/c/c-parser.c \$(srcdir)/c/c-tree.h \$(srcdir)/c/c-decl.c \$(srcdir)/c/c-lang.h \$(srcdir)/c/c-objc-common.c \$(srcdir)/c-family/c-common.c \$(srcdir)/c-family/c-common.h \$(srcdir)/c-family/c-cppbuiltin.c \$(srcdir)/c-family/c-pragma.h \$(srcdir)/c-family/c-pragma.c" ++gtfiles="\$(srcdir)/objc/objc-map.h \$(srcdir)/c-family/c-objc.h \$(srcdir)/objc/objc-act.h \$(srcdir)/objc/objc-act.c \$(srcdir)/objc/objc-runtime-shared-support.c \$(srcdir)/objc/objc-gnu-runtime-abi-01.c \$(srcdir)/objc/objc-next-runtime-abi-01.c \$(srcdir)/objc/objc-next-runtime-abi-02.c \$(srcdir)/c/c-parser.h \$(srcdir)/c/c-parser.c \$(srcdir)/c/c-tree.h \$(srcdir)/c/c-decl.c \$(srcdir)/c/c-lang.h \$(srcdir)/c/c-objc-common.c \$(srcdir)/c-family/c-common.c \$(srcdir)/c-family/c-common.h \$(srcdir)/c-family/c-cppbuiltin.c \$(srcdir)/c-family/c-pragma.h \$(srcdir)/c-family/c-pragma.c \$(srcdir)/c-family/c-format.c" +Index: gcc/objc/objc-act.c +=================================================================== +--- a/src/gcc/objc/objc-act.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/objc/objc-act.c (.../branches/gcc-8-branch) +@@ -2944,12 +2944,14 @@ + objc_class_reference = xref_tag (RECORD_TYPE, objc_class_id); + + objc_object_type = build_pointer_type (objc_object_reference); ++ objc_instancetype_type = build_pointer_type (objc_object_reference); + objc_class_type = build_pointer_type (objc_class_reference); + + objc_object_name = get_identifier (OBJECT_TYPEDEF_NAME); ++ objc_instancetype_name = get_identifier (INSTANCE_TYPEDEF_NAME); + objc_class_name = get_identifier (CLASS_TYPEDEF_NAME); + +- /* Declare the 'id' and 'Class' typedefs. */ ++ /* Declare the 'id', 'instancetype' and 'Class' typedefs. */ + type = lang_hooks.decls.pushdecl (build_decl (input_location, + TYPE_DECL, + objc_object_name, +@@ -2958,6 +2960,12 @@ + + type = lang_hooks.decls.pushdecl (build_decl (input_location, + TYPE_DECL, ++ objc_instancetype_name, ++ objc_instancetype_type)); ++ TREE_NO_WARNING (type) = 1; ++ ++ type = lang_hooks.decls.pushdecl (build_decl (input_location, ++ TYPE_DECL, + objc_class_name, + objc_class_type)); + TREE_NO_WARNING (type) = 1; +Index: gcc/objc/objc-act.h +=================================================================== +--- a/src/gcc/objc/objc-act.h (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/objc/objc-act.h (.../branches/gcc-8-branch) +@@ -313,6 +313,7 @@ + OCTI_SUPER_TYPE, + OCTI_SEL_TYPE, + OCTI_ID_TYPE, ++ OCTI_INSTANCE_TYPE, + OCTI_CLS_TYPE, + OCTI_NST_TYPE, + OCTI_PROTO_TYPE, +@@ -368,6 +369,7 @@ + OCTI_OBJ_ID, + OCTI_CLS_ID, + OCTI_ID_NAME, ++ OCTI_INSTANCETYPE_NAME, + OCTI_CLASS_NAME, + OCTI_CNST_STR_ID, + OCTI_CNST_STR_TYPE, +@@ -443,6 +445,7 @@ + #define objc_super_type objc_global_trees[OCTI_SUPER_TYPE] + #define objc_selector_type objc_global_trees[OCTI_SEL_TYPE] + #define objc_object_type objc_global_trees[OCTI_ID_TYPE] ++#define objc_instancetype_type objc_global_trees[OCTI_INSTANCE_TYPE] + #define objc_class_type objc_global_trees[OCTI_CLS_TYPE] + #define objc_instance_type objc_global_trees[OCTI_NST_TYPE] + #define objc_protocol_type objc_global_trees[OCTI_PROTO_TYPE] +@@ -570,7 +573,8 @@ + + #define objc_object_id objc_global_trees[OCTI_OBJ_ID] + #define objc_class_id objc_global_trees[OCTI_CLS_ID] +-#define objc_object_name objc_global_trees[OCTI_ID_NAME] ++#define objc_object_name objc_global_trees[OCTI_ID_NAME] ++#define objc_instancetype_name objc_global_trees[OCTI_INSTANCETYPE_NAME] + #define objc_class_name objc_global_trees[OCTI_CLASS_NAME] + + /* Constant string classes. */ +@@ -608,6 +612,7 @@ + /* Reserved tag definitions. */ + + #define OBJECT_TYPEDEF_NAME "id" ++#define INSTANCE_TYPEDEF_NAME "instancetype" + #define CLASS_TYPEDEF_NAME "Class" + + #define TAG_OBJECT "objc_object" +Index: gcc/gcov.c +=================================================================== +--- a/src/gcc/gcov.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/gcov.c (.../branches/gcc-8-branch) +@@ -604,27 +604,11 @@ + typedef vector<arc_info *> arc_vector_t; + typedef vector<const block_info *> block_vector_t; + +-/* Enum with types of loop in CFG. */ +- +-enum loop_type +-{ +- NO_LOOP = 0, +- LOOP = 1, +- NEGATIVE_LOOP = 3 +-}; +- +-/* Loop_type operator that merges two values: A and B. */ +- +-inline loop_type& operator |= (loop_type& a, loop_type b) +-{ +- return a = static_cast<loop_type> (a | b); +-} +- + /* Handle cycle identified by EDGES, where the function finds minimum cs_count + and subtract the value from all counts. The subtracted value is added + to COUNT. Returns type of loop. */ + +-static loop_type ++static void + handle_cycle (const arc_vector_t &edges, int64_t &count) + { + /* Find the minimum edge of the cycle, and reduce all nodes in the cycle by +@@ -640,7 +624,7 @@ + for (unsigned i = 0; i < edges.size (); i++) + edges[i]->cs_count -= cycle_count; + +- return cycle_count < 0 ? NEGATIVE_LOOP : LOOP; ++ gcc_assert (cycle_count > 0); + } + + /* Unblock a block U from BLOCKED. Apart from that, iterate all blocks +@@ -666,17 +650,28 @@ + unblock (*it, blocked, block_lists); + } + ++/* Return true when PATH contains a zero cycle arc count. */ ++ ++static bool ++path_contains_zero_cycle_arc (arc_vector_t &path) ++{ ++ for (unsigned i = 0; i < path.size (); i++) ++ if (path[i]->cs_count == 0) ++ return true; ++ return false; ++} ++ + /* Find circuit going to block V, PATH is provisional seen cycle. + BLOCKED is vector of blocked vertices, BLOCK_LISTS contains vertices + blocked by a block. COUNT is accumulated count of the current LINE. + Returns what type of loop it contains. */ + +-static loop_type ++static bool + circuit (block_info *v, arc_vector_t &path, block_info *start, + block_vector_t &blocked, vector<block_vector_t> &block_lists, + line_info &linfo, int64_t &count) + { +- loop_type result = NO_LOOP; ++ bool loop_found = false; + + /* Add v to the block list. */ + gcc_assert (find (blocked.begin (), blocked.end (), v) == blocked.end ()); +@@ -686,26 +681,35 @@ + for (arc_info *arc = v->succ; arc; arc = arc->succ_next) + { + block_info *w = arc->dst; +- if (w < start || !linfo.has_block (w)) ++ if (w < start ++ || arc->cs_count == 0 ++ || !linfo.has_block (w)) + continue; + + path.push_back (arc); + if (w == start) +- /* Cycle has been found. */ +- result |= handle_cycle (path, count); +- else if (find (blocked.begin (), blocked.end (), w) == blocked.end ()) +- result |= circuit (w, path, start, blocked, block_lists, linfo, count); ++ { ++ /* Cycle has been found. */ ++ handle_cycle (path, count); ++ loop_found = true; ++ } ++ else if (!path_contains_zero_cycle_arc (path) ++ && find (blocked.begin (), blocked.end (), w) == blocked.end ()) ++ loop_found |= circuit (w, path, start, blocked, block_lists, linfo, ++ count); + + path.pop_back (); + } + +- if (result != NO_LOOP) ++ if (loop_found) + unblock (v, blocked, block_lists); + else + for (arc_info *arc = v->succ; arc; arc = arc->succ_next) + { + block_info *w = arc->dst; +- if (w < start || !linfo.has_block (w)) ++ if (w < start ++ || arc->cs_count == 0 ++ || !linfo.has_block (w)) + continue; + + size_t index +@@ -716,14 +720,13 @@ + list.push_back (v); + } + +- return result; ++ return loop_found; + } + +-/* Find cycles for a LINFO. If HANDLE_NEGATIVE_CYCLES is set and the line +- contains a negative loop, then perform the same function once again. */ ++/* Find cycles for a LINFO. */ + + static gcov_type +-get_cycles_count (line_info &linfo, bool handle_negative_cycles = true) ++get_cycles_count (line_info &linfo) + { + /* Note that this algorithm works even if blocks aren't in sorted order. + Each iteration of the circuit detection is completely independent +@@ -731,7 +734,7 @@ + Therefore, operating on a permuted order (i.e., non-sorted) only + has the effect of permuting the output cycles. */ + +- loop_type result = NO_LOOP; ++ bool loop_found = false; + gcov_type count = 0; + for (vector<block_info *>::iterator it = linfo.blocks.begin (); + it != linfo.blocks.end (); it++) +@@ -739,14 +742,10 @@ + arc_vector_t path; + block_vector_t blocked; + vector<block_vector_t > block_lists; +- result |= circuit (*it, path, *it, blocked, block_lists, linfo, +- count); ++ loop_found |= circuit (*it, path, *it, blocked, block_lists, linfo, ++ count); + } + +- /* If we have a negative cycle, repeat the find_cycles routine. */ +- if (result == NEGATIVE_LOOP && handle_negative_cycles) +- count += get_cycles_count (linfo, false); +- + return count; + } + +Index: gcc/toplev.c +=================================================================== +--- a/src/gcc/toplev.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/toplev.c (.../branches/gcc-8-branch) +@@ -2110,6 +2110,34 @@ + else + int_n_enabled_p[i] = false; + ++ /* Initialize mpfrs exponent range. This is important to get ++ underflow/overflow in a reasonable timeframe. */ ++ machine_mode mode; ++ int min_exp = -1; ++ int max_exp = 1; ++ FOR_EACH_MODE_IN_CLASS (mode, MODE_FLOAT) ++ if (SCALAR_FLOAT_MODE_P (mode)) ++ { ++ const real_format *fmt = REAL_MODE_FORMAT (mode); ++ if (fmt) ++ { ++ /* fmt->emin - fmt->p + 1 should be enough but the ++ back-and-forth dance in real_to_decimal_for_mode we ++ do for checking fails due to rounding effects then. */ ++ if ((fmt->emin - fmt->p) < min_exp) ++ min_exp = fmt->emin - fmt->p; ++ if (fmt->emax > max_exp) ++ max_exp = fmt->emax; ++ } ++ } ++ /* E.g. mpc_norm assumes it can square a number without bothering with ++ with range scaling, so until that is fixed, double the minimum ++ and maximum exponents, plus add some buffer for arithmetics ++ on the squared numbers. */ ++ if (mpfr_set_emin (2 * (min_exp - 1)) ++ || mpfr_set_emax (2 * (max_exp + 1))) ++ sorry ("mpfr not configured to handle all float modes"); ++ + /* Set up the back-end if requested. */ + if (!no_backend) + backend_init (); +Index: gcc/tree-chrec.c +=================================================================== +--- a/src/gcc/tree-chrec.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/tree-chrec.c (.../branches/gcc-8-branch) +@@ -979,10 +979,11 @@ + return false; + } + +-/* Determines whether the chrec contains symbolic names or not. */ ++/* Determines whether the chrec contains symbolic names or not. If LOOP isn't ++ NULL, we also consider chrec wrto outer loops of LOOP as symbol. */ + + bool +-chrec_contains_symbols (const_tree chrec) ++chrec_contains_symbols (const_tree chrec, struct loop *loop) + { + int i, n; + +@@ -999,9 +1000,14 @@ + || TREE_CODE (chrec) == FIELD_DECL) + return true; + ++ if (loop != NULL ++ && TREE_CODE (chrec) == POLYNOMIAL_CHREC ++ && flow_loop_nested_p (get_chrec_loop (chrec), loop)) ++ return true; ++ + n = TREE_OPERAND_LENGTH (chrec); + for (i = 0; i < n; i++) +- if (chrec_contains_symbols (TREE_OPERAND (chrec, i))) ++ if (chrec_contains_symbols (TREE_OPERAND (chrec, i), loop)) + return true; + return false; + } +Index: gcc/tree-chrec.h +=================================================================== +--- a/src/gcc/tree-chrec.h (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/tree-chrec.h (.../branches/gcc-8-branch) +@@ -80,7 +80,7 @@ + /* Observers. */ + extern bool eq_evolutions_p (const_tree, const_tree); + extern bool is_multivariate_chrec (const_tree); +-extern bool chrec_contains_symbols (const_tree); ++extern bool chrec_contains_symbols (const_tree, struct loop * = NULL); + extern bool chrec_contains_symbols_defined_in_loop (const_tree, unsigned); + extern bool chrec_contains_undetermined (const_tree); + extern bool tree_contains_chrecs (const_tree, int *); +Index: gcc/tree-ssa-sccvn.c +=================================================================== +--- a/src/gcc/tree-ssa-sccvn.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/tree-ssa-sccvn.c (.../branches/gcc-8-branch) +@@ -69,6 +69,7 @@ + #include "tree-cfgcleanup.h" + #include "tree-ssa-loop.h" + #include "tree-scalar-evolution.h" ++#include "builtins.h" + #include "tree-ssa-sccvn.h" + + /* This algorithm is based on the SCC algorithm presented by Keith +@@ -1857,23 +1858,11 @@ + /* If we reach a clobbering statement try to skip it and see if + 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. +- Note that we don't need to worry about partial overlapping +- accesses as we then can use TBAA to disambiguate against the +- clobbering statement when looking up a load (thus the +- VN_WALKREWRITE guard). */ ++ and return the found value. */ + if (vn_walk_kind == VN_WALKREWRITE + && is_gimple_reg_type (TREE_TYPE (lhs)) + && types_compatible_p (TREE_TYPE (lhs), vr->type) +- /* The overlap restriction breaks down when either access +- alias-set is zero. Still for accesses of the size of +- an addressable unit there can be no overlaps. Overlaps +- between different union members are not an issue since +- activation of a union member via a store makes the +- values of untouched bytes unspecified. */ +- && (known_eq (ref->size, BITS_PER_UNIT) +- || (get_alias_set (lhs) != 0 +- && ao_ref_alias_set (ref) != 0))) ++ && ref->ref) + { + tree *saved_last_vuse_ptr = last_vuse_ptr; + /* Do not update last_vuse_ptr in vn_reference_lookup_2. */ +@@ -1891,7 +1880,14 @@ + vn_reference_t vnresult = (vn_reference_t) res; + if (vnresult->result + && operand_equal_p (vnresult->result, +- gimple_assign_rhs1 (def_stmt), 0)) ++ gimple_assign_rhs1 (def_stmt), 0) ++ /* We have to honor our promise about union type punning ++ and also support arbitrary overlaps with ++ -fno-strict-aliasing. So simply resort to alignment to ++ rule out overlaps. Do this check last because it is ++ quite expensive compared to the hash-lookup above. */ ++ && multiple_p (get_object_alignment (ref->ref), ref->size) ++ && multiple_p (get_object_alignment (lhs), ref->size)) + return res; + } + } +@@ -2031,9 +2027,20 @@ + tree rhs = gimple_assign_rhs1 (def_stmt); + if (TREE_CODE (rhs) == SSA_NAME) + rhs = SSA_VAL (rhs); +- len = native_encode_expr (gimple_assign_rhs1 (def_stmt), ++ unsigned pad = 0; ++ if (BYTES_BIG_ENDIAN ++ && is_a <scalar_mode> (TYPE_MODE (TREE_TYPE (rhs)))) ++ { ++ /* On big-endian the padding is at the 'front' so ++ just skip the initial bytes. */ ++ fixed_size_mode mode ++ = as_a <fixed_size_mode> (TYPE_MODE (TREE_TYPE (rhs))); ++ pad = GET_MODE_SIZE (mode) - size2 / BITS_PER_UNIT; ++ } ++ len = native_encode_expr (rhs, + buffer, sizeof (buffer), +- (offseti - offset2) / BITS_PER_UNIT); ++ ((offseti - offset2) / BITS_PER_UNIT ++ + pad)); + if (len > 0 && len * BITS_PER_UNIT >= maxsizei) + { + tree type = vr->type; +@@ -5207,6 +5214,57 @@ + auto_vec<tree> avail_stack; + }; + ++/* Return true if the reference operation REF may trap. */ ++ ++bool ++vn_reference_may_trap (vn_reference_t ref) ++{ ++ switch (ref->operands[0].opcode) ++ { ++ case MODIFY_EXPR: ++ case CALL_EXPR: ++ /* We do not handle calls. */ ++ case ADDR_EXPR: ++ /* And toplevel address computations never trap. */ ++ return false; ++ default:; ++ } ++ ++ vn_reference_op_t op; ++ unsigned i; ++ FOR_EACH_VEC_ELT (ref->operands, i, op) ++ { ++ switch (op->opcode) ++ { ++ case WITH_SIZE_EXPR: ++ case TARGET_MEM_REF: ++ /* Always variable. */ ++ return true; ++ case COMPONENT_REF: ++ if (op->op1 && TREE_CODE (op->op1) == SSA_NAME) ++ return true; ++ break; ++ case ARRAY_RANGE_REF: ++ case ARRAY_REF: ++ if (TREE_CODE (op->op0) == SSA_NAME) ++ return true; ++ break; ++ case MEM_REF: ++ /* Nothing interesting in itself, the base is separate. */ ++ break; ++ /* The following are the address bases. */ ++ case SSA_NAME: ++ return true; ++ case ADDR_EXPR: ++ if (op->op0) ++ return tree_could_trap_p (TREE_OPERAND (op->op0, 0)); ++ return false; ++ default:; ++ } ++ } ++ return false; ++} ++ + eliminate_dom_walker::eliminate_dom_walker (cdi_direction direction, + bitmap inserted_exprs_) + : dom_walker (direction), do_pre (inserted_exprs_ != NULL), +Index: gcc/tree-ssa-sccvn.h +=================================================================== +--- a/src/gcc/tree-ssa-sccvn.h (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/tree-ssa-sccvn.h (.../branches/gcc-8-branch) +@@ -239,6 +239,7 @@ + bool vn_nary_op_eq (const_vn_nary_op_t const vno1, + const_vn_nary_op_t const vno2); + bool vn_nary_may_trap (vn_nary_op_t); ++bool vn_reference_may_trap (vn_reference_t); + bool vn_reference_eq (const_vn_reference_t const, const_vn_reference_t const); + unsigned int get_max_value_id (void); + unsigned int get_next_value_id (void); +Index: gcc/ChangeLog +=================================================================== +--- a/src/gcc/ChangeLog (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/ChangeLog (.../branches/gcc-8-branch) +@@ -1,3 +1,2478 @@ ++2019-11-21 Jakub Jelinek <jakub@redhat.com> ++ ++ PR tree-optimization/91355 ++ * tree-ssa-sink.c (select_best_block): Use >= rather than > ++ for early_bb scaled count with best_bb count comparison. ++ ++ Backported from mainline ++ 2019-11-20 Jakub Jelinek <jakub@redhat.com> ++ ++ PR middle-end/90840 ++ * expmed.c (store_bit_field_1): Handle the case where op0 is not a MEM ++ and has a mode that doesn't have corresponding integral type. ++ ++ PR target/90867 ++ * config/i386/i386.c (ix86_valid_target_attribute_tree): Don't ++ clear opts->x_ix86_isa_flags{,2} here... ++ (ix86_valid_target_attribute_inner_p): ... but here when seeing ++ arch=. Also clear opts->x_ix86_isa_flags{,2}_explicit. ++ ++ PR c/90898 ++ * tree-ssa-ccp.c (insert_clobber_before_stack_restore): Remove ++ assertion. ++ (insert_clobbers_for_var): Fix a typo in function comment. ++ ++ 2019-11-19 Jakub Jelinek <jakub@redhat.com> ++ ++ PR middle-end/91450 ++ * internal-fn.c (expand_mul_overflow): For s1 * s2 -> ur, if one ++ operand is negative and one non-negative, compare the non-negative ++ one against 0 rather than comparing s1 & s2 against 0. Otherwise, ++ don't compare (s1 & s2) == 0, but compare separately both s1 == 0 ++ and s2 == 0, unless one of them is known to be negative. Remove ++ tem2 variable, use tem where tem2 has been used before. ++ ++ 2019-11-08 Jakub Jelinek <jakub@redhat.com> ++ ++ PR c++/92384 ++ * function.c (assign_parm_setup_block, assign_parm_setup_stack): Don't ++ copy TYPE_EMPTY_P arguments from data->entry_parm to data->stack_parm ++ slot. ++ (assign_parms): For TREE_ADDRESSABLE parms with TYPE_EMPTY_P type ++ force creation of a unique data.stack_parm slot. ++ ++ 2019-10-17 Jakub Jelinek <jakub@redhat.com> ++ ++ PR tree-optimization/92056 ++ * tree-object-size.c (cond_expr_object_size): Return early if then_ ++ processing resulted in unknown size. ++ ++ 2019-09-07 Jakub Jelinek <jakub@redhat.com> ++ ++ 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 <jakub@redhat.com> ++ ++ * 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 <jakub@redhat.com> ++ ++ 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-01 Jakub Jelinek <jakub@redhat.com> ++ ++ 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. ++ ++2019-11-20 Peter Bergner <bergner@linux.ibm.com> ++ ++ Backport from mainline ++ 2019-11-07 Peter Bergner <bergner@linux.ibm.com> ++ ++ PR other/92090 ++ * config/rs6000/predicates.md (input_operand): Allow MODE_PARTIAL_INT ++ modes for integer constants. ++ ++2019-11-19 Eric Botcazou <ebotcazou@adacore.com> ++ ++ * doc/invoke.texi (-gno-internal-reset-location-views): Fix typo. ++ ++2019-11-14 Martin Liska <mliska@suse.cz> ++ ++ Backport from mainline ++ 2019-11-14 Martin Liska <mliska@suse.cz> ++ ++ PR target/92389 ++ * config/i386/i386.h: Add PTA_AVX512VPOPCNTDQ to ++ PTA_ICELAKE_CLIENT which is later interited by ++ PTA_ICELAKE_SERVER and PTA_TIGERLAKE. ++ ++2019-11-13 Dragan Mladjenovic <dmladjenovic@wavecomp.com> ++ ++ Backport from mainline ++ * config/mips/mips.md (rotr<mode>3): Sanitize the constant argument ++ instead of asserting its value. ++ ++2019-11-11 H.J. Lu <hjl.tools@gmail.com> ++ ++ Backport from trunk: ++ PR target/87833 ++ * config/i386/intelmic-mkoffload.c (prepare_target_image): Put ++ -fPIC and -shared the last to create offload image. ++ ++2019-11-11 Thomas Schwinge <thomas@codesourcery.com> ++ ++ Backport from trunk: ++ * gimplify.c (gimplify_scan_omp_clauses): Assert 'offset2' instead ++ of 'offset'. ++ ++ Backport from trunk: ++ * Makefile.in (LANG_CONFIGUREFRAGS): Define. ++ (config.status): Use/depend on it. ++ * configure.ac (all_lang_configurefrags): Track, 'AC_SUBST'. ++ * configure: Regenerate. ++ ++2019-11-09 John David Anglin <danglin@gcc.gnu.org> ++ ++ Backport from mainline ++ 2019-11-07 John David Anglin <danglin@gcc.gnu.org> ++ ++ * config/pa/pa.md (memory_barrier): Revise to use ldcw barriers. ++ Enhance comment. ++ (memory_barrier_coherent, memory_barrier_64, memory_barrier_32): New ++ insn patterns using ldcw instruction. ++ (memory_barrier): Remove insn pattern using sync instruction. ++ * config/pa/pa.opt (coherent-ldcw): New option. ++ (ordered): New option. ++ ++2019-11-08 Eric Botcazou <ebotcazou@adacore.com> ++ ++ PR target/92095 ++ * config/sparc/sparc-protos.h (output_load_pcrel_sym): Declare. ++ * config/sparc/sparc.c (sparc_cannot_force_const_mem): Revert latest ++ change. ++ (got_helper_needed): New static variable. ++ (output_load_pcrel_sym): New function. ++ (get_pc_thunk_name): Remove after inlining... ++ (load_got_register): ...here. Rework the initialization of the GOT ++ register and of the GOT helper. ++ (save_local_or_in_reg_p): Test the REGNO of the GOT register. ++ (sparc_file_end): Test got_helper_needed to decide whether the GOT ++ helper must be emitted. Use output_asm_insn instead of fprintf. ++ (sparc_init_pic_reg): In PIC mode, always initialize the PIC register ++ if optimization is enabled. ++ * config/sparc/sparc.md (load_pcrel_sym<P:mode>): Emit the assembly ++ by calling output_load_pcrel_sym. ++ ++2019-11-06 John David Anglin <danglin@gcc.gnu.org> ++ ++ Backport from mainline ++ 2018-09-19 John David Anglin <danglin@gcc.gnu.org> ++ ++ PR rtl-optimization/85458 ++ * config/pa/pa.c (pa_adjust_priority): Delete. ++ (TARGET_SCHED_ADJUST_PRIORITY): Delete define. ++ ++2019-11-05 Segher Boessenkool <segher@kernel.crashing.org> ++ ++ Backport from trunk ++ 2019-10-24 Segher Boessenkool <segher@kernel.crashing.org> ++ ++ * config/rs6000/altivec.md (altivec_vavgu<VI_char>): Rename to... ++ (uavg<mode>3_ceil): ... This. ++ (altivec_vavgs<VI_char>): Rename to... ++ (avg<mode>3_ceil): ... This. ++ * config/rs6000/rs6000-builtin.def (VAVGUB, VAVGSB, VAVGUH, VAVGSH, ++ VAVGUW, VAVGSW): Adjust. ++ ++2019-11-05 Segher Boessenkool <segher@kernel.crashing.org> ++ ++ Backport from trunk ++ 2019-10-26 Segher Boessenkool <segher@kernel.crashing.org> ++ ++ PR target/91289 ++ * config/rs6000/rs6000.c (rs6000_emit_allocate_stack): Don't add an ++ immediate to r0; use r11 instead. Save and restore r11 to r0 around ++ this. ++ ++2019-11-04 John David Anglin <danglin@gcc.gnu.org> ++ ++ Backport from mainline ++ 2019-10-03 John David Anglin <danglin@gcc.gnu.org> ++ ++ * config/pa/pa.h (MAX_PCREL17F_OFFSET): Adjust. ++ ++2019-11-04 John David Anglin <danglin@gcc.gnu.org> ++ ++ Backport from mainline ++ 2019-10-03 John David Anglin <danglin@gcc.gnu.org> ++ ++ * 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-04 John David Anglin <danglin@gcc.gnu.org> ++ ++ Backport from mainline ++ 2019-10-12 John David Anglin <danglin@gcc.gnu.org> ++ ++ * config/pa/pa.c (pa_output_call): Load descriptor address to register ++ %r22. Load function address before global pointer. ++ (pa_attr_length_indirect_call): Adjust length of inline versions of ++ $$dyncall. ++ (pa_output_indirect_call): Remove fast inline version of $$dyncall ++ before normal cases. Update inline $$dyncall sequences to preserve ++ function descriptor address in register %r22. ++ (TRAMPOLINE_CODE_SIZE): Adjust. ++ (pa_asm_trampoline_template): Revise 32-bit trampoline. Don't assume ++ register %r22 contains trampoline address. ++ (pa_trampoline_init): Adjust offsets. ++ (pa_trampoline_adjust_address): Likewise. ++ * config/pa/pa.h (TRAMPOLINE_SIZE): Adjust 32-bit size. ++ ++ 2019-10-17 John David Anglin <danglin@gcc.gnu.org> ++ ++ * config/pa/pa.c (pa_output_indirect_call): Fix typos in last change. ++ ++2019-11-1 Delia Burduv <Delia.Burduv@arm.com> ++ ++ Backport from trunk ++ 2019-02-20 Andre Vieira <andre.simoesdiasvieira@arm.com> ++ ++ PR target/86487 ++ * lra-constraints.c(uses_hard_regs_p): Fix handling of ++ paradoxical SUBREGS. ++ ++2019-10-31 Iain Sandoe <iain@sandoe.co.uk> ++ ++ Backport from mainline ++ 2019-10-13 Iain Sandoe <iain@sandoe.co.uk> ++ ++ * 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-31 Iain Sandoe <iain@sandoe.co.uk> ++ ++ Backport from mainline ++ 2019-10-09 Iain Sandoe <iain@sandoe.co.uk> ++ ++ * 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 <iain@sandoe.co.uk> ++ ++ * config/darwin.c (darwin_override_options): Adjust objective-c ++ ABI version error messages to avoid punctuation and contracted ++ negations. ++ ++2019-10-31 Iain Sandoe <iain@sandoe.co.uk> ++ ++ Backport from mainline ++ 2019-07-03 Iain Sandoe <iain@sandoe.co.uk> ++ ++ * 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-31 Iain Sandoe <iain@sandoe.co.uk> ++ ++ Backport from mainline ++ 2019-06-27 Iain Sandoe <iain@sandoe.co.uk> ++ ++ * config/rs6000/darwin.h (ENDFILE_SPEC): Correct whitespace in the ++ spec. ++ ++ Backport from mainline ++ 2019-06-25 Iain Sandoe <iain@sandoe.co.uk> ++ ++ * config/rs6000/darwin.h (ENDFILE_SPEC): New. ++ ++2019-10-31 Iain Sandoe <iain@sandoe.co.uk> ++ ++ Backport from mainline ++ 2019-06-18 Iain Sandoe <iain@sandoe.co.uk> ++ ++ * config/darwin.c (darwin_emit_unwind_label): New default to false. ++ (darwin_override_options): Set darwin_emit_unwind_label as needed. ++ ++2019-10-31 Iain Sandoe <iain@sandoe.co.uk> ++ ++ Backport from mainline ++ 2019-08-13 Iain Sandoe <iain@sandoe.co.uk> ++ ++ * 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 <iain@sandoe.co.uk> ++ ++ * 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-31 Iain Sandoe <iain@sandoe.co.uk> ++ ++ Backport from mainline ++ 2019-06-27 Iain Sandoe <iain@sandoe.co.uk> ++ ++ * config/rs6000/rs6000.c (darwin_rs6000_override_options): Honour ++ user-specified float mode choice for kernel mode code. ++ ++2019-10-31 Iain Sandoe <iain@sandoe.co.uk> ++ ++ Backport from mainline ++ 2019-06-23 Iain Sandoe <iain@sandoe.co.uk> ++ ++ * config/rs6000/darwin.h: Handle GCC target pragma. ++ ++2019-10-30 Dragan Mladjenovic <dmladjenovic@wavecomp.com> ++ ++ Backport from mainline ++ 2019-07-09 Dragan Mladjenovic <dmladjenovic@wavecomp.com> ++ ++ * cfgcleanup.c (old_insns_match_p): Check if used hard regs set is equal ++ for both call instructions. ++ ++2019-10-28 Iain Sandoe <iain@sandoe.co.uk> ++ ++ Backport from mainline ++ 2019-10-17 Iain Sandoe <iain@sandoe.co.uk> ++ ++ 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-28 Iain Sandoe <iain@sandoe.co.uk> ++ ++ Backport from mainline ++ 2019-10-12 Iain Sandoe <iain@sandoe.co.uk> ++ ++ 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-28 Iain Sandoe <iain@sandoe.co.uk> ++ ++ Backport from mainline ++ 2019-10-12 Iain Sandoe <iain@sandoe.co.uk> ++ ++ * config/darwin-protos.h (machopic_finish): Delete. ++ * config/darwin.c (machopic_finish): Make static. ++ ++ Backport from mainline ++ 2019-10-09 Iain Sandoe <iain@sandoe.co.uk> ++ ++ * 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 <iain@sandoe.co.uk> ++ ++ * 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 <iain@sandoe.co.uk> ++ ++ * 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 <iain@sandoe.co.uk> ++ ++ * 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-28 Iain Sandoe <iain@sandoe.co.uk> ++ ++ Backport from mainline ++ 2019-10-05 Iain Sandoe <iain@sandoe.co.uk> ++ ++ 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-28 Iain Sandoe <iain@sandoe.co.uk> ++ ++ Backport from mainline ++ 2019-09-21 Iain Sandoe <iain@sandoe.co.uk> ++ ++ * config/darwin.c (machopic_legitimize_pic_address): Check ++ for lra, rather than reload. ++ ++2019-10-28 Peter Bergner <bergner@linux.ibm.com> ++ Jiufu Guo <guojiufu@linux.ibm.com> ++ ++ 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-25 Iain Sandoe <iain@sandoe.co.uk> ++ ++ * config/rs6000/darwin.h (ASM_OUTPUT_MAX_SKIP_ALIGN):Guard ++ against out of range max skip or log values. ++ ++2019-10-25 Richard Earnshaw <rearnsha@arm.com> ++ ++ Backport from mainline ++ 2019-05-08 Mihail Ionescu <mihail.ionescu@arm.com> ++ Richard Earnshaw <rearnsha@arm.com> ++ 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-23 Peter Bergner <bergner@linux.ibm.com> ++ ++ Backport from mainline ++ 2019-10-08 Tulio Magno Quites Machado Filho <tuliom@linux.ibm.com> ++ ++ * 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 Richard Biener <rguenther@suse.de> ++ ++ Backport from mainline ++ 2019-10-17 Richard Biener <rguenther@suse.de> ++ ++ 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-09-19 Richard Biener <rguenther@suse.de> ++ ++ PR tree-optimization/91812 ++ * tree-ssa-phiprop.c (propagate_with_phi): Do not replace ++ volatile loads. ++ ++ 2019-09-17 Richard Biener <rguenther@suse.de> ++ ++ PR debug/91772 ++ * dwarf2out.c (dwarf2out_late_global_decl): If early dwarf ++ was missing generate locations only once. ++ ++2019-10-23 Eric Botcazou <ebotcazou@adacore.com> ++ ++ 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-20 Iain Sandoe <iain@sandoe.co.uk> ++ ++ Backport from mainline ++ 2019-10-03 Iain Sandoe <iain@sandoe.co.uk> ++ ++ 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-20 Iain Sandoe <iain@sandoe.co.uk> ++ ++ Backport from mainline ++ 2019-07-03 Iain Sandoe <iain@sandoe.co.uk> ++ ++ * 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 <iain@sandoe.co.uk> ++ ++ * 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-18 Georg-Johann Lay <avr@gjlay.de> ++ ++ Backport from 2019-10-18 trunk r277143. ++ ++ PR target/86040 ++ * config/avr/avr.c (avr_out_lpm): Do not shortcut-return. ++ ++2019-10-17 Segher Boessenkool <segher@kernel.crashing.org> ++ ++ Backport from trunk ++ 2019-03-15 Segher Boessenkool <segher@kernel.crashing.org> ++ ++ PR rtl-optimization/89721 ++ * lra-constraints (invariant_p): Return false if side_effects_p holds. ++ ++2019-10-17 Richard Earnshaw <rearnsha@arm.com> ++ ++ Backport from mainline ++ 2019-05-03 Richard Earnshaw <rearnsha@arm.com> ++ ++ 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-14 Will Schmidt <will_schmidt@vnet.ibm.com> ++ ++ Backport from trunk ++ 2019-09-26 Will Schmidt <will_schmidt@vnet.ibm.com> ++ ++ * 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 <ubizjak@gmail.com> ++ ++ PR target/92022 ++ * config/alpha/alpha.c (alpha_handle_trap_shadows): Skip DEBUG_INSN. ++ ++2019-10-10 Oleg Endo <olegendo@gcc.gnu.org> ++ ++ Backport from mainline ++ 2019-10-10 Oleg Endo <olegendo@gcc.gnu.org> ++ ++ 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-07 Bill Schmidt <wschmidt@linux.ibm.com> ++ ++ Backport from mainline ++ 2019-10-01 Bill Schmidt <wschmidt@linux.ibm.com> ++ ++ PR target/91275 ++ * config/rs6000/rs6000-p8swap.c (rtx_is_swappable_p): Don't swap ++ vpmsumd. ++ ++2019-10-01 Oleg Endo <olegendo@gcc.gnu.org> ++ ++ Backport from mainline ++ ++ 2019-10-01 Oleg Endo <olegendo@gcc.gnu.org> ++ ++ 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 <kyrylo.tkachov@arm.com> ++ ++ Backport from mainline ++ 2019-09-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com> ++ ++ * config/aarch64/aarch64.md (mov<mode>): Don't call ++ aarch64_split_dimode_const_store on volatile MEM. ++ ++2019-10-01 Eric Botcazou <ebotcazou@adacore.com> ++ ++ PR target/91854 ++ Backport from mainline ++ 2019-09-20 Eric Botcazou <ebotcazou@adacore.com> ++ ++ PR target/91269 ++ * config/sparc/sparc.h (HARD_REGNO_CALLER_SAVE_MODE): Define. ++ ++2019-09-28 Oleg Endo <olegendo@gcc.gnu.org> ++ ++ Backport from mainline ++ 2019-09-28 Oleg Endo <olegendo@gcc.gnu.org> ++ ++ PR target/80672 ++ * config/sh/sh.c (parse_validate_atomic_model_option): Use ++ std::string::compare instead of std::string::find. ++ ++2019-09-28 Oleg Endo <olegendo@gcc.gnu.org> ++ ++ Backport from mainline ++ 2018-07-15 Jeff Law <law@redhat.com> ++ ++ PR target/85993 ++ * config/sh/sh.c (output_mi_thunk): Remove dead conditional ++ block. ++ ++2019-09-26 Iain Sandoe <iain@sandoe.co.uk> ++ ++ Backport from mainline ++ 2019-06-16 Iain Sandoe <iain@sandoe.co.uk> ++ ++ * config/darwin.opt (prebind, noprebind, seglinkedit, ++ noseglinkedit): Add RejectNegative. ++ ++ Backport from mainline ++ 2019-06-14 Iain Sandoe <iain@sandoe.co.uk> ++ ++ * config/darwin.opt: Add RejectNegative where needed, reorder ++ and add minimal functional descriptions. ++ ++2019-09-25 Kyrylo Tkachov <kyrylo.tkachov@arm.com> ++ ++ Backport from mainline ++ 2019-08-22 Kyrylo Tkachov <kyrylo.tkachov@arm.com> ++ ++ * 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 <jcmvbkbc@gmail.com> ++ ++ Backport from mainline ++ 2019-06-18 Max Filippov <jcmvbkbc@gmail.com> ++ ++ * 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-20 John David Anglin <danglin@gcc.gnu.org> ++ ++ * config/pa/pa.c (pa_trampoline_init): Remove spurious extended ++ character. ++ ++2019-09-20 Andreas Krebbel <krebbel@linux.ibm.com> ++ ++ Backport from mainline ++ 2019-06-06 Andreas Krebbel <krebbel@linux.ibm.com> ++ ++ PR rtl-optimization/88751 ++ * ira.c (ira): Use the number of the actually referenced registers ++ when calculating the threshold. ++ ++2019-09-11 Eric Botcazou <ebotcazou@adacore.com> ++ ++ PR rtl-optimization/89795 ++ * rtlanal.c (nonzero_bits1) <SUBREG>: Do not propagate results from ++ inner REGs to paradoxical SUBREGs if WORD_REGISTER_OPERATIONS is set. ++ ++2019-09-09 Jakub Jelinek <jakub@redhat.com> ++ ++ 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 <wdijkstr@arm.com> ++ ++ Backport from mainline ++ 2019-08-13 Wilco Dijkstra <wdijkstr@arm.com> ++ ++ PR target/81800 ++ * gcc/config/aarch64/aarch64.md (lrint): Disable lrint pattern if GPF ++ operand is larger than a long int. ++ ++2019-09-03 Iain Sandoe <iain@sandoe.co.uk> ++ ++ Backport from mainline ++ 2019-08-23 Iain Sandoe <iain@sandoe.co.uk> ++ ++ 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-09-01 Eric Botcazou <ebotcazou@adacore.com> ++ ++ 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-30 Richard Biener <rguenther@suse.de> ++ ++ Backport from mainline ++ 2019-06-21 Richard Biener <rguenther@suse.de> ++ ++ PR tree-optimization/90930 ++ * tree-ssa-reassoc.c (rewrite_expr_tree_parallel): Set visited ++ flag on new stmts to avoid re-processing them. ++ ++ 2019-05-27 Richard Biener <rguenther@suse.de> ++ ++ PR tree-optimization/90637 ++ * tree-ssa-sink.c (statement_sink_location): Honor the ++ computed sink location for single-uses. ++ ++2019-08-30 Richard Biener <rguenther@suse.de> ++ ++ Backport from mainline ++ 2019-07-08 Richard Biener <rguenther@suse.de> ++ ++ PR tree-optimization/91108 ++ * tree-ssa-sccvn.c: Include builtins.h. ++ (vn_reference_lookup_3): Use only alignment constraints to ++ verify same-valued store disambiguation. ++ ++2019-08-30 Segher Boessenkool <segher@kernel.crashing.org> ++ ++ Backport from trunk ++ 2019-08-22 Segher Boessenkool <segher@kernel.crashing.org> ++ ++ 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 <segher@kernel.crashing.org> ++ ++ Backport from trunk ++ 2019-08-22 Segher Boessenkool <segher@kernel.crashing.org> ++ ++ * 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 <rguenther@suse.de> ++ ++ Backport from mainline ++ 2019-01-07 Richard Sandiford <richard.sandiford@arm.com> ++ ++ PR middle-end/88567 ++ * tree-vect-loop.c (get_initial_defs_for_reduction): Pass the ++ output vector directly to duplicate_and_interleave instead of ++ going through a temporary. Postpone insertion of ctor_seq to ++ the end of the loop. ++ ++ 2018-12-04 Richard Biener <rguenther@suse.de> ++ ++ PR tree-optimization/88315 ++ * tree-vect-loop.c (get_initial_defs_for_reduction): Simplify ++ and fix initialization vector for SAD and DOT_PROD SLP reductions. ++ ++2019-08-30 Richard Biener <rguenther@suse.de> ++ ++ Backport from mainline ++ 2019-06-18 Richard Biener <rguenther@suse.de> ++ ++ PR debug/90900 ++ * cfgexpand.c (expand_debug_expr): Treat NOTE_P DECL_RTL ++ as if optimized away. ++ ++ 2019-04-29 Richard Biener <rguenther@suse.de> ++ ++ PR tree-optimization/90278 ++ * tree-ssa-forwprop.c (pass_forwprop::execute): Transfer/clean ++ EH on comparison simplification. ++ ++ 2019-04-25 Richard Biener <rguenther@suse.de> ++ ++ PR middle-end/90194 ++ * match.pd: Add pattern to simplify view-conversion of an ++ empty constructor. ++ ++2019-08-30 Richard Biener <rguenther@suse.de> ++ ++ Backport from mainline ++ 2019-08-12 Richard Biener <rguenther@suse.de> ++ ++ PR lto/91375 ++ * tree.c (free_lang_data_in_type): Do not free TYPE_BINFO dependent on ++ flag_devirtualize. ++ ++ 2019-07-31 Richard Biener <rguenther@suse.de> ++ ++ PR tree-optimization/91293 ++ * tree-vect-slp.c (vect_build_slp_tree_2): Do not swap operands ++ of reduction stmts. ++ ++ 2019-07-31 Richard Biener <rguenther@suse.de> ++ ++ PR tree-optimization/91280 ++ * tree-ssa-structalias.c (get_constraint_for_component_ref): ++ Decompose MEM_REF manually for offset handling. ++ ++ 2019-07-19 Richard Biener <rguenther@suse.de> ++ ++ PR tree-optimization/91200 ++ * tree-ssa-phiopt.c (cond_store_replacement): Check we have ++ no PHI nodes in middle-bb. ++ ++ 2019-07-15 Richard Biener <rguenther@suse.de> ++ ++ PR middle-end/91162 ++ * tree-cfg.c (move_block_to_fn): When releasing a virtual PHI ++ node make sure to replace all uses with something valid. ++ ++ 2019-07-11 Richard Biener <rguenther@suse.de> ++ ++ PR middle-end/91131 ++ * gimplify.c (gimplify_compound_literal_expr): Force a temporary ++ when the object is volatile and we have not cleared it even though ++ there are no nonzero elements. ++ ++ 2019-07-10 Richard Biener <rguenther@suse.de> ++ ++ PR tree-optimization/91126 ++ * tree-ssa-sccvn.c (vn_reference_lookup_3): Adjust ++ native encoding offset for BYTES_BIG_ENDIAN. ++ ++2019-08-30 Richard Biener <rguenther@suse.de> ++ ++ * lto-streamer.h (LTO_minor_version): Bump. ++ ++ Backport from mainline ++ 2019-05-06 Richard Biener <rguenther@suse.de> ++ ++ PR tree-optimization/90328 ++ * tree-data-ref.h (dr_may_alias_p): Pass in the actual loop nest. ++ * tree-data-ref.c (dr_may_alias_p): Check whether the clique ++ is valid in the loop nest before using it. ++ (initialize_data_dependence_relation): Adjust. ++ * graphite-scop-detection.c (build_alias_set): Pass the SCOP enclosing ++ loop as loop-nest to dr_may_alias_p. ++ ++ 2019-03-08 Richard Biener <rguenther@suse.de> ++ ++ PR middle-end/89578 ++ * cfgloop.h (struct loop): Add owned_clique field. ++ * cfgloopmanip.c (copy_loop_info): Copy it. ++ * tree-cfg.c (gimple_duplicate_bb): Do not remap owned_clique ++ cliques. ++ * tree-inline.c (copy_loops): Remap owned_clique. ++ * lto-streamer-in.c (input_cfg): Stream owned_clique. ++ * lto-streamer-out.c (output_cfg): Likewise. ++ ++ 2019-02-22 Richard Biener <rguenther@suse.de> ++ ++ PR tree-optimization/87609 ++ * tree-cfg.c (gimple_duplicate_bb): Only remap inlined cliques. ++ ++ 2019-02-22 Richard Biener <rguenther@suse.de> ++ ++ PR middle-end/87609 ++ * cfghooks.h (dependence_hash): New typedef. ++ (struct copy_bb_data): New type. ++ (cfg_hooks::duplicate_block): Adjust to take a copy_bb_data argument. ++ (duplicate_block): Likewise. ++ * cfghooks.c (duplicate_block): Pass down copy_bb_data. ++ (copy_bbs): Create and pass down copy_bb_data. ++ * cfgrtl.c (cfg_layout_duplicate_bb): Adjust. ++ (rtl_duplicate_bb): Likewise. ++ * tree-cfg.c (gimple_duplicate_bb): If the copy_bb_data arg is not NULL ++ remap dependence info. ++ ++ 2019-02-22 Richard Biener <rguenther@suse.de> ++ ++ PR tree-optimization/87609 ++ * tree-core.h (tree_base): Document special clique values. ++ * tree-inline.c (remap_dependence_clique): Do not use the ++ special clique value of one. ++ (maybe_set_dependence_info): Use clique one. ++ (clear_dependence_clique): New callback. ++ (compute_dependence_clique): Clear clique one from all refs ++ before assigning it (again). ++ ++2019-08-30 Bin Cheng <bin.linux@linux.alibaba.com> ++ ++ Backport from mainline ++ 2019-07-18 Bin Cheng <bin.linux@linux.alibaba.com> ++ ++ PR tree-optimization/91137 ++ * tree-ssa-loop-ivopts.c (struct ivopts_data): New field. ++ (tree_ssa_iv_optimize_init, alloc_iv, tree_ssa_iv_optimize_finalize): ++ Init, use and fini the above new field. ++ (determine_base_object_1): New function. ++ (determine_base_object): Reimplement using walk_tree. ++ ++2019-08-30 Richard Biener <rguenther@suse.de> ++ ++ Backport from mainline ++ 2019-04-09 Richard Sandiford <richard.sandiford@arm.com> ++ ++ * tree-vect-data-refs.c (vect_get_smallest_scalar_type): Always ++ use gimple_expr_type for load and store calls. Skip over the ++ condition argument in a conditional internal function. ++ Protect use of TREE_INT_CST_LOW. ++ ++ 2019-04-08 Richard Biener <rguenther@suse.de> ++ ++ PR tree-optimization/90006 ++ * tree-vect-data-refs.c (vect_get_smallest_scalar_type): Handle ++ calls like lrint. ++ ++ 2019-04-01 Bin Cheng <bin.cheng@linux.alibaba.com> ++ ++ PR tree-optimization/89725 ++ * tree-chrec.c (chrec_contains_symbols): New parameter. Handle outer ++ loop's chrec as invariant symbol. ++ * tree-chrec.h (chrec_contains_symbols): New parameter. ++ * tree-data-ref.c (analyze_miv_subscript): Pass new argument. ++ (build_classic_dist_vector_1, add_other_self_distances): Bypass access ++ function of loops not in DDR's loop_nest. ++ ++ 2019-03-26 Bin Cheng <bin.cheng@linux.alibaba.com> ++ ++ PR tree-optimization/81740 ++ * tree-vect-data-refs.c (vect_analyze_data_ref_dependence): ++ In case of outer loop vectorization, check for backward dependence ++ at the inner loop if outer loop dependence is reversed. ++ ++2019-08-30 Richard Biener <rguenther@suse.de> ++ ++ Backport from mainline ++ 2019-04-24 Richard Biener <rguenther@suse.de> ++ ++ PR middle-end/90213 ++ * gimple-fold.c (fold_const_aggregate_ref_1): Do multiplication ++ by size and BITS_PER_UNIT on poly-wide-ints. ++ ++ 2019-04-11 Richard Biener <rguenther@suse.de> ++ ++ PR tree-optimization/90020 ++ * tree-ssa-sccvn.c (vn_reference_may_trap): New function. ++ * tree-ssa-sccvn.h (vn_reference_may_trap): Declare. ++ * tree-ssa-pre.c (compute_avail): Use it to not put ++ possibly trapping references after a call that might not ++ return into EXP_GEN. ++ * gcse.c (compute_hash_table_work): Do not elide ++ marking a block containing a call if the call might not ++ return. ++ ++2019-08-29 Iain Sandoe <iain@sandoe.co.uk> ++ ++ Backport from mainline ++ 2019-07-24 Iain Sandoe <iain@sandoe.co.uk> ++ ++ PR bootstrap/87030 ++ * config/i386/darwin.h (REAL_LIBGCC_SPEC): Revert change from r273749. ++ ++ PR bootstrap/87030 ++ * config/i386/darwin.h (REAL_LIBGCC_SPEC): Move from here... ++ * config/i386/darwin32-biarch.h .. to here. ++ * config/i386/darwin64-biarch.h: Adjust comments. ++ * config/rs6000/darwin32-biarch.h: Likewise. ++ * config/rs6000/darwin64-biarch.h: Likewise. ++ * config.gcc: Missed commit from r273746 ++ (*-*-darwin*): Don't include CPU t-darwin here. ++ (i[34567]86-*-darwin*): Adjust to use biarch files. Produce ++ an error message if i686-darwin configuration is attempted for ++ Darwin >= 18. ++ ++ Backport from mainline ++ 2019-07-23 Iain Sandoe <iain@sandoe.co.uk> ++ ++ PR bootstrap/87030 ++ * config.gcc (*-*-darwin*): Don't include CPU t-darwin here. ++ (i[34567]86-*-darwin*): Adjust to use biarch files. Produce ++ an error message if i686-darwin configuration is attempted for ++ Darwin >= 18. ++ (x86_64-*-darwin*): Switch to single multilib for Darwin >= 18. ++ (powerpc-*-darwin*): Use biarch files where needed. ++ (powerpc64-*-darwin*): Likewise. ++ * config/i386/darwin.h (REAL_LIBGCC_SPEC): Move to new biarch file. ++ (DARWIN_ARCH_SPEC, DARWIN_SUBARCH_SPEC): Revise for default single ++ arch case. ++ * config/i386/darwin32-biarch.h: New. ++ * config/i386/darwin64.h: Rename. ++ * gcc/config/i386/darwin64-biarch.h: To this. ++ * config/i386/t-darwin: Rename. ++ * gcc/config/i386/t-darwin32-biarch: To this. ++ * config/i386/t-darwin64: Rename. ++ * gcc/config/i386/t-darwin64-biarch: To this. ++ * config/rs6000/darwin32-biarch.h: New. ++ * config/rs6000/darwin64.h: Rename. ++ * config/rs6000/darwin64-biarch.h: To this. ++ (DARWIN_ARCH_SPEC, DARWIN_SUBARCH_SPEC): Revise for default single ++ arch case. ++ * config/rs6000/t-darwin8: Rename. ++ * config/rs6000/t-darwin32-biarch: To this. ++ * config/rs6000/t-darwin64 Rename. ++ * config/rs6000/t-darwin64-biarch: To this. ++ ++2019-08-29 Jakub Jelinek <jakub@redhat.com> ++ ++ Backported from mainline ++ 2019-07-30 Jakub Jelinek <jakub@redhat.com> ++ ++ PR target/91150 ++ * config/i386/i386.c (expand_vec_perm_blend): Change mask type ++ from unsigned to unsigned HOST_WIDE_INT. For E_V64QImode cast ++ comparison to unsigned HOST_WIDE_INT before shifting it left. ++ ++ 2019-07-04 Jakub Jelinek <jakub@redhat.com> ++ ++ PR middle-end/78884 ++ * gimplify.c (struct gimplify_omp_ctx): Add add_safelen1 member. ++ (gimplify_bind_expr): If seeing TREE_ADDRESSABLE VLA inside of simd ++ loop body, set ctx->add_safelen1 instead of making it GOVD_PRIVATE. ++ (gimplify_adjust_omp_clauses): Add safelen (1) clause if ++ ctx->add_safelen1 is set. ++ ++ PR rtl-optimization/90756 ++ * explow.c (promote_ssa_mode): Always use TYPE_MODE, don't bypass it ++ for VECTOR_TYPE_P. ++ ++ 2019-06-12 Jakub Jelinek <jakub@redhat.com> ++ ++ PR c/90760 ++ * symtab.c (symtab_node::set_section): Allow being called on aliases ++ as long as they aren't analyzed yet. ++ ++ 2019-06-05 Jakub Jelinek <jakub@redhat.com> ++ ++ PR debug/90733 ++ * var-tracking.c (vt_expand_loc_callback): Don't create raw subregs ++ with VOIDmode inner operands. ++ ++ 2019-04-19 Jakub Jelinek <jakub@redhat.com> ++ ++ PR middle-end/90139 ++ * tree-outof-ssa.c (get_temp_reg): If reg_mode is BLKmode, return ++ assign_temp instead of gen_reg_rtx. ++ ++2019-08-27 Iain Sandoe <iain@sandoe.co.uk> ++ ++ Backport from mainline ++ 2019-07-07 Iain Sandoe <iain@sandoe.co.uk> ++ ++ * config/darwin.c (darwin_override_options): Make a final check on PIC ++ options. ++ ++2019-08-27 Iain Sandoe <iain@sandoe.co.uk> ++ ++ Backport from mainline ++ 2019-07-07 Iain Sandoe <iain@sandoe.co.uk> ++ * config/darwin.c (darwin_override_options): Don't jam symbol stubs ++ on for kernel code. ++ ++2019-08-27 Iain Sandoe <iain@sandoe.co.uk> ++ ++ Backport from mainline ++ 2019-06-27 Iain Sandoe <iain@sandoe.co.uk> ++ ++ * config/rs6000/rs6000.c (darwin_rs6000_override_options): Do not ++ use longcall for 64b code. ++ ++2019-08-27 Iain Sandoe <iain@sandoe.co.uk> ++ ++ Backport from mainline ++ 2019-08-18 Iain Sandoe <iain@sandoe.co.uk> ++ ++ * config/rs6000/darwin.h (TARGET_OS_CPP_BUILTINS): Add asserts ++ for cpu and machine. Factor 64/32b builtins. ++ ++ Backport from mainline ++ 2019-06-23 Iain Sandoe <iain@sandoe.co.uk> ++ ++ * config/rs6000/darwin.h: (__PPC__, __PPC64__): New. ++ ++2019-08-25 Iain Sandoe <iain@sandoe.co.uk> ++ ++ Backport from mainline ++ 2019-06-19 Iain Sandoe <iain@sandoe.co.uk> ++ ++ * config/darwin-driver.c (darwin_driver_init): Fix off-by-one errors ++ in computing the number of options to be moved. ++ ++ Backport from mainline ++ 2019-06-13 Iain Sandoe <iain@sandoe.co.uk> ++ ++ * config/darwin-driver.c (validate_macosx_version_min): New. ++ (darwin_default_min_version): Cleanup and validate supplied version. ++ (darwin_driver_init): Likewise and push cleaned version into opts. ++ ++2019-08-25 Uroš Bizjak <ubizjak@gmail.com> ++ ++ PR target/91533 ++ Backport from mainline ++ 2019-06-30 Uroš Bizjak <ubizjak@gmail.com> ++ ++ * config/i386/sse.md (ssse3_abs<mode>2): Rename from abs<mode>2. ++ * 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 <mistojanovic@wavecomp.com> ++ ++ Backport from mainline ++ 2019-08-23 Mihailo Stojanovic <mistojanovic@wavecomp.com> ++ ++ * config/mips/mips.md (mips_get_fcsr, *mips_get_fcsr): Use SI ++ machine mode for unspec_volatile operand. ++ ++2019-08-22 Iain Sandoe <iain@sandoe.co.uk> ++ ++ Backport from mainline ++ 2018-12-23 Iain Sandoe <iain@sandoe.co.uk> ++ ++ * config/i386/darwin.h (TARGET_ASM_OUTPUT_IDENT): New. ++ ++2019-08-22 Iain Sandoe <iain@sandoe.co.uk> ++ ++ Backport from mainline ++ 2019-05-31 Iain Sandoe <iain@sandoe.co.uk> ++ ++ * config/i386/darwin.h (ASM_OUTPUT_MAX_SKIP_ALIGN): New. ++ ++2019-08-22 Iain Sandoe <iain@sandoe.co.uk> ++ ++ Backport from mainline ++ 2019-05-18 Iain Sandoe <iain@sandoe.co.uk> ++ ++ * config/darwin-c.c (darwin_register_objc_includes): Do not ++ prepend the sysroot when building gnu-runtime header search ++ paths. ++ ++2019-08-22 Iain Sandoe <iain@sandoe.co.uk> ++ ++ Backport from mainline ++ 2019-05-18 Iain Sandoe <iain@sandoe.co.uk> ++ ++ * config/darwin.c (darwin_file_end): Use switch_to_section () ++ instead of direct output of the asm. ++ ++2019-08-20 Eric Botcazou <ebotcazou@adacore.com> ++ ++ 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-16 Iain Sandoe <iain@sandoe.co.uk> ++ ++ Backport from mainline ++ 2019-04-21 Iain Sandoe <iain@sandoe.co.uk> ++ ++ * config/rs6000/rs6000.md (group_end_nop): Emit insn register ++ names using operand format, rather than hard-wired. ++ (speculation_barrier): Likewise. ++ ++2019-08-14 Iain Sandoe <iain@sandoe.co.uk> ++ ++ Backport from mainline ++ 2018-08-22 Iain Sandoe <iain@sandoe.co.uk> ++ ++ * config/darwin.h (LINK_COMMAND_SPEC_A): Update lto options ++ to match gcc/gcc.c. ++ ++2019-08-05 Kito Cheng <kito.cheng@sifive.com> ++ ++ Backport from mainline ++ 2019-08-05 Kito Cheng <kito.cheng@sifive.com> ++ ++ * config/riscv/riscv.c (riscv_promote_function_mode): New. ++ (TARGET_PROMOTE_FUNCTION_MODE): Use riscv_promote_function_mode. ++ ++2019-08-04 Segher Boessenkool <segher@kernel.crashing.org> ++ ++ Backport from trunk ++ 2019-05-02 Segher Boessenkool <segher@kernel.crashing.org> ++ ++ * config/rs6000/rs6000.c (rs6000_dbx_register_number): Return the ++ correct numbers for TFHAR, TFIAR, TEXASR. ++ ++2019-07-23 Matthew Beliveau <mbelivea@redhat.com> ++ ++ Backported from mainline ++ 2019-07-16 Jeff Law <law@redhat.com> ++ ++ PR rtl-optimization/91173 ++ * tree-ssa-address.c (addr_for_mem_ref): If the base is an ++ SSA_NAME with a constant value, fold its value into the offset ++ and clear the base before calling gen_addr_rtx. ++ * g++.dg/pr91173.C: New test. ++ ++2019-07-23 Richard Biener <rguenther@suse.de> ++ ++ PR debug/91231 ++ * lto-streamer-in.c (input_function): Drop inline-entry markers ++ that ended up with an unknown location block. ++ ++2019-07-22 Martin Liska <mliska@suse.cz> ++ ++ Backport from mainline ++ 2019-07-22 Martin Liska <mliska@suse.cz> ++ ++ PR driver/91172 ++ * opts-common.c (decode_cmdline_option): Decode ++ argument of -Werror and check it for a wrong language. ++ * opts-global.c (complain_wrong_lang): Remove such case. ++ ++2019-07-21 Richard Sandiford <richard.sandiford@arm.com> ++ ++ Backport from mainline ++ 2019-07-10 Richard Sandiford <richard.sandiford@arm.com> ++ ++ * fold-const.c (fold_relational_const): Fix folding of ++ vector-to-scalar NE_EXPRs. ++ (test_vector_folding): Add more tests. ++ ++2019-07-19 Jason Merrill <jason@redhat.com> ++ ++ PR c++/82081 - tail call optimization breaks noexcept ++ * tree-tailcall.c (find_tail_calls): Don't turn a call from a ++ nothrow function to a might-throw function into a tail call. ++ ++2019-07-16 Wilco Dijkstra <wdijkstr@arm.com> ++ ++ Backport from mainline ++ PR target/89222 ++ * config/arm/arm.md (movsi): Use targetm.cannot_force_const_mem ++ to decide when to split off a non-zero offset from a symbol. ++ * config/arm/arm.c (arm_cannot_force_const_mem): Disallow offsets ++ in function symbols. ++ ++2019-07-16 Wilco Dijkstra <wdijkstr@arm.com> ++ ++ Backport from mainline ++ 2019-02-13 Wilco Dijkstra <wdijkstr@arm.com> ++ PR target/89190 ++ * config/arm/arm.c (ldm_stm_operation_p) Set ++ addr_reg_in_reglist correctly for first register. ++ (load_multiple_sequence): Remove dead base check. ++ (gen_ldm_seq): Correctly set write_back for Thumb-1. ++ ++2019-07-15 Andreas Krebbel <krebbel@linux.ibm.com> ++ ++ Backport from mainline ++ 2019-07-01 Andreas Krebbel <krebbel@linux.ibm.com> ++ ++ * config/s390/vector.md: Fix shift count operand printing. ++ ++2019-07-15 Wilco Dijkstra <wdijkstr@arm.com> ++ ++ Backport from mainline ++ 2019-01-23 Bin Cheng <bin.cheng@arm.com> ++ Steve Ellcey <sellcey@marvell.com> ++ ++ PR target/85711 ++ * recog.c (address_operand): Return false on wrong mode for address. ++ (constrain_operands): Check for mode with 'p' constraint. ++ ++2019-07-12 Eric Botcazou <ebotcazou@adacore.com> ++ ++ PR rtl-optimization/91136 ++ * df-core.c (ACCESSING REFS): Fix typos in comment. ++ * resource.c (mark_target_live_reg): Add artificial defs that occur at ++ the beginning of the block to the initial set of live registers. ++ ++2019-07-04 Martin Liska <mliska@suse.cz> ++ ++ Backport from mainline ++ 2019-07-03 Martin Liska <mliska@suse.cz> ++ ++ PR middle-end/90899 ++ * multiple_target.c (create_dispatcher_calls): Add to comdat ++ group only if set for ifunc. ++ ++2019-06-28 Jeff Law <law@redhat.com> ++ ++ Backport from mainline ++ 2019-06-21 Jeff Law <law@redhat.com> ++ ++ PR tree-optimization/90949 ++ * tree-ssa-copy.c (fini_copy_prop): Use reset_flow_sensitive_info. ++ * tree-ssanames.c (reset_flow_sensitive_info): Reset non-null state. ++ ++2019-06-26 Martin Jambor <mjambor@suse.cz> ++ ++ Backport from mainline ++ 2019-06-25 Martin Jambor <mjambor@suse.cz> ++ ++ PR ipa/90939 ++ * ipa-cp.c (ipcp_bits_lattice::meet_with): Remove assert. ++ ++2019-06-26 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> ++ ++ Backport from mainline ++ 2019-06-17 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> ++ ++ * configure.ac (ld_vers) <*-*-solaris2*>: Remove support for ++ alternative Solaris 11.4 format. ++ * configure: Regenerate. ++ ++2019-06-16 Jeff Law <law@redhat.com> ++ ++ Backport from mainline ++ 2019-06-16 Prachi Godbole <prachi.godbole@imgtec.com> ++ Robert Suchanek <robert.suchanek@mips.com> ++ * config/mips/mips.c (mips_expand_builtin_insn): Swap the 1st ++ and 3rd operands of the fmadd/fmsub/maddv builtin. ++ ++2019-06-16 John David Anglin <danglin@gcc.gnu.org> ++ ++ PR middle-end/64242 ++ * config/pa/pa.md (nonlocal_goto): Restore frame pointer last. Add ++ frame clobbers and schedule block. ++ (builtin_longjmp): Likewise. ++ ++2019-06-11 Jakub Jelinek <jakub@redhat.com> ++ ++ PR target/90811 ++ * config/nvptx/nvptx.c (nvptx_output_softstack_switch): Use and.b%d ++ instead of and.u%d. ++ ++2019-06-07 John David Anglin <danglin@gcc.gnu.orig> ++ ++ PR target/90751 ++ * config/pa/pa-linux.h (ASM_DECLARE_FUNCTION_NAME): Update comment. ++ Call pa_output_function_label. ++ (TARGET_ASM_FUNCTION_PROLOGUE): define. ++ * config/pa/pa-protos.h (pa_output_function_label): Declare. ++ * config/pa/pa.c (pa_output_function_prologue): Add ATTRIBUTE_UNUSED ++ to declaration. ++ (pa_linux_output_function_prologue): Declare. ++ (TARGET_ASM_FUNCTION_PROLOGUE): Delete define. ++ (pa_output_function_label): New. ++ (pa_output_function_prologue): Revise to use pa_output_function_label. ++ (pa_linux_output_function_prologue): New. ++ * config/pa/pa.h (TARGET_ASM_FUNCTION_PROLOGUE): Define. ++ ++2019-06-07 Iain Sandoe <iain@sandoe.co.uk> ++ ++ Backport from mainline. ++ 2019-05-12 Iain Sandoe <iain@sandoe.co.uk> ++ ++ PR target/82920 ++ * config/i386/darwin.h (CC1_SPEC): Report -mx32 as an error for ++ Darwin. ++ ++2019-06-07 Iain Sandoe <iain@sandoe.co.uk> ++ ++ Backport from mainline. ++ 2019-05-12 Iain Sandoe <iain@sandoe.co.uk> ++ ++ PR target/82920 ++ * config/i386/i386.c (ix86_output_jmp_thunk_or_indirect): New. ++ (ix86_output_indirect_branch_via_reg): Use output mechanism ++ accounting for __USER_LABEL_PREFIX__. ++ (ix86_output_indirect_branch_via_push): Likewise. ++ (ix86_output_function_return): Likewise. ++ (ix86_output_indirect_function_return): Likewise. ++ ++2019-05-30 Jakub Jelinek <jakub@redhat.com> ++ ++ * tree-predcom.c (is_inv_store_elimination_chain): Fix a typo - lenght ++ to length. ++ ++2019-05-29 Jakub Jelinek <jakub@redhat.com> ++ ++ PR fortran/90329 ++ * lto-streamer.h (LTO_minor_version): Bump to 2. ++ ++ Backported from mainline ++ 2019-05-16 Jakub Jelinek <jakub@redhat.com> ++ ++ PR fortran/90329 ++ * tree-core.h (struct tree_decl_common): Document ++ decl_nonshareable_flag for PARM_DECLs. ++ * tree.h (DECL_HIDDEN_STRING_LENGTH): Define. ++ * calls.c (expand_call): Don't try tail call if caller ++ has any DECL_HIDDEN_STRING_LENGTH PARM_DECLs that are or might be ++ passed on the stack and callee needs to pass any arguments on the ++ stack. ++ * tree-streamer-in.c (unpack_ts_decl_common_value_fields): Use ++ else if instead of series of mutually exclusive ifs. Handle ++ DECL_HIDDEN_STRING_LENGTH for PARM_DECLs. ++ * tree-streamer-out.c (pack_ts_decl_common_value_fields): Likewise. ++ ++2019-05-28 John David Anglin <danglin@gcc.gnu.org> ++ ++ * config/pa/pa.c (hppa_profile_hook): Remove offset adjustment. ++ ++2019-05-27 Eric Botcazou <ebotcazou@adacore.com> ++ ++ * dwarf2out.c (resolve_args_picking_1): Deal with DW_OP_GNU_addr_index ++ and DW_OP_GNU_const_index opcodes. ++ ++2019-05-24 John David Anglin <danglin@gcc.gnu.org> ++ ++ PR target/90530 ++ * config/pa/pa.c (pa_can_change_mode_class): Accept mode changes from ++ DImode to SImode in floating-point registers on 64-bit target. ++ * config/pa/pa.md (umulsidi3): Change nonimmediate_operand to ++ register_operand in xmpyu patterns. ++ ++2019-05-24 Martin Liska <mliska@suse.cz> ++ ++ Backport from mainline ++ 2019-05-23 Martin Liska <mliska@suse.cz> ++ ++ PR sanitizer/90570 ++ * gimplify.c (gimplify_target_expr): Skip TREE_STATIC target ++ expression similarly to gimplify_decl_expr. ++ ++2019-05-23 Uroš Bizjak <ubizjak@gmail.com> ++ ++ Backport from mainline ++ 2019-05-21 Uroš Bizjak <ubizjak@gmail.com> ++ ++ * config/i386/cpuid.h (__cpuid): For 32bit targets, zero ++ %ebx and %ecx bafore calling cpuid with leaf 1 or ++ non-constant leaf argument. ++ ++ 2019-05-21 Uroš Bizjak <ubizjak@gmail.com> ++ ++ PR target/90547 ++ * config/i386/i386.md (anddi_1 to andsi_1_zext splitter): ++ Avoid calling gen_lowpart with CONST operand. ++ ++2019-05-21 Sebastian Huber <sebastian.huber@embedded-brains.de> ++ ++ Backported from mainline ++ 2019-05-16 Sebastian Huber <sebastian.huber@embedded-brains.de> ++ ++ * config/arm/t-rtems: Replace ARMv7-M multilibs with Cortex-M ++ multilibs. ++ ++2019-05-20 Jeff Law <law@redhat.com> ++ ++ Backport from mainline ++ 2019-05-17 Dragan Mladjenovic <dmladjenovic@wavecomp.com> ++ ++ * config/mips/mips.c (mips_dwarf_frame_reg_mode): Replace ++ TARGET_FLOAT64 with !TARGET_FLOAT32, thus handling both fp64 ++ and fpxx modes. ++ ++2019-05-16 Kelvin Nilsen <kelvin@gcc.gnu.org> ++ ++ Backport from mainline. ++ 2019-05-07 Kelvin Nilsen <kelvin@gcc.gnu.org> ++ ++ PR target/89765 ++ * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): ++ In handling of ALTIVEC_BUILTIN_VEC_INSERT, use modular arithmetic ++ to compute vector element selector for both constant and variable ++ operands. ++ ++2019-05-15 David Edelsohn <dje.gcc@gmail.com> ++ ++ Backport from mainline ++ 2019-04-11 David Edelsohn <dje.gcc@gmail.com> ++ * xcoffout.h (xcoff_private_rodata_section_name): Declare. ++ * xcoffout.c (xcoff_private_rodata_section_name): Define. ++ * config/rs6000/rs6000.c (rs6000_xcoff_asm_init_sections): Create ++ read_only_private_data_section using coff_private_rodata_section_name. ++ (rs6000_xcoff_file_start): Generate coff_private_rodata_section_name. ++ ++ 2018-12-04 David Edelsohn <dje.gcc@gmail.com> ++ 2018-12-13 David Edelsohn <dje.gcc@gmail.com> ++ PR target/61976 ++ * config/rs6000/rs6000.c (rs6000_function_arg): Don't pass aggregates ++ in FPRs on AIX. Ensure type is non-NULL. ++ (rs6000_arg_partial_bytes): Same. ++ ++2019-05-14 Martin Liska <mliska@suse.cz> ++ ++ Backport from mainline ++ 2019-05-13 Martin Liska <mliska@suse.cz> ++ ++ PR gcov-profile/90380 ++ * gcov.c (handle_cycle): Do not support zero cycle count, ++ it should not be possible. ++ (path_contains_zero_cycle_arc): New function. ++ (circuit): Ignore zero cycle arc counts. ++ ++2019-05-14 Martin Liska <mliska@suse.cz> ++ ++ Backport from mainline ++ 2019-05-13 Martin Liska <mliska@suse.cz> ++ ++ PR gcov-profile/90380 ++ * gcov.c (enum loop_type): Remove the enum and ++ the operator. ++ (handle_cycle): Assert that we should not reach ++ a negative count. ++ (circuit): Use loop_found instead of a tri-state loop_type. ++ (get_cycles_count): Do not handle NEGATIVE_LOOP as it can't ++ happen. ++ ++2019-05-11 Andreas Tobler <andreast@gcc.gnu.org> ++ ++ Backport from mainline. ++ 2019-04-25 Andreas Tobler <andreast@gcc.gnu.org> ++ ++ * config/i386/freebsd64.h: Add bits for 32-bit multilib support. ++ * config/i386/t-freebsd64: New file. ++ * config.gcc: Add the t-freebsd64 for multilib support. ++ ++2019-05-08 Kelvin Nilsen <kelvin@gcc.gnu.org> ++ ++ Backport from mainline. ++ 2019-05-06 Kelvin Nilsen <kelvin@gcc.gnu.org> ++ ++ PR target/89424 ++ * config/rs6000/rs6000.c (rs6000_expand_vector_extract): Add ++ handling of V1TImode. ++ ++2019-05-06 Richard Biener <rguenther@suse.de> ++ ++ PR bootstrap/90359 ++ Backport from mainline ++ 2019-03-11 Jakub Jelinek <jakub@redhat.com> ++ ++ PR middle-end/89655 ++ PR bootstrap/89656 ++ * vr-values.c (vr_values::update_value_range): If ++ old_vr->varying_p (), don't update it, make new_vr also VARYING ++ and return false. ++ ++2019-05-03 Richard Biener <rguenther@suse.de> ++ ++ Backport from mainline ++ 2019-03-14 Richard Biener <rguenther@suse.de> ++ ++ PR middle-end/89698 ++ * fold-const.c (operand_equal_p): For INDIRECT_REF check ++ that the access types are similar. ++ ++ 2019-03-07 Richard Biener <rguenther@suse.de> ++ ++ PR tree-optimization/89595 ++ * tree-ssa-dom.c (dom_opt_dom_walker::optimize_stmt): Take ++ stmt iterator as reference, take boolean output parameter to ++ indicate whether the stmt was removed and thus the iterator ++ already advanced. ++ (dom_opt_dom_walker::before_dom_children): Re-iterate over ++ stmts created by folding. ++ ++ 2019-03-14 Richard Biener <rguenther@suse.de> ++ ++ PR tree-optimization/89710 ++ * tree-ssa-loop-ch.c (should_duplicate_loop_header_p): Use ++ safe_dyn_cast. ++ ++ 2019-04-15 Richard Biener <rguenther@suse.de> ++ ++ PR tree-optimization/90071 ++ * tree-ssa-reassoc.c (init_range_entry): Do not pick up ++ abnormal operands from def stmts. ++ ++ 2018-08-20 Bernd Edlinger <bernd.edlinger@hotmail.de> ++ ++ PR target/86984 ++ * expr.c (expand_assignment): Assert that bitpos is positive. ++ (store_field): Likewise ++ (expand_expr_real_1): Make sure that bitpos is positive. ++ * config/alpha/alpha.h (CONSTANT_ADDRESS_P): Avoid signed ++ integer overflow. ++ ++ 2019-03-14 Richard Biener <rguenther@suse.de> ++ ++ PR target/89711 ++ * config/i386/i386.c (make_resolver_func): Properly set ++ DECL_CONTEXT on the RESULT_DECL. ++ * config/rs6000/rs6000.c (make_resolver_func): Likewise. ++ ++2019-04-30 Jakub Jelinek <jakub@redhat.com> ++ ++ Backported from mainline ++ 2019-04-24 Jakub Jelinek <jakub@redhat.com> ++ ++ PR target/90193 ++ * rtl.c (classify_insn): Return JUMP_INSN for asm goto. ++ * emit-rtl.c (try_split): Copy over REG_LABEL_TARGET. ++ ++ PR target/90187 ++ * config/i386/i386.c (ix86_expand_sse_fp_minmax): Force if_true into ++ a register if both if_true and if_false are MEMs. ++ ++ PR tree-optimization/90208 ++ * tree-cfg.c (remove_bb): Move forced labels from removed bbs ++ after labels of new_bb, not before them. ++ ++ 2019-04-16 Jakub Jelinek <jakub@redhat.com> ++ ++ PR rtl-optimization/90082 ++ * dce.c (can_delete_call): New function. ++ (deletable_insn_p, mark_insn): Use it. ++ ++ PR tree-optimization/90090 ++ * tree-ssa-math-opts.c (is_division_by): Ignore divisions that can ++ throw internally. ++ (is_division_by_square): Likewise. Formatting fix. ++ ++ 2019-04-12 Jakub Jelinek <jakub@redhat.com> ++ ++ PR rtl-optimization/89965 ++ * dce.c: Include rtl-iter.h. ++ (struct check_argument_load_data): New type. ++ (check_argument_load): New function. ++ (find_call_stack_args): Check for loads from stack slots still tracked ++ in sp_bytes and punt if any is found. ++ ++ PR c/89946 ++ * varasm.c (assemble_start_function): Don't use tree_fits_uhwi_p ++ and gcc_unreachable if it fails, just call tree_to_uhwi which ++ verifies that too. Test TREE_CHAIN instead of list_length > 1. ++ Start warning message with a lower-case letter. Formatting fixes. ++ ++ PR rtl-optimization/90026 ++ * cfgcleanup.c (try_optimize_cfg): When removing empty bb with no ++ successors, look for BARRIERs inside of the whole BB_FOOTER chain ++ rather than just at the start of it. If e->src BB_FOOTER is not NULL ++ in cfglayout mode, use emit_barrier_after_bb. ++ ++ 2019-04-11 Jakub Jelinek <jakub@redhat.com> ++ ++ PR rtl-optimization/89965 ++ * dce.c (sp_based_mem_offset): New function. ++ (find_call_stack_args): Use sp_based_mem_offset. ++ ++ 2019-04-10 Jakub Jelinek <jakub@redhat.com> ++ ++ PR c++/90010 ++ * gimple-ssa-sprintf.c (target_to_host): Fix handling of targstr ++ with strlen in between hostsz-3 and hostsz-1 inclusive when no ++ translation is needed, and when translation is needed, only append ++ ... if the string length is hostsz or more bytes long. Avoid using ++ strncpy or strcat. ++ ++ 2019-04-09 Jakub Jelinek <jakub@redhat.com> ++ ++ PR tree-optimization/89998 ++ * gimple-ssa-sprintf.c (try_substitute_return_value): Use lhs type ++ instead of integer_type_node if possible, don't add ranges if return ++ type is not compatible with int. ++ * gimple-fold.c (gimple_fold_builtin_sprintf, ++ gimple_fold_builtin_snprintf): Use lhs type instead of hardcoded ++ integer_type_node. ++ ++ 2019-03-29 Jakub Jelinek <jakub@redhat.com> ++ ++ PR c/89872 ++ * gimplify.c (gimplify_compound_literal_expr): Don't optimize a ++ non-addressable complit into its initializer if it is volatile. ++ ++ 2019-03-28 Jakub Jelinek <jakub@redhat.com> ++ ++ PR middle-end/89621 ++ * tree-inline.h (struct copy_body_data): Add ++ dont_remap_vla_if_no_change flag. ++ * tree-inline.c (remap_type_3, remap_type_2): New functions. ++ (remap_type): Don't remap vla types if id->dont_remap_vla_if_no_change ++ and remap_type_2 returns false. ++ * omp-low.c (new_omp_context): Set ctx->cb.dont_remap_vla_if_no_change. ++ ++ 2019-03-20 Jakub Jelinek <jakub@redhat.com> ++ ++ PR target/89752 ++ * lra-constraints.c (process_alt_operands) <reg>: For BLKmode, don't ++ update this_alternative nor this_alternative_set. ++ ++ 2019-03-19 Jakub Jelinek <jakub@redhat.com> ++ ++ PR rtl-optimization/89768 ++ * loop-unroll.c (unroll_loop_constant_iterations): Use gen_int_mode ++ instead of GEN_INT. ++ (unroll_loop_runtime_iterations): Likewise. ++ ++ PR target/89752 ++ * gimplify.c (gimplify_asm_expr): For output argument with ++ TREE_ADDRESSABLE type, clear allows_reg if it allows memory, otherwise ++ diagnose error. ++ ++ PR target/89726 ++ * config/i386/i386.c (ix86_expand_floorceildf_32): In ceil ++ compensation use x2 += 1 instead of x2 -= -1 and when honoring ++ signed zeros, do another copysign after the compensation. ++ ++ 2019-03-15 Jakub Jelinek <jakub@redhat.com> ++ ++ PR debug/89704 ++ * dwarf2out.c (add_const_value_attribute): Return false for MINUS, ++ SIGN_EXTEND and ZERO_EXTEND. ++ ++ 2019-03-14 Jakub Jelinek <jakub@redhat.com> ++ ++ PR ipa/89684 ++ * multiple_target.c (create_dispatcher_calls): Change ++ references_to_redirect from vector of ipa_ref * to vector of ipa_ref. ++ In the node->iterate_referring loop, push *ref rather than ref, call ++ ref->remove_reference () and always pass 0 to iterate_referring. ++ ++ PR rtl-optimization/89679 ++ * expmed.c (expand_mult_const): Don't add a REG_EQUAL note if it ++ would contain a paradoxical SUBREG. ++ ++ PR tree-optimization/89703 ++ * tree-ssa-strlen.c (valid_builtin_call): Punt if stmt call types ++ aren't compatible also with builtin_decl_explicit. Check pure ++ or non-pure status of BUILT_IN_STR{{,N}CMP,N{LEN,{CAT,CPY}{,_CHK}}} ++ and BUILT_IN_STPNCPY{,_CHK}. ++ ++ 2019-03-13 Jakub Jelinek <jakub@redhat.com> ++ ++ PR debug/89498 ++ * dwarf2out.c (size_of_die): For dw_val_class_view_list always use ++ DWARF_OFFSET_SIZE. ++ (value_format): For dw_val_class_view_list never use DW_FORM_loclistx. ++ ++ PR middle-end/88588 ++ * omp-simd-clone.c (ipa_simd_modify_stmt_ops): Handle PHI args. ++ (ipa_simd_modify_function_body): Handle PHIs. ++ ++ 2019-03-12 Jakub Jelinek <jakub@redhat.com> ++ ++ PR middle-end/89663 ++ * builtins.c (expand_builtin_int_roundingfn, ++ expand_builtin_int_roundingfn_2): Return NULL_RTX instead of ++ gcc_unreachable if validate_arglist fails. ++ ++ 2019-03-09 Jakub Jelinek <jakub@redhat.com> ++ ++ PR c/88568 ++ * attribs.c (handle_dll_attribute): Don't clear TREE_STATIC for ++ dllimport on VAR_DECLs with RECORD_TYPE or UNION_TYPE DECL_CONTEXT. ++ ++ 2019-03-05 Jakub Jelinek <jakub@redhat.com> ++ ++ PR target/89587 ++ * config/rs6000/t-linux (MULTIARCH_DIRNAME): Set to non-empty only ++ if_multiarch. ++ ++ PR middle-end/89590 ++ * builtins.c (maybe_emit_free_warning): Punt if free doesn't have ++ exactly one argument. ++ ++ 2019-02-28 Jakub Jelinek <jakub@redhat.com> ++ ++ PR c/89520 ++ * convert.c (convert_to_real_1, convert_to_integer_1): Punt for ++ builtins if they don't have a single scalar floating point argument. ++ Formatting fixes. ++ ++ 2019-02-20 Jakub Jelinek <jakub@redhat.com> ++ ++ PR middle-end/89412 ++ * expr.c (expand_assignment): If result is a MEM, use change_address ++ instead of simplify_gen_subreg. ++ ++ 2019-02-20 Jakub Jelinek <jakub@redhat.com> ++ David Malcolm <dmalcolm@redhat.com> ++ ++ PR middle-end/89091 ++ * fold-const.c (decode_field_reference): Return NULL_TREE if ++ lang_hooks.types.type_for_size returns NULL. Check it before ++ overwriting *exp_. Use return NULL_TREE instead of return 0. ++ ++ 2019-02-20 Jakub Jelinek <jakub@redhat.com> ++ ++ PR middle-end/88074 ++ PR middle-end/89415 ++ * toplev.c (do_compile): Double the emin/emax exponents to workaround ++ buggy mpc_norm. ++ ++ 2019-02-19 Richard Biener <rguenther@suse.de> ++ ++ PR middle-end/88074 ++ * toplev.c (do_compile): Initialize mpfr's exponent range ++ based on available float modes. ++ ++2019-04-30 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com> ++ ++ Backport from mainline. ++ 2019-04-30 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com> ++ PR target/86538 ++ * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins): ++ Define __ARM_FEATURE_ATOMICS. ++ ++2019-04-30 Srinath Parvathaneni <srinath.parvathaneni@arm.com> ++ ++ Backport from mainline ++ 2018-12-11 Richard Earnshaw <Richard.Earnshaw@arm.com> ++ ++ PR target/37369 ++ * config/aarch64/iterators.md (sizem1): Add sizes for ++ SFmode and DFmode. ++ (Vbtype): Add SFmode mapping. ++ * config/aarch64/aarch64.md (copysigndf3, copysignsf3): Delete. ++ (copysign<GPF:mode>3): New expand pattern. ++ (copysign<GPF:mode>3_insn): New insn pattern. ++ ++2019-04-29 Richard Sandiford <richard.sandiford@arm.com> ++ ++ Backport from mainline: ++ 2019-01-25 Richard Sandiford <richard.sandiford@arm.com> ++ ++ PR middle-end/89037 ++ * varasm.c (output_constructor_bitfield): Use wi::extract_uhwi ++ instead of accessing TREE_INT_CST_ELT directly. ++ ++2019-04-29 Richard Sandiford <richard.sandiford@arm.com> ++ ++ Backport from mainline: ++ 2018-08-23 Richard Sandiford <richard.sandiford@arm.com> ++ ++ PR target/85910 ++ * config/aarch64/aarch64.c (aarch64_expand_vec_perm_const_1): Fix ++ aarch64_evpc_tbl guard. ++ ++2019-04-29 Richard Sandiford <richard.sandiford@arm.com> ++ ++ Backport from mainline: ++ 2019-03-08 Richard Sandiford <richard.sandiford@arm.com> ++ ++ PR debug/89631 ++ * dwarf2cfi.c (dwarf2out_frame_debug_expr): Use CONST_POLY_INT ++ instead of POLY_INT_CST. ++ ++2019-04-26 Roman Zhuykov <zhroma@ispras.ru> ++ ++ Backport from mainline ++ 2019-04-23 Roman Zhuykov <zhroma@ispras.ru> ++ ++ PR rtl-optimization/87979 ++ * modulo-sched.c (sms_schedule): Start ii value "mii" should ++ not equal zero. ++ ++ PR rtl-optimization/84032 ++ * modulo-sched.c (ps_insn_find_column): Change condition so that ++ branch will always be the last insn in a row inside partial ++ schedule. ++ ++2019-04-19 Pat Haugen <pthaugen@us.ibm.com> ++ ++ Backport from mainline: ++ 2019-04-16 Pat Haugen <pthaugen@us.ibm.com> ++ ++ PR target/84369 ++ * config/rs6000/power9.md: Add store forwarding bypass. ++ ++2019-04-17 Martin Jambor <mjambor@suse.cz> ++ ++ Backport from mainline ++ 2019-03-10 Martin Jambor <mjambor@suse.cz> ++ ++ PR tree-optimization/85762 ++ PR tree-optimization/87008 ++ PR tree-optimization/85459 ++ * tree-sra.c (contains_vce_or_bfcref_p): New parameter, set the bool ++ it points to if there is a type changing MEM_REF. Adjust all callers. ++ (build_accesses_from_assign): Disable total scalarization if ++ contains_vce_or_bfcref_p returns true through the new parameter, for ++ both rhs and lhs. ++ ++2019-04-17 Kelvin Nilsen <kelvin@gcc.gnu.org> ++ ++ Backport from mainline ++ 2019-03-15 Kelvin Nilsen <kelvin@gcc.gnu.org> ++ ++ PR target/87532 ++ * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): ++ When handling vec_extract, use modular arithmetic to allow ++ constant selectors greater than vector length. ++ * config/rs6000/rs6000.c (rs6000_expand_vector_extract): Allow ++ V1TImode vectors to have constant selector values greater than 0. ++ Use modular arithmetic to compute vector index. ++ (rs6000_split_vec_extract_var): Use modular arithmetic to compute ++ index for in-memory vectors. Correct code generation for ++ in-register vectors. Use inner mode of vector rather than mode of ++ destination for move instruction. ++ (altivec_expand_vec_ext_builtin): Use modular arithmetic to ++ compute index. ++ ++ 2019-04-12 Kelvin Nilsen <kelvin@gcc.gnu.org> ++ ++ PR target/87532 ++ * config/rs6000/vsx.md (*vsx_extract_<mode>_<VS_scalar>mode_var): ++ Use QI inner mode with V16QI vector mode. ++ ++2019-04-15 Martin Jambor <mjambor@suse.cz> ++ ++ Backport from mainline ++ 2019-04-15 Martin Jambor <mjambor@suse.cz> ++ ++ PR ipa/89693 ++ * cgraph.c (clone_of_p): Loop over clone chain for each step in ++ the thunk chain. ++ ++2019-04-15 Martin Liska <mliska@suse.cz> ++ ++ Backport from mainline ++ 2019-01-18 Martin Liska <mliska@suse.cz> ++ Richard Biener <rguenther@suse.de> ++ ++ PR middle-end/88587 ++ * cgraph.h (create_version_clone_with_body): Add new argument ++ with attributes. ++ * cgraphclones.c (cgraph_node::create_version_clone): Add ++ DECL_ATTRIBUTES to a newly created decl. And call ++ valid_attribute_p so that proper cl_target_optimization_node ++ is set for the newly created declaration. ++ * multiple_target.c (create_target_clone): Set DECL_ATTRIBUTES ++ for declaration. ++ (expand_target_clones): Do not call valid_attribute_p, it must ++ be already done. ++ * tree-inline.c (copy_decl_for_dup_finish): Reset mode for ++ vector types. ++ ++2019-04-11 Richard Biener <rguenther@suse.de> ++ ++ PR tree-optimization/90018 ++ * tree-vect-data-refs.c (vect_preserves_scalar_order_p): ++ Test both SLP and interleaving variants. ++ ++2019-04-10 Matthew Malcomson <matthew.malcomson@arm.com> ++ ++ PR target/90024 ++ * config/arm/arm.c (neon_valid_immediate): Disallow VOIDmode parameter. ++ * config/arm/constraints.md (Dm, DN, Dn): Split previous Dn constraint ++ into three. ++ * config/arm/neon.md (*neon_mov<mode>): Account for TImode and DImode ++ differences directly. ++ (*smax<mode>3_neon, vashl<mode>3, vashr<mode>3_imm): Use Dm constraint. ++ ++2019-04-07 Uroš Bizjak <ubizjak@gmail.com> ++ ++ PR target/89945 ++ * config/i386/i386.md (anddi_1 to andsi_1_zext splitter): ++ Avoid calling gen_lowpart with SYMBOL_REF and LABEL_REF operand. ++ ++2019-04-04 Martin Sebor <msebor@redhat.com> ++ ++ PR middle-end/89934 ++ * gimple-ssa-warn-restrict.c (builtin_access::builtin_access): Bail ++ out if the number of arguments is less than expected. ++ ++2019-04-03 Richard Biener <rguenther@suse.de> ++ ++ PR lto/89896 ++ * lto-wrapper.c (run_gcc): Avoid implicit rules making ++ the all target phony. ++ ++2019-04-02 Uroš Bizjak <ubizjak@gmail.com> ++ ++ PR target/89902 ++ PR target/89903 ++ * config/i386/i386.c (dimode_scalar_to_vector_candidate_p): ++ Return false for variable DImode shifts. ++ (dimode_scalar_chain::compute_convert_gain): Do not handle ++ register count operand in variable DImode shifts. ++ (dimode_scalar_chain::make_vector_copies): Remove support to copy ++ count argument of a variable shift instruction to a vector register. ++ (dimode_scalar_chain::convert_reg): Remove support to convert ++ count argument of a variable shift instruction. ++ ++2019-03-29 Kugan Vivekanandarajah <kuganv@linaro.org> ++ ++ Backport from mainline ++ 2019-03-29 Kugan Vivekanandarajah <kuganv@linaro.org> ++ Eric Botcazou <ebotcazou@adacore.com> ++ ++ PR rtl-optimization/89862 ++ * rtl.h (word_register_operation_p): Exclude CONST_INT from operations ++ that operates on the full registers for WORD_REGISTER_OPERATIONS ++ architectures. ++ ++2019-03-28 Uroš Bizjak <ubizjak@gmail.com> ++ ++ PR target/89848 ++ * config/i386/i386.c (dimode_scalar_chain::make_vector_copies): ++ Also process XEXP (src, 0) of a shift insn. ++ ++2019-03-28 Martin Liska <mliska@suse.cz> ++ ++ Backport from mainline ++ 2018-11-05 Martin Liska <mliska@suse.cz> ++ ++ PR web/87829 ++ * doc/invoke.texi: Remove options that are ++ not disabled with -Os. ++ ++2019-03-26 Uroš Bizjak <ubizjak@gmail.com> ++ ++ PR target/89827 ++ * config/i386/i386.c (dimode_scalar_chain::convert_reg): ++ Also process XEXP (src, 0) of a shift insn. ++ ++2019-03-25 Andreas Krebbel <krebbel@linux.ibm.com> ++ ++ Backport from mainline ++ 2019-03-20 Andreas Krebbel <krebbel@linux.ibm.com> ++ ++ PR target/89775 ++ * config/s390/s390.c (global_not_special_regno_p): Move to make it ++ available to ... ++ (s390_optimize_register_info): Use global_not_special_regno_p to ++ check for global regs. ++ ++2019-03-22 Bill Schmidt <wschmidt@linux.ibm.com> ++ ++ Backport from mainline ++ 2019-03-22 Bill Schmidt <wschmidt@linux.ibm.com> ++ ++ * config/rs6000/mmintrin.h (_mm_sub_pi32): Fix typo. ++ ++2019-03-21 Bill Schmidt <wschmidt@linux.ibm.com> ++ ++ Backport from mainline ++ 2019-03-08 Bill Schmidt <wschmidt@linux.ibm.com> ++ ++ * config/rs6000/rs6000-p8swap.c (rs6000_analyze_swaps): Rebuild ++ ud- and du-chains between phases. ++ ++2019-03-19 Richard Biener <rguenther@suse.de> ++ ++ PR debug/88389 ++ * opts.c (finish_options): Disable -gsplit-dwarf when doing LTO. ++ ++2019-03-19 Eric Botcazou <ebotcazou@adacore.com> ++ ++ PR rtl-optimization/89753 ++ * loop-unroll.c (decide_unroll_constant_iterations): Make guard for ++ explicit unrolling factor even more robust. ++ ++2019-03-18 Martin Sebor <msebor@redhat.com> ++ ++ PR middle-end/88273 ++ * gimple-ssa-warn-restrict.c (builtin_memref::extend_offset_range): ++ Handle anti-ranges the same as no range at all. ++ ++2019-03-18 Martin Jambor <mjambor@suse.cz> ++ ++ Backport from mainline ++ 2019-03-18 Martin Jambor <mjambor@suse.cz> ++ ++ PR tree-optimization/89546 ++ * tree-sra.c (propagate_subaccesses_across_link): Requeue new_acc if ++ any propagation to its children took place. ++ ++2019-03-17 H.J. Lu <hongjiu.lu@intel.com> ++ ++ Backport from mainline ++ 2019-03-14 H.J. Lu <hongjiu.lu@intel.com> ++ ++ PR target/89523 ++ * config/i386/i386.c (ix86_print_operand): Handle 'M' to add ++ addr32 prefix to VSIB address for X32. ++ * config/i386/sse.md (*avx512pf_gatherpf<mode>sf_mask): Prepend ++ "%M2" to opcode. ++ (*avx512pf_gatherpf<mode>df_mask): Likewise. ++ (*avx512pf_scatterpf<mode>sf_mask): Likewise. ++ (*avx512pf_scatterpf<mode>df_mask): Likewise. ++ (*avx2_gathersi<mode>): Prepend "%M3" to opcode. ++ (*avx2_gathersi<mode>_2): Prepend "%M2" to opcode. ++ (*avx2_gatherdi<mode>): Prepend "%M3" to opcode. ++ (*avx2_gatherdi<mode>_2): Prepend "%M2" to opcode. ++ (*avx2_gatherdi<mode>_3): Prepend "%M3" to opcode. ++ (*avx2_gatherdi<mode>_4): Prepend "%M2" to opcode.` ++ (*avx512f_gathersi<mode>): Prepend "%M4" to opcode. ++ (*avx512f_gathersi<mode>_2): Prepend "%M3" to opcode. ++ (*avx512f_gatherdi<mode>): Prepend "%M4" to opcode. ++ (*avx512f_gatherdi<mode>_2): Prepend "%M3" to opcode. ++ (*avx512f_scattersi<mode>): Prepend "%M0" to opcode. ++ (*avx512f_scatterdi<mode>): Likewise. ++ ++2019-03-15 Richard Biener <rguenther@suse.de> ++ ++ Backport from mainline ++ 2018-11-30 Jakub Jelinek <jakub@redhat.com> ++ ++ PR testsuite/85368 ++ * params.def (PARAM_LOGICAL_OP_NON_SHORT_CIRCUIT): New param. ++ * tree-ssa-ifcombine.c (ifcombine_ifandif): If ++ --param logical-op-non-short-circuit is present, override ++ LOGICAL_OP_NON_SHORT_CIRCUIT value from the param. ++ * fold-const.c (fold_range_test, fold_truth_andor): Likewise. ++ ++2019-03-15 Martin Liska <mliska@suse.cz> ++ ++ PR other/89712 ++ * doc/invoke.texi: Remove -fdump-class-hierarchy option. ++ ++2019-03-14 Martin Jambor <mjambor@suse.cz> ++ ++ Backport from mainline ++ 2019-03-07 Martin Jambor <mjambor@suse.cz> ++ ++ PR lto/87525 ++ * ipa-cp.c (perform_estimation_of_a_value): Account zero time benefit ++ for extern inline functions. ++ ++2019-03-14 Richard Biener <rguenther@suse.de> ++ ++ PR middle-end/89572 ++ * tree-scalar-evolution.c (get_loop_exit_condition): Use ++ safe_dyn_cast. ++ * tree-ssa-loop-ivcanon.c (canonicalize_loop_induction_variables): ++ Use gimple_location_safe. ++ ++2019-03-13 Vladimir Makarov <vmakarov@redhat.com> ++ ++ PR target/85860 ++ * lra-constraints.c (inherit_in_ebb): Update ++ potential_reload_hard_regs along with live_hard_regs. ++ ++2019-03-14 Richard Biener <rguenther@suse.de> ++ ++ Backport from mainline ++ 2019-03-13 Richard Biener <rguenther@suse.de> ++ ++ PR middle-end/89677 ++ * tree-scalar-evolution.c (simplify_peeled_chrec): Do not ++ throw FP expressions at tree-affine. ++ ++ 2019-03-01 Richard Biener <rguenther@suse.de> ++ ++ PR middle-end/89497 ++ * tree-cfgcleanup.h (cleanup_tree_cfg): Add SSA update flags ++ argument, defaulted to zero. ++ * passes.c (execute_function_todo): Pass down SSA update flags ++ to cleanup_tree_cfg. ++ * tree-cfgcleanup.c: Include tree-into-ssa.h and tree-cfgcleanup.h. ++ (cleanup_tree_cfg_1): After cleanup_control_flow_pre update SSA ++ form if requested. ++ (cleanup_tree_cfg_noloop): Pass down SSA update flags. ++ (cleanup_tree_cfg): Get and pass down SSA update flags. ++ ++ 2019-02-18 Richard Biener <rguenther@suse.de> ++ ++ PR tree-optimization/89296 ++ * tree-ssa-loop-ch.c (ch_base::copy_headers): Restrict setting ++ of no-warning flag to cases that might emit the bogus warning. ++ ++2019-03-13 Andreas Krebbel <krebbel@linux.ibm.com> ++ ++ Backport from mainline ++ 2019-03-11 Andreas Krebbel <krebbel@linux.ibm.com> ++ ++ * config/s390/s390.c (s390_expand_builtin): Do the copy_to_reg not ++ only on the else branch. ++ ++2019-03-13 Andreas Krebbel <krebbel@linux.ibm.com> ++ ++ Backport from mainline ++ 2019-02-07 Andreas Krebbel <krebbel@linux.ibm.com> ++ ++ * config/s390/s390-builtin-types.def: Add new types. ++ * config/s390/s390-builtins.def: (s390_vec_xl, s390_vec_xld2) ++ (s390_vec_xlw4): Make the memory operand into a const pointer. ++ (s390_vec_xld2, s390_vec_xlw4): Add a variant for single precision ++ float. ++ * config/s390/s390-c.c (s390_expand_overloaded_builtin): Generate ++ a new vector type with the alignment of the scalar memory operand. ++ ++2019-03-12 Richard Biener <rguenther@suse.de> ++ ++ PR tree-optimization/89664 ++ * tree-ssa-math-opts.c (execute_cse_reciprocals_1): Properly ++ free the occurance tree after the early out. ++ ++2019-03-12 Andre Vieira <andre.simoesdiasvieira@arm.com> ++ ++ Backport from mainline ++ 2019-03-08 Andre Vieira <andre.simoesdiasvieira@arm.com> ++ ++ * config/arm/arm.h (TARGET_FP16_TO_DOUBLE): Add TARGET_VFP_DOUBLE ++ requirement. ++ ++2019-03-11 Eric Botcazou <ebotcazou@adacore.com> ++ ++ PR rtl-optimization/89588 ++ * loop-unroll.c (decide_unroll_constant_iterations): Make guard for ++ explicit unrolling factor more robust. ++ ++2019-03-11 Martin Liska <mliska@suse.cz> ++ ++ Backport from mainline ++ 2019-03-08 Martin Liska <mliska@suse.cz> ++ ++ PR target/86952 ++ * config/i386/i386.c (ix86_option_override_internal): Disable ++ jump tables when retpolines are used. ++ ++2019-03-11 Martin Liska <mliska@suse.cz> ++ ++ Backport from mainline ++ 2019-02-11 David Malcolm <dmalcolm@redhat.com> ++ ++ PR lto/88147 ++ * input.c (selftest::test_line_offset_overflow): New selftest. ++ (selftest::input_c_tests): Call it. ++ ++2019-03-08 Martin Jambor <mjambor@suse.cz> ++ ++ Backport from mainline ++ 2019-03-07 Martin Jambor <mjambor@suse.cz> ++ ++ PR ipa/88235 ++ * cgraph.h (cgraph_node): New inline method former_thunk_p. ++ * cgraph.c (cgraph_node::dump): Dump a note if node is a former thunk. ++ (clone_of_p): Treat expanded thunks like thunks, be optimistic if they ++ have multiple callees. At the end check if declarations match as ++ opposed to cgraph_nodes. ++ ++2019-03-06 Tamar Christina <tamar.christina@arm.com> ++ ++ Backport from trunk. ++ 2019-02-25 Tamar Christina <tamar.christina@arm.com> ++ ++ PR target/88530 ++ * common/config/aarch64/aarch64-common.c ++ (struct aarch64_option_extension): Add is_synthetic. ++ (all_extensions): Use it. ++ (TARGET_OPTION_INIT_STRUCT): Define hook. ++ (struct gcc_targetm_common): Moved to end. ++ (all_extensions_by_on): New. ++ (opt_ext_cmp, typedef opt_ext): New. ++ (aarch64_option_init_struct): New. ++ (aarch64_contains_opt): New. ++ (aarch64_get_extension_string_for_isa_flags): Output smallest set. ++ * config/aarch64/aarch64-option-extensions.def ++ (AARCH64_OPT_EXTENSION): Explicitly include AES and SHA2 in crypto. ++ (fp, simd, crc, lse, fp16, rcpc, rdma, dotprod, aes, sha2, sha3, ++ sm4, fp16fml, sve): ++ Set is_synthetic to false. ++ (crypto): Set is_synthetic to true. ++ * config/aarch64/driver-aarch64.c (AARCH64_OPT_EXTENSION): Add ++ SYNTHETIC. ++ ++2019-03-06 Tamar Christina <tamar.christina@arm.com> ++ ++ Backport from trunk. ++ 2019-02-28 Tamar Christina <tamar.christina@arm.com> ++ ++ PR target/88530 ++ * config/aarch64/aarch64-option-extensions.def: Document it. ++ * config/aarch64/driver-aarch64.c (host_detect_local_cpu): Skip feature ++ if empty hwcaps. ++ ++2019-03-06 Xiong Hu Luo <luoxhu@linux.ibm.com> ++ ++ Backport of r268834 from mainline to gcc-8-branch. ++ 2019-02-13 Xiong Hu Luo <luoxhu@linux.vnet.ibm.com> ++ ++ * config/rs6000/altivec.h (vec_sbox_be, vec_cipher_be, ++ vec_cipherlast_be, vec_ncipher_be, vec_ncipherlast_be): New #defines. ++ * config/rs6000/crypto.md (CR_vqdi): New define_mode_iterator. ++ (crypto_vsbox_<mode>, crypto_<CR_insn>_<mode>): New define_insns. ++ * config/rs6000/rs6000-builtin.def (VSBOX_BE): New BU_CRYPTO_1. ++ (VCIPHER_BE, VCIPHERLAST_BE, VNCIPHER_BE, VNCIPHERLAST_BE): ++ New BU_CRYPTO_2. ++ * config/rs6000/rs6000.c (builtin_function_type) ++ <CRYPTO_BUILTIN_VSBOX_BE, CRYPTO_BUILTIN_VCIPHER_BE, ++ CRYPTO_BUILTIN_VCIPHERLAST_BE, CRYPTO_BUILTIN_VNCIPHER_BE, ++ CRYPTO_BUILTIN_VNCIPHERLAST_BE>: New switch options. ++ * doc/extend.texi (vec_sbox_be, vec_cipher_be, vec_cipherlast_be, ++ vec_ncipher_be, vec_ncipherlast_be): New builtin functions. ++ ++2019-03-05 Richard Biener <rguenther@suse.de> ++ ++ Backport from mainline ++ 2019-02-26 Richard Biener <rguenther@suse.de> ++ ++ PR tree-optimization/89505 ++ * tree-ssa-structalias.c (compute_dependence_clique): Make sure ++ to handle restrict pointed-to vars with multiple subvars ++ correctly. ++ ++2019-03-01 Tamar Christina <tamar.christina@arm.com> ++ ++ PR target/89517 ++ * config/aarch64/aarch64-option-extensions.def (fp, simd, crypto, ++ fp16): Collapse line. ++ ++2019-03-01 Richard Biener <rguenther@suse.de> ++ ++ Backport from mainline ++ 2019-03-01 Jakub Jelinek <jakub@redhat.com> ++ ++ PR bootstrap/89539 ++ * dwarf2out.c (output_comdat_type_unit): Add ATTRIBUTE_UNUSED to ++ early_lto_debug argument. ++ ++ 2019-02-27 Richard Biener <rguenther@suse.de> ++ ++ PR debug/88878 ++ * dwarf2out.c (use_debug_types): Disable when in_lto_p. ++ ++ 2019-02-27 Richard Biener <rguenther@suse.de> ++ ++ PR debug/88878 ++ * dwarf2out.c (output_comdat_type_unit): Add early_lto_debug ++ parameter, prefix section name with .gnu.debuglto_ if true. ++ (dwarf2out_finish): Pass false to output_comdat_type_unit. ++ (dwarf2out_early_finish): Pass true to output_comdat_type_unit. ++ ++ 2019-02-27 Richard Biener <rguenther@suse.de> ++ ++ PR debug/89514 ++ * dwarf2out.c (size_of_die): Key on AT_ref (a)->comdat_type_p ++ rather than on use_debug_types, doing what output_die does. ++ (value_format): Likewise. ++ ++2019-02-28 Eric Botcazou <ebotcazou@adacore.com> ++ ++ PR tree-optimization/89536 ++ * tree-ssa-dom.c (edge_info::derive_equivalences) <BIT_NOT_EXPR>: Test ++ only whether bit #0 of the value is 0 instead of the entire value. ++ ++2019-02-28 Li Jia He <helijia@linux.ibm.com> ++ ++ Backport from trunk ++ 2019-02-20 Li Jia He <helijia@linux.ibm.com> ++ ++ PR target/88100 ++ * gcc/config/rs6000/rs6000.c (rs6000_gimple_fold_builtin) ++ <case ALTIVEC_BUILTIN_VSPLTISB, ALTIVEC_BUILTIN_VSPLTISH, ++ ALTIVEC_BUILTIN_VSPLTISW>: Don't convert the operand before ++ range checking it. ++ ++2019-02-27 Uroš Bizjak <ubizjak@gmail.com> ++ ++ PR target/89397 ++ * config/i386/i386.c (ix86_atomic_assign_expand_fenv): Check ++ TARGET_SSE in addition to TARGET_SSE_MATH. ++ ++ (ix86_excess_precision): Ditto. ++ (ix86_float_exceptions_rounding_supported_p): Ditto. ++ (use_rsqrt_p): Ditto. ++ * config/i386/sse.md (rsqrt<mode>2): Ditto. ++ ++2019-02-27 Jakub Jelinek <jakub@redhat.com> ++ ++ Backported from mainline ++ 2019-02-18 Jakub Jelinek <jakub@redhat.com> ++ ++ PR target/89361 ++ * config/s390/s390.c (s390_indirect_branch_attrvalue, ++ s390_indirect_branch_settings): Define unconditionally. ++ (s390_set_current_function): Likewise, but guard the whole body except ++ the s390_indirect_branch_settings call with ++ #if S390_USE_TARGET_ATTRIBUTE. ++ (TARGET_SET_CURRENT_FUNCTION): Redefine unconditionally. ++ ++2019-02-26 Eric Botcazou <ebotcazou@adacore.com> ++ ++ Backport from mainline ++ 2019-02-19 Eric Botcazou <ebotcazou@adacore.com> ++ ++ * rtlanal.c (get_initial_register_offset): Fall back to the estimate ++ as long as the epilogue isn't completed. ++ ++2019-02-26 Eric Botcazou <ebotcazou@adacore.com> ++ ++ * tree-ssa-dom.c (edge_info::derive_equivalences) <BIT_IOR_EXPR>: Fix ++ and move around comment. ++ <BIT_AND_EXPR>: Likewise. ++ <BIT_NOT_EXPR>: Add specific handling for boolean types. ++ ++2019-02-24 Alan Modra <amodra@gmail.com> ++ ++ PR target/89271 ++ * config/rs6000/rs6000.md (<bd>_<mode> split): Check for an int ++ output reg on add insn. ++ (<bd>tf_<mode> split): Likewise. Match predicates with insn. ++ + 2019-02-22 Release Manager + + * GCC 8.3.0 released. +@@ -568,7 +3047,7 @@ + + Backport from mainline + 2018-11-20 Richard Biener <rguenther@suse.de> +- ++ + PR tree-optimization/88105 + * tree-ssa-dom.c (pass_dominator::execute): Do not walk + backedges. +Index: gcc/testsuite/gcc.target/powerpc/vsx-builtin-18d.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/vsx-builtin-18d.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/vsx-builtin-18d.c (.../branches/gcc-8-branch) +@@ -0,0 +1,148 @@ ++/* { dg-do run } */ ++/* { dg-require-effective-target vmx_hw } */ ++/* { dg-options "-maltivec -O3" } */ ++ ++/* This test should run the same on any target that supports altivec/vmx ++ instructions. Unsigned Intentionally not specifying cpu in order to test ++ all code generation paths. */ ++ ++#include <altivec.h> ++ ++extern void abort (void); ++ ++#define CONST0 (0) ++#define CONST1 (1) ++#define CONST2 (2) ++#define CONST3 (3) ++ ++/* Test that indices > length of vector are applied modulo the vector ++ length. */ ++ ++/* Test for vector residing in register. */ ++vector unsigned int s3 (vector unsigned int v, unsigned int x) ++{ ++ return vec_insert (x, v, 3); ++} ++ ++vector unsigned int s1 (vector unsigned int v, unsigned int x) ++{ ++ return vec_insert (x, v, 1); ++} ++ ++vector unsigned int s21 (vector unsigned int v, unsigned int x) ++{ ++ return vec_insert (x, v, 21); ++} ++ ++vector unsigned int s30 (vector unsigned int v, unsigned int x) ++{ ++ return vec_insert (x, v, 30); ++} ++ ++/* Test for vector residing in memory. */ ++vector unsigned int ms3 (vector unsigned int *vp, unsigned int x) ++{ ++ return vec_insert (x, *vp, 3); ++} ++ ++vector unsigned int ms1(vector unsigned int *vp, unsigned int x) ++{ ++ return vec_insert (x, *vp, 1); ++} ++ ++vector unsigned int ms21(vector unsigned int *vp, unsigned int x) ++{ ++ return vec_insert (x, *vp, 21); ++} ++ ++vector unsigned int ms30(vector unsigned int *vp, unsigned int x) ++{ ++ return vec_insert (x, *vp, 30); ++} ++ ++/* Test the same with variable indices. */ ++ ++/* Test for variable selector and vector residing in register. */ ++__attribute__((noinline)) ++vector unsigned int ci (vector unsigned int v, int i, unsigned int x) ++{ ++ return vec_insert (x, v, i); ++} ++ ++/* Test for variable selector and vector residing in memory. */ ++__attribute__((noinline)) ++vector unsigned int mci(vector unsigned int *vp, int i, unsigned int x) ++{ ++ return vec_insert (x, *vp, i); ++} ++ ++ ++int main (int argc, unsigned char *argv[]) { ++ vector unsigned int sv = { CONST0, CONST1, CONST2, CONST3 }; ++ ++ sv = s3 (sv, CONST2); ++ if (sv [3] != CONST2) ++ abort (); ++ ++ sv = s1 (sv, CONST2); ++ if (sv [1] != CONST2) ++ abort (); ++ ++ sv = s21 (sv, CONST3); ++ if (sv [1] != CONST3) ++ abort (); ++ ++ sv = s30 (sv, CONST1); ++ if (sv [2] != CONST1) ++ abort (); ++ ++ sv = ms3 (&sv, CONST0); ++ if (sv [3] != CONST0) ++ abort (); ++ ++ sv = ms1 (&sv, CONST0); ++ if (sv [1] != CONST0) ++ abort (); ++ ++ sv = ms21 (&sv, CONST1); ++ if (sv [1] != CONST1) ++ abort (); ++ ++ sv = ms30 (&sv, CONST0); ++ if (sv [2] != CONST0) ++ abort (); ++ ++ sv = ci (sv, 5, CONST3); ++ if (sv [1] != CONST3) ++ abort (); ++ ++ sv = ci (sv, 2, CONST0); ++ if (sv [2] != CONST0) ++ abort (); ++ ++ sv = ci (sv, 15, CONST1); ++ if (sv [3] != CONST1) ++ abort (); ++ ++ sv = ci (sv, 28, CONST3); ++ if (sv [0] != CONST3) ++ abort (); ++ ++ sv = mci (&sv, 5, CONST0); ++ if (sv [1] != CONST0) ++ abort (); ++ ++ sv = mci (&sv, 12, CONST2); ++ if (sv [0] != CONST2) ++ abort (); ++ ++ sv = mci (&sv, 25, CONST3); ++ if (sv [1] != CONST3) ++ abort (); ++ ++ sv = mci (&sv, 16, CONST1); ++ if (sv [0] != CONST1) ++ abort (); ++ ++ return 0; ++} +Index: gcc/testsuite/gcc.target/powerpc/vsx-builtin-19c.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/vsx-builtin-19c.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/vsx-builtin-19c.c (.../branches/gcc-8-branch) +@@ -0,0 +1,122 @@ ++/* { dg-do run { target int128 } } */ ++/* { dg-require-effective-target vsx_hw } */ ++/* { dg-options "-mvsx" } */ ++ ++/* This test should run the same on any target that supports vsx ++ instructions. Intentionally not specifying cpu in order to test ++ all code generation paths. */ ++ ++#include <altivec.h> ++ ++extern void abort (void); ++ ++#define CONST0 (31415926539LL) ++#define CONST1 (2 * 31415926539LL) ++#define CONST2 (3 * 31415926539LL) ++#define CONST3 (4 * 31415926539LL) ++#define CONST4 (5 * 31415926539LL) ++#define CONST5 (6 * 31415926539LL) ++#define CONST6 (7 * 31415926539LL) ++#define CONST7 (8 * 31415926539LL) ++ ++/* Test that indices > length of vector are applied modulo the vector ++ length. */ ++ ++/* Test for vector residing in register. */ ++vector unsigned long long int ++e0 (vector unsigned long long int v, unsigned long long int x) ++{ ++ return vec_insert (x, v, 0); ++} ++ ++vector unsigned long long int ++e3 (vector unsigned long long int v, unsigned long long int x) ++{ ++ return vec_insert (x, v, 3); ++} ++ ++/* Test for vector residing in memory. */ ++vector unsigned long long int ++me0 (vector unsigned long long int *vp, unsigned long long int x) ++{ ++ return vec_insert (x, *vp, 0); ++} ++ ++vector unsigned long long int ++me3 (vector unsigned long long int *vp, unsigned long long int x) ++{ ++ return vec_insert (x, *vp, 3); ++} ++ ++/* Test the same with variable indices. */ ++ ++/* Test for variable selector and vector residing in register. */ ++__attribute__((noinline)) ++vector unsigned long long int ++ei (vector unsigned long long int v, int i, unsigned long long int x) ++{ ++ return vec_insert (x, v, i); ++} ++ ++/* Test for variable selector and vector residing in memory. */ ++__attribute__((noinline)) ++vector unsigned long long int ++mei (vector unsigned long long int *vp, int i, unsigned long long int x) ++{ ++ return vec_insert (x, *vp, i); ++} ++ ++int main (int argc, char *argv[]) { ++ vector unsigned long long int dv = { CONST0, CONST1 }; ++ unsigned long long int d; ++ ++ dv = e0 (dv, CONST7); ++ if (dv [0] != CONST7) ++ abort (); ++ ++ dv = e3 (dv, CONST2); ++ if (dv [1] != CONST2) ++ abort (); ++ ++ dv = me0 (&dv, CONST4); ++ if (dv [0] != CONST4) ++ abort (); ++ ++ dv = me3 (&dv, CONST3); ++ if (dv [1] != CONST3) ++ abort (); ++ ++ dv = ei (dv, 0, CONST5); ++ if (dv [0] != CONST5) ++ abort (); ++ ++ dv = ei (dv, 1, CONST2); ++ if (dv [1] != CONST2) ++ abort (); ++ ++ dv = ei (dv, 2, CONST3); ++ if (dv [0] != CONST3) ++ abort (); ++ ++ dv = ei (dv, 3, CONST6); ++ if (dv [1] != CONST6) ++ abort (); ++ ++ dv = mei (&dv, 0, CONST1); ++ if (dv [0] != CONST1) ++ abort (); ++ ++ dv = mei (&dv, 1, CONST3); ++ if (dv [1] != CONST3) ++ abort (); ++ ++ dv = mei (&dv, 2, CONST1); ++ if (dv [0] != CONST1) ++ abort (); ++ ++ dv = mei (&dv, 3, CONST2); ++ if (dv [1] != CONST2) ++ abort (); ++ ++ return 0; ++} +Index: gcc/testsuite/gcc.target/powerpc/vsx-builtin-10a.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/vsx-builtin-10a.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/vsx-builtin-10a.c (.../branches/gcc-8-branch) +@@ -0,0 +1,155 @@ ++/* { dg-do run } */ ++/* { dg-require-effective-target vmx_hw } */ ++/* { dg-options "-maltivec" } */ ++ ++/* This test should run the same on any target that supports altivec/dfp ++ instructions. Intentionally not specifying cpu in order to test ++ all code generation paths. */ ++ ++#include <altivec.h> ++ ++extern void abort (void); ++ ++#define CONST0 (0) ++#define CONST1 (1) ++#define CONST2 (2) ++#define CONST3 (3) ++#define CONST4 (4) ++#define CONST5 (5) ++#define CONST6 (6) ++#define CONST7 (7) ++ ++ ++/* Test that indices > length of vector are applied modulo the vector ++ length. */ ++ ++/* Test for vector residing in register. */ ++short s3 (vector short v) ++{ ++ return __builtin_vec_ext_v8hi (v, 3); ++} ++ ++short s7 (vector short v) ++{ ++ return __builtin_vec_ext_v8hi (v, 7); ++} ++ ++short s21 (vector short v) ++{ ++ return __builtin_vec_ext_v8hi (v, 21); ++} ++ ++short s30 (vector short v) ++{ ++ return __builtin_vec_ext_v8hi (v, 30); ++} ++ ++/* Test for vector residing in memory. */ ++short ms3 (vector short *vp) ++{ ++ return __builtin_vec_ext_v8hi (*vp, 3); ++} ++ ++short ms7 (vector short *vp) ++{ ++ return __builtin_vec_ext_v8hi (*vp, 7); ++} ++ ++short ms21 (vector short *vp) ++{ ++ return __builtin_vec_ext_v8hi (*vp, 21); ++} ++ ++short ms30 (vector short *vp) ++{ ++ return __builtin_vec_ext_v8hi (*vp, 30); ++} ++ ++/* Test the same with variable indices. */ ++ ++/* Test for variable selector and vector residing in register. */ ++__attribute__((noinline)) ++short ci (vector short v, int i) ++{ ++ return __builtin_vec_ext_v8hi (v, i); ++} ++ ++/* Test for variable selector and vector residing in memory. */ ++__attribute__((noinline)) ++short mci (vector short *vp, int i) ++{ ++ return __builtin_vec_ext_v8hi (*vp, i); ++} ++ ++ ++int main (int argc, short *argv[]) { ++ vector short sv = { ++ CONST0, CONST1, CONST2, CONST3, CONST4, CONST5, CONST6, CONST7 }; ++ short s; ++ ++ s = s3 (sv); ++ if (s != CONST3) ++ abort (); ++ ++ s = s7 (sv); ++ if (s != CONST7) ++ abort (); ++ ++ s = s21 (sv); ++ if (s != CONST5) ++ abort (); ++ ++ s = s30 (sv); ++ if (s != CONST6) ++ abort (); ++ ++ s = ms3 (&sv); ++ if (s != CONST3) ++ abort (); ++ ++ s = ms7 (&sv); ++ if (s != CONST7) ++ abort (); ++ ++ s = ms21 (&sv); ++ if (s != CONST5) ++ abort (); ++ ++ s = ms30 (&sv); ++ if (s != CONST6) ++ abort (); ++ ++ s = ci (sv, 5); ++ if (s != CONST5) ++ abort (); ++ ++ s = ci (sv, 2); ++ if (s != CONST2) ++ abort (); ++ ++ s = ci (sv, 15); ++ if (s != CONST7) ++ abort (); ++ ++ s = ci (sv, 28); ++ if (s != CONST4) ++ abort (); ++ ++ s = mci (&sv, 5); ++ if (s != CONST5) ++ abort (); ++ ++ s = mci (&sv, 12); ++ if (s != CONST4) ++ abort (); ++ ++ s = mci (&sv, 25); ++ if (s != CONST1) ++ abort (); ++ ++ s = mci (&sv, 16); ++ if (s != CONST0) ++ abort (); ++ ++ return 0; ++} +Index: gcc/testsuite/gcc.target/powerpc/pr80125.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/pr80125.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/pr80125.c (.../branches/gcc-8-branch) +@@ -16,7 +16,7 @@ + vector int k = vec_mergel (i, j); + vector int l = vec_sl (k, c); + vector int m = vec_sl (l, d); +- vector char o; ++ vector unsigned char o; + vector int p = vec_perm (m, n, o); + e = vec_sra (p, c); + vec_st (e, 0, a); +Index: gcc/testsuite/gcc.target/powerpc/darn-3.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/darn-3.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/darn-3.c (.../branches/gcc-8-branch) +@@ -0,0 +1,17 @@ ++/* { dg-do compile { target { powerpc*-*-* } } } */ ++/* { dg-skip-if "" { powerpc*-*-aix* } } */ ++/* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power9" } } */ ++/* { dg-options "-O2 -mcpu=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/vsx-builtin-20a.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/vsx-builtin-20a.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/vsx-builtin-20a.c (.../branches/gcc-8-branch) +@@ -0,0 +1,115 @@ ++/* { dg-do run { target int128 } } */ ++/* { dg-require-effective-target vsx_hw } */ ++/* { dg-options "-mvsx" } */ ++ ++/* This test should run the same on any target that supports vsx ++ instructions. Intentionally not specifying cpu in order to test ++ all code generation paths. */ ++ ++#include <altivec.h> ++ ++/* Define this after PR89424 is addressed. */ ++#define PR89424 ++ ++extern void abort (void); ++ ++#define CONST0 (((unsigned __int128) 31415926539) << 60) ++ ++/* Test that indices > length of vector are applied modulo the vector ++ length. */ ++ ++/* Test for vector residing in register. */ ++unsigned __int128 e0 (vector unsigned __int128 v) ++{ ++ return __builtin_vec_extract (v, 0); ++} ++ ++unsigned __int128 e3 (vector unsigned __int128 v) ++{ ++ return __builtin_vec_extract (v, 3); ++} ++ ++/* Test for vector residing in memory. */ ++unsigned __int128 me0 (vector unsigned __int128 *vp) ++{ ++ return __builtin_vec_extract (*vp, 0); ++} ++ ++unsigned __int128 me3 (vector unsigned __int128 *vp) ++{ ++ return __builtin_vec_extract (*vp, 3); ++} ++ ++/* Test the same with variable indices. */ ++ ++#ifdef PR89424 ++/* Test for variable selector and vector residing in register. */ ++__attribute__((noinline)) ++unsigned __int128 ei (vector unsigned __int128 v, int i) ++{ ++ return __builtin_vec_extract (v, i); ++} ++ ++/* Test for variable selector and vector residing in memory. */ ++unsigned __int128 mei (vector unsigned __int128 *vp, int i) ++{ ++ return __builtin_vec_extract (*vp, i); ++} ++#endif ++ ++int main (int argc, char *argv[]) { ++ vector unsigned __int128 dv = { CONST0 }; ++ unsigned __int128 d; ++ ++ d = e0 (dv); ++ if (d != CONST0) ++ abort (); ++ ++ d = e3 (dv); ++ if (d != CONST0) ++ abort (); ++ ++ d = me0 (&dv); ++ if (d != CONST0) ++ abort (); ++ ++ d = me3 (&dv); ++ if (d != CONST0) ++ abort (); ++ ++#ifdef PR89424 ++ d = ei (dv, 0); ++ if (d != CONST0) ++ abort (); ++ ++ d = ei (dv, 1); ++ if (d != CONST0) ++ abort (); ++ ++ d = ei (dv, 2); ++ if (d != CONST0) ++ abort (); ++ ++ d = ei (dv, 3); ++ if (d != CONST0) ++ abort (); ++ ++ d = mei (&dv, 0); ++ if (d != CONST0) ++ abort (); ++ ++ d = mei (&dv, 1); ++ if (d != CONST0) ++ abort (); ++ ++ d = mei (&dv, 2); ++ if (d != CONST0) ++ abort (); ++ ++ d = mei (&dv, 3); ++ if (d != CONST0) ++ abort (); ++#endif ++ ++ return 0; ++} +Index: gcc/testsuite/gcc.target/powerpc/vsx-builtin-10c.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/vsx-builtin-10c.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/vsx-builtin-10c.c (.../branches/gcc-8-branch) +@@ -0,0 +1,155 @@ ++/* { dg-do run } */ ++/* { dg-require-effective-target vmx_hw } */ ++/* { dg-options "-maltivec" } */ ++ ++/* This test should run the same on any target that supports altivec/vmx ++ instructions. Intentionally not specifying cpu in order to test ++ all code generation paths. */ ++ ++#include <altivec.h> ++ ++extern void abort (void); ++ ++#define CONST0 (0) ++#define CONST1 (1) ++#define CONST2 (2) ++#define CONST3 (3) ++#define CONST4 (4) ++#define CONST5 (5) ++#define CONST6 (6) ++#define CONST7 (7) ++ ++ ++/* Test that indices > length of vector are applied modulo the vector ++ length. */ ++ ++/* Test for vector residing in register. */ ++vector short s3 (vector short v, short x) ++{ ++ return vec_insert (x, v, 3); ++} ++ ++vector short s7 (vector short v, short x) ++{ ++ return vec_insert (x, v, 7); ++} ++ ++vector short s21 (vector short v, short x) ++{ ++ return vec_insert (x, v, 21); ++} ++ ++vector short s30 (vector short v, short x) ++{ ++ return vec_insert (x, v, 30); ++} ++ ++/* Test for vector residing in memory. */ ++vector short ms3 (vector short *vp, short x) ++{ ++ return vec_insert (x, *vp, 3); ++} ++ ++vector short ms7 (vector short *vp, short x) ++{ ++ return vec_insert (x, *vp, 7); ++} ++ ++vector short ms21 (vector short *vp, short x) ++{ ++ return vec_insert (x, *vp, 21); ++} ++ ++vector short ms30 (vector short *vp, short x) ++{ ++ return vec_insert (x, *vp, 30); ++} ++ ++/* Test the same with variable indices. */ ++ ++/* Test for variable selector and vector residing in register. */ ++__attribute__((noinline)) ++vector short ci (vector short v, int i, short x) ++{ ++ return vec_insert (x, v, i); ++} ++ ++/* Test for variable selector and vector residing in memory. */ ++__attribute__((noinline)) ++vector short mci (vector short *vp, int i, short x) ++{ ++ return vec_insert (x, *vp, i); ++} ++ ++ ++int main (int argc, short *argv[]) { ++ vector short sv = { ++ CONST0, CONST1, CONST2, CONST3, CONST4, CONST5, CONST6, CONST7 }; ++ short s; ++ ++ sv = s3 (sv, CONST6); ++ if (sv [3] != CONST6) ++ abort (); ++ ++ sv = s7 (sv, CONST4); ++ if (sv [7] != CONST4) ++ abort (); ++ ++ sv = s21 (sv, CONST3); ++ if (sv [5] != CONST3) ++ abort (); ++ ++ sv = s30 (sv, CONST2); ++ if (sv [6] != CONST2) ++ abort (); ++ ++ sv = ms3 (&sv, CONST5); ++ if (sv [3] != CONST5) ++ abort (); ++ ++ sv = ms7 (&sv, CONST1); ++ if (sv [7] != CONST1) ++ abort (); ++ ++ sv = ms21 (&sv, CONST2); ++ if (sv [5] != CONST2) ++ abort (); ++ ++ sv = ms30 (&sv, CONST0); ++ if (sv [6] != CONST0) ++ abort (); ++ ++ sv = ci (sv, 5, CONST6); ++ if (sv [5] != CONST6) ++ abort (); ++ ++ sv = ci (sv, 2, CONST4); ++ if (sv [2] != CONST4) ++ abort (); ++ ++ sv = ci (sv, 15, CONST3); ++ if (sv [7] != CONST3) ++ abort (); ++ ++ sv = ci (sv, 28, CONST3); ++ if (sv [4] != CONST3) ++ abort (); ++ ++ sv = mci (&sv, 5, CONST3); ++ if (sv [5] != CONST3) ++ abort (); ++ ++ sv = mci (&sv, 12, CONST7); ++ if (sv [4] != CONST7) ++ abort (); ++ ++ sv = mci (&sv, 25, CONST6); ++ if (sv [1] != CONST6) ++ abort (); ++ ++ sv = mci (&sv, 16, CONST5); ++ if (sv [0] != CONST5) ++ abort (); ++ ++ return 0; ++} +Index: gcc/testsuite/gcc.target/powerpc/vsx-builtin-11b.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/vsx-builtin-11b.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/vsx-builtin-11b.c (.../branches/gcc-8-branch) +@@ -0,0 +1,149 @@ ++/* { dg-do run } */ ++/* { dg-require-effective-target vmx_hw } */ ++/* { dg-options "-maltivec -O3" } */ ++ ++/* This test should run the same on any target that supports altivec/dfp ++ instructions. Intentionally not specifying cpu in order to test ++ all code generation paths. */ ++ ++#include <altivec.h> ++ ++extern void abort (void); ++ ++#define CONST0 (0) ++#define CONST1 (1) ++#define CONST2 (2) ++#define CONST3 (3) ++ ++/* Test that indices > length of vector are applied modulo the vector ++ length. */ ++ ++/* Test for vector residing in register. */ ++int s3 (vector int v) ++{ ++ return __builtin_vec_ext_v4si (v, 3); ++} ++ ++int s1 (vector int v) ++{ ++ return __builtin_vec_ext_v4si (v, 1); ++} ++ ++int s21 (vector int v) ++{ ++ return __builtin_vec_ext_v4si (v, 21); ++} ++ ++int s30 (vector int v) ++{ ++ return __builtin_vec_ext_v4si (v, 30); ++} ++ ++/* Test for vector residing in memory. */ ++int ms3 (vector int *vp) ++{ ++ return __builtin_vec_ext_v4si (*vp, 3); ++} ++ ++int ms1(vector int *vp) ++{ ++ return __builtin_vec_ext_v4si (*vp, 1); ++} ++ ++int ms21(vector int *vp) ++{ ++ return __builtin_vec_ext_v4si (*vp, 21); ++} ++ ++int ms30(vector int *vp) ++{ ++ return __builtin_vec_ext_v4si (*vp, 30); ++} ++ ++/* Test the same with variable indices. */ ++ ++/* Test for variable selector and vector residing in register. */ ++__attribute__((noinline)) ++int ci (vector int v, int i) ++{ ++ return __builtin_vec_ext_v4si (v, i); ++} ++ ++/* Test for variable selector and vector residing in memory. */ ++__attribute__((noinline)) ++int mci(vector int *vp, int i) ++{ ++ return __builtin_vec_ext_v4si (*vp, i); ++} ++ ++ ++int main (int argc, int *argv[]) { ++ vector int sv = { CONST0, CONST1, CONST2, CONST3 }; ++ int s; ++ ++ s = s3 (sv); ++ if (s != CONST3) ++ abort (); ++ ++ s = s1 (sv); ++ if (s != CONST1) ++ abort (); ++ ++ s = s21 (sv); ++ if (s != CONST1) ++ abort (); ++ ++ s = s30 (sv); ++ if (s != CONST2) ++ abort (); ++ ++ s = ms3 (&sv); ++ if (s != CONST3) ++ abort (); ++ ++ s = ms1 (&sv); ++ if (s != CONST1) ++ abort (); ++ ++ s = ms21 (&sv); ++ if (s != CONST1) ++ abort (); ++ ++ s = ms30 (&sv); ++ if (s != CONST2) ++ abort (); ++ ++ s = ci (sv, 5); ++ if (s != CONST1) ++ abort (); ++ ++ s = ci (sv, 2); ++ if (s != CONST2) ++ abort (); ++ ++ s = ci (sv, 15); ++ if (s != CONST3) ++ abort (); ++ ++ s = ci (sv, 28); ++ if (s != CONST0) ++ abort (); ++ ++ s = mci (&sv, 5); ++ if (s != CONST1) ++ abort (); ++ ++ s = mci (&sv, 12); ++ if (s != CONST0) ++ abort (); ++ ++ s = mci (&sv, 25); ++ if (s != CONST1) ++ abort (); ++ ++ s = mci (&sv, 16); ++ if (s != CONST0) ++ abort (); ++ ++ return 0; ++} +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_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/pure-builtin-redundant-load.c (.../branches/gcc-8-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 <altivec.h> ++ ++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/builtins-2.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/builtins-2.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/builtins-2.c (.../branches/gcc-8-branch) +@@ -1,5 +1,6 @@ + /* { dg-do run { target { powerpc*-*-* } } } */ + /* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power8" } } */ ++/* { dg-require-effective-target vsx_hw } */ + /* { dg-options "-mcpu=power8 " } */ + + #include <altivec.h> +Index: gcc/testsuite/gcc.target/powerpc/vsx-builtin-9b.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/vsx-builtin-9b.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/vsx-builtin-9b.c (.../branches/gcc-8-branch) +@@ -0,0 +1,164 @@ ++/* { dg-do run } */ ++/* { dg-require-effective-target vmx_hw } */ ++/* { dg-options "-maltivec -O3" } */ ++ ++/* This test should run the same on any target that supports altivec/dfp ++ instructions. Intentionally not specifying cpu in order to test ++ all code generation paths. */ ++ ++#include <altivec.h> ++ ++extern void abort (void); ++ ++#define CONST0 (0) ++#define CONST1 (1) ++#define CONST2 (2) ++#define CONST3 (3) ++#define CONST4 (4) ++#define CONST5 (5) ++#define CONST6 (6) ++#define CONST7 (7) ++#define CONST8 (8) ++#define CONST9 (9) ++#define CONSTA (10) ++#define CONSTB (11) ++#define CONSTC (12) ++#define CONSTD (13) ++#define CONSTE (14) ++#define CONSTF (15) ++ ++ ++/* Test that indices > length of vector are applied modulo the vector ++ length. */ ++ ++/* Test for vector residing in register. */ ++signed char c0 (vector signed char v) ++{ ++ return __builtin_vec_ext_v16qi (v, 0); ++} ++ ++signed char c9 (vector signed char v) ++{ ++ return __builtin_vec_ext_v16qi (v, 9); ++} ++ ++signed char c21 (vector signed char v) ++{ ++ return __builtin_vec_ext_v16qi (v, 21); ++} ++ ++signed char c30 (vector signed char v) ++{ ++ return __builtin_vec_ext_v16qi (v, 30); ++} ++ ++/* Test for vector residing in memory. */ ++signed char mc0 (vector signed char *vp) ++{ ++ return __builtin_vec_ext_v16qi (*vp, 0); ++} ++ ++signed char mc9 (vector signed char *vp) ++{ ++ return __builtin_vec_ext_v16qi (*vp, 9); ++} ++ ++signed char mc21 (vector signed char *vp) ++{ ++ return __builtin_vec_ext_v16qi (*vp, 21); ++} ++ ++signed char mc30 (vector signed char *vp) ++{ ++ return __builtin_vec_ext_v16qi (*vp, 30); ++} ++ ++/* Test the same with variable indices. */ ++ ++/* Test for variable selector and vector residing in register. */ ++__attribute__((noinline)) ++signed char ci (vector signed char v, int i) ++{ ++ return __builtin_vec_ext_v16qi (v, i); ++} ++ ++/* Test for variable selector and vector residing in memory. */ ++__attribute__((noinline)) ++signed char mci(vector signed char *vp, int i) { ++ return __builtin_vec_ext_v16qi (*vp, i); ++} ++ ++ ++int main (int argc, char *argv[]) { ++ vector signed char cv = { CONST0, CONST1, CONST2, CONST3, ++ CONST4, CONST5, CONST6, CONST7, ++ CONST8, CONST9, CONSTA, CONSTB, ++ CONSTC, CONSTD, CONSTE, CONSTF }; ++ signed char c; ++ ++ c = c0 (cv); ++ if (c != CONST0) ++ abort (); ++ ++ c = c9 (cv); ++ if (c != CONST9) ++ abort (); ++ ++ c = c21 (cv); ++ if (c != CONST5) ++ abort (); ++ ++ c = c30 (cv); ++ if (c != CONSTE) ++ abort (); ++ ++ c = mc0 (&cv); ++ if (c != CONST0) ++ abort (); ++ ++ c = mc9 (&cv); ++ if (c != CONST9) ++ abort (); ++ ++ c = mc21 (&cv); ++ if (c != CONST5) ++ abort (); ++ ++ c = mc30 (&cv); ++ if (c != CONSTE) ++ abort (); ++ ++ c = ci (cv, 8); ++ if (c != CONST8) ++ abort (); ++ ++ c = ci (cv, 13); ++ if (c != CONSTD) ++ abort (); ++ ++ c = ci (cv, 23); ++ if (c != CONST7) ++ abort (); ++ ++ c = ci (cv, 31); ++ if (c != CONSTF) ++ abort (); ++ ++ c = mci (&cv, 5); ++ if (c != CONST5) ++ abort (); ++ ++ c = mci (&cv, 12); ++ if (c != CONSTC) ++ abort (); ++ ++ c = mci (&cv, 25); ++ if (c != CONST9) ++ abort (); ++ ++ c = mci (&cv, 16); ++ if (c != CONST0) ++ abort (); ++ ++ return 0; ++} +Index: gcc/testsuite/gcc.target/powerpc/vsx-builtin-12a.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/vsx-builtin-12a.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/vsx-builtin-12a.c (.../branches/gcc-8-branch) +@@ -0,0 +1,109 @@ ++/* { dg-do run { target int128 } } */ ++/* { dg-require-effective-target vsx_hw } */ ++/* { dg-options "-mvsx" } */ ++ ++/* This test should run the same on any target that supports vsx ++ instructions. Intentionally not specifying cpu in order to test ++ all code generation paths. */ ++ ++#include <altivec.h> ++ ++extern void abort (void); ++ ++#define CONST0 (31415926539LL) ++#define CONST1 (2 * 31415926539LL) ++ ++/* Test that indices > length of vector are applied modulo the vector ++ length. */ ++ ++/* Test for vector residing in register. */ ++long long int e0 (vector long long int v) ++{ ++ return __builtin_vec_ext_v2di (v, 0); ++} ++ ++long long int e3 (vector long long int v) ++{ ++ return __builtin_vec_ext_v2di (v, 3); ++} ++ ++/* Test for vector residing in memory. */ ++long long int me0 (vector long long int *vp) ++{ ++ return __builtin_vec_ext_v2di (*vp, 0); ++} ++ ++long long int me3 (vector long long int *vp) ++{ ++ return __builtin_vec_ext_v2di (*vp, 3); ++} ++ ++/* Test the same with variable indices. */ ++ ++/* Test for variable selector and vector residing in register. */ ++__attribute__((noinline)) ++long long int ei (vector long long int v, int i) ++{ ++ return __builtin_vec_ext_v2di (v, i); ++} ++ ++/* Test for variable selector and vector residing in memory. */ ++long long int mei (vector long long int *vp, int i) ++{ ++ return __builtin_vec_ext_v2di (*vp, i); ++} ++ ++int main (int argc, char *argv[]) { ++ vector long long int dv = { CONST0, CONST1 }; ++ long long int d; ++ ++ d = e0 (dv); ++ if (d != CONST0) ++ abort (); ++ ++ d = e3 (dv); ++ if (d != CONST1) ++ abort (); ++ ++ d = me0 (&dv); ++ if (d != CONST0) ++ abort (); ++ ++ d = me3 (&dv); ++ if (d != CONST1) ++ abort (); ++ ++ d = ei (dv, 0); ++ if (d != CONST0) ++ abort (); ++ ++ d = ei (dv, 1); ++ if (d != CONST1) ++ abort (); ++ ++ d = ei (dv, 2); ++ if (d != CONST0) ++ abort (); ++ ++ d = ei (dv, 3); ++ if (d != CONST1) ++ abort (); ++ ++ d = mei (&dv, 0); ++ if (d != CONST0) ++ abort (); ++ ++ d = mei (&dv, 1); ++ if (d != CONST1) ++ abort (); ++ ++ d = mei (&dv, 2); ++ if (d != CONST0) ++ abort (); ++ ++ d = mei (&dv, 3); ++ if (d != CONST1) ++ abort (); ++ ++ return 0; ++} +Index: gcc/testsuite/gcc.target/powerpc/pr64205.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/pr64205.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/pr64205.c (.../branches/gcc-8-branch) +@@ -1,4 +1,5 @@ + /* { dg-do compile { target { powerpc*-*-* && ilp32 } } } */ ++/* { dg-require-effective-target dfp } */ + /* { dg-skip-if "" { powerpc*-*-aix* } } */ + /* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=G5" } } */ + /* { dg-options "-O2 -mcpu=G5 -maltivec" } */ +Index: gcc/testsuite/gcc.target/powerpc/vsx-builtin-20c.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/vsx-builtin-20c.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/vsx-builtin-20c.c (.../branches/gcc-8-branch) +@@ -0,0 +1,115 @@ ++/* { dg-do run { target int128 } } */ ++/* { dg-require-effective-target vsx_hw } */ ++/* { dg-options "-mvsx" } */ ++ ++/* This test should run the same on any target that supports vsx ++ instructions. Intentionally not specifying cpu in order to test ++ all code generation paths. */ ++ ++#include <altivec.h> ++ ++extern void abort (void); ++ ++#define CONST0 (((unsigned __int128) 31415926539) << 60) ++#define CONST1 (((unsigned __int128) 31415926539) << 54) ++#define CONST2 (((unsigned __int128) 31415926539) << 48) ++#define CONST3 (((unsigned __int128) 31415926539) << 32) ++ ++/* Test that indices > length of vector are applied modulo the vector ++ length. */ ++ ++/* Test for vector residing in register. */ ++vector unsigned __int128 e0 (vector unsigned __int128 v, unsigned __int128 x) ++{ ++ return vec_insert (x, v, 0); ++} ++ ++vector unsigned __int128 e3 (vector unsigned __int128 v, unsigned __int128 x) ++{ ++ return vec_insert (x, v, 3); ++} ++ ++/* Test for vector residing in memory. */ ++vector unsigned __int128 ++me0 (vector unsigned __int128 *vp, unsigned __int128 x) ++{ ++ return vec_insert (x, *vp, 0); ++} ++ ++vector unsigned __int128 ++me3 (vector unsigned __int128 *vp, unsigned __int128 x) ++{ ++ return vec_insert (x, *vp, 3); ++} ++ ++/* Test the same with variable indices. */ ++ ++/* Test for variable selector and vector residing in register. */ ++__attribute__((noinline)) ++vector unsigned __int128 ++ei (vector unsigned __int128 v, int i, unsigned __int128 x) ++{ ++ return vec_insert (x, v, i); ++} ++ ++/* Test for variable selector and vector residing in memory. */ ++__attribute__((noinline)) ++vector unsigned __int128 ++mei (vector unsigned __int128 *vp, int i, unsigned __int128 x) ++{ ++ return vec_insert (x, *vp, i); ++} ++ ++int main (int argc, char *argv[]) { ++ vector unsigned __int128 dv = { CONST0 }; ++ ++ dv = e0 (dv, CONST3); ++ if (dv [0] != CONST3) ++ abort (); ++ ++ dv = e3 (dv, CONST2); ++ if (dv [0] != CONST2) ++ abort (); ++ ++ dv = me0 (&dv, CONST1); ++ if (dv [0] != CONST1) ++ abort (); ++ ++ dv = me3 (&dv, CONST3); ++ if (dv [0] != CONST3) ++ abort (); ++ ++ dv = ei (dv, 0, CONST0); ++ if (dv [0] != CONST0) ++ abort (); ++ ++ dv = ei (dv, 1, CONST1); ++ if (dv [0] != CONST1) ++ abort (); ++ ++ dv = ei (dv, 2, CONST2); ++ if (dv [0] != CONST2) ++ abort (); ++ ++ dv = ei (dv, 3, CONST3); ++ if (dv [0] != CONST3) ++ abort (); ++ ++ dv = mei (&dv, 0, CONST0); ++ if (dv [0] != CONST0) ++ abort (); ++ ++ dv = mei (&dv, 1, CONST1); ++ if (dv [0] != CONST1) ++ abort (); ++ ++ dv = mei (&dv, 2, CONST2); ++ if (dv [0] != CONST2) ++ abort (); ++ ++ dv = mei (&dv, 3, CONST3); ++ if (dv [0] != CONST3) ++ abort (); ++ ++ return 0; ++} +Index: gcc/testsuite/gcc.target/powerpc/vsx-builtin-11d.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/vsx-builtin-11d.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/vsx-builtin-11d.c (.../branches/gcc-8-branch) +@@ -0,0 +1,149 @@ ++/* { dg-do run } */ ++/* { dg-require-effective-target vmx_hw } */ ++/* { dg-options "-maltivec -O3" } */ ++ ++/* This test should run the same on any target that supports altivec/vmx ++ instructions. Intentionally not specifying cpu in order to test ++ all code generation paths. */ ++ ++#include <altivec.h> ++ ++extern void abort (void); ++ ++#define CONST0 (0) ++#define CONST1 (1) ++#define CONST2 (2) ++#define CONST3 (3) ++ ++/* Test that indices > length of vector are applied modulo the vector ++ length. */ ++ ++/* Test for vector residing in register. */ ++vector int s3 (vector int v, int x) ++{ ++ return vec_insert (x, v, 3); ++} ++ ++vector int s1 (vector int v, int x) ++{ ++ return vec_insert (x, v, 1); ++} ++ ++vector int s21 (vector int v, int x) ++{ ++ return vec_insert (x, v, 21); ++} ++ ++vector int s30 (vector int v, int x) ++{ ++ return vec_insert (x, v, 30); ++} ++ ++/* Test for vector residing in memory. */ ++vector int ms3 (vector int *vp, int x) ++{ ++ return vec_insert (x, *vp, 3); ++} ++ ++vector int ms1 (vector int *vp, int x) ++{ ++ return vec_insert (x, *vp, 1); ++} ++ ++vector int ms21 (vector int *vp, int x) ++{ ++ return vec_insert (x, *vp, 21); ++} ++ ++vector int ms30 (vector int *vp, int x) ++{ ++ return vec_insert (x, *vp, 30); ++} ++ ++/* Test the same with variable indices. */ ++ ++/* Test for variable selector and vector residing in register. */ ++__attribute__((noinline)) ++vector int ci (vector int v, int i, int x) ++{ ++ return vec_insert (x, v, i); ++} ++ ++/* Test for variable selector and vector residing in memory. */ ++__attribute__((noinline)) ++vector int mci(vector int *vp, int i, int x) ++{ ++ return vec_insert (x, *vp, i); ++} ++ ++ ++int main (int argc, int *argv[]) { ++ vector int sv = { CONST0, CONST1, CONST2, CONST3 }; ++ int s; ++ ++ sv = s3 (sv, CONST1); ++ if (sv [3] != CONST1) ++ abort (); ++ ++ sv = s1 (sv, CONST3); ++ if (sv [1] != CONST3) ++ abort (); ++ ++ sv = s21 (sv, CONST0); ++ if (sv [1] != CONST0) ++ abort (); ++ ++ sv = s30 (sv, CONST1); ++ if (sv [2] != CONST1) ++ abort (); ++ ++ sv = ms3 (&sv, CONST2); ++ if (sv [3] != CONST2) ++ abort (); ++ ++ sv = ms1 (&sv, CONST0); ++ if (sv [1] != CONST0) ++ abort (); ++ ++ sv = ms21 (&sv, CONST3); ++ if (sv [1] != CONST3) ++ abort (); ++ ++ sv = ms30 (&sv, CONST0); ++ if (sv [2] != CONST0) ++ abort (); ++ ++ sv = ci (sv, 5, CONST0); ++ if (sv [1] != CONST0) ++ abort (); ++ ++ sv = ci (sv, 2, CONST3); ++ if (sv [2] != CONST3) ++ abort (); ++ ++ sv = ci (sv, 15, CONST1); ++ if (sv [3] != CONST1) ++ abort (); ++ ++ sv = ci (sv, 28, CONST3); ++ if (sv [0] != CONST3) ++ abort (); ++ ++ sv = mci (&sv, 5, CONST2); ++ if (sv [1] != CONST2) ++ abort (); ++ ++ sv = mci (&sv, 12, CONST1); ++ if (sv [0] != CONST1) ++ abort (); ++ ++ sv = mci (&sv, 25, CONST2); ++ if (sv [1] != CONST2) ++ abort (); ++ ++ sv = mci (&sv, 16, CONST3); ++ if (sv [0] != CONST3) ++ abort (); ++ ++ return 0; ++} +Index: gcc/testsuite/gcc.target/powerpc/pr70010.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/pr70010.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/pr70010.c (.../branches/gcc-8-branch) +@@ -0,0 +1,20 @@ ++/* { 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/pr71785.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/pr71785.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/pr71785.c (.../branches/gcc-8-branch) +@@ -1,6 +1,11 @@ + /* { dg-do compile { target { powerpc*-*-* } } } */ + /* { dg-options "-O2" } */ +-/* { dg-final { scan-assembler-not {\mb\M} } } */ ++/* We have to lose the default pic codegen on Darwin. */ ++/* { dg-additional-options "-mdynamic-no-pic" { target powerpc*-*-darwin* } } */ ++/* ... and account for the out-of-line GPR restore. */ ++/* { dg-final { scan-assembler-times {\mb[ \t]*restGPR} 1 { target powerpc*-*-darwin* } } } */ ++/* { dg-final { scan-assembler-not {\mb[ \t]L} { target powerpc*-*-darwin* } } } */ ++/* { dg-final { scan-assembler-not {\mb\M} { target { ! powerpc*-*-darwin* } } } } */ + + /* Check that all computed gotos in this testcase end up unfactored completely. + If some is not there will be a unconditional jump left; if all works fine, +Index: gcc/testsuite/gcc.target/powerpc/vsx-builtin-9d.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/vsx-builtin-9d.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/vsx-builtin-9d.c (.../branches/gcc-8-branch) +@@ -0,0 +1,164 @@ ++/* { dg-do run } */ ++/* { dg-require-effective-target vmx_hw } */ ++/* { dg-options "-maltivec -O3" } */ ++ ++/* This test should run the same on any target that supports altivec/vmx ++ instructions. Intentionally not specifying cpu in order to test ++ all code generation paths. */ ++ ++#include <altivec.h> ++ ++extern void abort (void); ++ ++#define CONST0 (0) ++#define CONST1 (1) ++#define CONST2 (2) ++#define CONST3 (3) ++#define CONST4 (4) ++#define CONST5 (5) ++#define CONST6 (6) ++#define CONST7 (7) ++#define CONST8 (8) ++#define CONST9 (9) ++#define CONSTA (10) ++#define CONSTB (11) ++#define CONSTC (12) ++#define CONSTD (13) ++#define CONSTE (14) ++#define CONSTF (15) ++ ++ ++/* Test that indices > length of vector are applied modulo the vector ++ length. */ ++ ++/* Test for vector residing in register. */ ++vector signed char c0 (vector signed char v, signed char x) ++{ ++ return vec_insert (x, v, 0); ++} ++ ++vector signed char c9 (vector signed char v, signed char x) ++{ ++ return vec_insert (x, v, 9); ++} ++ ++vector signed char c21 (vector signed char v, signed char x) ++{ ++ return vec_insert (x, v, 21); ++} ++ ++vector signed char c30 (vector signed char v, signed char x) ++{ ++ return vec_insert (x, v, 30); ++} ++ ++/* Test for vector residing in memory. */ ++vector signed char mc0 (vector signed char *vp, signed char x) ++{ ++ return vec_insert (x, *vp, 0); ++} ++ ++vector signed char mc9 (vector signed char *vp, signed char x) ++{ ++ return vec_insert (x, *vp, 9); ++} ++ ++vector signed char mc21 (vector signed char *vp, signed char x) ++{ ++ return vec_insert (x, *vp, 21); ++} ++ ++vector signed char mc30 (vector signed char *vp, signed char x) ++{ ++ return vec_insert (x, *vp, 30); ++} ++ ++/* Test the same with variable indices. */ ++ ++/* Test for variable selector and vector residing in register. */ ++__attribute__((noinline)) ++vector signed char ci (vector signed char v, int i, signed char x) ++{ ++ return vec_insert (x, v, i); ++} ++ ++/* Test for variable selector and vector residing in memory. */ ++__attribute__((noinline)) ++vector signed char mci(vector signed char *vp, int i, signed char x) { ++ return vec_insert (x, *vp, i); ++} ++ ++ ++int main (int argc, char *argv[]) { ++ vector signed char cv = { CONST0, CONST1, CONST2, CONST3, ++ CONST4, CONST5, CONST6, CONST7, ++ CONST8, CONST9, CONSTA, CONSTB, ++ CONSTC, CONSTD, CONSTE, CONSTF }; ++ signed char c; ++ ++ cv = c0 (cv, CONSTF); ++ if (cv [0] != CONSTF) ++ abort (); ++ ++ cv = c9 (cv, CONST7); ++ if (cv [9] != CONST7) ++ abort (); ++ ++ cv = c21 (cv, CONSTA); ++ if (cv [5] != CONSTA) ++ abort (); ++ ++ cv = c30 (cv, CONSTC); ++ if (cv [14] != CONSTC) ++ abort (); ++ ++ cv = mc0 (&cv, CONSTB); ++ if (cv [0] != CONSTB) ++ abort (); ++ ++ cv = mc9 (&cv, CONST1); ++ if (cv [9] != CONST1) ++ abort (); ++ ++ cv = mc21 (&cv, CONST7); ++ if (cv [5] != CONST7) ++ abort (); ++ ++ cv = mc30 (&cv, CONST2); ++ if (cv [14] != CONST2) ++ abort (); ++ ++ cv = ci (cv, 8, CONST4); ++ if (cv [8] != CONST4) ++ abort (); ++ ++ cv = ci (cv, 13, CONSTB); ++ if (cv [13] != CONSTB) ++ abort (); ++ ++ cv = ci (cv, 23, CONST3); ++ if (cv [7] != CONST3) ++ abort (); ++ ++ cv = ci (cv, 31, CONST2); ++ if (cv [15] != CONST2) ++ abort (); ++ ++ cv = mci (&cv, 5, CONST1); ++ if (cv [5] != CONST1) ++ abort (); ++ ++ cv = mci (&cv, 12, CONST3); ++ if (cv [12] != CONST3) ++ abort (); ++ ++ cv = mci (&cv, 25, CONST5); ++ if (cv [9] != CONST5) ++ abort (); ++ ++ cv = mci (&cv, 16, CONSTD); ++ if (cv [0] != CONSTD) ++ abort (); ++ ++ return 0; ++} +Index: gcc/testsuite/gcc.target/powerpc/vsx-builtin-12c.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/vsx-builtin-12c.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/vsx-builtin-12c.c (.../branches/gcc-8-branch) +@@ -0,0 +1,112 @@ ++/* { dg-do run { target int128 } } */ ++/* { dg-require-effective-target vsx_hw } */ ++/* { dg-options "-mvsx" } */ ++ ++/* This test should run the same on any target that supports vsx ++ instructions. Intentionally not specifying cpu in order to test ++ all code generation paths. */ ++ ++#include <altivec.h> ++ ++extern void abort (void); ++ ++#define CONST0 (31415926539LL) ++#define CONST1 (2 * 31415926539LL) ++#define CONST2 (3 * 31415926539LL) ++#define CONST3 (4 * 31415926539LL) ++ ++/* Test that indices > length of vector are applied modulo the vector ++ length. */ ++ ++/* Test for vector residing in register. */ ++vector long long int e0 (vector long long int v, long long int x) ++{ ++ return vec_insert (x, v, 0); ++} ++ ++vector long long int e3 (vector long long int v, long long int x) ++{ ++ return vec_insert (x, v, 3); ++} ++ ++/* Test for vector residing in memory. */ ++vector long long int me0 (vector long long int *vp, long long int x) ++{ ++ return vec_insert (x, *vp, 0); ++} ++ ++vector long long int me3 (vector long long int *vp, long long int x) ++{ ++ return vec_insert (x, *vp, 3); ++} ++ ++/* Test the same with variable indices. */ ++ ++/* Test for variable selector and vector residing in register. */ ++__attribute__((noinline)) ++vector long long int ei (vector long long int v, int i, long long int x) ++{ ++ return vec_insert (x, v, i); ++} ++ ++/* Test for variable selector and vector residing in memory. */ ++__attribute__((noinline)) ++vector long long int mei (vector long long int *vp, int i, long long int x) ++{ ++ return vec_insert (x, *vp, i); ++} ++ ++int main (int argc, char *argv[]) { ++ vector long long int dv = { CONST0, CONST1 }; ++ long long int d; ++ ++ dv = e0 (dv, CONST3); ++ if (dv [0] != CONST3) ++ abort (); ++ ++ dv = e3 (dv, CONST0); ++ if (dv [1] != CONST0) ++ abort (); ++ ++ dv = me0 (&dv, CONST1); ++ if (dv [0] != CONST1) ++ abort (); ++ ++ dv = me3 (&dv, CONST2); ++ if (dv [1] != CONST2) ++ abort (); ++ ++ dv = ei (dv, 0, CONST3); ++ if (dv [0] != CONST3) ++ abort (); ++ ++ dv = ei (dv, 1, CONST2); ++ if (dv [1] != CONST2) ++ abort (); ++ ++ dv = ei (dv, 2, CONST1); ++ if (dv [0] != CONST1) ++ abort (); ++ ++ dv = ei (dv, 3, CONST3); ++ if (dv [1] != CONST3) ++ abort (); ++ ++ dv = mei (&dv, 0, CONST1); ++ if (dv [0] != CONST1) ++ abort (); ++ ++ dv = mei (&dv, 1, CONST0); ++ if (dv [1] != CONST0) ++ abort (); ++ ++ dv = mei (&dv, 2, CONST1); ++ if (dv [0] != CONST1) ++ abort (); ++ ++ dv = mei (&dv, 3, CONST2); ++ if (dv [1] != CONST2) ++ abort (); ++ ++ return 0; ++} +Index: gcc/testsuite/gcc.target/powerpc/vsx-builtin-13b.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/vsx-builtin-13b.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/vsx-builtin-13b.c (.../branches/gcc-8-branch) +@@ -0,0 +1,124 @@ ++/* { dg-do run { target int128 } } */ ++/* { dg-require-effective-target vsx_hw } */ ++/* { dg-options "-mvsx -O3" } */ ++ ++/* This test should run the same on any target that supports vsx ++ instructions. Intentionally not specifying cpu in order to test ++ all code generation paths. */ ++ ++#include <altivec.h> ++ ++/* Define this after PR89424 is addressed. */ ++#define PR89424 ++ ++/* Define this after PR89626 is addressed. */ ++#undef PR89626 ++ ++#ifdef PR89626 ++#define SIGNED ++#else ++#define SIGNED signed ++#endif ++ ++extern void abort (void); ++ ++#define CONST0 (((SIGNED __int128) 31415926539) << 60) ++ ++/* Test that indices > length of vector are applied modulo the vector ++ length. */ ++ ++/* Test for vector residing in register. */ ++SIGNED __int128 e0 (vector SIGNED __int128 v) ++{ ++ return __builtin_vec_ext_v1ti (v, 0); ++} ++ ++SIGNED __int128 e3 (vector SIGNED __int128 v) ++{ ++ return __builtin_vec_ext_v1ti (v, 3); ++} ++ ++/* Test for vector residing in memory. */ ++SIGNED __int128 me0 (vector SIGNED __int128 *vp) ++{ ++ return __builtin_vec_ext_v1ti (*vp, 0); ++} ++ ++SIGNED __int128 me3 (vector SIGNED __int128 *vp) ++{ ++ return __builtin_vec_ext_v1ti (*vp, 3); ++} ++ ++/* Test the same with variable indices. */ ++ ++#ifdef PR89424 ++/* Test for variable selector and vector residing in register. */ ++__attribute__((noinline)) ++SIGNED __int128 ei (vector SIGNED __int128 v, int i) ++{ ++ return __builtin_vec_ext_v1ti (v, i); ++} ++ ++/* Test for variable selector and vector residing in memory. */ ++SIGNED __int128 mei (vector SIGNED __int128 *vp, int i) ++{ ++ return __builtin_vec_ext_v1ti (*vp, i); ++} ++#endif ++ ++int main (int argc, char *argv[]) { ++ vector SIGNED __int128 dv = { CONST0 }; ++ SIGNED __int128 d; ++ ++ d = e0 (dv); ++ if (d != CONST0) ++ abort (); ++ ++ d = e3 (dv); ++ if (d != CONST0) ++ abort (); ++ ++ d = me0 (&dv); ++ if (d != CONST0) ++ abort (); ++ ++ d = me3 (&dv); ++ if (d != CONST0) ++ abort (); ++ ++#ifdef PR89424 ++ d = ei (dv, 0); ++ if (d != CONST0) ++ abort (); ++ ++ d = ei (dv, 1); ++ if (d != CONST0) ++ abort (); ++ ++ d = ei (dv, 2); ++ if (d != CONST0) ++ abort (); ++ ++ d = ei (dv, 3); ++ if (d != CONST0) ++ abort (); ++ ++ d = mei (&dv, 0); ++ if (d != CONST0) ++ abort (); ++ ++ d = mei (&dv, 1); ++ if (d != CONST0) ++ abort (); ++ ++ d = mei (&dv, 2); ++ if (d != CONST0) ++ abort (); ++ ++ d = mei (&dv, 3); ++ if (d != CONST0) ++ abort (); ++#endif ++ ++ return 0; ++} +Index: gcc/testsuite/gcc.target/powerpc/vsx-builtin-14a.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/vsx-builtin-14a.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/vsx-builtin-14a.c (.../branches/gcc-8-branch) +@@ -0,0 +1,126 @@ ++/* { dg-do run } */ ++/* { dg-require-effective-target vmx_hw } */ ++/* { dg-options "-maltivec" } */ ++ ++/* This test should run the same on any target that supports altivec/dfp ++ instructions. Intentionally not specifying cpu in order to test ++ all code generation paths. */ ++ ++#include <altivec.h> ++ ++extern void abort (void); ++ ++#define CONST0 ((float) (3.1415926539)) ++#define CONST1 ((float) (3.1415926539 * 2)) ++#define CONST2 ((float) (3.1415926539 * 3)) ++#define CONST3 ((float) (3.1415926539 * 4)) ++ ++/* Test that indices > length of vector are applied modulo the vector ++ length. */ ++ ++/* Test for vector residing in register. */ ++float e0(vector float v){ return __builtin_vec_ext_v4sf (v, 0); } ++float e1(vector float v){ return __builtin_vec_ext_v4sf (v, 1); } ++float e7(vector float v){ return __builtin_vec_ext_v4sf (v, 7); } ++float e8(vector float v){ return __builtin_vec_ext_v4sf (v, 8); } ++ ++/* Test for vector residing in memory. */ ++float me0(vector float *vp){ return __builtin_vec_ext_v4sf (*vp, 0); } ++float me1(vector float *vp){ return __builtin_vec_ext_v4sf (*vp, 1); } ++ ++float me13(vector float *vp) ++{ ++ return __builtin_vec_ext_v4sf (*vp, 13); ++} ++ ++float me15(vector float *vp) ++{ ++ return __builtin_vec_ext_v4sf (*vp, 15); ++} ++ ++/* Test the same with variable indices. */ ++ ++/* Test for variable selector and vector residing in register. */ ++__attribute__((noinline)) ++float ei(vector float v, int i) ++{ ++ return __builtin_vec_ext_v4sf (v, i); ++} ++ ++/* Test for variable selector and vector residing in memory. */ ++float mei(vector float *vp, int i) ++{ ++ return __builtin_vec_ext_v4sf (*vp, i); ++} ++ ++ ++int main (int argc, char *argv[]) { ++ vector float dv = { CONST0, CONST1, CONST2, CONST3 }; ++ float d; ++ ++ d = e0 (dv); ++ if (d != CONST0) ++ abort (); ++ ++ d = e1 (dv); ++ if (d != CONST1) ++ abort (); ++ ++ d = e7 (dv); ++ if (d != CONST3) ++ abort (); ++ ++ d = e8 (dv); ++ if (d != CONST0) ++ abort (); ++ ++ d = me0 (&dv); ++ if (d != CONST0) ++ abort (); ++ ++ d = me1 (&dv); ++ if (d != CONST1) ++ abort (); ++ ++ d = me13 (&dv); ++ if (d != CONST1) ++ abort (); ++ ++ d = me15 (&dv); ++ if (d != CONST3) ++ abort (); ++ ++ d = ei (dv, 0); ++ if (d != CONST0) ++ abort (); ++ ++ d = ei (dv, 2); ++ if (d != CONST2) ++ abort (); ++ ++ d = ei (dv, 11); ++ if (d != CONST3) ++ abort (); ++ ++ d = ei (dv, 17); ++ if (d != CONST1) ++ abort (); ++ ++ d = mei (&dv, 0); ++ if (d != CONST0) ++ abort (); ++ ++ d = mei (&dv, 1); ++ if (d != CONST1) ++ abort (); ++ ++ d = mei (&dv, 15); ++ if (d != CONST3) ++ abort (); ++ ++ d = mei (&dv, 6); ++ if (d != CONST2) ++ abort (); ++ ++ return 0; ++} +Index: gcc/testsuite/gcc.target/powerpc/vec-extract-v16qiu-v2a.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/vec-extract-v16qiu-v2a.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/vec-extract-v16qiu-v2a.c (.../branches/gcc-8-branch) +@@ -0,0 +1,14 @@ ++/* { dg-do run } */ ++/* { dg-require-effective-target vsx_hw } */ ++/* { dg-options "-O2 -mvsx" } */ ++ ++#define TYPE unsigned char ++/* ELEMENTS is number of elements in a vector of TYPE. */ ++#define ELEMENTS 16 ++#define INITIAL \ ++ { 3, 2, 3, 4, 5, 6, 7, 8, 240, 241, 242, 243, 244, 245, 246, 247 } ++ ++#define DO_TRACE ++#define DISABLE_INLINE_OF_GET_AUTO_N ++ ++#include "vec-extract-v16qiu-v2.h" +Index: gcc/testsuite/gcc.target/powerpc/vsx-builtin-13d.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/vsx-builtin-13d.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/vsx-builtin-13d.c (.../branches/gcc-8-branch) +@@ -0,0 +1,115 @@ ++/* { dg-do run { target int128 } } */ ++/* { dg-require-effective-target vsx_hw } */ ++/* { dg-options "-mvsx -O3" } */ ++ ++/* This test should run the same on any target that supports vsx ++ instructions. Intentionally not specifying cpu in order to test ++ all code generation paths. */ ++ ++#include <altivec.h> ++ ++#define SIGNED signed ++ ++extern void abort (void); ++ ++#define CONST0 (((SIGNED __int128) 31415926539) << 60) ++#define CONST1 (((SIGNED __int128) 31415926539) << 55) ++#define CONST2 (((SIGNED __int128) 31415926539) << 50) ++#define CONST3 (((SIGNED __int128) 31415926539) << 45) ++ ++/* Test that indices > length of vector are applied modulo the vector ++ length. */ ++ ++/* Test for vector residing in register. */ ++vector SIGNED __int128 e0 (vector SIGNED __int128 v, SIGNED __int128 x) ++{ ++ return vec_insert (x, v, 0); ++} ++ ++vector SIGNED __int128 e3 (vector SIGNED __int128 v, SIGNED __int128 x) ++{ ++ return vec_insert (x, v, 3); ++} ++ ++/* Test for vector residing in memory. */ ++vector SIGNED __int128 me0 (vector SIGNED __int128 *vp, SIGNED __int128 x) ++{ ++ return vec_insert (x, *vp, 0); ++} ++ ++vector SIGNED __int128 me3 (vector SIGNED __int128 *vp, SIGNED __int128 x) ++{ ++ return vec_insert (x, *vp, 3); ++} ++ ++/* Test the same with variable indices. */ ++ ++/* Test for variable selector and vector residing in register. */ ++__attribute__((noinline)) ++vector SIGNED __int128 ++ei (vector SIGNED __int128 v, int i, SIGNED __int128 x) ++{ ++ return vec_insert (x, v, i); ++} ++ ++/* Test for variable selector and vector residing in memory. */ ++__attribute__((noinline)) ++vector SIGNED __int128 ++mei (vector SIGNED __int128 *vp, int i, SIGNED __int128 x) ++{ ++ return vec_insert (x, *vp, i); ++} ++ ++int main (int argc, char *argv[]) { ++ vector SIGNED __int128 dv = { CONST0 }; ++ SIGNED __int128 d; ++ ++ dv = e0 (dv, CONST3); ++ if (dv [0] != CONST3) ++ abort (); ++ ++ dv = e3 (dv, CONST1); ++ if (dv [0] != CONST1) ++ abort (); ++ ++ dv = me0 (&dv, CONST2); ++ if (dv [0] != CONST2) ++ abort (); ++ ++ dv = me3 (&dv, CONST3); ++ if (dv [0] != CONST3) ++ abort (); ++ ++ dv = ei (dv, 0, CONST1); ++ if (dv [0] != CONST1) ++ abort (); ++ ++ dv = ei (dv, 1, CONST2); ++ if (dv [0] != CONST2) ++ abort (); ++ ++ dv = ei (dv, 2, CONST3); ++ if (dv [0] != CONST3) ++ abort (); ++ ++ dv = ei (dv, 3, CONST1); ++ if (dv [0] != CONST1) ++ abort (); ++ ++ dv = mei (&dv, 0, CONST2); ++ if (dv [0] != CONST2) ++ abort (); ++ ++ dv = mei (&dv, 1, CONST3); ++ if (dv [0] != CONST3) ++ abort (); ++ ++ dv = mei (&dv, 2, CONST1); ++ if (dv [0] != CONST1) ++ abort (); ++ ++ dv = mei (&dv, 3, CONST2); ++ if (dv [0] != CONST2) ++ abort (); ++ return 0; ++} +Index: gcc/testsuite/gcc.target/powerpc/pr70010-4.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/pr70010-4.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/pr70010-4.c (.../branches/gcc-8-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/vsx-builtin-14c.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/vsx-builtin-14c.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/vsx-builtin-14c.c (.../branches/gcc-8-branch) +@@ -0,0 +1,149 @@ ++/* { dg-do run } */ ++/* { dg-require-effective-target vmx_hw } */ ++/* { dg-options "-maltivec" } */ ++ ++/* This test should run the same on any target that supports altivec/vmx ++ instructions. Intentionally not specifying cpu in order to test ++ all code generation paths. */ ++ ++#include <altivec.h> ++ ++extern void abort (void); ++ ++#define CONST0 ((float) (3.1415926539)) ++#define CONST1 ((float) (3.1415926539 * 2)) ++#define CONST2 ((float) (3.1415926539 * 3)) ++#define CONST3 ((float) (3.1415926539 * 4)) ++ ++/* Test that indices > length of vector are applied modulo the vector ++ length. */ ++ ++/* Test for vector residing in register. */ ++vector float e0(vector float v, float x) ++{ ++ return vec_insert (x, v, 0); ++} ++ ++vector float e1(vector float v, float x) ++{ ++ return vec_insert (x, v, 1); ++} ++ ++vector float e7(vector float v, float x) ++{ ++ return vec_insert (x, v, 7); ++} ++ ++vector float e8(vector float v, float x) ++{ ++ return vec_insert (x, v, 8); ++} ++ ++/* Test for vector residing in memory. */ ++vector float me0(vector float *vp, float x) ++{ ++ return vec_insert (x, *vp, 0); ++} ++ ++vector float me1(vector float *vp, float x) ++{ ++ return vec_insert (x, *vp, 1); ++} ++ ++vector float me13(vector float *vp, float x) ++{ ++ return vec_insert (x, *vp, 13); ++} ++ ++vector float me15(vector float *vp, float x) ++{ ++ return vec_insert (x, *vp, 15); ++} ++ ++/* Test the same with variable indices. */ ++ ++/* Test for variable selector and vector residing in register. */ ++__attribute__((noinline)) ++vector float ei(vector float v, int i, float x) ++{ ++ return vec_insert (x, v, i); ++} ++ ++/* Test for variable selector and vector residing in memory. */ ++__attribute__((noinline)) ++vector float mei(vector float *vp, int i, float x) ++{ ++ return vec_insert (x, *vp, i); ++} ++ ++ ++int main (int argc, char *argv[]) { ++ vector float dv = { CONST0, CONST1, CONST2, CONST3 }; ++ float d; ++ ++ dv = e0 (dv, CONST3); ++ if (dv [0] != CONST3) ++ abort (); ++ ++ dv = e1 (dv, CONST0); ++ if (dv [1] != CONST0) ++ abort (); ++ ++ dv = e7 (dv, CONST2); ++ if (dv [3] != CONST2) ++ abort (); ++ ++ dv = e8 (dv, CONST1); ++ if (dv [0] != CONST1) ++ abort (); ++ ++ dv = me0 (&dv, CONST2); ++ if (dv [0] != CONST2) ++ abort (); ++ ++ dv = me1 (&dv, CONST3); ++ if (dv [1] != CONST3) ++ abort (); ++ ++ dv = me13 (&dv, CONST2); ++ if (dv [1] != CONST2) ++ abort (); ++ ++ dv = me15 (&dv, CONST1); ++ if (dv [3] != CONST1) ++ abort (); ++ ++ dv = ei (dv, 0, CONST3); ++ if (dv [0] != CONST3) ++ abort (); ++ ++ dv = ei (dv, 2, CONST1); ++ if (dv [2] != CONST1) ++ abort (); ++ ++ dv = ei (dv, 11, CONST0); ++ if (dv [3] != CONST0) ++ abort (); ++ ++ dv = ei (dv, 17, CONST2); ++ if (dv [1] != CONST2) ++ abort (); ++ ++ dv = mei (&dv, 0, CONST1); ++ if (dv [0] != CONST1) ++ abort (); ++ ++ dv = mei (&dv, 1, CONST0); ++ if (dv [1] != CONST0) ++ abort (); ++ ++ dv = mei (&dv, 15, CONST1); ++ if (dv [3] != CONST1) ++ abort (); ++ ++ dv = mei (&dv, 6, CONST0); ++ if (dv [2] != CONST0) ++ abort (); ++ ++ return 0; ++} +Index: gcc/testsuite/gcc.target/powerpc/bmi2-bzhi64-1a.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/bmi2-bzhi64-1a.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/bmi2-bzhi64-1a.c (.../branches/gcc-8-branch) +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-O3" } */ ++/* { dg-options "-O3 -maltivec -mvsx" } */ + /* { dg-require-effective-target lp64 } */ + + #define NO_WARN_X86_INTRINSICS 1 +Index: gcc/testsuite/gcc.target/powerpc/vsx-builtin-15b.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/vsx-builtin-15b.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/vsx-builtin-15b.c (.../branches/gcc-8-branch) +@@ -0,0 +1,113 @@ ++/* { dg-do run { target int128 } } */ ++/* { dg-require-effective-target vsx_hw } */ ++/* { dg-options "-mvsx -O3" } */ ++ ++/* This test should run the same on any target that supports vsx ++ instructions. Intentionally not specifying cpu in order to test ++ all code generation paths. */ ++ ++#include <altivec.h> ++ ++extern void abort (void); ++ ++#define CONST0 (3.1415926539) ++#define CONST1 (3.1415926539 * 2) ++ ++ ++/* Test that indices > length of vector are applied modulo the vector ++ length. */ ++ ++/* Test for vector residing in register. */ ++double e0(vector double v){ return __builtin_vec_ext_v2df (v, 0); } ++double e1(vector double v){ return __builtin_vec_ext_v2df (v, 1); } ++double e2(vector double v){ return __builtin_vec_ext_v2df (v, 2); } ++double e3(vector double v){ return __builtin_vec_ext_v2df (v, 3); } ++ ++/* Test for vector residing in memory. */ ++double me0(vector double *vp){ return __builtin_vec_ext_v2df (*vp, 0); } ++double me1(vector double *vp){ return __builtin_vec_ext_v2df (*vp, 1); } ++double me2(vector double *vp){ return __builtin_vec_ext_v2df (*vp, 2); } ++double me3(vector double *vp){ return __builtin_vec_ext_v2df (*vp, 3); } ++ ++/* Test the same with variable indices. */ ++ ++/* Test for variable selector and vector residing in register. */ ++__attribute__((noinline)) ++double ei(vector double v, int i){ return __builtin_vec_ext_v2df (v, i); } ++ ++/* Test for variable selector and vector residing in memory. */ ++double mei(vector double *vp, int i){ return __builtin_vec_ext_v2df (*vp, i); } ++ ++ ++int main (int argc, char *argv[]) { ++ vector double dv; ++ double d; ++ dv[0] = CONST0; ++ dv[1] = CONST1; ++ ++ d = e0 (dv); ++ if (d != CONST0) ++ abort (); ++ ++ d = e1 (dv); ++ if (d != CONST1) ++ abort (); ++ ++ d = e2 (dv); ++ if (d != CONST0) ++ abort (); ++ ++ d = e3 (dv); ++ if (d != CONST1) ++ abort (); ++ ++ d = me0 (&dv); ++ if (d != CONST0) ++ abort (); ++ ++ d = me1 (&dv); ++ if (d != CONST1) ++ abort (); ++ ++ d = me2 (&dv); ++ if (d != CONST0) ++ abort (); ++ ++ d = me3 (&dv); ++ if (d != CONST1) ++ abort (); ++ ++ d = ei (dv, 0); ++ if (d != CONST0) ++ abort (); ++ ++ d = ei (dv, 1); ++ if (d != CONST1) ++ abort (); ++ ++ d = ei (dv, 2); ++ if (d != CONST0) ++ abort (); ++ ++ d = ei (dv, 3); ++ if (d != CONST1) ++ abort (); ++ ++ d = mei (&dv, 0); ++ if (d != CONST0) ++ abort (); ++ ++ d = mei (&dv, 1); ++ if (d != CONST1) ++ abort (); ++ ++ d = mei (&dv, 2); ++ if (d != CONST0) ++ abort (); ++ ++ d = mei (&dv, 3); ++ if (d != CONST1) ++ abort (); ++ ++ return 0; ++} +Index: gcc/testsuite/gcc.target/powerpc/pr92090-2.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/pr92090-2.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/pr92090-2.c (.../branches/gcc-8-branch) +@@ -0,0 +1,45 @@ ++/* { dg-do compile } */ ++/* { dg-options "-mcpu=power8 -Os -w" } */ ++/* { dg-additional-options "-mbig" { target powerpc64le-*-* } } */ ++ ++/* Verify that we don't ICE. */ ++ ++int a; ++static _Atomic long double b, c, d, m; ++double n; ++extern int foo (void); ++extern void bar (int, int, int, int); ++ ++void ++bug (void) ++{ ++ b = 1.79769313486231580793728971405301199e308L; ++ for (int i = 0; i < 10000; i++) ++ if (__builtin_isinf (n)) ++ b; ++ c = 1; ++ int e, f, g, h; ++ while (a) ++ ; ++ for (int i; i; i++) ++ { ++ double j = c /= foo (); ++ if (__builtin_isinf (j)) ++ { ++ if (foo == 1 << 31) ++ e++; ++ f++; ++ c = 0; ++ } ++ else ++ { ++ if (foo == 1 << 30) ++ g++; ++ h++; ++ c = 1; ++ } ++ } ++ bar (e, f, g, h); ++ d = 1.79769313486231580793728971405301199e308L; ++ m = 1; ++} +Index: gcc/testsuite/gcc.target/powerpc/vsx-builtin-16a.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/vsx-builtin-16a.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/vsx-builtin-16a.c (.../branches/gcc-8-branch) +@@ -0,0 +1,165 @@ ++/* { dg-do run } */ ++/* { dg-require-effective-target vmx_hw } */ ++/* { dg-options "-maltivec" } */ ++ ++/* This test should run the same on any target that supports altivec/dfp ++ instructions. Intentionally not specifying cpu in order to test ++ all code generation paths. */ ++ ++#include <altivec.h> ++ ++extern void abort (void); ++ ++#define CONST0 (0) ++#define CONST1 (1) ++#define CONST2 (2) ++#define CONST3 (3) ++#define CONST4 (4) ++#define CONST5 (5) ++#define CONST6 (6) ++#define CONST7 (7) ++#define CONST8 (8) ++#define CONST9 (9) ++#define CONSTA (10) ++#define CONSTB (11) ++#define CONSTC (12) ++#define CONSTD (13) ++#define CONSTE (14) ++#define CONSTF (15) ++ ++ ++/* Test that indices > length of vector are applied modulo the vector ++ length. */ ++ ++/* Test for vector residing in register. */ ++unsigned char c0 (vector unsigned char v) ++{ ++ return __builtin_vec_extract (v, 0); ++} ++ ++unsigned char c9 (vector unsigned char v) ++{ ++ return __builtin_vec_extract (v, 9); ++} ++ ++unsigned char c21 (vector unsigned char v) ++{ ++ return __builtin_vec_extract (v, 21); ++} ++ ++unsigned char c30 (vector unsigned char v) ++{ ++ return __builtin_vec_extract (v, 30); ++} ++ ++/* Test for vector residing in memory. */ ++unsigned char mc0 (vector unsigned char *vp) ++{ ++ return __builtin_vec_extract (*vp, 0); ++} ++ ++unsigned char mc9 (vector unsigned char *vp) ++{ ++ return __builtin_vec_extract (*vp, 9); ++} ++ ++unsigned char mc21 (vector unsigned char *vp) ++{ ++ return __builtin_vec_extract (*vp, 21); ++} ++ ++unsigned char mc30 (vector unsigned char *vp) ++{ ++ return __builtin_vec_extract (*vp, 30); ++} ++ ++/* Test the same with variable indices. */ ++ ++/* Test for variable selector and vector residing in register. */ ++__attribute__((noinline)) ++unsigned char ci (vector unsigned char v, int i) ++{ ++ return __builtin_vec_extract (v, i); ++} ++ ++/* Test for variable selector and vector residing in memory. */ ++__attribute__((noinline)) ++unsigned char mci (vector unsigned char *vp, int i) ++{ ++ return __builtin_vec_extract (*vp, i); ++} ++ ++ ++int main (int argc, char *argv[]) { ++ vector unsigned char cv = { CONST0, CONST1, CONST2, CONST3, ++ CONST4, CONST5, CONST6, CONST7, ++ CONST8, CONST9, CONSTA, CONSTB, ++ CONSTC, CONSTD, CONSTE, CONSTF }; ++ unsigned char c; ++ ++ c = c0 (cv); ++ if (c != CONST0) ++ abort (); ++ ++ c = c9 (cv); ++ if (c != CONST9) ++ abort (); ++ ++ c = c21 (cv); ++ if (c != CONST5) ++ abort (); ++ ++ c = c30 (cv); ++ if (c != CONSTE) ++ abort (); ++ ++ c = mc0 (&cv); ++ if (c != CONST0) ++ abort (); ++ ++ c = mc9 (&cv); ++ if (c != CONST9) ++ abort (); ++ ++ c = mc21 (&cv); ++ if (c != CONST5) ++ abort (); ++ ++ c = mc30 (&cv); ++ if (c != CONSTE) ++ abort (); ++ ++ c = ci (cv, 8); ++ if (c != CONST8) ++ abort (); ++ ++ c = ci (cv, 13); ++ if (c != CONSTD) ++ abort (); ++ ++ c = ci (cv, 23); ++ if (c != CONST7) ++ abort (); ++ ++ c = ci (cv, 31); ++ if (c != CONSTF) ++ abort (); ++ ++ c = mci (&cv, 5); ++ if (c != CONST5) ++ abort (); ++ ++ c = mci (&cv, 12); ++ if (c != CONSTC) ++ abort (); ++ ++ c = mci (&cv, 25); ++ if (c != CONST9) ++ abort (); ++ ++ c = mci (&cv, 16); ++ if (c != CONST0) ++ abort (); ++ ++ return 0; ++} +Index: gcc/testsuite/gcc.target/powerpc/vsx-builtin-15d.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/vsx-builtin-15d.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/vsx-builtin-15d.c (.../branches/gcc-8-branch) +@@ -0,0 +1,151 @@ ++/* { dg-do run { target int128 } } */ ++/* { dg-require-effective-target vsx_hw } */ ++/* { dg-options "-mvsx -O3" } */ ++ ++/* This test should run the same on any target that supports vsx ++ instructions. Intentionally not specifying cpu in order to test ++ all code generation paths. */ ++ ++#include <altivec.h> ++ ++extern void abort (void); ++ ++#define CONST0 (3.1415926539) ++#define CONST1 (3.1415926539 * 2) ++#define CONST2 (3.1415926539 * 3) ++#define CONST3 (3.1415926539 * 4) ++ ++ ++/* Test that indices > length of vector are applied modulo the vector ++ length. */ ++ ++/* Test for vector residing in register. */ ++vector double e0(vector double v, double x) ++{ ++ return vec_insert (x, v, 0); ++} ++ ++vector double e1(vector double v, double x) ++{ ++ return vec_insert (x, v, 1); ++} ++ ++vector double e2(vector double v, double x) ++{ ++ return vec_insert (x, v, 2); ++} ++ ++vector double e3(vector double v, double x) ++{ ++ return vec_insert (x, v, 3); ++} ++ ++/* Test for vector residing in memory. */ ++vector double me0(vector double *vp, double x) ++{ ++ return vec_insert (x, *vp, 0); ++} ++ ++vector double me1(vector double *vp, double x) ++{ ++ return vec_insert (x, *vp, 1); ++} ++ ++vector double me2(vector double *vp, double x) ++{ ++ return vec_insert (x, *vp, 2); ++} ++ ++vector double me3(vector double *vp, double x) ++{ ++ return vec_insert (x, *vp, 3); ++} ++ ++/* Test the same with variable indices. */ ++ ++/* Test for variable selector and vector residing in register. */ ++__attribute__((noinline)) ++vector double ei(vector double v, int i, double x) ++{ ++ return vec_insert (x, v, i); ++} ++ ++/* Test for variable selector and vector residing in memory. */ ++__attribute__((noinline)) ++vector double mei(vector double *vp, int i, double x) ++{ ++ return vec_insert (x, *vp, i); ++} ++ ++int main (int argc, char *argv[]) { ++ vector double dv; ++ double d; ++ dv[0] = CONST0; ++ dv[1] = CONST1; ++ ++ dv = e0 (dv, CONST3); ++ if (dv [0] != CONST3) ++ abort (); ++ ++ dv = e1 (dv, CONST2); ++ if (dv [1] != CONST2) ++ abort (); ++ ++ dv = e2 (dv, CONST1); ++ if (dv [0] != CONST1) ++ abort (); ++ ++ dv = e3 (dv, CONST0); ++ if (dv [1] != CONST0) ++ abort (); ++ ++ dv = me0 (&dv, CONST2); ++ if (dv [0] != CONST2) ++ abort (); ++ ++ dv = me1 (&dv, CONST3); ++ if (dv [1] != CONST3) ++ abort (); ++ ++ dv = me2 (&dv, CONST1); ++ if (dv [0] != CONST1) ++ abort (); ++ ++ dv = me3 (&dv, CONST0); ++ if (dv [1] != CONST0) ++ abort (); ++ ++ dv = ei (dv, 0, CONST1); ++ if (dv [0] != CONST1) ++ abort (); ++ ++ dv = ei (dv, 1, CONST0); ++ if (dv [1] != CONST0) ++ abort (); ++ ++ dv = ei (dv, 2, CONST3); ++ if (dv [0] != CONST3) ++ abort (); ++ ++ dv = ei (dv, 3, CONST2); ++ if (dv [1] != CONST2) ++ abort (); ++ ++ dv = mei (&dv, 0, CONST1); ++ if (dv [0] != CONST1) ++ abort (); ++ ++ dv = mei (&dv, 1, CONST0); ++ if (dv [1] != CONST0) ++ abort (); ++ ++ dv = mei (&dv, 2, CONST2); ++ if (dv [0] != CONST2) ++ abort (); ++ ++ dv = mei (&dv, 3, CONST3); ++ if (dv [1] != CONST3) ++ abort (); ++ ++ return 0; ++} +Index: gcc/testsuite/gcc.target/powerpc/vsx-builtin-16c.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/vsx-builtin-16c.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/vsx-builtin-16c.c (.../branches/gcc-8-branch) +@@ -0,0 +1,180 @@ ++/* { dg-do run } */ ++/* { dg-require-effective-target vmx_hw } */ ++/* { dg-options "-maltivec" } */ ++ ++/* This test should run the same on any target that supports altivec/vmx ++ instructions. Intentionally not specifying cpu in order to test ++ all code generation paths. */ ++ ++#include <stdio.h> ++#include <altivec.h> ++ ++extern void abort (void); ++ ++#define CONST0 (0) ++#define CONST1 (1) ++#define CONST2 (2) ++#define CONST3 (3) ++#define CONST4 (4) ++#define CONST5 (5) ++#define CONST6 (6) ++#define CONST7 (7) ++#define CONST8 (8) ++#define CONST9 (9) ++#define CONSTA (10) ++#define CONSTB (11) ++#define CONSTC (12) ++#define CONSTD (13) ++#define CONSTE (14) ++#define CONSTF (15) ++ ++ ++/* Test that indices > length of vector are applied modulo the vector ++ length. */ ++ ++/* Test for vector residing in register. */ ++vector unsigned char c0 (vector unsigned char v, unsigned char x) ++{ ++ return vec_insert (x, v, 0); ++} ++ ++vector unsigned char c9 (vector unsigned char v, unsigned char x) ++{ ++ return vec_insert (x, v, 9); ++} ++ ++vector unsigned char c21 (vector unsigned char v, unsigned char x) ++{ ++ return vec_insert (x, v, 21); ++} ++ ++vector unsigned char c30 (vector unsigned char v, unsigned char x) ++{ ++ return vec_insert (x, v, 30); ++} ++ ++/* Test for vector residing in memory. */ ++vector unsigned char mc0 (vector unsigned char *vp, unsigned char x) ++{ ++ return vec_insert (x, *vp, 0); ++} ++ ++vector unsigned char mc9 (vector unsigned char *vp, unsigned char x) ++{ ++ return vec_insert (x, *vp, 9); ++} ++ ++vector unsigned char mc21 (vector unsigned char *vp, unsigned char x) ++{ ++ return vec_insert (x, *vp, 21); ++} ++ ++vector unsigned char mc30 (vector unsigned char *vp, unsigned char x) ++{ ++ return vec_insert (x, *vp, 30); ++} ++ ++/* Test the same with variable indices. */ ++ ++/* Test for variable selector and vector residing in register. */ ++__attribute__((noinline)) ++vector unsigned char ci (vector unsigned char v, int i, unsigned char x) ++{ ++ return vec_insert (x, v, i); ++} ++ ++/* Test for variable selector and vector residing in memory. */ ++__attribute__((noinline)) ++vector unsigned char mci (vector unsigned char *vp, int i, unsigned char x) ++{ ++ return vec_insert (x, *vp, i); ++} ++ ++ ++int main (int argc, char *argv[]) { ++ vector unsigned char cv = { CONST0, CONST1, CONST2, CONST3, ++ CONST4, CONST5, CONST6, CONST7, ++ CONST8, CONST9, CONSTA, CONSTB, ++ CONSTC, CONSTD, CONSTE, CONSTF }; ++ printf ("A\n"); ++ cv = c0 (cv, CONST3); ++ if (cv [0] != CONST3) ++ abort (); ++ ++ printf ("B\n"); ++ cv = c9 (cv, CONST2); ++ if (cv [9] != CONST2) ++ abort (); ++ ++ printf ("C\n"); ++ cv = c21 (cv, CONSTF); ++ if (cv [5] != CONSTF) ++ abort (); ++ ++ printf ("D\n"); ++ cv = c30 (cv, CONST3); ++ if (cv [14] != CONST3) ++ abort (); ++ ++ printf ("E\n"); ++ cv = mc0 (&cv, CONST4); ++ if (cv [0] != CONST4) ++ abort (); ++ ++ printf ("F\n"); ++ cv = mc9 (&cv, CONST3); ++ if (cv [9] != CONST3) ++ abort (); ++ ++ printf ("G\n"); ++ cv = mc21 (&cv, CONST1); ++ if (cv [5] != CONST1) ++ abort (); ++ ++ printf ("H\n"); ++ cv = mc30 (&cv, CONSTC); ++ if (cv [14] != CONSTC) ++ abort (); ++ ++ printf ("I\n"); ++ cv = ci (cv, 8, CONSTD); ++ if (cv [8] != CONSTD) ++ abort (); ++ ++ printf ("J\n"); ++ cv = ci (cv, 13, CONST5); ++ if (cv [13] != CONST5) ++ abort (); ++ ++ printf ("K\n"); ++ cv = ci (cv, 23, CONST6); ++ if (cv [7] != CONST6) ++ abort (); ++ ++ printf ("L\n"); ++ cv = ci (cv, 31, CONST7); ++ if (cv [15] != CONST7) ++ abort (); ++ ++ printf ("M\n"); ++ cv = mci (&cv, 5, CONST8); ++ if (cv [5] != CONST8) ++ abort (); ++ ++ printf ("N\n"); ++ cv = mci (&cv, 12, CONST9); ++ if (cv [12] != CONST9) ++ abort (); ++ ++ printf ("O\n"); ++ cv = mci (&cv, 25, CONSTA); ++ if (cv [9] != CONSTA) ++ abort (); ++ ++ printf ("P\n"); ++ cv = mci (&cv, 16, CONSTB); ++ if (cv [0] != CONSTB) ++ abort (); ++ ++ return 0; ++} +Index: gcc/testsuite/gcc.target/powerpc/vsx-builtin-17b.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/vsx-builtin-17b.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/vsx-builtin-17b.c (.../branches/gcc-8-branch) +@@ -0,0 +1,155 @@ ++/* { dg-do run } */ ++/* { dg-require-effective-target vmx_hw } */ ++/* { dg-options "-maltivec -O3" } */ ++ ++/* This test should run the same on any target that supports altivec/dfp ++ instructions. Intentionally not specifying cpu in order to test ++ all code generation paths. */ ++ ++#include <altivec.h> ++ ++extern void abort (void); ++ ++#define CONST0 (0) ++#define CONST1 (1) ++#define CONST2 (2) ++#define CONST3 (3) ++#define CONST4 (4) ++#define CONST5 (5) ++#define CONST6 (6) ++#define CONST7 (7) ++ ++ ++/* Test that indices > length of vector are applied modulo the vector ++ length. */ ++ ++/* Test for vector residing in register. */ ++unsigned short s3 (vector unsigned short v) ++{ ++ return __builtin_vec_extract (v, 3); ++} ++ ++unsigned short s7 (vector unsigned short v) ++{ ++ return __builtin_vec_extract (v, 7); ++} ++ ++unsigned short s21 (vector unsigned short v) ++{ ++ return __builtin_vec_extract (v, 21); ++} ++ ++unsigned short s30 (vector unsigned short v) ++{ ++ return __builtin_vec_extract (v, 30); ++} ++ ++/* Test for vector residing in memory. */ ++unsigned short ms3 (vector unsigned short *vp) ++{ ++ return __builtin_vec_extract (*vp, 3); ++} ++ ++unsigned short ms7 (vector unsigned short *vp) ++{ ++ return __builtin_vec_extract (*vp, 7); ++} ++ ++unsigned short ms21 (vector unsigned short *vp) ++{ ++ return __builtin_vec_extract (*vp, 21); ++} ++ ++unsigned short ms30 (vector unsigned short *vp) ++{ ++ return __builtin_vec_extract (*vp, 30); ++} ++ ++/* Test the same with variable indices. */ ++ ++/* Test for variable selector and vector residing in register. */ ++__attribute__((noinline)) ++unsigned short ci (vector unsigned short v, int i) ++{ ++ return __builtin_vec_extract (v, i); ++} ++ ++/* Test for variable selector and vector residing in memory. */ ++__attribute__((noinline)) ++unsigned short mci (vector unsigned short *vp, int i) ++{ ++ return __builtin_vec_extract (*vp, i); ++} ++ ++ ++int main (int argc, unsigned short *argv[]) { ++ vector unsigned short sv = { ++ CONST0, CONST1, CONST2, CONST3, CONST4, CONST5, CONST6, CONST7 }; ++ unsigned short s; ++ ++ s = s3 (sv); ++ if (s != CONST3) ++ abort (); ++ ++ s = s7 (sv); ++ if (s != CONST7) ++ abort (); ++ ++ s = s21 (sv); ++ if (s != CONST5) ++ abort (); ++ ++ s = s30 (sv); ++ if (s != CONST6) ++ abort (); ++ ++ s = ms3 (&sv); ++ if (s != CONST3) ++ abort (); ++ ++ s = ms7 (&sv); ++ if (s != CONST7) ++ abort (); ++ ++ s = ms21 (&sv); ++ if (s != CONST5) ++ abort (); ++ ++ s = ms30 (&sv); ++ if (s != CONST6) ++ abort (); ++ ++ s = ci (sv, 5); ++ if (s != CONST5) ++ abort (); ++ ++ s = ci (sv, 2); ++ if (s != CONST2) ++ abort (); ++ ++ s = ci (sv, 15); ++ if (s != CONST7) ++ abort (); ++ ++ s = ci (sv, 28); ++ if (s != CONST4) ++ abort (); ++ ++ s = mci (&sv, 5); ++ if (s != CONST5) ++ abort (); ++ ++ s = mci (&sv, 12); ++ if (s != CONST4) ++ abort (); ++ ++ s = mci (&sv, 25); ++ if (s != CONST1) ++ abort (); ++ ++ s = mci (&sv, 16); ++ if (s != CONST0) ++ abort (); ++ ++ return 0; ++} +Index: gcc/testsuite/gcc.target/powerpc/vsx-builtin-18a.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/vsx-builtin-18a.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/vsx-builtin-18a.c (.../branches/gcc-8-branch) +@@ -0,0 +1,149 @@ ++/* { dg-do run } */ ++/* { dg-require-effective-target vmx_hw } */ ++/* { dg-options "-maltivec" } */ ++ ++/* This test should run the same on any target that supports altivec/dfp ++ instructions. Unsigned Intentionally not specifying cpu in order to test ++ all code generation paths. */ ++ ++#include <altivec.h> ++ ++extern void abort (void); ++ ++#define CONST0 (0) ++#define CONST1 (1) ++#define CONST2 (2) ++#define CONST3 (3) ++ ++/* Test that indices > length of vector are applied modulo the vector ++ length. */ ++ ++/* Test for vector residing in register. */ ++unsigned int s3 (vector unsigned int v) ++{ ++ return __builtin_vec_extract (v, 3); ++} ++ ++unsigned int s1 (vector unsigned int v) ++{ ++ return __builtin_vec_extract (v, 1); ++} ++ ++unsigned int s21 (vector unsigned int v) ++{ ++ return __builtin_vec_extract (v, 21); ++} ++ ++unsigned int s30 (vector unsigned int v) ++{ ++ return __builtin_vec_extract (v, 30); ++} ++ ++/* Test for vector residing in memory. */ ++unsigned int ms3 (vector unsigned int *vp) ++{ ++ return __builtin_vec_extract (*vp, 3); ++} ++ ++unsigned int ms1(vector unsigned int *vp) ++{ ++ return __builtin_vec_extract (*vp, 1); ++} ++ ++unsigned int ms21(vector unsigned int *vp) ++{ ++ return __builtin_vec_extract (*vp, 21); ++} ++ ++unsigned int ms30(vector unsigned int *vp) ++{ ++ return __builtin_vec_extract (*vp, 30); ++} ++ ++/* Test the same with variable indices. */ ++ ++/* Test for variable selector and vector residing in register. */ ++__attribute__((noinline)) ++unsigned int ci (vector unsigned int v, int i) ++{ ++ return __builtin_vec_extract (v, i); ++} ++ ++/* Test for variable selector and vector residing in memory. */ ++__attribute__((noinline)) ++unsigned int mci(vector unsigned int *vp, int i) ++{ ++ return __builtin_vec_extract (*vp, i); ++} ++ ++ ++unsigned int main (int argc, unsigned char *argv[]) { ++ vector unsigned int sv = { CONST0, CONST1, CONST2, CONST3 }; ++ unsigned int s; ++ ++ s = s3 (sv); ++ if (s != CONST3) ++ abort (); ++ ++ s = s1 (sv); ++ if (s != CONST1) ++ abort (); ++ ++ s = s21 (sv); ++ if (s != CONST1) ++ abort (); ++ ++ s = s30 (sv); ++ if (s != CONST2) ++ abort (); ++ ++ s = ms3 (&sv); ++ if (s != CONST3) ++ abort (); ++ ++ s = ms1 (&sv); ++ if (s != CONST1) ++ abort (); ++ ++ s = ms21 (&sv); ++ if (s != CONST1) ++ abort (); ++ ++ s = ms30 (&sv); ++ if (s != CONST2) ++ abort (); ++ ++ s = ci (sv, 5); ++ if (s != CONST1) ++ abort (); ++ ++ s = ci (sv, 2); ++ if (s != CONST2) ++ abort (); ++ ++ s = ci (sv, 15); ++ if (s != CONST3) ++ abort (); ++ ++ s = ci (sv, 28); ++ if (s != CONST0) ++ abort (); ++ ++ s = mci (&sv, 5); ++ if (s != CONST1) ++ abort (); ++ ++ s = mci (&sv, 12); ++ if (s != CONST0) ++ abort (); ++ ++ s = mci (&sv, 25); ++ if (s != CONST1) ++ abort (); ++ ++ s = mci (&sv, 16); ++ if (s != CONST0) ++ abort (); ++ ++ return 0; ++} +Index: gcc/testsuite/gcc.target/powerpc/pr87532-mc.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/pr87532-mc.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/pr87532-mc.c (.../branches/gcc-8-branch) +@@ -0,0 +1,258 @@ ++/* { dg-do run { target int128 } } */ ++/* { dg-require-effective-target vsx_hw } */ ++/* { dg-options "-mvsx -O2" } */ ++ ++/* This test should run the same on any target that supports vsx ++ instructions. Intentionally not specifying cpu in order to test ++ all code generation paths. */ ++ ++#include <stdlib.h> ++#include <stddef.h> ++#include <altivec.h> ++ ++#include <stdio.h> ++ ++static vector unsigned __int128 ++deoptimize_uint128 (vector unsigned __int128 a) ++{ ++ __asm__ (" # %x0" : "+v" (a)); ++ return a; ++} ++ ++static vector unsigned long long int ++deoptimize_ulong (vector unsigned long long int a) ++{ ++ __asm__ (" # %x0" : "+v" (a)); ++ return a; ++} ++ ++static vector unsigned int ++deoptimize_uint (vector unsigned int a) ++{ ++ __asm__ (" # %x0" : "+v" (a)); ++ return a; ++} ++ ++static vector unsigned char ++deoptimize_uchar (vector unsigned char a) ++{ ++ __asm__ (" # %x0" : "+v" (a)); ++ return a; ++} ++ ++static vector unsigned short ++deoptimize_ushort (vector unsigned short a) ++{ ++ __asm__ (" # %x0" : "+v" (a)); ++ return a; ++} ++ ++__attribute ((noinline)) unsigned __int128 ++get_auto_n_uint128 (vector unsigned __int128 a, int n) ++{ ++ return __builtin_vec_extract (a, n); ++} ++ ++__attribute ((noinline)) unsigned long long int ++get_auto_n_ulong (vector unsigned long long int a, int n) ++{ ++ return __builtin_vec_extract (a, n); ++} ++ ++__attribute ((noinline)) ++unsigned int get_auto_n_uint (vector unsigned int a, int n) ++{ ++ return __builtin_vec_extract (a, n); ++} ++ ++__attribute ((noinline)) ++unsigned char get_auto_n_uchar (vector unsigned char a, int n) ++{ ++ return __builtin_vec_extract (a, n); ++} ++ ++__attribute ((noinline)) ++unsigned short get_auto_n_ushort (vector unsigned short a, int n) ++{ ++ return __builtin_vec_extract (a, n); ++} ++ ++ ++int check_uint128_element (int i, unsigned __int128 entry) ++{ ++ printf ("checking uint128 entry at index %d\n", i); ++ ++ return (entry == ((((unsigned __int128) 0xffeeddccbbaa9988ULL) << 64) ++ | 0x0706050403020100ULL)); ++} ++ ++int check_ulong_element (int i, unsigned long long int entry) ++{ ++ printf ("checking ulong entry 0x%llx at index %d\n", entry, i); ++ ++ switch (i % 2) ++ { ++ case 0: return (entry == 0x9999901010ULL); ++ case 1: return (entry == 0x7777733333ULL); ++ default: ++ return 0; ++ } ++} ++ ++int check_uint_element (int i, unsigned int entry) ++{ ++ printf ("checking uint entry 0x%x at index %d\n", entry, i); ++ ++ switch (i % 4) ++ { ++ case 0: return (entry == 0x99999); ++ case 1: return (entry == 0x01010); ++ case 2: return (entry == 0x77777); ++ case 3: return (entry == 0x33333); ++ default: ++ return 0; ++ } ++} ++ ++int check_uchar_element (int i, unsigned char entry) ++{ ++ printf ("checking uchar entry 0x%x at index %d\n", entry, i); ++ switch (i % 16) ++ { ++ case 0: return (entry == 0x90); ++ case 1: return (entry == 0x80); ++ case 2: return (entry == 0x70); ++ case 3: return (entry == 0x60); ++ case 4: return (entry == 0x50); ++ case 5: return (entry == 0x40); ++ case 6: return (entry == 0x30); ++ case 7: return (entry == 0x20); ++ case 8: return (entry == 0x10); ++ case 9: return (entry == 0xf0); ++ case 10: return (entry == 0xe0); ++ case 11: return (entry == 0xd0); ++ case 12: return (entry == 0xc0); ++ case 13: return (entry == 0xb0); ++ case 14: return (entry == 0xa0); ++ case 15: return (entry == 0xff); ++ default: ++ return 0; ++ } ++} ++ ++int check_ushort_element (int i, unsigned short entry) ++{ ++ printf ("checking ushort entry 0x%x at index %d\n", entry, i); ++ switch (i % 8) ++ { ++ case 0: return (entry == 0x9988); ++ case 1: return (entry == 0x8877); ++ case 2: return (entry == 0x7766); ++ case 3: return (entry == 0x6655); ++ case 4: return (entry == 0x5544); ++ case 5: return (entry == 0x4433); ++ case 6: return (entry == 0x3322); ++ case 7: return (entry == 0x2211); ++ default: ++ return 0; ++ } ++} ++ ++void do_auto_uint128 ( vector unsigned __int128 a ) ++{ ++ int i; ++ unsigned __int128 c; ++ for (i = 0; i < 32; i += 3) ++ { ++ c = get_auto_n_uint128 (a,i); ++ if (!check_uint128_element (i, c)) abort (); ++ } ++ } ++ ++void do_auto_ulong ( vector unsigned long long int a ) ++{ ++ int i; ++ unsigned long long int c; ++ for (i = 0; i < 32; i += 3) ++ { ++ c = get_auto_n_ulong (a,i); ++ if (!check_ulong_element (i, c)) abort (); ++ } ++ } ++ ++void do_auto_uint ( vector unsigned int a ) ++{ ++ int i; ++ unsigned int c; ++ for (i = 0; i < 32; i += 3) ++ { ++ c = get_auto_n_uint (a,i); ++ if (!check_uint_element (i, c)) abort (); ++ } ++ } ++ ++void do_auto_ushort ( vector unsigned short a ) ++{ ++ int i; ++ unsigned short c; ++ for (i = 0; i < 32; i += 3) ++ { ++ c = get_auto_n_ushort (a,i); ++ if (!check_ushort_element (i, c)) abort (); ++ } ++} ++ ++void do_auto_uchar ( vector unsigned char a ) ++{ ++ int i; ++ unsigned char c; ++ for (i = 0; i < 32; i += 3) ++ { ++ c = get_auto_n_uchar (a,i); ++ if (!check_uchar_element (i, c)) abort (); ++ } ++} ++ ++int ++main (void) ++{ ++ size_t i; ++ ++ vector unsigned __int128 u = { ++ ((((unsigned __int128) 0xffeeddccbbaa9988ULL) << 64) ++ | 0x0706050403020100ULL) }; ++ vector unsigned __int128 du; ++ ++ vector unsigned long long int v = { 0x9999901010ULL, 0x7777733333ULL }; ++ vector unsigned long long int dv; ++ ++ vector unsigned int x = { 0x99999, 0x01010, 0x77777, 0x33333 }; ++ vector unsigned int dx; ++ ++ vector unsigned char y = { 0x90, 0x80, 0x70, 0x60, 0x50, 0x40, 0x30, 0x20, ++ 0x10, 0xf0, 0xe0, 0xd0, 0xc0, 0xb0, 0xa0, 0xff }; ++ vector unsigned char dy; ++ ++ vector unsigned short z = { 0x9988, 0x8877, 0x7766, 0x6655, ++ 0x5544, 0x4433, 0x3322, 0x2211 }; ++ vector unsigned short dz; ++ ++ do_auto_uint128 (u); ++ do_auto_ulong (v); ++ do_auto_uint (x); ++ do_auto_uchar (y); ++ do_auto_ushort (z); ++ ++ du = deoptimize_uint128 (u); ++ dv = deoptimize_ulong (v); ++ dx = deoptimize_uint (x); ++ dy = deoptimize_uchar (y); ++ dz = deoptimize_ushort (z); ++ ++ do_auto_uint128 (du); ++ do_auto_ulong (dv); ++ do_auto_uint (dx); ++ do_auto_uchar (dy); ++ do_auto_ushort (dz); ++ return 0; ++} +Index: gcc/testsuite/gcc.target/powerpc/ppc-fortran/ppc-fortran.exp +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/ppc-fortran/ppc-fortran.exp (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/ppc-fortran/ppc-fortran.exp (.../branches/gcc-8-branch) +@@ -36,7 +36,7 @@ + global gfortran_test_path + global gfortran_aux_module_flags + if { [llength $args] != 2 } { +- error "dg-set-target-env-var: needs one argument" ++ error "dg-compile-aux-modules: needs one argument" + return + } + +Index: gcc/testsuite/gcc.target/powerpc/vsx-builtin-17d.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/vsx-builtin-17d.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/vsx-builtin-17d.c (.../branches/gcc-8-branch) +@@ -0,0 +1,154 @@ ++/* { dg-do run } */ ++/* { dg-require-effective-target vmx_hw } */ ++/* { dg-options "-maltivec" } */ ++ ++/* This test should run the same on any target that supports altivec/vmx ++ instructions. Intentionally not specifying cpu in order to test ++ all code generation paths. */ ++ ++#include <altivec.h> ++ ++extern void abort (void); ++ ++#define CONST0 (0) ++#define CONST1 (1) ++#define CONST2 (2) ++#define CONST3 (3) ++#define CONST4 (4) ++#define CONST5 (5) ++#define CONST6 (6) ++#define CONST7 (7) ++ ++ ++/* Test that indices > length of vector are applied modulo the vector ++ length. */ ++ ++/* Test for vector residing in register. */ ++vector unsigned short s3 (vector unsigned short v, unsigned short x) ++{ ++ return vec_insert (x, v, 3); ++} ++ ++vector unsigned short s7 (vector unsigned short v, unsigned short x) ++{ ++ return vec_insert (x, v, 7); ++} ++ ++vector unsigned short s21 (vector unsigned short v, unsigned short x) ++{ ++ return vec_insert (x, v, 21); ++} ++ ++vector unsigned short s30 (vector unsigned short v, unsigned short x) ++{ ++ return vec_insert (x, v, 30); ++} ++ ++/* Test for vector residing in memory. */ ++vector unsigned short ms3 (vector unsigned short *vp, unsigned short x) ++{ ++ return vec_insert (x, *vp, 3); ++} ++ ++vector unsigned short ms7 (vector unsigned short *vp, unsigned short x) ++{ ++ return vec_insert (x, *vp, 7); ++} ++ ++vector unsigned short ms21 (vector unsigned short *vp, unsigned short x) ++{ ++ return vec_insert (x, *vp, 21); ++} ++ ++vector unsigned short ms30 (vector unsigned short *vp, unsigned short x) ++{ ++ return vec_insert (x, *vp, 30); ++} ++ ++/* Test the same with variable indices. */ ++ ++/* Test for variable selector and vector residing in register. */ ++__attribute__((noinline)) ++vector unsigned short ci (vector unsigned short v, int i, unsigned short x) ++{ ++ return vec_insert (x, v, i); ++} ++ ++/* Test for variable selector and vector residing in memory. */ ++__attribute__((noinline)) ++vector unsigned short mci (vector unsigned short *vp, int i, unsigned short x) ++{ ++ return vec_insert (x, *vp, i); ++} ++ ++ ++int main (int argc, unsigned short *argv[]) { ++ vector unsigned short sv = { ++ CONST0, CONST1, CONST2, CONST3, CONST4, CONST5, CONST6, CONST7 }; ++ ++ sv = s3 (sv, CONST1); ++ if (sv [3] != CONST1) ++ abort (); ++ ++ sv = s7 (sv, CONST2); ++ if (sv [7] != CONST2) ++ abort (); ++ ++ sv = s21 (sv, CONST3); ++ if (sv [5] != CONST3) ++ abort (); ++ ++ sv = s30 (sv, CONST4); ++ if (sv [6] != CONST4) ++ abort (); ++ ++ sv = ms3 (&sv, CONST5); ++ if (sv [3] != CONST5) ++ abort (); ++ ++ sv = ms7 (&sv, CONST6); ++ if (sv [7] != CONST6) ++ abort (); ++ ++ sv = ms21 (&sv, CONST7); ++ if (sv [5] != CONST7) ++ abort (); ++ ++ sv = ms30 (&sv, CONST0); ++ if (sv [6] != CONST0) ++ abort (); ++ ++ sv = ci (sv, 5, CONST1); ++ if (sv [5] != CONST1) ++ abort (); ++ ++ sv = ci (sv, 2, CONST3); ++ if (sv [2] != CONST3) ++ abort (); ++ ++ sv = ci (sv, 15, CONST2); ++ if (sv [7] != CONST2) ++ abort (); ++ ++ sv = ci (sv, 28, CONST5); ++ if (sv [4] != CONST5) ++ abort (); ++ ++ sv = mci (&sv, 5, CONST4); ++ if (sv [5] != CONST4) ++ abort (); ++ ++ sv = mci (&sv, 12, CONST6); ++ if (sv [4] != CONST6) ++ abort (); ++ ++ sv = mci (&sv, 25, CONST7); ++ if (sv [1] != CONST7) ++ abort (); ++ ++ sv = mci (&sv, 16, CONST4); ++ if (sv [0] != CONST4) ++ abort (); ++ ++ return 0; ++} +Index: gcc/testsuite/gcc.target/powerpc/pr89424-0.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/pr89424-0.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/pr89424-0.c (.../branches/gcc-8-branch) +@@ -0,0 +1,76 @@ ++/* { dg-do run { target { powerpc*-*-* && lp64 } } } */ ++/* { dg-require-effective-target vsx_hw } */ ++/* { dg-options "-mvsx" } */ ++ ++/* This test should run the same on any target that supports vsx ++ instructions. Intentionally not specifying cpu in order to test ++ all code generation paths. */ ++ ++#include <altivec.h> ++ ++extern void abort (void); ++ ++/* Define PR89626 after that pr is addressed. */ ++#ifdef PR89626 ++#define SIGNED ++#else ++#define SIGNED signed ++#endif ++ ++#define CONST0 (((__int128) 31415926539) << 60) ++ ++/* Test that indices > length of vector are applied modulo the vector ++ length. */ ++ ++ ++/* Test for variable selector and vector residing in register. */ ++__attribute__((noinline)) ++__int128 ei (vector SIGNED __int128 v, int i) ++{ ++ return __builtin_vec_ext_v1ti (v, i); ++} ++ ++/* Test for variable selector and vector residing in memory. */ ++__int128 mei (vector SIGNED __int128 *vp, int i) ++{ ++ return __builtin_vec_ext_v1ti (*vp, i); ++} ++ ++int main (int argc, char *argv[]) { ++ vector SIGNED __int128 dv = { CONST0 }; ++ __int128 d; ++ ++ d = ei (dv, 0); ++ if (d != CONST0) ++ abort (); ++ ++ d = ei (dv, 1); ++ if (d != CONST0) ++ abort (); ++ ++ d = ei (dv, 2); ++ if (d != CONST0) ++ abort (); ++ ++ d = ei (dv, 3); ++ if (d != CONST0) ++ abort (); ++ ++ d = mei (&dv, 0); ++ if (d != CONST0) ++ abort (); ++ ++ d = mei (&dv, 1); ++ if (d != CONST0) ++ abort (); ++ ++ d = mei (&dv, 2); ++ if (d != CONST0) ++ abort (); ++ ++ d = mei (&dv, 3); ++ if (d != CONST0) ++ abort (); ++ ++ return 0; ++} +Index: gcc/testsuite/gcc.target/powerpc/vsx-builtin-18c.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/vsx-builtin-18c.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/vsx-builtin-18c.c (.../branches/gcc-8-branch) +@@ -0,0 +1,148 @@ ++/* { dg-do run } */ ++/* { dg-require-effective-target vmx_hw } */ ++/* { dg-options "-maltivec" } */ ++ ++/* This test should run the same on any target that supports altivec/vmx ++ instructions. Unsigned Intentionally not specifying cpu in order to test ++ all code generation paths. */ ++ ++#include <altivec.h> ++ ++extern void abort (void); ++ ++#define CONST0 (0) ++#define CONST1 (1) ++#define CONST2 (2) ++#define CONST3 (3) ++ ++/* Test that indices > length of vector are applied modulo the vector ++ length. */ ++ ++/* Test for vector residing in register. */ ++vector unsigned int s3 (vector unsigned int v, unsigned int x) ++{ ++ return vec_insert (x, v, 3); ++} ++ ++vector unsigned int s1 (vector unsigned int v, unsigned int x) ++{ ++ return vec_insert (x, v, 1); ++} ++ ++vector unsigned int s21 (vector unsigned int v, unsigned int x) ++{ ++ return vec_insert (x, v, 21); ++} ++ ++vector unsigned int s30 (vector unsigned int v, unsigned int x) ++{ ++ return vec_insert (x, v, 30); ++} ++ ++/* Test for vector residing in memory. */ ++vector unsigned int ms3 (vector unsigned int *vp, unsigned int x) ++{ ++ return vec_insert (x, *vp, 3); ++} ++ ++vector unsigned int ms1(vector unsigned int *vp, unsigned int x) ++{ ++ return vec_insert (x, *vp, 1); ++} ++ ++vector unsigned int ms21(vector unsigned int *vp, unsigned int x) ++{ ++ return vec_insert (x, *vp, 21); ++} ++ ++vector unsigned int ms30(vector unsigned int *vp, unsigned int x) ++{ ++ return vec_insert (x, *vp, 30); ++} ++ ++/* Test the same with variable indices. */ ++ ++/* Test for variable selector and vector residing in register. */ ++__attribute__((noinline)) ++vector unsigned int ci (vector unsigned int v, int i, unsigned int x) ++{ ++ return vec_insert (x, v, i); ++} ++ ++/* Test for variable selector and vector residing in memory. */ ++__attribute__((noinline)) ++vector unsigned int mci(vector unsigned int *vp, int i, unsigned int x) ++{ ++ return vec_insert (x, *vp, i); ++} ++ ++ ++int main (int argc, unsigned char *argv[]) { ++ vector unsigned int sv = { CONST0, CONST1, CONST2, CONST3 }; ++ ++ sv = s3 (sv, CONST2); ++ if (sv [3] != CONST2) ++ abort (); ++ ++ sv = s1 (sv, CONST2); ++ if (sv [1] != CONST2) ++ abort (); ++ ++ sv = s21 (sv, CONST3); ++ if (sv [1] != CONST3) ++ abort (); ++ ++ sv = s30 (sv, CONST1); ++ if (sv [2] != CONST1) ++ abort (); ++ ++ sv = ms3 (&sv, CONST0); ++ if (sv [3] != CONST0) ++ abort (); ++ ++ sv = ms1 (&sv, CONST0); ++ if (sv [1] != CONST0) ++ abort (); ++ ++ sv = ms21 (&sv, CONST1); ++ if (sv [1] != CONST1) ++ abort (); ++ ++ sv = ms30 (&sv, CONST0); ++ if (sv [2] != CONST0) ++ abort (); ++ ++ sv = ci (sv, 5, CONST3); ++ if (sv [1] != CONST3) ++ abort (); ++ ++ sv = ci (sv, 2, CONST0); ++ if (sv [2] != CONST0) ++ abort (); ++ ++ sv = ci (sv, 15, CONST1); ++ if (sv [3] != CONST1) ++ abort (); ++ ++ sv = ci (sv, 28, CONST3); ++ if (sv [0] != CONST3) ++ abort (); ++ ++ sv = mci (&sv, 5, CONST0); ++ if (sv [1] != CONST0) ++ abort (); ++ ++ sv = mci (&sv, 12, CONST2); ++ if (sv [0] != CONST2) ++ abort (); ++ ++ sv = mci (&sv, 25, CONST3); ++ if (sv [1] != CONST3) ++ abort (); ++ ++ sv = mci (&sv, 16, CONST1); ++ if (sv [0] != CONST1) ++ abort (); ++ ++ return 0; ++} +Index: gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-1.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-1.c (.../branches/gcc-8-branch) +@@ -1,4 +1,5 @@ + /* { dg-do compile } */ ++/* { dg-skip-if "not implemented for Darwin" { powerpc*-*-darwin* } } */ + /* { dg-additional-options "-mno-speculate-indirect-jumps" } */ + /* { dg-warning "'-mno-speculate-indirect-jumps' is deprecated" "" { target *-*-* } 0 } */ + +Index: gcc/testsuite/gcc.target/powerpc/vsx-builtin-19b.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/vsx-builtin-19b.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/vsx-builtin-19b.c (.../branches/gcc-8-branch) +@@ -0,0 +1,109 @@ ++/* { dg-do run { target int128 } } */ ++/* { dg-require-effective-target vsx_hw } */ ++/* { dg-options "-mvsx -O3" } */ ++ ++/* This test should run the same on any target that supports vsx ++ instructions. Intentionally not specifying cpu in order to test ++ all code generation paths. */ ++ ++#include <altivec.h> ++ ++extern void abort (void); ++ ++#define CONST0 (31415926539LL) ++#define CONST1 (2 * 31415926539LL) ++ ++/* Test that indices > length of vector are applied modulo the vector ++ length. */ ++ ++/* Test for vector residing in register. */ ++unsigned long long int e0 (vector unsigned long long int v) ++{ ++ return __builtin_vec_extract (v, 0); ++} ++ ++unsigned long long int e3 (vector unsigned long long int v) ++{ ++ return __builtin_vec_extract (v, 3); ++} ++ ++/* Test for vector residing in memory. */ ++unsigned long long int me0 (vector unsigned long long int *vp) ++{ ++ return __builtin_vec_extract (*vp, 0); ++} ++ ++unsigned long long int me3 (vector unsigned long long int *vp) ++{ ++ return __builtin_vec_extract (*vp, 3); ++} ++ ++/* Test the same with variable indices. */ ++ ++/* Test for variable selector and vector residing in register. */ ++__attribute__((noinline)) ++unsigned long long int ei (vector unsigned long long int v, int i) ++{ ++ return __builtin_vec_extract (v, i); ++} ++ ++/* Test for variable selector and vector residing in memory. */ ++unsigned long long int mei (vector unsigned long long int *vp, int i) ++{ ++ return __builtin_vec_extract (*vp, i); ++} ++ ++int main (int argc, char *argv[]) { ++ vector unsigned long long int dv = { CONST0, CONST1 }; ++ unsigned long long int d; ++ ++ d = e0 (dv); ++ if (d != CONST0) ++ abort (); ++ ++ d = e3 (dv); ++ if (d != CONST1) ++ abort (); ++ ++ d = me0 (&dv); ++ if (d != CONST0) ++ abort (); ++ ++ d = me3 (&dv); ++ if (d != CONST1) ++ abort (); ++ ++ d = ei (dv, 0); ++ if (d != CONST0) ++ abort (); ++ ++ d = ei (dv, 1); ++ if (d != CONST1) ++ abort (); ++ ++ d = ei (dv, 2); ++ if (d != CONST0) ++ abort (); ++ ++ d = ei (dv, 3); ++ if (d != CONST1) ++ abort (); ++ ++ d = mei (&dv, 0); ++ if (d != CONST0) ++ abort (); ++ ++ d = mei (&dv, 1); ++ if (d != CONST1) ++ abort (); ++ ++ d = mei (&dv, 2); ++ if (d != CONST0) ++ abort (); ++ ++ d = mei (&dv, 3); ++ if (d != CONST1) ++ abort (); ++ ++ return 0; ++} +Index: gcc/testsuite/gcc.target/powerpc/pr91275.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/pr91275.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/pr91275.c (.../branches/gcc-8-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 <altivec.h> ++ ++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/vsx-builtin-19d.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/vsx-builtin-19d.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/vsx-builtin-19d.c (.../branches/gcc-8-branch) +@@ -0,0 +1,122 @@ ++/* { dg-do run { target int128 } } */ ++/* { dg-require-effective-target vsx_hw } */ ++/* { dg-options "-mvsx -O3" } */ ++ ++/* This test should run the same on any target that supports vsx ++ instructions. Intentionally not specifying cpu in order to test ++ all code generation paths. */ ++ ++#include <altivec.h> ++ ++extern void abort (void); ++ ++#define CONST0 (31415926539LL) ++#define CONST1 (2 * 31415926539LL) ++#define CONST2 (3 * 31415926539LL) ++#define CONST3 (4 * 31415926539LL) ++#define CONST4 (5 * 31415926539LL) ++#define CONST5 (6 * 31415926539LL) ++#define CONST6 (7 * 31415926539LL) ++#define CONST7 (8 * 31415926539LL) ++ ++/* Test that indices > length of vector are applied modulo the vector ++ length. */ ++ ++/* Test for vector residing in register. */ ++vector unsigned long long int ++e0 (vector unsigned long long int v, unsigned long long int x) ++{ ++ return vec_insert (x, v, 0); ++} ++ ++vector unsigned long long int ++e3 (vector unsigned long long int v, unsigned long long int x) ++{ ++ return vec_insert (x, v, 3); ++} ++ ++/* Test for vector residing in memory. */ ++vector unsigned long long int ++me0 (vector unsigned long long int *vp, unsigned long long int x) ++{ ++ return vec_insert (x, *vp, 0); ++} ++ ++vector unsigned long long int ++me3 (vector unsigned long long int *vp, unsigned long long int x) ++{ ++ return vec_insert (x, *vp, 3); ++} ++ ++/* Test the same with variable indices. */ ++ ++/* Test for variable selector and vector residing in register. */ ++__attribute__((noinline)) ++vector unsigned long long int ++ei (vector unsigned long long int v, int i, unsigned long long int x) ++{ ++ return vec_insert (x, v, i); ++} ++ ++/* Test for variable selector and vector residing in memory. */ ++__attribute__((noinline)) ++vector unsigned long long int ++mei (vector unsigned long long int *vp, int i, unsigned long long int x) ++{ ++ return vec_insert (x, *vp, i); ++} ++ ++int main (int argc, char *argv[]) { ++ vector unsigned long long int dv = { CONST0, CONST1 }; ++ unsigned long long int d; ++ ++ dv = e0 (dv, CONST7); ++ if (dv [0] != CONST7) ++ abort (); ++ ++ dv = e3 (dv, CONST2); ++ if (dv [1] != CONST2) ++ abort (); ++ ++ dv = me0 (&dv, CONST4); ++ if (dv [0] != CONST4) ++ abort (); ++ ++ dv = me3 (&dv, CONST3); ++ if (dv [1] != CONST3) ++ abort (); ++ ++ dv = ei (dv, 0, CONST5); ++ if (dv [0] != CONST5) ++ abort (); ++ ++ dv = ei (dv, 1, CONST2); ++ if (dv [1] != CONST2) ++ abort (); ++ ++ dv = ei (dv, 2, CONST3); ++ if (dv [0] != CONST3) ++ abort (); ++ ++ dv = ei (dv, 3, CONST6); ++ if (dv [1] != CONST6) ++ abort (); ++ ++ dv = mei (&dv, 0, CONST1); ++ if (dv [0] != CONST1) ++ abort (); ++ ++ dv = mei (&dv, 1, CONST3); ++ if (dv [1] != CONST3) ++ abort (); ++ ++ dv = mei (&dv, 2, CONST1); ++ if (dv [0] != CONST1) ++ abort (); ++ ++ dv = mei (&dv, 3, CONST2); ++ if (dv [1] != CONST2) ++ abort (); ++ ++ return 0; ++} +Index: gcc/testsuite/gcc.target/powerpc/vsx-builtin-10b.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/vsx-builtin-10b.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/vsx-builtin-10b.c (.../branches/gcc-8-branch) +@@ -0,0 +1,155 @@ ++/* { dg-do run } */ ++/* { dg-require-effective-target vmx_hw } */ ++/* { dg-options "-maltivec -O3" } */ ++ ++/* This test should run the same on any target that supports altivec/dfp ++ instructions. Intentionally not specifying cpu in order to test ++ all code generation paths. */ ++ ++#include <altivec.h> ++ ++extern void abort (void); ++ ++#define CONST0 (0) ++#define CONST1 (1) ++#define CONST2 (2) ++#define CONST3 (3) ++#define CONST4 (4) ++#define CONST5 (5) ++#define CONST6 (6) ++#define CONST7 (7) ++ ++ ++/* Test that indices > length of vector are applied modulo the vector ++ length. */ ++ ++/* Test for vector residing in register. */ ++short s3 (vector short v) ++{ ++ return __builtin_vec_ext_v8hi (v, 3); ++} ++ ++short s7 (vector short v) ++{ ++ return __builtin_vec_ext_v8hi (v, 7); ++} ++ ++short s21 (vector short v) ++{ ++ return __builtin_vec_ext_v8hi (v, 21); ++} ++ ++short s30 (vector short v) ++{ ++ return __builtin_vec_ext_v8hi (v, 30); ++} ++ ++/* Test for vector residing in memory. */ ++short ms3 (vector short *vp) ++{ ++ return __builtin_vec_ext_v8hi (*vp, 3); ++} ++ ++short ms7 (vector short *vp) ++{ ++ return __builtin_vec_ext_v8hi (*vp, 7); ++} ++ ++short ms21 (vector short *vp) ++{ ++ return __builtin_vec_ext_v8hi (*vp, 21); ++} ++ ++short ms30 (vector short *vp) ++{ ++ return __builtin_vec_ext_v8hi (*vp, 30); ++} ++ ++/* Test the same with variable indices. */ ++ ++/* Test for variable selector and vector residing in register. */ ++__attribute__((noinline)) ++short ci (vector short v, int i) ++{ ++ return __builtin_vec_ext_v8hi (v, i); ++} ++ ++/* Test for variable selector and vector residing in memory. */ ++__attribute__((noinline)) ++short mci (vector short *vp, int i) ++{ ++ return __builtin_vec_ext_v8hi (*vp, i); ++} ++ ++ ++int main (int argc, short *argv[]) { ++ vector short sv = { ++ CONST0, CONST1, CONST2, CONST3, CONST4, CONST5, CONST6, CONST7 }; ++ short s; ++ ++ s = s3 (sv); ++ if (s != CONST3) ++ abort (); ++ ++ s = s7 (sv); ++ if (s != CONST7) ++ abort (); ++ ++ s = s21 (sv); ++ if (s != CONST5) ++ abort (); ++ ++ s = s30 (sv); ++ if (s != CONST6) ++ abort (); ++ ++ s = ms3 (&sv); ++ if (s != CONST3) ++ abort (); ++ ++ s = ms7 (&sv); ++ if (s != CONST7) ++ abort (); ++ ++ s = ms21 (&sv); ++ if (s != CONST5) ++ abort (); ++ ++ s = ms30 (&sv); ++ if (s != CONST6) ++ abort (); ++ ++ s = ci (sv, 5); ++ if (s != CONST5) ++ abort (); ++ ++ s = ci (sv, 2); ++ if (s != CONST2) ++ abort (); ++ ++ s = ci (sv, 15); ++ if (s != CONST7) ++ abort (); ++ ++ s = ci (sv, 28); ++ if (s != CONST4) ++ abort (); ++ ++ s = mci (&sv, 5); ++ if (s != CONST5) ++ abort (); ++ ++ s = mci (&sv, 12); ++ if (s != CONST4) ++ abort (); ++ ++ s = mci (&sv, 25); ++ if (s != CONST1) ++ abort (); ++ ++ s = mci (&sv, 16); ++ if (s != CONST0) ++ abort (); ++ ++ return 0; ++} +Index: gcc/testsuite/gcc.target/powerpc/vsx-builtin-11a.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/vsx-builtin-11a.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/vsx-builtin-11a.c (.../branches/gcc-8-branch) +@@ -0,0 +1,149 @@ ++/* { dg-do run } */ ++/* { dg-require-effective-target vmx_hw } */ ++/* { dg-options "-maltivec" } */ ++ ++/* This test should run the same on any target that supports altivec/dfp ++ instructions. Intentionally not specifying cpu in order to test ++ all code generation paths. */ ++ ++#include <altivec.h> ++ ++extern void abort (void); ++ ++#define CONST0 (0) ++#define CONST1 (1) ++#define CONST2 (2) ++#define CONST3 (3) ++ ++/* Test that indices > length of vector are applied modulo the vector ++ length. */ ++ ++/* Test for vector residing in register. */ ++int s3 (vector int v) ++{ ++ return __builtin_vec_ext_v4si (v, 3); ++} ++ ++int s1 (vector int v) ++{ ++ return __builtin_vec_ext_v4si (v, 1); ++} ++ ++int s21 (vector int v) ++{ ++ return __builtin_vec_ext_v4si (v, 21); ++} ++ ++int s30 (vector int v) ++{ ++ return __builtin_vec_ext_v4si (v, 30); ++} ++ ++/* Test for vector residing in memory. */ ++int ms3 (vector int *vp) ++{ ++ return __builtin_vec_ext_v4si (*vp, 3); ++} ++ ++int ms1(vector int *vp) ++{ ++ return __builtin_vec_ext_v4si (*vp, 1); ++} ++ ++int ms21(vector int *vp) ++{ ++ return __builtin_vec_ext_v4si (*vp, 21); ++} ++ ++int ms30(vector int *vp) ++{ ++ return __builtin_vec_ext_v4si (*vp, 30); ++} ++ ++/* Test the same with variable indices. */ ++ ++/* Test for variable selector and vector residing in register. */ ++__attribute__((noinline)) ++int ci (vector int v, int i) ++{ ++ return __builtin_vec_ext_v4si (v, i); ++} ++ ++/* Test for variable selector and vector residing in memory. */ ++__attribute__((noinline)) ++int mci(vector int *vp, int i) ++{ ++ return __builtin_vec_ext_v4si (*vp, i); ++} ++ ++ ++int main (int argc, int *argv[]) { ++ vector int sv = { CONST0, CONST1, CONST2, CONST3 }; ++ int s; ++ ++ s = s3 (sv); ++ if (s != CONST3) ++ abort (); ++ ++ s = s1 (sv); ++ if (s != CONST1) ++ abort (); ++ ++ s = s21 (sv); ++ if (s != CONST1) ++ abort (); ++ ++ s = s30 (sv); ++ if (s != CONST2) ++ abort (); ++ ++ s = ms3 (&sv); ++ if (s != CONST3) ++ abort (); ++ ++ s = ms1 (&sv); ++ if (s != CONST1) ++ abort (); ++ ++ s = ms21 (&sv); ++ if (s != CONST1) ++ abort (); ++ ++ s = ms30 (&sv); ++ if (s != CONST2) ++ abort (); ++ ++ s = ci (sv, 5); ++ if (s != CONST1) ++ abort (); ++ ++ s = ci (sv, 2); ++ if (s != CONST2) ++ abort (); ++ ++ s = ci (sv, 15); ++ if (s != CONST3) ++ abort (); ++ ++ s = ci (sv, 28); ++ if (s != CONST0) ++ abort (); ++ ++ s = mci (&sv, 5); ++ if (s != CONST1) ++ abort (); ++ ++ s = mci (&sv, 12); ++ if (s != CONST0) ++ abort (); ++ ++ s = mci (&sv, 25); ++ if (s != CONST1) ++ abort (); ++ ++ s = mci (&sv, 16); ++ if (s != CONST0) ++ abort (); ++ ++ return 0; ++} +Index: gcc/testsuite/gcc.target/powerpc/vsx-builtin-9a.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/vsx-builtin-9a.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/vsx-builtin-9a.c (.../branches/gcc-8-branch) +@@ -0,0 +1,164 @@ ++/* { dg-do run } */ ++/* { dg-require-effective-target vmx_hw } */ ++/* { dg-options "-maltivec" } */ ++ ++/* This test should run the same on any target that supports altivec/dfp ++ instructions. Intentionally not specifying cpu in order to test ++ all code generation paths. */ ++ ++#include <altivec.h> ++ ++extern void abort (void); ++ ++#define CONST0 (0) ++#define CONST1 (1) ++#define CONST2 (2) ++#define CONST3 (3) ++#define CONST4 (4) ++#define CONST5 (5) ++#define CONST6 (6) ++#define CONST7 (7) ++#define CONST8 (8) ++#define CONST9 (9) ++#define CONSTA (10) ++#define CONSTB (11) ++#define CONSTC (12) ++#define CONSTD (13) ++#define CONSTE (14) ++#define CONSTF (15) ++ ++ ++/* Test that indices > length of vector are applied modulo the vector ++ length. */ ++ ++/* Test for vector residing in register. */ ++signed char c0 (vector signed char v) ++{ ++ return __builtin_vec_ext_v16qi (v, 0); ++} ++ ++signed char c9 (vector signed char v) ++{ ++ return __builtin_vec_ext_v16qi (v, 9); ++} ++ ++signed char c21 (vector signed char v) ++{ ++ return __builtin_vec_ext_v16qi (v, 21); ++} ++ ++signed char c30 (vector signed char v) ++{ ++ return __builtin_vec_ext_v16qi (v, 30); ++} ++ ++/* Test for vector residing in memory. */ ++signed char mc0 (vector signed char *vp) ++{ ++ return __builtin_vec_ext_v16qi (*vp, 0); ++} ++ ++signed char mc9 (vector signed char *vp) ++{ ++ return __builtin_vec_ext_v16qi (*vp, 9); ++} ++ ++signed char mc21 (vector signed char *vp) ++{ ++ return __builtin_vec_ext_v16qi (*vp, 21); ++} ++ ++signed char mc30 (vector signed char *vp) ++{ ++ return __builtin_vec_ext_v16qi (*vp, 30); ++} ++ ++/* Test the same with variable indices. */ ++ ++/* Test for variable selector and vector residing in register. */ ++__attribute__((noinline)) ++signed char ci (vector signed char v, int i) ++{ ++ return __builtin_vec_ext_v16qi (v, i); ++} ++ ++/* Test for variable selector and vector residing in memory. */ ++__attribute__((noinline)) ++signed char mci(vector signed char *vp, int i) { ++ return __builtin_vec_ext_v16qi (*vp, i); ++} ++ ++ ++int main (int argc, char *argv[]) { ++ vector signed char cv = { CONST0, CONST1, CONST2, CONST3, ++ CONST4, CONST5, CONST6, CONST7, ++ CONST8, CONST9, CONSTA, CONSTB, ++ CONSTC, CONSTD, CONSTE, CONSTF }; ++ signed char c; ++ ++ c = c0 (cv); ++ if (c != CONST0) ++ abort (); ++ ++ c = c9 (cv); ++ if (c != CONST9) ++ abort (); ++ ++ c = c21 (cv); ++ if (c != CONST5) ++ abort (); ++ ++ c = c30 (cv); ++ if (c != CONSTE) ++ abort (); ++ ++ c = mc0 (&cv); ++ if (c != CONST0) ++ abort (); ++ ++ c = mc9 (&cv); ++ if (c != CONST9) ++ abort (); ++ ++ c = mc21 (&cv); ++ if (c != CONST5) ++ abort (); ++ ++ c = mc30 (&cv); ++ if (c != CONSTE) ++ abort (); ++ ++ c = ci (cv, 8); ++ if (c != CONST8) ++ abort (); ++ ++ c = ci (cv, 13); ++ if (c != CONSTD) ++ abort (); ++ ++ c = ci (cv, 23); ++ if (c != CONST7) ++ abort (); ++ ++ c = ci (cv, 31); ++ if (c != CONSTF) ++ abort (); ++ ++ c = mci (&cv, 5); ++ if (c != CONST5) ++ abort (); ++ ++ c = mci (&cv, 12); ++ if (c != CONSTC) ++ abort (); ++ ++ c = mci (&cv, 25); ++ if (c != CONST9) ++ abort (); ++ ++ c = mci (&cv, 16); ++ if (c != CONST0) ++ abort (); ++ ++ return 0; ++} +Index: gcc/testsuite/gcc.target/powerpc/crypto-builtin-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/crypto-builtin-1.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/crypto-builtin-1.c (.../branches/gcc-8-branch) +@@ -4,6 +4,7 @@ + /* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power8" } } */ + /* { dg-options "-mcpu=power8 -O2 -ftree-vectorize -fvect-cost-model=dynamic -fno-unroll-loops -fno-unroll-all-loops" } */ + ++#include <altivec.h> + typedef vector unsigned long long crypto_t; + typedef vector unsigned long long v2di_t; + typedef vector unsigned int v4si_t; +@@ -10,31 +11,56 @@ + typedef vector unsigned short v8hi_t; + typedef vector unsigned char v16qi_t; + +-crypto_t crpyto1 (crypto_t a) ++crypto_t crypto1 (crypto_t a) + { + return __builtin_crypto_vsbox (a); + } + ++v16qi_t crypto1_be (v16qi_t a) ++{ ++ return vec_sbox_be (a); ++} ++ + crypto_t crypto2 (crypto_t a, crypto_t b) + { + return __builtin_crypto_vcipher (a, b); + } + ++v16qi_t crypto2_be (v16qi_t a, v16qi_t b) ++{ ++ return vec_cipher_be (a, b); ++} ++ + crypto_t crypto3 (crypto_t a, crypto_t b) + { + return __builtin_crypto_vcipherlast (a, b); + } + ++v16qi_t crypto3_be (v16qi_t a, v16qi_t b) ++{ ++ return vec_cipherlast_be (a, b); ++} ++ + crypto_t crypto4 (crypto_t a, crypto_t b) + { + return __builtin_crypto_vncipher (a, b); + } + ++v16qi_t crypto4_be (v16qi_t a, v16qi_t b) ++{ ++ return vec_ncipher_be (a, b); ++} ++ + crypto_t crypto5 (crypto_t a, crypto_t b) + { + return __builtin_crypto_vncipherlast (a, b); + } + ++v16qi_t crypto5_be (v16qi_t a, v16qi_t b) ++{ ++ return vec_ncipherlast_be (a, b); ++} ++ + v16qi_t crypto6a (v16qi_t a, v16qi_t b, v16qi_t c) + { + return __builtin_crypto_vpermxor (a, b, c); +@@ -117,15 +143,15 @@ + + /* Note space is used after the instruction so that vcipherlast does not match + vcipher. */ +-/* { dg-final { scan-assembler-times "vcipher " 1 } } */ +-/* { dg-final { scan-assembler-times "vcipherlast " 1 } } */ +-/* { dg-final { scan-assembler-times "vncipher " 1 } } */ +-/* { dg-final { scan-assembler-times "vncipherlast " 1 } } */ ++/* { dg-final { scan-assembler-times "vcipher " 2 } } */ ++/* { dg-final { scan-assembler-times "vcipherlast " 2 } } */ ++/* { dg-final { scan-assembler-times "vncipher " 2 } } */ ++/* { dg-final { scan-assembler-times "vncipherlast " 2 } } */ + /* { dg-final { scan-assembler-times "vpermxor " 4 } } */ + /* { dg-final { scan-assembler-times "vpmsumb " 2 } } */ + /* { dg-final { scan-assembler-times "vpmsumd " 2 } } */ + /* { dg-final { scan-assembler-times "vpmsumh " 2 } } */ + /* { dg-final { scan-assembler-times "vpmsumw " 2 } } */ +-/* { dg-final { scan-assembler-times "vsbox " 1 } } */ ++/* { dg-final { scan-assembler-times "vsbox " 2 } } */ + /* { dg-final { scan-assembler-times "vshasigmad " 2 } } */ + /* { dg-final { scan-assembler-times "vshasigmaw " 2 } } */ +Index: gcc/testsuite/gcc.target/powerpc/vsx-builtin-20b.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/vsx-builtin-20b.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/vsx-builtin-20b.c (.../branches/gcc-8-branch) +@@ -0,0 +1,115 @@ ++/* { dg-do run { target int128 } } */ ++/* { dg-require-effective-target vsx_hw } */ ++/* { dg-options "-mvsx -O3" } */ ++ ++/* This test should run the same on any target that supports vsx ++ instructions. Intentionally not specifying cpu in order to test ++ all code generation paths. */ ++ ++#include <altivec.h> ++ ++/* Define this after PR89424 is addressed. */ ++#define PR89424 ++ ++extern void abort (void); ++ ++#define CONST0 (((unsigned __int128) 31415926539) << 60) ++ ++/* Test that indices > length of vector are applied modulo the vector ++ length. */ ++ ++/* Test for vector residing in register. */ ++unsigned __int128 e0 (vector unsigned __int128 v) ++{ ++ return __builtin_vec_extract (v, 0); ++} ++ ++unsigned __int128 e3 (vector unsigned __int128 v) ++{ ++ return __builtin_vec_extract (v, 3); ++} ++ ++/* Test for vector residing in memory. */ ++unsigned __int128 me0 (vector unsigned __int128 *vp) ++{ ++ return __builtin_vec_extract (*vp, 0); ++} ++ ++unsigned __int128 me3 (vector unsigned __int128 *vp) ++{ ++ return __builtin_vec_extract (*vp, 3); ++} ++ ++/* Test the same with variable indices. */ ++ ++#ifdef PR89424 ++/* Test for variable selector and vector residing in register. */ ++__attribute__((noinline)) ++unsigned __int128 ei (vector unsigned __int128 v, int i) ++{ ++ return __builtin_vec_extract (v, i); ++} ++ ++/* Test for variable selector and vector residing in memory. */ ++unsigned __int128 mei (vector unsigned __int128 *vp, int i) ++{ ++ return __builtin_vec_extract (*vp, i); ++} ++#endif ++ ++int main (int argc, char *argv[]) { ++ vector unsigned __int128 dv = { CONST0 }; ++ unsigned __int128 d; ++ ++ d = e0 (dv); ++ if (d != CONST0) ++ abort (); ++ ++ d = e3 (dv); ++ if (d != CONST0) ++ abort (); ++ ++ d = me0 (&dv); ++ if (d != CONST0) ++ abort (); ++ ++ d = me3 (&dv); ++ if (d != CONST0) ++ abort (); ++ ++#ifdef PR89424 ++ d = ei (dv, 0); ++ if (d != CONST0) ++ abort (); ++ ++ d = ei (dv, 1); ++ if (d != CONST0) ++ abort (); ++ ++ d = ei (dv, 2); ++ if (d != CONST0) ++ abort (); ++ ++ d = ei (dv, 3); ++ if (d != CONST0) ++ abort (); ++ ++ d = mei (&dv, 0); ++ if (d != CONST0) ++ abort (); ++ ++ d = mei (&dv, 1); ++ if (d != CONST0) ++ abort (); ++ ++ d = mei (&dv, 2); ++ if (d != CONST0) ++ abort (); ++ ++ d = mei (&dv, 3); ++ if (d != CONST0) ++ abort (); ++#endif ++ ++ return 0; ++} +Index: gcc/testsuite/gcc.target/powerpc/vsx-builtin-10d.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/vsx-builtin-10d.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/vsx-builtin-10d.c (.../branches/gcc-8-branch) +@@ -0,0 +1,155 @@ ++/* { dg-do run } */ ++/* { dg-require-effective-target vmx_hw } */ ++/* { dg-options "-maltivec -O3" } */ ++ ++/* This test should run the same on any target that supports altivec/vmx ++ instructions. Intentionally not specifying cpu in order to test ++ all code generation paths. */ ++ ++#include <altivec.h> ++ ++extern void abort (void); ++ ++#define CONST0 (0) ++#define CONST1 (1) ++#define CONST2 (2) ++#define CONST3 (3) ++#define CONST4 (4) ++#define CONST5 (5) ++#define CONST6 (6) ++#define CONST7 (7) ++ ++ ++/* Test that indices > length of vector are applied modulo the vector ++ length. */ ++ ++/* Test for vector residing in register. */ ++vector short s3 (vector short v, short x) ++{ ++ return vec_insert (x, v, 3); ++} ++ ++vector short s7 (vector short v, short x) ++{ ++ return vec_insert (x, v, 7); ++} ++ ++vector short s21 (vector short v, short x) ++{ ++ return vec_insert (x, v, 21); ++} ++ ++vector short s30 (vector short v, short x) ++{ ++ return vec_insert (x, v, 30); ++} ++ ++/* Test for vector residing in memory. */ ++vector short ms3 (vector short *vp, short x) ++{ ++ return vec_insert (x, *vp, 3); ++} ++ ++vector short ms7 (vector short *vp, short x) ++{ ++ return vec_insert (x, *vp, 7); ++} ++ ++vector short ms21 (vector short *vp, short x) ++{ ++ return vec_insert (x, *vp, 21); ++} ++ ++vector short ms30 (vector short *vp, short x) ++{ ++ return vec_insert (x, *vp, 30); ++} ++ ++/* Test the same with variable indices. */ ++ ++/* Test for variable selector and vector residing in register. */ ++__attribute__((noinline)) ++vector short ci (vector short v, int i, short x) ++{ ++ return vec_insert (x, v, i); ++} ++ ++/* Test for variable selector and vector residing in memory. */ ++__attribute__((noinline)) ++vector short mci (vector short *vp, int i, short x) ++{ ++ return vec_insert (x, *vp, i); ++} ++ ++ ++int main (int argc, short *argv[]) { ++ vector short sv = { ++ CONST0, CONST1, CONST2, CONST3, CONST4, CONST5, CONST6, CONST7 }; ++ short s; ++ ++ sv = s3 (sv, CONST6); ++ if (sv [3] != CONST6) ++ abort (); ++ ++ sv = s7 (sv, CONST4); ++ if (sv [7] != CONST4) ++ abort (); ++ ++ sv = s21 (sv, CONST3); ++ if (sv [5] != CONST3) ++ abort (); ++ ++ sv = s30 (sv, CONST2); ++ if (sv [6] != CONST2) ++ abort (); ++ ++ sv = ms3 (&sv, CONST5); ++ if (sv [3] != CONST5) ++ abort (); ++ ++ sv = ms7 (&sv, CONST1); ++ if (sv [7] != CONST1) ++ abort (); ++ ++ sv = ms21 (&sv, CONST2); ++ if (sv [5] != CONST2) ++ abort (); ++ ++ sv = ms30 (&sv, CONST0); ++ if (sv [6] != CONST0) ++ abort (); ++ ++ sv = ci (sv, 5, CONST6); ++ if (sv [5] != CONST6) ++ abort (); ++ ++ sv = ci (sv, 2, CONST4); ++ if (sv [2] != CONST4) ++ abort (); ++ ++ sv = ci (sv, 15, CONST3); ++ if (sv [7] != CONST3) ++ abort (); ++ ++ sv = ci (sv, 28, CONST3); ++ if (sv [4] != CONST3) ++ abort (); ++ ++ sv = mci (&sv, 5, CONST3); ++ if (sv [5] != CONST3) ++ abort (); ++ ++ sv = mci (&sv, 12, CONST7); ++ if (sv [4] != CONST7) ++ abort (); ++ ++ sv = mci (&sv, 25, CONST6); ++ if (sv [1] != CONST6) ++ abort (); ++ ++ sv = mci (&sv, 16, CONST5); ++ if (sv [0] != CONST5) ++ abort (); ++ ++ return 0; ++} +Index: gcc/testsuite/gcc.target/powerpc/vsx-builtin-11c.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/vsx-builtin-11c.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/vsx-builtin-11c.c (.../branches/gcc-8-branch) +@@ -0,0 +1,149 @@ ++/* { dg-do run } */ ++/* { dg-require-effective-target vmx_hw } */ ++/* { dg-options "-maltivec" } */ ++ ++/* This test should run the same on any target that supports altivec/vmx ++ instructions. Intentionally not specifying cpu in order to test ++ all code generation paths. */ ++ ++#include <altivec.h> ++ ++extern void abort (void); ++ ++#define CONST0 (0) ++#define CONST1 (1) ++#define CONST2 (2) ++#define CONST3 (3) ++ ++/* Test that indices > length of vector are applied modulo the vector ++ length. */ ++ ++/* Test for vector residing in register. */ ++vector int s3 (vector int v, int x) ++{ ++ return vec_insert (x, v, 3); ++} ++ ++vector int s1 (vector int v, int x) ++{ ++ return vec_insert (x, v, 1); ++} ++ ++vector int s21 (vector int v, int x) ++{ ++ return vec_insert (x, v, 21); ++} ++ ++vector int s30 (vector int v, int x) ++{ ++ return vec_insert (x, v, 30); ++} ++ ++/* Test for vector residing in memory. */ ++vector int ms3 (vector int *vp, int x) ++{ ++ return vec_insert (x, *vp, 3); ++} ++ ++vector int ms1 (vector int *vp, int x) ++{ ++ return vec_insert (x, *vp, 1); ++} ++ ++vector int ms21 (vector int *vp, int x) ++{ ++ return vec_insert (x, *vp, 21); ++} ++ ++vector int ms30 (vector int *vp, int x) ++{ ++ return vec_insert (x, *vp, 30); ++} ++ ++/* Test the same with variable indices. */ ++ ++/* Test for variable selector and vector residing in register. */ ++__attribute__((noinline)) ++vector int ci (vector int v, int i, int x) ++{ ++ return vec_insert (x, v, i); ++} ++ ++/* Test for variable selector and vector residing in memory. */ ++__attribute__((noinline)) ++vector int mci(vector int *vp, int i, int x) ++{ ++ return vec_insert (x, *vp, i); ++} ++ ++ ++int main (int argc, int *argv[]) { ++ vector int sv = { CONST0, CONST1, CONST2, CONST3 }; ++ int s; ++ ++ sv = s3 (sv, CONST1); ++ if (sv [3] != CONST1) ++ abort (); ++ ++ sv = s1 (sv, CONST3); ++ if (sv [1] != CONST3) ++ abort (); ++ ++ sv = s21 (sv, CONST0); ++ if (sv [1] != CONST0) ++ abort (); ++ ++ sv = s30 (sv, CONST1); ++ if (sv [2] != CONST1) ++ abort (); ++ ++ sv = ms3 (&sv, CONST2); ++ if (sv [3] != CONST2) ++ abort (); ++ ++ sv = ms1 (&sv, CONST0); ++ if (sv [1] != CONST0) ++ abort (); ++ ++ sv = ms21 (&sv, CONST3); ++ if (sv [1] != CONST3) ++ abort (); ++ ++ sv = ms30 (&sv, CONST0); ++ if (sv [2] != CONST0) ++ abort (); ++ ++ sv = ci (sv, 5, CONST0); ++ if (sv [1] != CONST0) ++ abort (); ++ ++ sv = ci (sv, 2, CONST3); ++ if (sv [2] != CONST3) ++ abort (); ++ ++ sv = ci (sv, 15, CONST1); ++ if (sv [3] != CONST1) ++ abort (); ++ ++ sv = ci (sv, 28, CONST3); ++ if (sv [0] != CONST3) ++ abort (); ++ ++ sv = mci (&sv, 5, CONST2); ++ if (sv [1] != CONST2) ++ abort (); ++ ++ sv = mci (&sv, 12, CONST1); ++ if (sv [0] != CONST1) ++ abort (); ++ ++ sv = mci (&sv, 25, CONST2); ++ if (sv [1] != CONST2) ++ abort (); ++ ++ sv = mci (&sv, 16, CONST3); ++ if (sv [0] != CONST3) ++ abort (); ++ ++ return 0; ++} +Index: gcc/testsuite/gcc.target/powerpc/mmx-psubd-2.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/mmx-psubd-2.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/mmx-psubd-2.c (.../branches/gcc-8-branch) +@@ -23,20 +23,28 @@ + return _mm_sub_pi32 (s1, s2); + } + ++static __m64 ++__attribute__((noinline, unused)) ++test_alias (__m64 s1, __m64 s2) ++{ ++ return _m_psubd (s1, s2); ++} ++ + static void + TEST (void) + { + __m64_union u, s1, s2; +- __m64_union e; ++ __m64_union e, v; + int i; + + s1.as_m64 = _mm_setr_pi32 (30, 90); + s2.as_m64 = _mm_setr_pi32 (76, -100); + u.as_m64 = test (s1.as_m64, s2.as_m64); +- ++ v.as_m64 = test_alias (s1.as_m64, s2.as_m64); ++ + for (i = 0; i < 2; i++) + e.as_int[i] = s1.as_int[i] - s2.as_int[i]; + +- if (u.as_m64 != e.as_m64) ++ if (u.as_m64 != e.as_m64 || u.as_m64 != v.as_m64) + abort (); + } +Index: gcc/testsuite/gcc.target/powerpc/vsx-builtin-9c.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/vsx-builtin-9c.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/vsx-builtin-9c.c (.../branches/gcc-8-branch) +@@ -0,0 +1,164 @@ ++/* { dg-do run } */ ++/* { dg-require-effective-target vmx_hw } */ ++/* { dg-options "-maltivec" } */ ++ ++/* This test should run the same on any target that supports altivec/vmx ++ instructions. Intentionally not specifying cpu in order to test ++ all code generation paths. */ ++ ++#include <altivec.h> ++ ++extern void abort (void); ++ ++#define CONST0 (0) ++#define CONST1 (1) ++#define CONST2 (2) ++#define CONST3 (3) ++#define CONST4 (4) ++#define CONST5 (5) ++#define CONST6 (6) ++#define CONST7 (7) ++#define CONST8 (8) ++#define CONST9 (9) ++#define CONSTA (10) ++#define CONSTB (11) ++#define CONSTC (12) ++#define CONSTD (13) ++#define CONSTE (14) ++#define CONSTF (15) ++ ++ ++/* Test that indices > length of vector are applied modulo the vector ++ length. */ ++ ++/* Test for vector residing in register. */ ++vector signed char c0 (vector signed char v, signed char x) ++{ ++ return vec_insert (x, v, 0); ++} ++ ++vector signed char c9 (vector signed char v, signed char x) ++{ ++ return vec_insert (x, v, 9); ++} ++ ++vector signed char c21 (vector signed char v, signed char x) ++{ ++ return vec_insert (x, v, 21); ++} ++ ++vector signed char c30 (vector signed char v, signed char x) ++{ ++ return vec_insert (x, v, 30); ++} ++ ++/* Test for vector residing in memory. */ ++vector signed char mc0 (vector signed char *vp, signed char x) ++{ ++ return vec_insert (x, *vp, 0); ++} ++ ++vector signed char mc9 (vector signed char *vp, signed char x) ++{ ++ return vec_insert (x, *vp, 9); ++} ++ ++vector signed char mc21 (vector signed char *vp, signed char x) ++{ ++ return vec_insert (x, *vp, 21); ++} ++ ++vector signed char mc30 (vector signed char *vp, signed char x) ++{ ++ return vec_insert (x, *vp, 30); ++} ++ ++/* Test the same with variable indices. */ ++ ++/* Test for variable selector and vector residing in register. */ ++__attribute__((noinline)) ++vector signed char ci (vector signed char v, int i, signed char x) ++{ ++ return vec_insert (x, v, i); ++} ++ ++/* Test for variable selector and vector residing in memory. */ ++__attribute__((noinline)) ++vector signed char mci(vector signed char *vp, int i, signed char x) { ++ return vec_insert (x, *vp, i); ++} ++ ++ ++int main (int argc, char *argv[]) { ++ vector signed char cv = { CONST0, CONST1, CONST2, CONST3, ++ CONST4, CONST5, CONST6, CONST7, ++ CONST8, CONST9, CONSTA, CONSTB, ++ CONSTC, CONSTD, CONSTE, CONSTF }; ++ signed char c; ++ ++ cv = c0 (cv, CONSTF); ++ if (cv [0] != CONSTF) ++ abort (); ++ ++ cv = c9 (cv, CONST7); ++ if (cv [9] != CONST7) ++ abort (); ++ ++ cv = c21 (cv, CONSTA); ++ if (cv [5] != CONSTA) ++ abort (); ++ ++ cv = c30 (cv, CONSTC); ++ if (cv [14] != CONSTC) ++ abort (); ++ ++ cv = mc0 (&cv, CONSTB); ++ if (cv [0] != CONSTB) ++ abort (); ++ ++ cv = mc9 (&cv, CONST1); ++ if (cv [9] != CONST1) ++ abort (); ++ ++ cv = mc21 (&cv, CONST7); ++ if (cv [5] != CONST7) ++ abort (); ++ ++ cv = mc30 (&cv, CONST2); ++ if (cv [14] != CONST2) ++ abort (); ++ ++ cv = ci (cv, 8, CONST4); ++ if (cv [8] != CONST4) ++ abort (); ++ ++ cv = ci (cv, 13, CONSTB); ++ if (cv [13] != CONSTB) ++ abort (); ++ ++ cv = ci (cv, 23, CONST3); ++ if (cv [7] != CONST3) ++ abort (); ++ ++ cv = ci (cv, 31, CONST2); ++ if (cv [15] != CONST2) ++ abort (); ++ ++ cv = mci (&cv, 5, CONST1); ++ if (cv [5] != CONST1) ++ abort (); ++ ++ cv = mci (&cv, 12, CONST3); ++ if (cv [12] != CONST3) ++ abort (); ++ ++ cv = mci (&cv, 25, CONST5); ++ if (cv [9] != CONST5) ++ abort (); ++ ++ cv = mci (&cv, 16, CONSTD); ++ if (cv [0] != CONSTD) ++ abort (); ++ ++ return 0; ++} +Index: gcc/testsuite/gcc.target/powerpc/vsx-builtin-12b.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/vsx-builtin-12b.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/vsx-builtin-12b.c (.../branches/gcc-8-branch) +@@ -0,0 +1,109 @@ ++/* { dg-do run { target int128 } } */ ++/* { dg-require-effective-target vsx_hw } */ ++/* { dg-options "-mvsx -O3" } */ ++ ++/* This test should run the same on any target that supports vsx ++ instructions. Intentionally not specifying cpu in order to test ++ all code generation paths. */ ++ ++#include <altivec.h> ++ ++extern void abort (void); ++ ++#define CONST0 (31415926539LL) ++#define CONST1 (2 * 31415926539LL) ++ ++/* Test that indices > length of vector are applied modulo the vector ++ length. */ ++ ++/* Test for vector residing in register. */ ++long long int e0 (vector long long int v) ++{ ++ return __builtin_vec_ext_v2di (v, 0); ++} ++ ++long long int e3 (vector long long int v) ++{ ++ return __builtin_vec_ext_v2di (v, 3); ++} ++ ++/* Test for vector residing in memory. */ ++long long int me0 (vector long long int *vp) ++{ ++ return __builtin_vec_ext_v2di (*vp, 0); ++} ++ ++long long int me3 (vector long long int *vp) ++{ ++ return __builtin_vec_ext_v2di (*vp, 3); ++} ++ ++/* Test the same with variable indices. */ ++ ++/* Test for variable selector and vector residing in register. */ ++__attribute__((noinline)) ++long long int ei (vector long long int v, int i) ++{ ++ return __builtin_vec_ext_v2di (v, i); ++} ++ ++/* Test for variable selector and vector residing in memory. */ ++long long int mei (vector long long int *vp, int i) ++{ ++ return __builtin_vec_ext_v2di (*vp, i); ++} ++ ++int main (int argc, char *argv[]) { ++ vector long long int dv = { CONST0, CONST1 }; ++ long long int d; ++ ++ d = e0 (dv); ++ if (d != CONST0) ++ abort (); ++ ++ d = e3 (dv); ++ if (d != CONST1) ++ abort (); ++ ++ d = me0 (&dv); ++ if (d != CONST0) ++ abort (); ++ ++ d = me3 (&dv); ++ if (d != CONST1) ++ abort (); ++ ++ d = ei (dv, 0); ++ if (d != CONST0) ++ abort (); ++ ++ d = ei (dv, 1); ++ if (d != CONST1) ++ abort (); ++ ++ d = ei (dv, 2); ++ if (d != CONST0) ++ abort (); ++ ++ d = ei (dv, 3); ++ if (d != CONST1) ++ abort (); ++ ++ d = mei (&dv, 0); ++ if (d != CONST0) ++ abort (); ++ ++ d = mei (&dv, 1); ++ if (d != CONST1) ++ abort (); ++ ++ d = mei (&dv, 2); ++ if (d != CONST0) ++ abort (); ++ ++ d = mei (&dv, 3); ++ if (d != CONST1) ++ abort (); ++ ++ return 0; ++} +Index: gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-7.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-7.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-7.c (.../branches/gcc-8-branch) +@@ -1,4 +1,5 @@ + /* { dg-do compile } */ ++/* { dg-skip-if "not implemented for Darwin" { powerpc*-*-darwin* } } */ + /* { dg-additional-options "-mno-speculate-indirect-jumps" } */ + /* { dg-warning "'-mno-speculate-indirect-jumps' is deprecated" "" { target *-*-* } 0 } */ + +Index: gcc/testsuite/gcc.target/powerpc/vsx-builtin-13a.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/vsx-builtin-13a.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/vsx-builtin-13a.c (.../branches/gcc-8-branch) +@@ -0,0 +1,124 @@ ++/* { dg-do run { target int128 } } */ ++/* { dg-require-effective-target vsx_hw } */ ++/* { dg-options "-mvsx" } */ ++ ++/* This test should run the same on any target that supports vsx ++ instructions. Intentionally not specifying cpu in order to test ++ all code generation paths. */ ++ ++#include <altivec.h> ++ ++/* Define this after PR89424 is addressed. */ ++#define PR89424 ++ ++/* Define this after PR89626 is addressed. */ ++#undef PR89626 ++ ++#ifdef PR89626 ++#define SIGNED ++#else ++#define SIGNED signed ++#endif ++ ++extern void abort (void); ++ ++#define CONST0 (((SIGNED __int128) 31415926539) << 60) ++ ++/* Test that indices > length of vector are applied modulo the vector ++ length. */ ++ ++/* Test for vector residing in register. */ ++SIGNED __int128 e0 (vector SIGNED __int128 v) ++{ ++ return __builtin_vec_ext_v1ti (v, 0); ++} ++ ++SIGNED __int128 e3 (vector SIGNED __int128 v) ++{ ++ return __builtin_vec_ext_v1ti (v, 3); ++} ++ ++/* Test for vector residing in memory. */ ++SIGNED __int128 me0 (vector SIGNED __int128 *vp) ++{ ++ return __builtin_vec_ext_v1ti (*vp, 0); ++} ++ ++SIGNED __int128 me3 (vector SIGNED __int128 *vp) ++{ ++ return __builtin_vec_ext_v1ti (*vp, 3); ++} ++ ++/* Test the same with variable indices. */ ++ ++#ifdef PR89424 ++/* Test for variable selector and vector residing in register. */ ++__attribute__((noinline)) ++SIGNED __int128 ei (vector SIGNED __int128 v, int i) ++{ ++ return __builtin_vec_ext_v1ti (v, i); ++} ++ ++/* Test for variable selector and vector residing in memory. */ ++SIGNED __int128 mei (vector SIGNED __int128 *vp, int i) ++{ ++ return __builtin_vec_ext_v1ti (*vp, i); ++} ++#endif ++ ++int main (int argc, char *argv[]) { ++ vector SIGNED __int128 dv = { CONST0 }; ++ SIGNED __int128 d; ++ ++ d = e0 (dv); ++ if (d != CONST0) ++ abort (); ++ ++ d = e3 (dv); ++ if (d != CONST0) ++ abort (); ++ ++ d = me0 (&dv); ++ if (d != CONST0) ++ abort (); ++ ++ d = me3 (&dv); ++ if (d != CONST0) ++ abort (); ++ ++#ifdef PR89424 ++ d = ei (dv, 0); ++ if (d != CONST0) ++ abort (); ++ ++ d = ei (dv, 1); ++ if (d != CONST0) ++ abort (); ++ ++ d = ei (dv, 2); ++ if (d != CONST0) ++ abort (); ++ ++ d = ei (dv, 3); ++ if (d != CONST0) ++ abort (); ++ ++ d = mei (&dv, 0); ++ if (d != CONST0) ++ abort (); ++ ++ d = mei (&dv, 1); ++ if (d != CONST0) ++ abort (); ++ ++ d = mei (&dv, 2); ++ if (d != CONST0) ++ abort (); ++ ++ d = mei (&dv, 3); ++ if (d != CONST0) ++ 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_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/pr70010-1.c (.../branches/gcc-8-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/pr79909.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/pr79909.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/pr79909.c (.../branches/gcc-8-branch) +@@ -1,6 +1,7 @@ + /* PR rtl-optimization/79909 */ + /* { dg-do compile } */ + /* { dg-options "-O2 -mxl-compat" } */ ++/* { dg-require-effective-target dfp } */ + /* { dg-skip-if "DFP" { powerpc*-*-aix* } } */ + + typedef float T __attribute__ ((mode (TD))); +Index: gcc/testsuite/gcc.target/powerpc/vsx-builtin-20d.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/vsx-builtin-20d.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/vsx-builtin-20d.c (.../branches/gcc-8-branch) +@@ -0,0 +1,115 @@ ++/* { dg-do run { target int128 } } */ ++/* { dg-require-effective-target vsx_hw } */ ++/* { dg-options "-mvsx -O3" } */ ++ ++/* This test should run the same on any target that supports vsx ++ instructions. Intentionally not specifying cpu in order to test ++ all code generation paths. */ ++ ++#include <altivec.h> ++ ++extern void abort (void); ++ ++#define CONST0 (((unsigned __int128) 31415926539) << 60) ++#define CONST1 (((unsigned __int128) 31415926539) << 54) ++#define CONST2 (((unsigned __int128) 31415926539) << 48) ++#define CONST3 (((unsigned __int128) 31415926539) << 32) ++ ++/* Test that indices > length of vector are applied modulo the vector ++ length. */ ++ ++/* Test for vector residing in register. */ ++vector unsigned __int128 e0 (vector unsigned __int128 v, unsigned __int128 x) ++{ ++ return vec_insert (x, v, 0); ++} ++ ++vector unsigned __int128 e3 (vector unsigned __int128 v, unsigned __int128 x) ++{ ++ return vec_insert (x, v, 3); ++} ++ ++/* Test for vector residing in memory. */ ++vector unsigned __int128 ++me0 (vector unsigned __int128 *vp, unsigned __int128 x) ++{ ++ return vec_insert (x, *vp, 0); ++} ++ ++vector unsigned __int128 ++me3 (vector unsigned __int128 *vp, unsigned __int128 x) ++{ ++ return vec_insert (x, *vp, 3); ++} ++ ++/* Test the same with variable indices. */ ++ ++/* Test for variable selector and vector residing in register. */ ++__attribute__((noinline)) ++vector unsigned __int128 ++ei (vector unsigned __int128 v, int i, unsigned __int128 x) ++{ ++ return vec_insert (x, v, i); ++} ++ ++/* Test for variable selector and vector residing in memory. */ ++__attribute__((noinline)) ++vector unsigned __int128 ++mei (vector unsigned __int128 *vp, int i, unsigned __int128 x) ++{ ++ return vec_insert (x, *vp, i); ++} ++ ++int main (int argc, char *argv[]) { ++ vector unsigned __int128 dv = { CONST0 }; ++ ++ dv = e0 (dv, CONST3); ++ if (dv [0] != CONST3) ++ abort (); ++ ++ dv = e3 (dv, CONST2); ++ if (dv [0] != CONST2) ++ abort (); ++ ++ dv = me0 (&dv, CONST1); ++ if (dv [0] != CONST1) ++ abort (); ++ ++ dv = me3 (&dv, CONST3); ++ if (dv [0] != CONST3) ++ abort (); ++ ++ dv = ei (dv, 0, CONST0); ++ if (dv [0] != CONST0) ++ abort (); ++ ++ dv = ei (dv, 1, CONST1); ++ if (dv [0] != CONST1) ++ abort (); ++ ++ dv = ei (dv, 2, CONST2); ++ if (dv [0] != CONST2) ++ abort (); ++ ++ dv = ei (dv, 3, CONST3); ++ if (dv [0] != CONST3) ++ abort (); ++ ++ dv = mei (&dv, 0, CONST0); ++ if (dv [0] != CONST0) ++ abort (); ++ ++ dv = mei (&dv, 1, CONST1); ++ if (dv [0] != CONST1) ++ abort (); ++ ++ dv = mei (&dv, 2, CONST2); ++ if (dv [0] != CONST2) ++ abort (); ++ ++ dv = mei (&dv, 3, CONST3); ++ if (dv [0] != CONST3) ++ abort (); ++ ++ return 0; ++} +Index: gcc/testsuite/gcc.target/powerpc/vsx-builtin-12d.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/vsx-builtin-12d.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/vsx-builtin-12d.c (.../branches/gcc-8-branch) +@@ -0,0 +1,112 @@ ++/* { dg-do run { target int128 } } */ ++/* { dg-require-effective-target vsx_hw } */ ++/* { dg-options "-mvsx -O3" } */ ++ ++/* This test should run the same on any target that supports vsx ++ instructions. Intentionally not specifying cpu in order to test ++ all code generation paths. */ ++ ++#include <altivec.h> ++ ++extern void abort (void); ++ ++#define CONST0 (31415926539LL) ++#define CONST1 (2 * 31415926539LL) ++#define CONST2 (3 * 31415926539LL) ++#define CONST3 (4 * 31415926539LL) ++ ++/* Test that indices > length of vector are applied modulo the vector ++ length. */ ++ ++/* Test for vector residing in register. */ ++vector long long int e0 (vector long long int v, long long int x) ++{ ++ return vec_insert (x, v, 0); ++} ++ ++vector long long int e3 (vector long long int v, long long int x) ++{ ++ return vec_insert (x, v, 3); ++} ++ ++/* Test for vector residing in memory. */ ++vector long long int me0 (vector long long int *vp, long long int x) ++{ ++ return vec_insert (x, *vp, 0); ++} ++ ++vector long long int me3 (vector long long int *vp, long long int x) ++{ ++ return vec_insert (x, *vp, 3); ++} ++ ++/* Test the same with variable indices. */ ++ ++/* Test for variable selector and vector residing in register. */ ++__attribute__((noinline)) ++vector long long int ei (vector long long int v, int i, long long int x) ++{ ++ return vec_insert (x, v, i); ++} ++ ++/* Test for variable selector and vector residing in memory. */ ++__attribute__((noinline)) ++vector long long int mei (vector long long int *vp, int i, long long int x) ++{ ++ return vec_insert (x, *vp, i); ++} ++ ++int main (int argc, char *argv[]) { ++ vector long long int dv = { CONST0, CONST1 }; ++ long long int d; ++ ++ dv = e0 (dv, CONST3); ++ if (dv [0] != CONST3) ++ abort (); ++ ++ dv = e3 (dv, CONST0); ++ if (dv [1] != CONST0) ++ abort (); ++ ++ dv = me0 (&dv, CONST1); ++ if (dv [0] != CONST1) ++ abort (); ++ ++ dv = me3 (&dv, CONST2); ++ if (dv [1] != CONST2) ++ abort (); ++ ++ dv = ei (dv, 0, CONST3); ++ if (dv [0] != CONST3) ++ abort (); ++ ++ dv = ei (dv, 1, CONST2); ++ if (dv [1] != CONST2) ++ abort (); ++ ++ dv = ei (dv, 2, CONST1); ++ if (dv [0] != CONST1) ++ abort (); ++ ++ dv = ei (dv, 3, CONST3); ++ if (dv [1] != CONST3) ++ abort (); ++ ++ dv = mei (&dv, 0, CONST1); ++ if (dv [0] != CONST1) ++ abort (); ++ ++ dv = mei (&dv, 1, CONST0); ++ if (dv [1] != CONST0) ++ abort (); ++ ++ dv = mei (&dv, 2, CONST1); ++ if (dv [0] != CONST1) ++ abort (); ++ ++ dv = mei (&dv, 3, CONST2); ++ if (dv [1] != CONST2) ++ abort (); ++ ++ return 0; ++} +Index: gcc/testsuite/gcc.target/powerpc/vsx-builtin-13c.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/vsx-builtin-13c.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/vsx-builtin-13c.c (.../branches/gcc-8-branch) +@@ -0,0 +1,115 @@ ++/* { dg-do run { target int128 } } */ ++/* { dg-require-effective-target vsx_hw } */ ++/* { dg-options "-mvsx" } */ ++ ++/* This test should run the same on any target that supports vsx ++ instructions. Intentionally not specifying cpu in order to test ++ all code generation paths. */ ++ ++#include <altivec.h> ++ ++#define SIGNED signed ++ ++extern void abort (void); ++ ++#define CONST0 (((SIGNED __int128) 31415926539) << 60) ++#define CONST1 (((SIGNED __int128) 31415926539) << 55) ++#define CONST2 (((SIGNED __int128) 31415926539) << 50) ++#define CONST3 (((SIGNED __int128) 31415926539) << 45) ++ ++/* Test that indices > length of vector are applied modulo the vector ++ length. */ ++ ++/* Test for vector residing in register. */ ++vector SIGNED __int128 e0 (vector SIGNED __int128 v, SIGNED __int128 x) ++{ ++ return vec_insert (x, v, 0); ++} ++ ++vector SIGNED __int128 e3 (vector SIGNED __int128 v, SIGNED __int128 x) ++{ ++ return vec_insert (x, v, 3); ++} ++ ++/* Test for vector residing in memory. */ ++vector SIGNED __int128 me0 (vector SIGNED __int128 *vp, SIGNED __int128 x) ++{ ++ return vec_insert (x, *vp, 0); ++} ++ ++vector SIGNED __int128 me3 (vector SIGNED __int128 *vp, SIGNED __int128 x) ++{ ++ return vec_insert (x, *vp, 3); ++} ++ ++/* Test the same with variable indices. */ ++ ++/* Test for variable selector and vector residing in register. */ ++__attribute__((noinline)) ++vector SIGNED __int128 ++ei (vector SIGNED __int128 v, int i, SIGNED __int128 x) ++{ ++ return vec_insert (x, v, i); ++} ++ ++/* Test for variable selector and vector residing in memory. */ ++__attribute__((noinline)) ++vector SIGNED __int128 ++mei (vector SIGNED __int128 *vp, int i, SIGNED __int128 x) ++{ ++ return vec_insert (x, *vp, i); ++} ++ ++int main (int argc, char *argv[]) { ++ vector SIGNED __int128 dv = { CONST0 }; ++ SIGNED __int128 d; ++ ++ dv = e0 (dv, CONST3); ++ if (dv [0] != CONST3) ++ abort (); ++ ++ dv = e3 (dv, CONST1); ++ if (dv [0] != CONST1) ++ abort (); ++ ++ dv = me0 (&dv, CONST2); ++ if (dv [0] != CONST2) ++ abort (); ++ ++ dv = me3 (&dv, CONST3); ++ if (dv [0] != CONST3) ++ abort (); ++ ++ dv = ei (dv, 0, CONST1); ++ if (dv [0] != CONST1) ++ abort (); ++ ++ dv = ei (dv, 1, CONST2); ++ if (dv [0] != CONST2) ++ abort (); ++ ++ dv = ei (dv, 2, CONST3); ++ if (dv [0] != CONST3) ++ abort (); ++ ++ dv = ei (dv, 3, CONST1); ++ if (dv [0] != CONST1) ++ abort (); ++ ++ dv = mei (&dv, 0, CONST2); ++ if (dv [0] != CONST2) ++ abort (); ++ ++ dv = mei (&dv, 1, CONST3); ++ if (dv [0] != CONST3) ++ abort (); ++ ++ dv = mei (&dv, 2, CONST1); ++ if (dv [0] != CONST1) ++ abort (); ++ ++ dv = mei (&dv, 3, CONST2); ++ if (dv [0] != CONST2) ++ abort (); ++ return 0; ++} +Index: gcc/testsuite/gcc.target/powerpc/pr70010-3.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/pr70010-3.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/pr70010-3.c (.../branches/gcc-8-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/powerpc/vsx-builtin-14b.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/vsx-builtin-14b.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/vsx-builtin-14b.c (.../branches/gcc-8-branch) +@@ -0,0 +1,126 @@ ++/* { dg-do run } */ ++/* { dg-require-effective-target vmx_hw } */ ++/* { dg-options "-maltivec -O3" } */ ++ ++/* This test should run the same on any target that supports altivec/dfp ++ instructions. Intentionally not specifying cpu in order to test ++ all code generation paths. */ ++ ++#include <altivec.h> ++ ++extern void abort (void); ++ ++#define CONST0 ((float) (3.1415926539)) ++#define CONST1 ((float) (3.1415926539 * 2)) ++#define CONST2 ((float) (3.1415926539 * 3)) ++#define CONST3 ((float) (3.1415926539 * 4)) ++ ++/* Test that indices > length of vector are applied modulo the vector ++ length. */ ++ ++/* Test for vector residing in register. */ ++float e0(vector float v){ return __builtin_vec_ext_v4sf (v, 0); } ++float e1(vector float v){ return __builtin_vec_ext_v4sf (v, 1); } ++float e7(vector float v){ return __builtin_vec_ext_v4sf (v, 7); } ++float e8(vector float v){ return __builtin_vec_ext_v4sf (v, 8); } ++ ++/* Test for vector residing in memory. */ ++float me0(vector float *vp){ return __builtin_vec_ext_v4sf (*vp, 0); } ++float me1(vector float *vp){ return __builtin_vec_ext_v4sf (*vp, 1); } ++ ++float me13(vector float *vp) ++{ ++ return __builtin_vec_ext_v4sf (*vp, 13); ++} ++ ++float me15(vector float *vp) ++{ ++ return __builtin_vec_ext_v4sf (*vp, 15); ++} ++ ++/* Test the same with variable indices. */ ++ ++/* Test for variable selector and vector residing in register. */ ++__attribute__((noinline)) ++float ei(vector float v, int i) ++{ ++ return __builtin_vec_ext_v4sf (v, i); ++} ++ ++/* Test for variable selector and vector residing in memory. */ ++float mei(vector float *vp, int i) ++{ ++ return __builtin_vec_ext_v4sf (*vp, i); ++} ++ ++ ++int main (int argc, char *argv[]) { ++ vector float dv = { CONST0, CONST1, CONST2, CONST3 }; ++ float d; ++ ++ d = e0 (dv); ++ if (d != CONST0) ++ abort (); ++ ++ d = e1 (dv); ++ if (d != CONST1) ++ abort (); ++ ++ d = e7 (dv); ++ if (d != CONST3) ++ abort (); ++ ++ d = e8 (dv); ++ if (d != CONST0) ++ abort (); ++ ++ d = me0 (&dv); ++ if (d != CONST0) ++ abort (); ++ ++ d = me1 (&dv); ++ if (d != CONST1) ++ abort (); ++ ++ d = me13 (&dv); ++ if (d != CONST1) ++ abort (); ++ ++ d = me15 (&dv); ++ if (d != CONST3) ++ abort (); ++ ++ d = ei (dv, 0); ++ if (d != CONST0) ++ abort (); ++ ++ d = ei (dv, 2); ++ if (d != CONST2) ++ abort (); ++ ++ d = ei (dv, 11); ++ if (d != CONST3) ++ abort (); ++ ++ d = ei (dv, 17); ++ if (d != CONST1) ++ abort (); ++ ++ d = mei (&dv, 0); ++ if (d != CONST0) ++ abort (); ++ ++ d = mei (&dv, 1); ++ if (d != CONST1) ++ abort (); ++ ++ d = mei (&dv, 15); ++ if (d != CONST3) ++ abort (); ++ ++ d = mei (&dv, 6); ++ if (d != CONST2) ++ abort (); ++ ++ return 0; ++} +Index: gcc/testsuite/gcc.target/powerpc/stabs-attrib-vect-darwin.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/stabs-attrib-vect-darwin.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/stabs-attrib-vect-darwin.c (.../branches/gcc-8-branch) +@@ -1,5 +1,6 @@ + /* Test Attribute Vector associated with vector type stabs. */ + /* { dg-do compile { target powerpc*-*-darwin* } } */ ++/* { dg-require-effective-target stabs } */ + /* { dg-options "-gstabs+ -fno-eliminate-unused-debug-types -faltivec" } */ + + int main () +Index: gcc/testsuite/gcc.target/powerpc/vsx-builtin-15a.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/vsx-builtin-15a.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/vsx-builtin-15a.c (.../branches/gcc-8-branch) +@@ -0,0 +1,113 @@ ++/* { dg-do run { target int128 } } */ ++/* { dg-require-effective-target vsx_hw } */ ++/* { dg-options "-mvsx" } */ ++ ++/* This test should run the same on any target that supports vsx ++ instructions. Intentionally not specifying cpu in order to test ++ all code generation paths. */ ++ ++#include <altivec.h> ++ ++extern void abort (void); ++ ++#define CONST0 (3.1415926539) ++#define CONST1 (3.1415926539 * 2) ++ ++ ++/* Test that indices > length of vector are applied modulo the vector ++ length. */ ++ ++/* Test for vector residing in register. */ ++double e0(vector double v){ return __builtin_vec_ext_v2df (v, 0); } ++double e1(vector double v){ return __builtin_vec_ext_v2df (v, 1); } ++double e2(vector double v){ return __builtin_vec_ext_v2df (v, 2); } ++double e3(vector double v){ return __builtin_vec_ext_v2df (v, 3); } ++ ++/* Test for vector residing in memory. */ ++double me0(vector double *vp){ return __builtin_vec_ext_v2df (*vp, 0); } ++double me1(vector double *vp){ return __builtin_vec_ext_v2df (*vp, 1); } ++double me2(vector double *vp){ return __builtin_vec_ext_v2df (*vp, 2); } ++double me3(vector double *vp){ return __builtin_vec_ext_v2df (*vp, 3); } ++ ++/* Test the same with variable indices. */ ++ ++/* Test for variable selector and vector residing in register. */ ++__attribute__((noinline)) ++double ei(vector double v, int i){ return __builtin_vec_ext_v2df (v, i); } ++ ++/* Test for variable selector and vector residing in memory. */ ++double mei(vector double *vp, int i){ return __builtin_vec_ext_v2df (*vp, i); } ++ ++ ++int main (int argc, char *argv[]) { ++ vector double dv; ++ double d; ++ dv[0] = CONST0; ++ dv[1] = CONST1; ++ ++ d = e0 (dv); ++ if (d != CONST0) ++ abort (); ++ ++ d = e1 (dv); ++ if (d != CONST1) ++ abort (); ++ ++ d = e2 (dv); ++ if (d != CONST0) ++ abort (); ++ ++ d = e3 (dv); ++ if (d != CONST1) ++ abort (); ++ ++ d = me0 (&dv); ++ if (d != CONST0) ++ abort (); ++ ++ d = me1 (&dv); ++ if (d != CONST1) ++ abort (); ++ ++ d = me2 (&dv); ++ if (d != CONST0) ++ abort (); ++ ++ d = me3 (&dv); ++ if (d != CONST1) ++ abort (); ++ ++ d = ei (dv, 0); ++ if (d != CONST0) ++ abort (); ++ ++ d = ei (dv, 1); ++ if (d != CONST1) ++ abort (); ++ ++ d = ei (dv, 2); ++ if (d != CONST0) ++ abort (); ++ ++ d = ei (dv, 3); ++ if (d != CONST1) ++ abort (); ++ ++ d = mei (&dv, 0); ++ if (d != CONST0) ++ abort (); ++ ++ d = mei (&dv, 1); ++ if (d != CONST1) ++ abort (); ++ ++ d = mei (&dv, 2); ++ if (d != CONST0) ++ abort (); ++ ++ d = mei (&dv, 3); ++ if (d != CONST1) ++ abort (); ++ ++ return 0; ++} +Index: gcc/testsuite/gcc.target/powerpc/vec-extract-v16qiu-v2b.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/vec-extract-v16qiu-v2b.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/vec-extract-v16qiu-v2b.c (.../branches/gcc-8-branch) +@@ -0,0 +1,14 @@ ++/* { dg-do run } */ ++/* { dg-require-effective-target vsx_hw } */ ++/* { dg-options "-O2 -mvsx" } */ ++ ++#define TYPE unsigned char ++/* ELEMENTS is number of elements in a vector of TYPE. */ ++#define ELEMENTS 16 ++#define INITIAL \ ++ { 3, 2, 3, 4, 5, 6, 7, 8, 240, 241, 242, 243, 244, 245, 246, 247 } ++ ++#define DO_TRACE ++#undef DISABLE_INLINE_OF_GET_AUTO_N ++ ++#include "vec-extract-v16qiu-v2.h" +Index: gcc/testsuite/gcc.target/powerpc/bfp/bfp.exp +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/bfp/bfp.exp (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/bfp/bfp.exp (.../branches/gcc-8-branch) +@@ -16,9 +16,11 @@ + # along with GCC; see the file COPYING3. If not see + # <http://www.gnu.org/licenses/>. + +-# Exit immediately if this isn't a PowerPC target or if the target is aix. ++# Exit immediately if this isn't a PowerPC target or if the target is ++# aix or Darwin. + if { (![istarget powerpc*-*-*] && ![istarget rs6000-*-*]) +- || [istarget "powerpc*-*-aix*"] } then { ++ || [istarget "powerpc*-*-aix*"] ++ || [istarget "powerpc*-*-darwin*"] } then { + return + } + +Index: gcc/testsuite/gcc.target/powerpc/pr87532.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/pr87532.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/pr87532.c (.../branches/gcc-8-branch) +@@ -0,0 +1,72 @@ ++/* { dg-do run } */ ++/* { dg-require-effective-target vmx_hw } */ ++/* { dg-options "-maltivec" } */ ++ ++/* This test should run the same on any target that supports altivec/dfp ++ instructions. Intentionally not specifying cpu in order to test ++ all code generation paths. */ ++ ++#include <stdlib.h> ++#include <stddef.h> ++#include <altivec.h> ++#include <stdio.h> ++ ++static void ++check (unsigned char, unsigned char) __attribute__((__noinline__)); ++ ++static __attribute__((altivec(vector__))) unsigned char ++deoptimize (__attribute__((altivec(vector__))) unsigned char) ++__attribute__((__noinline__)); ++ ++static __attribute__((altivec(vector__))) unsigned char ++deoptimize (__attribute__((altivec(vector__))) unsigned char a) ++{ ++ __asm__ (" # %x0" : "+v" (a)); ++ return a; ++} ++ ++// Toggle this attribute inline/noinline to see pass/fail. ++// fails with the noinline attribute applied. ++__attribute__ ((__noinline__)) ++unsigned char ++get_auto_n (__attribute__((altivec(vector__))) unsigned char a, size_t n) ++{ ++ return (unsigned char) __builtin_vec_extract (a, n); ++} ++ ++void ++do_auto (__attribute__((altivec(vector__))) unsigned char a) ++{ ++ size_t i; ++ for (i = 1; i < 3 ; i++) ++ { ++ do ++ { ++ printf ("get_auto_n (a, %d) produces 0x0%x\n", ++ i, (int) get_auto_n (a, i)); ++ ++ if ((int) get_auto_n (a,i) > 250) abort(); ++ } while (0); ++ } ++} ++ ++int ++main (void) ++{ ++ size_t i; ++ __attribute__((altivec(vector__))) unsigned char x = ++ { 3, 2, 3, 8, 5, 6, 7, 8, 240, 241, 242, 243, 244, 245, 246, 247 }; ++ __attribute__((altivec(vector__))) unsigned char a; ++ ++ printf (" first elements of x are: %d %d %d %d %d\n", ++ x[0], x[1], x[2], x[3], x[4]); ++ ++ a = deoptimize (x); ++ ++ printf (" after deoptimization, first elements of a are: %d %d %d %d %d\n", ++ a[0], a[1], a[2], a[3], a[4]); ++ ++ do_auto (a); ++ ++ return 0; ++} +Index: gcc/testsuite/gcc.target/powerpc/vsx-builtin-14d.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/vsx-builtin-14d.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/vsx-builtin-14d.c (.../branches/gcc-8-branch) +@@ -0,0 +1,149 @@ ++/* { dg-do run } */ ++/* { dg-require-effective-target vmx_hw } */ ++/* { dg-options "-maltivec -O3" } */ ++ ++/* This test should run the same on any target that supports altivec/vmx ++ instructions. Intentionally not specifying cpu in order to test ++ all code generation paths. */ ++ ++#include <altivec.h> ++ ++extern void abort (void); ++ ++#define CONST0 ((float) (3.1415926539)) ++#define CONST1 ((float) (3.1415926539 * 2)) ++#define CONST2 ((float) (3.1415926539 * 3)) ++#define CONST3 ((float) (3.1415926539 * 4)) ++ ++/* Test that indices > length of vector are applied modulo the vector ++ length. */ ++ ++/* Test for vector residing in register. */ ++vector float e0(vector float v, float x) ++{ ++ return vec_insert (x, v, 0); ++} ++ ++vector float e1(vector float v, float x) ++{ ++ return vec_insert (x, v, 1); ++} ++ ++vector float e7(vector float v, float x) ++{ ++ return vec_insert (x, v, 7); ++} ++ ++vector float e8(vector float v, float x) ++{ ++ return vec_insert (x, v, 8); ++} ++ ++/* Test for vector residing in memory. */ ++vector float me0(vector float *vp, float x) ++{ ++ return vec_insert (x, *vp, 0); ++} ++ ++vector float me1(vector float *vp, float x) ++{ ++ return vec_insert (x, *vp, 1); ++} ++ ++vector float me13(vector float *vp, float x) ++{ ++ return vec_insert (x, *vp, 13); ++} ++ ++vector float me15(vector float *vp, float x) ++{ ++ return vec_insert (x, *vp, 15); ++} ++ ++/* Test the same with variable indices. */ ++ ++/* Test for variable selector and vector residing in register. */ ++__attribute__((noinline)) ++vector float ei(vector float v, int i, float x) ++{ ++ return vec_insert (x, v, i); ++} ++ ++/* Test for variable selector and vector residing in memory. */ ++__attribute__((noinline)) ++vector float mei(vector float *vp, int i, float x) ++{ ++ return vec_insert (x, *vp, i); ++} ++ ++ ++int main (int argc, char *argv[]) { ++ vector float dv = { CONST0, CONST1, CONST2, CONST3 }; ++ float d; ++ ++ dv = e0 (dv, CONST3); ++ if (dv [0] != CONST3) ++ abort (); ++ ++ dv = e1 (dv, CONST0); ++ if (dv [1] != CONST0) ++ abort (); ++ ++ dv = e7 (dv, CONST2); ++ if (dv [3] != CONST2) ++ abort (); ++ ++ dv = e8 (dv, CONST1); ++ if (dv [0] != CONST1) ++ abort (); ++ ++ dv = me0 (&dv, CONST2); ++ if (dv [0] != CONST2) ++ abort (); ++ ++ dv = me1 (&dv, CONST3); ++ if (dv [1] != CONST3) ++ abort (); ++ ++ dv = me13 (&dv, CONST2); ++ if (dv [1] != CONST2) ++ abort (); ++ ++ dv = me15 (&dv, CONST1); ++ if (dv [3] != CONST1) ++ abort (); ++ ++ dv = ei (dv, 0, CONST3); ++ if (dv [0] != CONST3) ++ abort (); ++ ++ dv = ei (dv, 2, CONST1); ++ if (dv [2] != CONST1) ++ abort (); ++ ++ dv = ei (dv, 11, CONST0); ++ if (dv [3] != CONST0) ++ abort (); ++ ++ dv = ei (dv, 17, CONST2); ++ if (dv [1] != CONST2) ++ abort (); ++ ++ dv = mei (&dv, 0, CONST1); ++ if (dv [0] != CONST1) ++ abort (); ++ ++ dv = mei (&dv, 1, CONST0); ++ if (dv [1] != CONST0) ++ abort (); ++ ++ dv = mei (&dv, 15, CONST1); ++ if (dv [3] != CONST1) ++ abort (); ++ ++ dv = mei (&dv, 6, CONST0); ++ if (dv [2] != CONST0) ++ abort (); ++ ++ return 0; ++} +Index: gcc/testsuite/gcc.target/powerpc/vsx-builtin-15c.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/vsx-builtin-15c.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/vsx-builtin-15c.c (.../branches/gcc-8-branch) +@@ -0,0 +1,151 @@ ++/* { dg-do run { target int128 } } */ ++/* { dg-require-effective-target vsx_hw } */ ++/* { dg-options "-mvsx" } */ ++ ++/* This test should run the same on any target that supports vsx ++ instructions. Intentionally not specifying cpu in order to test ++ all code generation paths. */ ++ ++#include <altivec.h> ++ ++extern void abort (void); ++ ++#define CONST0 (3.1415926539) ++#define CONST1 (3.1415926539 * 2) ++#define CONST2 (3.1415926539 * 3) ++#define CONST3 (3.1415926539 * 4) ++ ++ ++/* Test that indices > length of vector are applied modulo the vector ++ length. */ ++ ++/* Test for vector residing in register. */ ++vector double e0(vector double v, double x) ++{ ++ return vec_insert (x, v, 0); ++} ++ ++vector double e1(vector double v, double x) ++{ ++ return vec_insert (x, v, 1); ++} ++ ++vector double e2(vector double v, double x) ++{ ++ return vec_insert (x, v, 2); ++} ++ ++vector double e3(vector double v, double x) ++{ ++ return vec_insert (x, v, 3); ++} ++ ++/* Test for vector residing in memory. */ ++vector double me0(vector double *vp, double x) ++{ ++ return vec_insert (x, *vp, 0); ++} ++ ++vector double me1(vector double *vp, double x) ++{ ++ return vec_insert (x, *vp, 1); ++} ++ ++vector double me2(vector double *vp, double x) ++{ ++ return vec_insert (x, *vp, 2); ++} ++ ++vector double me3(vector double *vp, double x) ++{ ++ return vec_insert (x, *vp, 3); ++} ++ ++/* Test the same with variable indices. */ ++ ++/* Test for variable selector and vector residing in register. */ ++__attribute__((noinline)) ++vector double ei(vector double v, int i, double x) ++{ ++ return vec_insert (x, v, i); ++} ++ ++/* Test for variable selector and vector residing in memory. */ ++__attribute__((noinline)) ++vector double mei(vector double *vp, int i, double x) ++{ ++ return vec_insert (x, *vp, i); ++} ++ ++int main (int argc, char *argv[]) { ++ vector double dv; ++ double d; ++ dv[0] = CONST0; ++ dv[1] = CONST1; ++ ++ dv = e0 (dv, CONST3); ++ if (dv [0] != CONST3) ++ abort (); ++ ++ dv = e1 (dv, CONST2); ++ if (dv [1] != CONST2) ++ abort (); ++ ++ dv = e2 (dv, CONST1); ++ if (dv [0] != CONST1) ++ abort (); ++ ++ dv = e3 (dv, CONST0); ++ if (dv [1] != CONST0) ++ abort (); ++ ++ dv = me0 (&dv, CONST2); ++ if (dv [0] != CONST2) ++ abort (); ++ ++ dv = me1 (&dv, CONST3); ++ if (dv [1] != CONST3) ++ abort (); ++ ++ dv = me2 (&dv, CONST1); ++ if (dv [0] != CONST1) ++ abort (); ++ ++ dv = me3 (&dv, CONST0); ++ if (dv [1] != CONST0) ++ abort (); ++ ++ dv = ei (dv, 0, CONST1); ++ if (dv [0] != CONST1) ++ abort (); ++ ++ dv = ei (dv, 1, CONST0); ++ if (dv [1] != CONST0) ++ abort (); ++ ++ dv = ei (dv, 2, CONST3); ++ if (dv [0] != CONST3) ++ abort (); ++ ++ dv = ei (dv, 3, CONST2); ++ if (dv [1] != CONST2) ++ abort (); ++ ++ dv = mei (&dv, 0, CONST1); ++ if (dv [0] != CONST1) ++ abort (); ++ ++ dv = mei (&dv, 1, CONST0); ++ if (dv [1] != CONST0) ++ abort (); ++ ++ dv = mei (&dv, 2, CONST2); ++ if (dv [0] != CONST2) ++ abort (); ++ ++ dv = mei (&dv, 3, CONST3); ++ if (dv [1] != CONST3) ++ abort (); ++ ++ return 0; ++} +Index: gcc/testsuite/gcc.target/powerpc/vsx-builtin-16b.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/vsx-builtin-16b.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/vsx-builtin-16b.c (.../branches/gcc-8-branch) +@@ -0,0 +1,165 @@ ++/* { dg-do run } */ ++/* { dg-require-effective-target vmx_hw } */ ++/* { dg-options "-maltivec -O3" } */ ++ ++/* This test should run the same on any target that supports altivec/dfp ++ instructions. Intentionally not specifying cpu in order to test ++ all code generation paths. */ ++ ++#include <altivec.h> ++ ++extern void abort (void); ++ ++#define CONST0 (0) ++#define CONST1 (1) ++#define CONST2 (2) ++#define CONST3 (3) ++#define CONST4 (4) ++#define CONST5 (5) ++#define CONST6 (6) ++#define CONST7 (7) ++#define CONST8 (8) ++#define CONST9 (9) ++#define CONSTA (10) ++#define CONSTB (11) ++#define CONSTC (12) ++#define CONSTD (13) ++#define CONSTE (14) ++#define CONSTF (15) ++ ++ ++/* Test that indices > length of vector are applied modulo the vector ++ length. */ ++ ++/* Test for vector residing in register. */ ++unsigned char c0 (vector unsigned char v) ++{ ++ return __builtin_vec_extract (v, 0); ++} ++ ++unsigned char c9 (vector unsigned char v) ++{ ++ return __builtin_vec_extract (v, 9); ++} ++ ++unsigned char c21 (vector unsigned char v) ++{ ++ return __builtin_vec_extract (v, 21); ++} ++ ++unsigned char c30 (vector unsigned char v) ++{ ++ return __builtin_vec_extract (v, 30); ++} ++ ++/* Test for vector residing in memory. */ ++unsigned char mc0 (vector unsigned char *vp) ++{ ++ return __builtin_vec_extract (*vp, 0); ++} ++ ++unsigned char mc9 (vector unsigned char *vp) ++{ ++ return __builtin_vec_extract (*vp, 9); ++} ++ ++unsigned char mc21 (vector unsigned char *vp) ++{ ++ return __builtin_vec_extract (*vp, 21); ++} ++ ++unsigned char mc30 (vector unsigned char *vp) ++{ ++ return __builtin_vec_extract (*vp, 30); ++} ++ ++/* Test the same with variable indices. */ ++ ++/* Test for variable selector and vector residing in register. */ ++__attribute__((noinline)) ++unsigned char ci (vector unsigned char v, int i) ++{ ++ return __builtin_vec_extract (v, i); ++} ++ ++/* Test for variable selector and vector residing in memory. */ ++__attribute__((noinline)) ++unsigned char mci (vector unsigned char *vp, int i) ++{ ++ return __builtin_vec_extract (*vp, i); ++} ++ ++ ++int main (int argc, char *argv[]) { ++ vector unsigned char cv = { CONST0, CONST1, CONST2, CONST3, ++ CONST4, CONST5, CONST6, CONST7, ++ CONST8, CONST9, CONSTA, CONSTB, ++ CONSTC, CONSTD, CONSTE, CONSTF }; ++ unsigned char c; ++ ++ c = c0 (cv); ++ if (c != CONST0) ++ abort (); ++ ++ c = c9 (cv); ++ if (c != CONST9) ++ abort (); ++ ++ c = c21 (cv); ++ if (c != CONST5) ++ abort (); ++ ++ c = c30 (cv); ++ if (c != CONSTE) ++ abort (); ++ ++ c = mc0 (&cv); ++ if (c != CONST0) ++ abort (); ++ ++ c = mc9 (&cv); ++ if (c != CONST9) ++ abort (); ++ ++ c = mc21 (&cv); ++ if (c != CONST5) ++ abort (); ++ ++ c = mc30 (&cv); ++ if (c != CONSTE) ++ abort (); ++ ++ c = ci (cv, 8); ++ if (c != CONST8) ++ abort (); ++ ++ c = ci (cv, 13); ++ if (c != CONSTD) ++ abort (); ++ ++ c = ci (cv, 23); ++ if (c != CONST7) ++ abort (); ++ ++ c = ci (cv, 31); ++ if (c != CONSTF) ++ abort (); ++ ++ c = mci (&cv, 5); ++ if (c != CONST5) ++ abort (); ++ ++ c = mci (&cv, 12); ++ if (c != CONSTC) ++ abort (); ++ ++ c = mci (&cv, 25); ++ if (c != CONST9) ++ abort (); ++ ++ c = mci (&cv, 16); ++ if (c != CONST0) ++ abort (); ++ ++ return 0; ++} +Index: gcc/testsuite/gcc.target/powerpc/dfp/dfp.exp +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/dfp/dfp.exp (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/dfp/dfp.exp (.../branches/gcc-8-branch) +@@ -16,8 +16,11 @@ + # along with GCC; see the file COPYING3. If not see + # <http://www.gnu.org/licenses/>. + +-# Exit immediately if this isn't a PowerPC target. +-if { ![istarget powerpc*-*-*] && ![istarget rs6000-*-*] } then { ++# Exit immediately if this isn't a PowerPC target, also exit if we ++# are on Darwin which doesn't support decimal float. ++if { (![istarget powerpc*-*-*] && ![istarget rs6000-*-*]) ++ || [istarget "powerpc*-*-darwin*"] ++} then { + return + } + +Index: gcc/testsuite/gcc.target/powerpc/vec-extract-v16qiu-v2.h +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/vec-extract-v16qiu-v2.h (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/vec-extract-v16qiu-v2.h (.../branches/gcc-8-branch) +@@ -0,0 +1,253 @@ ++#include <stdlib.h> ++#include <stddef.h> ++#include <altivec.h> ++ ++#ifndef RTYPE ++#define RTYPE TYPE ++#endif ++ ++#ifdef DO_TRACE ++#include <stdio.h> ++ ++#define TRACE(STRING, NUM) \ ++do \ ++ { \ ++ fprintf (stderr, "%s: %2d\n", STRING, (int) NUM); \ ++ fflush (stderr); \ ++ } \ ++while (0) ++ ++#ifndef FAIL_FORMAT ++#define FAIL_FORMAT "%ld" ++#define FAIL_CAST(X) ((long)(X)) ++#endif ++ ++#define FAIL(EXP, GOT) \ ++do \ ++ { \ ++ fprintf (stderr, "Expected: " FAIL_FORMAT ", got " FAIL_FORMAT "\n", \ ++ FAIL_CAST (EXP), FAIL_CAST (GOT)); \ ++ fflush (stderr); \ ++ abort (); \ ++ } \ ++while (0) ++ ++#else ++#define TRACE(STRING, NUM) ++#define FAIL(EXP, GOT) abort () ++#endif ++ ++static void ++check (RTYPE, RTYPE) __attribute__((__noinline__)); ++ ++static vector TYPE ++deoptimize (vector TYPE) __attribute__((__noinline__)); ++ ++static vector TYPE ++*deoptimize_ptr (vector TYPE *) __attribute__((__noinline__)); ++ ++static void ++check (RTYPE expected, RTYPE got) ++{ ++ if (expected != got) ++ FAIL (expected, got); ++} ++ ++static vector TYPE ++deoptimize (vector TYPE a) ++{ ++ __asm__ (" # %x0" : "+v" (a)); ++ return a; ++} ++ ++static vector TYPE * ++deoptimize_ptr (vector TYPE *p) ++{ ++ __asm__ (" # %0" : "+r" (p)); ++ return p; ++} ++ ++ ++RTYPE ++get_auto_0 (vector TYPE a) ++{ ++ TRACE ("get_auto_", 0); ++ return (RTYPE) vec_extract (a, 0); ++} ++ ++RTYPE ++get_auto_1 (vector TYPE a) ++{ ++ TRACE ("get_auto_", 1); ++ return (RTYPE) vec_extract (a, 1); ++} ++ ++#if ELEMENTS >= 4 ++RTYPE ++get_auto_2 (vector TYPE a) ++{ ++ return (RTYPE) vec_extract (a, 2); ++} ++ ++RTYPE ++get_auto_3 (vector TYPE a) ++{ ++ return (RTYPE) vec_extract (a, 3); ++} ++ ++#if ELEMENTS >= 8 ++RTYPE ++get_auto_4 (vector TYPE a) ++{ ++ return (RTYPE) vec_extract (a, 4); ++} ++ ++RTYPE ++get_auto_5 (vector TYPE a) ++{ ++ return (RTYPE) vec_extract (a, 5); ++} ++ ++RTYPE ++get_auto_6 (vector TYPE a) ++{ ++ return (RTYPE) vec_extract (a, 6); ++} ++ ++RTYPE ++get_auto_7 (vector TYPE a) ++{ ++ return (RTYPE) vec_extract (a, 7); ++} ++ ++#if ELEMENTS >= 16 ++RTYPE ++get_auto_8 (vector TYPE a) ++{ ++ return (RTYPE) vec_extract (a, 8); ++} ++ ++RTYPE ++get_auto_9 (vector TYPE a) ++{ ++ return (RTYPE) vec_extract (a, 9); ++} ++ ++RTYPE ++get_auto_10 (vector TYPE a) ++{ ++ return (RTYPE) vec_extract (a, 10); ++} ++ ++RTYPE ++get_auto_11 (vector TYPE a) ++{ ++ return (RTYPE) vec_extract (a, 11); ++} ++ ++RTYPE ++get_auto_12 (vector TYPE a) ++{ ++ return (RTYPE) vec_extract (a, 12); ++} ++ ++RTYPE ++get_auto_13 (vector TYPE a) ++{ ++ return (RTYPE) vec_extract (a, 13); ++} ++ ++RTYPE ++get_auto_14 (vector TYPE a) ++{ ++ return (RTYPE) vec_extract (a, 14); ++} ++ ++RTYPE ++get_auto_15 (vector TYPE a) ++{ ++ return (RTYPE) vec_extract (a, 15); ++} ++ ++#endif ++#endif ++#endif ++ ++ ++/* Tests for the normal case of vec_extract where the vector is in a register ++ and returning the result in a register as a return value. */ ++#ifdef DISABLE_INLINE_OF_GET_AUTO_N ++__attribute__ ((__noinline__)) ++#else ++/* gcc issues warning: always_inline function might not be inlinable ++ ++ __attribute__ ((__always_inline__)) ++*/ ++#endif ++RTYPE ++get_auto_n (vector TYPE a, ssize_t n) ++{ ++ return (RTYPE) vec_extract (a, n); ++} ++ ++typedef RTYPE (*auto_func_type) (vector TYPE); ++ ++static auto_func_type get_auto_const[] = { ++ get_auto_0, ++ get_auto_1, ++#if ELEMENTS >= 4 ++ get_auto_2, ++ get_auto_3, ++#if ELEMENTS >= 8 ++ get_auto_4, ++ get_auto_5, ++ get_auto_6, ++ get_auto_7, ++#if ELEMENTS >= 16 ++ get_auto_8, ++ get_auto_9, ++ get_auto_10, ++ get_auto_11, ++ get_auto_12, ++ get_auto_13, ++ get_auto_14, ++ get_auto_15, ++#endif ++#endif ++#endif ++}; ++ ++extern void do_auto (vector TYPE a) __attribute__((__noinline__)); ++ ++void ++do_auto (vector TYPE a) ++{ ++ size_t i; ++ ++ for (i = 1; i < 40; i += 3) ++ { ++ TRACE ("do_auto, i: ", i); ++ TRACE (" get_auto_const[i] returns: ", ++ (*get_auto_const [i % ELEMENTS]) (a)); ++ TRACE (" get_auto_n returns", get_auto_n (a, i)); ++ check (get_auto_n (a, i), (*get_auto_const [i % ELEMENTS]) (a)); ++ } ++} ++ ++ ++ ++/* Main program to test all of the possibilities. */ ++int ++main (void) ++{ ++ size_t i; ++ vector TYPE x = INITIAL; ++ vector TYPE *p, *p2, a, y; ++ vector TYPE z[2]; ++ ++ a = deoptimize (x); ++ ++ do_auto (a); ++ ++ return 0; ++} +Index: gcc/testsuite/gcc.target/powerpc/vsx-builtin-17a.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/vsx-builtin-17a.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/vsx-builtin-17a.c (.../branches/gcc-8-branch) +@@ -0,0 +1,155 @@ ++/* { dg-do run } */ ++/* { dg-require-effective-target vmx_hw } */ ++/* { dg-options "-maltivec" } */ ++ ++/* This test should run the same on any target that supports altivec/dfp ++ instructions. Intentionally not specifying cpu in order to test ++ all code generation paths. */ ++ ++#include <altivec.h> ++ ++extern void abort (void); ++ ++#define CONST0 (0) ++#define CONST1 (1) ++#define CONST2 (2) ++#define CONST3 (3) ++#define CONST4 (4) ++#define CONST5 (5) ++#define CONST6 (6) ++#define CONST7 (7) ++ ++ ++/* Test that indices > length of vector are applied modulo the vector ++ length. */ ++ ++/* Test for vector residing in register. */ ++unsigned short s3 (vector unsigned short v) ++{ ++ return __builtin_vec_extract (v, 3); ++} ++ ++unsigned short s7 (vector unsigned short v) ++{ ++ return __builtin_vec_extract (v, 7); ++} ++ ++unsigned short s21 (vector unsigned short v) ++{ ++ return __builtin_vec_extract (v, 21); ++} ++ ++unsigned short s30 (vector unsigned short v) ++{ ++ return __builtin_vec_extract (v, 30); ++} ++ ++/* Test for vector residing in memory. */ ++unsigned short ms3 (vector unsigned short *vp) ++{ ++ return __builtin_vec_extract (*vp, 3); ++} ++ ++unsigned short ms7 (vector unsigned short *vp) ++{ ++ return __builtin_vec_extract (*vp, 7); ++} ++ ++unsigned short ms21 (vector unsigned short *vp) ++{ ++ return __builtin_vec_extract (*vp, 21); ++} ++ ++unsigned short ms30 (vector unsigned short *vp) ++{ ++ return __builtin_vec_extract (*vp, 30); ++} ++ ++/* Test the same with variable indices. */ ++ ++/* Test for variable selector and vector residing in register. */ ++__attribute__((noinline)) ++unsigned short ci (vector unsigned short v, int i) ++{ ++ return __builtin_vec_extract (v, i); ++} ++ ++/* Test for variable selector and vector residing in memory. */ ++__attribute__((noinline)) ++unsigned short mci (vector unsigned short *vp, int i) ++{ ++ return __builtin_vec_extract (*vp, i); ++} ++ ++ ++int main (int argc, unsigned short *argv[]) { ++ vector unsigned short sv = { ++ CONST0, CONST1, CONST2, CONST3, CONST4, CONST5, CONST6, CONST7 }; ++ unsigned short s; ++ ++ s = s3 (sv); ++ if (s != CONST3) ++ abort (); ++ ++ s = s7 (sv); ++ if (s != CONST7) ++ abort (); ++ ++ s = s21 (sv); ++ if (s != CONST5) ++ abort (); ++ ++ s = s30 (sv); ++ if (s != CONST6) ++ abort (); ++ ++ s = ms3 (&sv); ++ if (s != CONST3) ++ abort (); ++ ++ s = ms7 (&sv); ++ if (s != CONST7) ++ abort (); ++ ++ s = ms21 (&sv); ++ if (s != CONST5) ++ abort (); ++ ++ s = ms30 (&sv); ++ if (s != CONST6) ++ abort (); ++ ++ s = ci (sv, 5); ++ if (s != CONST5) ++ abort (); ++ ++ s = ci (sv, 2); ++ if (s != CONST2) ++ abort (); ++ ++ s = ci (sv, 15); ++ if (s != CONST7) ++ abort (); ++ ++ s = ci (sv, 28); ++ if (s != CONST4) ++ abort (); ++ ++ s = mci (&sv, 5); ++ if (s != CONST5) ++ abort (); ++ ++ s = mci (&sv, 12); ++ if (s != CONST4) ++ abort (); ++ ++ s = mci (&sv, 25); ++ if (s != CONST1) ++ abort (); ++ ++ s = mci (&sv, 16); ++ if (s != CONST0) ++ abort (); ++ ++ return 0; ++} +Index: gcc/testsuite/gcc.target/powerpc/spec-barr-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/spec-barr-1.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/spec-barr-1.c (.../branches/gcc-8-branch) +@@ -7,4 +7,4 @@ + __builtin_ppc_speculation_barrier (); + } + +-/* { dg-final { scan-assembler "ori 31,31,0" } } */ ++/* { dg-final { scan-assembler {ori\s+r?31,r?31,r?0} } } */ +Index: gcc/testsuite/gcc.target/powerpc/pr92090.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/pr92090.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/pr92090.c (.../branches/gcc-8-branch) +@@ -0,0 +1,43 @@ ++/* { dg-do compile } */ ++/* { dg-options "-mcpu=power8 -Os" } */ ++/* { dg-additional-options "-mbig" { target powerpc64le-*-* } } */ ++ ++/* Verify that we don't ICE. */ ++ ++_Atomic int a; ++_Atomic long double b, c; ++int j; ++void foo (void); ++void bar (int, int, int, int); ++ ++void ++bug (void) ++{ ++ b = 1; ++ int d, e, f, g; ++ while (a) ++ ; ++ for (int h = 0; h < 10000; h++) ++ { ++ double i = b /= 3; ++ foo (); ++ if (i) ++ { ++ if (i == 1) ++ d++; ++ e++; ++ b = 0; ++ } ++ else ++ { ++ if (i == 2) ++ f++; ++ g++; ++ b = 1; ++ } ++ } ++ bar (d, e, f, g); ++ c = 1; ++ for (int h; h; h++) ++ j = 0; ++} +Index: gcc/testsuite/gcc.target/powerpc/vsx-builtin-16d.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/vsx-builtin-16d.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/vsx-builtin-16d.c (.../branches/gcc-8-branch) +@@ -0,0 +1,163 @@ ++/* { dg-do run } */ ++/* { dg-require-effective-target vmx_hw } */ ++/* { dg-options "-maltivec -O3" } */ ++ ++/* This test should run the same on any target that supports altivec/vmx ++ instructions. Intentionally not specifying cpu in order to test ++ all code generation paths. */ ++ ++#include <altivec.h> ++ ++extern void abort (void); ++ ++#define CONST0 (0) ++#define CONST1 (1) ++#define CONST2 (2) ++#define CONST3 (3) ++#define CONST4 (4) ++#define CONST5 (5) ++#define CONST6 (6) ++#define CONST7 (7) ++#define CONST8 (8) ++#define CONST9 (9) ++#define CONSTA (10) ++#define CONSTB (11) ++#define CONSTC (12) ++#define CONSTD (13) ++#define CONSTE (14) ++#define CONSTF (15) ++ ++ ++/* Test that indices > length of vector are applied modulo the vector ++ length. */ ++ ++/* Test for vector residing in register. */ ++vector unsigned char c0 (vector unsigned char v, unsigned char x) ++{ ++ return vec_insert (x, v, 0); ++} ++ ++vector unsigned char c9 (vector unsigned char v, unsigned char x) ++{ ++ return vec_insert (x, v, 9); ++} ++ ++vector unsigned char c21 (vector unsigned char v, unsigned char x) ++{ ++ return vec_insert (x, v, 21); ++} ++ ++vector unsigned char c30 (vector unsigned char v, unsigned char x) ++{ ++ return vec_insert (x, v, 30); ++} ++ ++/* Test for vector residing in memory. */ ++vector unsigned char mc0 (vector unsigned char *vp, unsigned char x) ++{ ++ return vec_insert (x, *vp, 0); ++} ++ ++vector unsigned char mc9 (vector unsigned char *vp, unsigned char x) ++{ ++ return vec_insert (x, *vp, 9); ++} ++ ++vector unsigned char mc21 (vector unsigned char *vp, unsigned char x) ++{ ++ return vec_insert (x, *vp, 21); ++} ++ ++vector unsigned char mc30 (vector unsigned char *vp, unsigned char x) ++{ ++ return vec_insert (x, *vp, 30); ++} ++ ++/* Test the same with variable indices. */ ++ ++/* Test for variable selector and vector residing in register. */ ++__attribute__((noinline)) ++vector unsigned char ci (vector unsigned char v, int i, unsigned char x) ++{ ++ return vec_insert (x, v, i); ++} ++ ++/* Test for variable selector and vector residing in memory. */ ++__attribute__((noinline)) ++vector unsigned char mci (vector unsigned char *vp, int i, unsigned char x) ++{ ++ return vec_insert (x, *vp, i); ++} ++ ++ ++int main (int argc, char *argv[]) { ++ vector unsigned char cv = { CONST0, CONST1, CONST2, CONST3, ++ CONST4, CONST5, CONST6, CONST7, ++ CONST8, CONST9, CONSTA, CONSTB, ++ CONSTC, CONSTD, CONSTE, CONSTF }; ++ cv = c0 (cv, CONST3); ++ if (cv [0] != CONST3) ++ abort (); ++ ++ cv = c9 (cv, CONST2); ++ if (cv [9] != CONST2) ++ abort (); ++ ++ cv = c21 (cv, CONSTF); ++ if (cv [5] != CONSTF) ++ abort (); ++ ++ cv = c30 (cv, CONST3); ++ if (cv [14] != CONST3) ++ abort (); ++ ++ cv = mc0 (&cv, CONST4); ++ if (cv [0] != CONST4) ++ abort (); ++ ++ cv = mc9 (&cv, CONST3); ++ if (cv [9] != CONST3) ++ abort (); ++ ++ cv = mc21 (&cv, CONST1); ++ if (cv [5] != CONST1) ++ abort (); ++ ++ cv = mc30 (&cv, CONSTC); ++ if (cv [14] != CONSTC) ++ abort (); ++ ++ cv = ci (cv, 8, CONSTD); ++ if (cv [8] != CONSTD) ++ abort (); ++ ++ cv = ci (cv, 13, CONST5); ++ if (cv [13] != CONST5) ++ abort (); ++ ++ cv = ci (cv, 23, CONST6); ++ if (cv [7] != CONST6) ++ abort (); ++ ++ cv = ci (cv, 31, CONST7); ++ if (cv [15] != CONST7) ++ abort (); ++ ++ cv = mci (&cv, 5, CONST8); ++ if (cv [5] != CONST8) ++ abort (); ++ ++ cv = mci (&cv, 12, CONST9); ++ if (cv [12] != CONST9) ++ abort (); ++ ++ cv = mci (&cv, 25, CONSTA); ++ if (cv [9] != CONSTA) ++ abort (); ++ ++ cv = mci (&cv, 16, CONSTB); ++ if (cv [0] != CONSTB) ++ abort (); ++ ++ return 0; ++} +Index: gcc/testsuite/gcc.target/powerpc/pr88100.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/pr88100.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/pr88100.c (.../branches/gcc-8-branch) +@@ -0,0 +1,44 @@ ++/* PR88100. Verify that rs6000 gimple-folding code handles the ++ vec_splat_{su}{8,16,32} invalid data properly. */ ++ ++/* { dg-do compile } */ ++/* { dg-require-effective-target powerpc_altivec_ok } */ ++/* { dg-options "-maltivec" } */ ++ ++#include <altivec.h> ++ ++vector unsigned char ++splatu1 (void) ++{ ++ return vec_splat_u8(0x100);/* { dg-error "argument 1 must be a 5-bit signed literal" } */ ++} ++ ++vector unsigned short ++splatu2 (void) ++{ ++ return vec_splat_u16(0x10000);/* { dg-error "argument 1 must be a 5-bit signed literal" } */ ++} ++ ++vector unsigned int ++splatu3 (void) ++{ ++ return vec_splat_u32(0x10000000);/* { dg-error "argument 1 must be a 5-bit signed literal" } */ ++} ++ ++vector signed char ++splats1 (void) ++{ ++ return vec_splat_s8(0x100);/* { dg-error "argument 1 must be a 5-bit signed literal" } */ ++} ++ ++vector signed short ++splats2 (void) ++{ ++ return vec_splat_s16(0x10000);/* { dg-error "argument 1 must be a 5-bit signed literal" } */ ++} ++ ++vector signed int ++splats3 (void) ++{ ++ return vec_splat_s32(0x10000000);/* { dg-error "argument 1 must be a 5-bit signed literal" } */ ++} +Index: gcc/testsuite/gcc.target/powerpc/vsx-builtin-17c.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/vsx-builtin-17c.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/vsx-builtin-17c.c (.../branches/gcc-8-branch) +@@ -0,0 +1,154 @@ ++/* { dg-do run } */ ++/* { dg-require-effective-target vmx_hw } */ ++/* { dg-options "-maltivec" } */ ++ ++/* This test should run the same on any target that supports altivec/vmx ++ instructions. Intentionally not specifying cpu in order to test ++ all code generation paths. */ ++ ++#include <altivec.h> ++ ++extern void abort (void); ++ ++#define CONST0 (0) ++#define CONST1 (1) ++#define CONST2 (2) ++#define CONST3 (3) ++#define CONST4 (4) ++#define CONST5 (5) ++#define CONST6 (6) ++#define CONST7 (7) ++ ++ ++/* Test that indices > length of vector are applied modulo the vector ++ length. */ ++ ++/* Test for vector residing in register. */ ++vector unsigned short s3 (vector unsigned short v, unsigned short x) ++{ ++ return vec_insert (x, v, 3); ++} ++ ++vector unsigned short s7 (vector unsigned short v, unsigned short x) ++{ ++ return vec_insert (x, v, 7); ++} ++ ++vector unsigned short s21 (vector unsigned short v, unsigned short x) ++{ ++ return vec_insert (x, v, 21); ++} ++ ++vector unsigned short s30 (vector unsigned short v, unsigned short x) ++{ ++ return vec_insert (x, v, 30); ++} ++ ++/* Test for vector residing in memory. */ ++vector unsigned short ms3 (vector unsigned short *vp, unsigned short x) ++{ ++ return vec_insert (x, *vp, 3); ++} ++ ++vector unsigned short ms7 (vector unsigned short *vp, unsigned short x) ++{ ++ return vec_insert (x, *vp, 7); ++} ++ ++vector unsigned short ms21 (vector unsigned short *vp, unsigned short x) ++{ ++ return vec_insert (x, *vp, 21); ++} ++ ++vector unsigned short ms30 (vector unsigned short *vp, unsigned short x) ++{ ++ return vec_insert (x, *vp, 30); ++} ++ ++/* Test the same with variable indices. */ ++ ++/* Test for variable selector and vector residing in register. */ ++__attribute__((noinline)) ++vector unsigned short ci (vector unsigned short v, int i, unsigned short x) ++{ ++ return vec_insert (x, v, i); ++} ++ ++/* Test for variable selector and vector residing in memory. */ ++__attribute__((noinline)) ++vector unsigned short mci (vector unsigned short *vp, int i, unsigned short x) ++{ ++ return vec_insert (x, *vp, i); ++} ++ ++ ++int main (int argc, unsigned short *argv[]) { ++ vector unsigned short sv = { ++ CONST0, CONST1, CONST2, CONST3, CONST4, CONST5, CONST6, CONST7 }; ++ ++ sv = s3 (sv, CONST1); ++ if (sv [3] != CONST1) ++ abort (); ++ ++ sv = s7 (sv, CONST2); ++ if (sv [7] != CONST2) ++ abort (); ++ ++ sv = s21 (sv, CONST3); ++ if (sv [5] != CONST3) ++ abort (); ++ ++ sv = s30 (sv, CONST4); ++ if (sv [6] != CONST4) ++ abort (); ++ ++ sv = ms3 (&sv, CONST5); ++ if (sv [3] != CONST5) ++ abort (); ++ ++ sv = ms7 (&sv, CONST6); ++ if (sv [7] != CONST6) ++ abort (); ++ ++ sv = ms21 (&sv, CONST7); ++ if (sv [5] != CONST7) ++ abort (); ++ ++ sv = ms30 (&sv, CONST0); ++ if (sv [6] != CONST0) ++ abort (); ++ ++ sv = ci (sv, 5, CONST1); ++ if (sv [5] != CONST1) ++ abort (); ++ ++ sv = ci (sv, 2, CONST3); ++ if (sv [2] != CONST3) ++ abort (); ++ ++ sv = ci (sv, 15, CONST2); ++ if (sv [7] != CONST2) ++ abort (); ++ ++ sv = ci (sv, 28, CONST5); ++ if (sv [4] != CONST5) ++ abort (); ++ ++ sv = mci (&sv, 5, CONST4); ++ if (sv [5] != CONST4) ++ abort (); ++ ++ sv = mci (&sv, 12, CONST6); ++ if (sv [4] != CONST6) ++ abort (); ++ ++ sv = mci (&sv, 25, CONST7); ++ if (sv [1] != CONST7) ++ abort (); ++ ++ sv = mci (&sv, 16, CONST4); ++ if (sv [0] != CONST4) ++ abort (); ++ ++ return 0; ++} +Index: gcc/testsuite/gcc.target/powerpc/pr89765-mc.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/pr89765-mc.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/pr89765-mc.c (.../branches/gcc-8-branch) +@@ -0,0 +1,400 @@ ++/* { dg-do run { target int128 } } */ ++/* { dg-require-effective-target vsx_hw } */ ++/* { dg-options "-mvsx -O2" } */ ++ ++/* This test should run the same on any target that supports vsx ++ instructions. Intentionally not specifying cpu in order to test ++ all code generation paths. */ ++ ++#include <stdlib.h> ++#include <stddef.h> ++#include <altivec.h> ++ ++#include <stdio.h> ++ ++static vector unsigned __int128 ++deoptimize_uint128 (vector unsigned __int128 a) ++{ ++ __asm__ (" # %x0" : "+v" (a)); ++ return a; ++} ++ ++static vector unsigned long long int ++deoptimize_ulong (vector unsigned long long int a) ++{ ++ __asm__ (" # %x0" : "+v" (a)); ++ return a; ++} ++ ++static vector unsigned int ++deoptimize_uint (vector unsigned int a) ++{ ++ __asm__ (" # %x0" : "+v" (a)); ++ return a; ++} ++ ++static vector unsigned char ++deoptimize_uchar (vector unsigned char a) ++{ ++ __asm__ (" # %x0" : "+v" (a)); ++ return a; ++} ++ ++static vector unsigned short ++deoptimize_ushort (vector unsigned short a) ++{ ++ __asm__ (" # %x0" : "+v" (a)); ++ return a; ++} ++ ++__attribute ((noinline)) ++vector unsigned __int128 ++set_auto_n_uint128 (vector unsigned __int128 a, int n, unsigned __int128 x) ++{ ++ return vec_insert (x, a, n); ++} ++ ++__attribute ((noinline)) ++vector unsigned long long int ++set_auto_n_ulong (vector unsigned long long int a, int n, ++ unsigned long long int x) ++{ ++ return vec_insert (x, a, n); ++} ++ ++__attribute ((noinline)) ++vector unsigned int ++set_auto_n_uint (vector unsigned int a, int n, unsigned int x) ++{ ++ return vec_insert (x, a, n); ++} ++ ++__attribute ((noinline)) ++vector unsigned char ++set_auto_n_uchar (vector unsigned char a, int n, unsigned char x) ++{ ++ return vec_insert (x, a, n); ++} ++ ++__attribute ((noinline)) ++vector unsigned short ++set_auto_n_ushort (vector unsigned short a, int n, unsigned short x) ++{ ++ return vec_insert (x, a, n); ++} ++ ++__attribute ((noinline)) ++unsigned __int128 ++get_auto_n_uint128 (vector unsigned __int128 a, int n) ++{ ++ return vec_extract (a, n); ++} ++ ++__attribute ((noinline)) ++unsigned long long int ++get_auto_n_ulong (vector unsigned long long int a, int n) ++{ ++ return vec_extract (a, n); ++} ++ ++__attribute ((noinline)) ++unsigned int ++get_auto_n_uint (vector unsigned int a, int n) ++{ ++ return vec_extract (a, n); ++} ++ ++__attribute ((noinline)) ++unsigned char ++get_auto_n_uchar (vector unsigned char a, int n) ++{ ++ return vec_extract (a, n); ++} ++ ++__attribute ((noinline)) ++unsigned short ++get_auto_n_ushort (vector unsigned short a, int n) ++{ ++ return vec_extract (a, n); ++} ++ ++int check_uint128_element (int i, unsigned __int128 entry) ++{ ++ printf ("checking uint128 entry at index %d\n", i); ++ ++ return (entry == ((((unsigned __int128) 0xffeeddccbbaa9988ULL) << 64) ++ | 0x0706050403020100ULL)); ++} ++ ++unsigned __int128 get_uint128_element (int i) ++{ ++ return ((((unsigned __int128) 0xffeeddccbbaa9988ULL) << 64) ++ | 0x0706050403020100ULL); ++} ++ ++int check_ulong_element (int i, unsigned long long int entry) ++{ ++ printf ("checking ulong entry 0x%llx at index %d\n", entry, i); ++ ++ switch (i % 2) ++ { ++ case 0: return (entry == 0x9999901010ULL); ++ case 1: return (entry == 0x7777733333ULL); ++ default: ++ return 0; ++ } ++} ++ ++unsigned long long int get_ulong_element (int i) ++{ ++ switch (i % 2) ++ { ++ case 0: return 0x9999901010ULL; ++ case 1: return 0x7777733333ULL; ++ } ++} ++ ++int check_uint_element (int i, unsigned int entry) ++{ ++ printf ("checking uint entry 0x%x at index %d\n", entry, i); ++ ++ switch (i % 4) ++ { ++ case 0: return (entry == 0x99999); ++ case 1: return (entry == 0x01010); ++ case 2: return (entry == 0x77777); ++ case 3: return (entry == 0x33333); ++ default: ++ return 0; ++ } ++} ++ ++unsigned int get_uint_element (int i) ++{ ++ switch (i % 4) ++ { ++ case 0: return 0x99999; ++ case 1: return 0x01010; ++ case 2: return 0x77777; ++ case 3: return 0x33333; ++ } ++} ++ ++int check_uchar_element (int i, unsigned char entry) ++{ ++ printf ("checking uchar entry 0x%x at index %d\n", entry, i); ++ switch (i % 16) ++ { ++ case 0: return (entry == 0x90); ++ case 1: return (entry == 0x80); ++ case 2: return (entry == 0x70); ++ case 3: return (entry == 0x60); ++ case 4: return (entry == 0x50); ++ case 5: return (entry == 0x40); ++ case 6: return (entry == 0x30); ++ case 7: return (entry == 0x20); ++ case 8: return (entry == 0x10); ++ case 9: return (entry == 0xf0); ++ case 10: return (entry == 0xe0); ++ case 11: return (entry == 0xd0); ++ case 12: return (entry == 0xc0); ++ case 13: return (entry == 0xb0); ++ case 14: return (entry == 0xa0); ++ case 15: return (entry == 0xff); ++ default: ++ return 0; ++ } ++} ++ ++unsigned char get_uchar_element (int i) ++{ ++ switch (i % 16) ++ { ++ case 0: return 0x90; ++ case 1: return 0x80; ++ case 2: return 0x70; ++ case 3: return 0x60; ++ case 4: return 0x50; ++ case 5: return 0x40; ++ case 6: return 0x30; ++ case 7: return 0x20; ++ case 8: return 0x10; ++ case 9: return 0xf0; ++ case 10: return 0xe0; ++ case 11: return 0xd0; ++ case 12: return 0xc0; ++ case 13: return 0xb0; ++ case 14: return 0xa0; ++ case 15: return 0xff; ++ } ++} ++ ++int check_ushort_element (int i, unsigned short entry) ++{ ++ printf ("checking ushort entry 0x%x at index %d\n", entry, i); ++ switch (i % 8) ++ { ++ case 0: return (entry == 0x9988); ++ case 1: return (entry == 0x8877); ++ case 2: return (entry == 0x7766); ++ case 3: return (entry == 0x6655); ++ case 4: return (entry == 0x5544); ++ case 5: return (entry == 0x4433); ++ case 6: return (entry == 0x3322); ++ case 7: return (entry == 0x2211); ++ default: ++ return 0; ++ } ++} ++ ++unsigned short get_ushort_element (int i) ++{ ++ switch (i % 8) ++ { ++ case 0: return 0x9988; ++ case 1: return 0x8877; ++ case 2: return 0x7766; ++ case 3: return 0x6655; ++ case 4: return 0x5544; ++ case 5: return 0x4433; ++ case 6: return 0x3322; ++ case 7: return 0x2211; ++ } ++} ++ ++vector unsigned __int128 ++init_auto_uint128 (vector unsigned __int128 a) ++{ ++ int i; ++ for (i = 0; i < 32; i += 3) ++ a = set_auto_n_uint128 (a, i, get_uint128_element (i)); ++ return a; ++} ++ ++void do_auto_uint128 (vector unsigned __int128 a) ++{ ++ int i; ++ unsigned __int128 c; ++ for (i = 0; i < 32; i += 3) ++ { ++ c = get_auto_n_uint128 (a, i); ++ if (!check_uint128_element (i, c)) abort (); ++ } ++} ++ ++vector unsigned long long int ++init_auto_ulong (vector unsigned long long int a) ++{ ++ int i; ++ for (i = 0; i < 32; i += 3) ++ a = set_auto_n_ulong (a, i, get_ulong_element (i)); ++ return a; ++} ++ ++void do_auto_ulong (vector unsigned long long int a) ++{ ++ int i; ++ unsigned long long int c; ++ for (i = 0; i < 32; i += 3) ++ { ++ c = get_auto_n_ulong (a, i); ++ if (!check_ulong_element (i, c)) abort (); ++ } ++ } ++ ++vector unsigned int init_auto_uint (vector unsigned int a) ++{ ++ int i; ++ for (i = 0; i < 32; i += 3) ++ a = set_auto_n_uint (a, i, get_uint_element (i)); ++ return a; ++} ++ ++void do_auto_uint (vector unsigned int a) ++{ ++ int i; ++ unsigned int c; ++ for (i = 0; i < 32; i += 3) ++ { ++ c = get_auto_n_uint (a, i); ++ if (!check_uint_element (i, c)) abort (); ++ } ++ } ++ ++vector unsigned short init_auto_ushort ( vector unsigned short a ) ++{ ++ int i; ++ for (i = 0; i < 32; i += 3) ++ a = set_auto_n_ushort (a, i, get_ushort_element (i)); ++ return a; ++} ++ ++void do_auto_ushort (vector unsigned short a) ++{ ++ int i; ++ unsigned short c; ++ for (i = 0; i < 32; i += 3) ++ { ++ c = get_auto_n_ushort (a, i); ++ if (!check_ushort_element (i, c)) abort (); ++ } ++} ++ ++vector unsigned char init_auto_uchar (vector unsigned char a) ++{ ++ int i; ++ for (i = 0; i < 32; i += 3) ++ a = set_auto_n_uchar (a, i, get_uchar_element (i)); ++ return a; ++} ++ ++void do_auto_uchar (vector unsigned char a) ++{ ++ int i; ++ unsigned char c; ++ for (i = 0; i < 32; i += 3) ++ { ++ c = get_auto_n_uchar (a, i); ++ if (!check_uchar_element (i, c)) abort (); ++ } ++} ++ ++int ++main (void) ++{ ++ size_t i; ++ ++ vector unsigned __int128 u = { 0 }; ++ vector unsigned __int128 du; ++ ++ vector unsigned long long int v = { 0, 0 }; ++ vector unsigned long long int dv; ++ ++ vector unsigned int x = { 0, 0, 0, 0 }; ++ vector unsigned int dx; ++ ++ vector unsigned char y = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; ++ vector unsigned char dy; ++ ++ vector unsigned short z = { 0, 0, 0, 0, 0, 0, 0, 0 }; ++ vector unsigned short dz; ++ ++ du = init_auto_uint128 (u); ++ dv = init_auto_ulong (v); ++ dx = init_auto_uint (x); ++ dy = init_auto_uchar (y); ++ dz = init_auto_ushort (z); ++ ++ du = deoptimize_uint128 (du); ++ dv = deoptimize_ulong (dv); ++ dx = deoptimize_uint (dx); ++ dy = deoptimize_uchar (dy); ++ dz = deoptimize_ushort (dz); ++ ++ do_auto_uint128 (du); ++ do_auto_ulong (dv); ++ do_auto_uint (dx); ++ do_auto_uchar (dy); ++ do_auto_ushort (dz); ++ return 0; ++} +Index: gcc/testsuite/gcc.target/powerpc/vsx-builtin-18b.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/vsx-builtin-18b.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/vsx-builtin-18b.c (.../branches/gcc-8-branch) +@@ -0,0 +1,149 @@ ++/* { dg-do run } */ ++/* { dg-require-effective-target vmx_hw } */ ++/* { dg-options "-maltivec -O3" } */ ++ ++/* This test should run the same on any target that supports altivec/dfp ++ instructions. Unsigned Intentionally not specifying cpu in order to test ++ all code generation paths. */ ++ ++#include <altivec.h> ++ ++extern void abort (void); ++ ++#define CONST0 (0) ++#define CONST1 (1) ++#define CONST2 (2) ++#define CONST3 (3) ++ ++/* Test that indices > length of vector are applied modulo the vector ++ length. */ ++ ++/* Test for vector residing in register. */ ++unsigned int s3 (vector unsigned int v) ++{ ++ return __builtin_vec_extract (v, 3); ++} ++ ++unsigned int s1 (vector unsigned int v) ++{ ++ return __builtin_vec_extract (v, 1); ++} ++ ++unsigned int s21 (vector unsigned int v) ++{ ++ return __builtin_vec_extract (v, 21); ++} ++ ++unsigned int s30 (vector unsigned int v) ++{ ++ return __builtin_vec_extract (v, 30); ++} ++ ++/* Test for vector residing in memory. */ ++unsigned int ms3 (vector unsigned int *vp) ++{ ++ return __builtin_vec_extract (*vp, 3); ++} ++ ++unsigned int ms1(vector unsigned int *vp) ++{ ++ return __builtin_vec_extract (*vp, 1); ++} ++ ++unsigned int ms21(vector unsigned int *vp) ++{ ++ return __builtin_vec_extract (*vp, 21); ++} ++ ++unsigned int ms30(vector unsigned int *vp) ++{ ++ return __builtin_vec_extract (*vp, 30); ++} ++ ++/* Test the same with variable indices. */ ++ ++/* Test for variable selector and vector residing in register. */ ++__attribute__((noinline)) ++unsigned int ci (vector unsigned int v, int i) ++{ ++ return __builtin_vec_extract (v, i); ++} ++ ++/* Test for variable selector and vector residing in memory. */ ++__attribute__((noinline)) ++unsigned int mci(vector unsigned int *vp, int i) ++{ ++ return __builtin_vec_extract (*vp, i); ++} ++ ++ ++unsigned int main (int argc, unsigned char *argv[]) { ++ vector unsigned int sv = { CONST0, CONST1, CONST2, CONST3 }; ++ unsigned int s; ++ ++ s = s3 (sv); ++ if (s != CONST3) ++ abort (); ++ ++ s = s1 (sv); ++ if (s != CONST1) ++ abort (); ++ ++ s = s21 (sv); ++ if (s != CONST1) ++ abort (); ++ ++ s = s30 (sv); ++ if (s != CONST2) ++ abort (); ++ ++ s = ms3 (&sv); ++ if (s != CONST3) ++ abort (); ++ ++ s = ms1 (&sv); ++ if (s != CONST1) ++ abort (); ++ ++ s = ms21 (&sv); ++ if (s != CONST1) ++ abort (); ++ ++ s = ms30 (&sv); ++ if (s != CONST2) ++ abort (); ++ ++ s = ci (sv, 5); ++ if (s != CONST1) ++ abort (); ++ ++ s = ci (sv, 2); ++ if (s != CONST2) ++ abort (); ++ ++ s = ci (sv, 15); ++ if (s != CONST3) ++ abort (); ++ ++ s = ci (sv, 28); ++ if (s != CONST0) ++ abort (); ++ ++ s = mci (&sv, 5); ++ if (s != CONST1) ++ abort (); ++ ++ s = mci (&sv, 12); ++ if (s != CONST0) ++ abort (); ++ ++ s = mci (&sv, 25); ++ if (s != CONST1) ++ abort (); ++ ++ s = mci (&sv, 16); ++ if (s != CONST0) ++ abort (); ++ ++ return 0; ++} +Index: gcc/testsuite/gcc.target/powerpc/darwin-bool-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/darwin-bool-1.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/darwin-bool-1.c (.../branches/gcc-8-branch) +@@ -1,6 +1,8 @@ + /* Check that sizeof(bool) is 4 if we don't use special options. */ + /* Matt Austern <austern@apple.com> */ + /* { dg-do run { target { powerpc*-*-darwin* && ilp32 } } } */ ++/* We do need to suppress the ISO C doesn't support _Bool message tho. */ ++/* { dg-options "-Wno-pedantic" } */ + + int dummy1[sizeof(_Bool) - 3]; + int dummy2[5 - sizeof(_Bool)]; +Index: gcc/testsuite/gcc.target/powerpc/vsx-builtin-19a.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/vsx-builtin-19a.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/vsx-builtin-19a.c (.../branches/gcc-8-branch) +@@ -0,0 +1,109 @@ ++/* { dg-do run { target int128 } } */ ++/* { dg-require-effective-target vsx_hw } */ ++/* { dg-options "-mvsx" } */ ++ ++/* This test should run the same on any target that supports vsx ++ instructions. Intentionally not specifying cpu in order to test ++ all code generation paths. */ ++ ++#include <altivec.h> ++ ++extern void abort (void); ++ ++#define CONST0 (31415926539LL) ++#define CONST1 (2 * 31415926539LL) ++ ++/* Test that indices > length of vector are applied modulo the vector ++ length. */ ++ ++/* Test for vector residing in register. */ ++unsigned long long int e0 (vector unsigned long long int v) ++{ ++ return __builtin_vec_extract (v, 0); ++} ++ ++unsigned long long int e3 (vector unsigned long long int v) ++{ ++ return __builtin_vec_extract (v, 3); ++} ++ ++/* Test for vector residing in memory. */ ++unsigned long long int me0 (vector unsigned long long int *vp) ++{ ++ return __builtin_vec_extract (*vp, 0); ++} ++ ++unsigned long long int me3 (vector unsigned long long int *vp) ++{ ++ return __builtin_vec_extract (*vp, 3); ++} ++ ++/* Test the same with variable indices. */ ++ ++/* Test for variable selector and vector residing in register. */ ++__attribute__((noinline)) ++unsigned long long int ei (vector unsigned long long int v, int i) ++{ ++ return __builtin_vec_extract (v, i); ++} ++ ++/* Test for variable selector and vector residing in memory. */ ++unsigned long long int mei (vector unsigned long long int *vp, int i) ++{ ++ return __builtin_vec_extract (*vp, i); ++} ++ ++int main (int argc, char *argv[]) { ++ vector unsigned long long int dv = { CONST0, CONST1 }; ++ unsigned long long int d; ++ ++ d = e0 (dv); ++ if (d != CONST0) ++ abort (); ++ ++ d = e3 (dv); ++ if (d != CONST1) ++ abort (); ++ ++ d = me0 (&dv); ++ if (d != CONST0) ++ abort (); ++ ++ d = me3 (&dv); ++ if (d != CONST1) ++ abort (); ++ ++ d = ei (dv, 0); ++ if (d != CONST0) ++ abort (); ++ ++ d = ei (dv, 1); ++ if (d != CONST1) ++ abort (); ++ ++ d = ei (dv, 2); ++ if (d != CONST0) ++ abort (); ++ ++ d = ei (dv, 3); ++ if (d != CONST1) ++ abort (); ++ ++ d = mei (&dv, 0); ++ if (d != CONST0) ++ abort (); ++ ++ d = mei (&dv, 1); ++ if (d != CONST1) ++ abort (); ++ ++ d = mei (&dv, 2); ++ if (d != CONST0) ++ abort (); ++ ++ d = mei (&dv, 3); ++ if (d != CONST1) ++ abort (); ++ ++ return 0; ++} +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_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/arm/acle/crc_hf_1.c (.../branches/gcc-8-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 <arm_acle.h> ++ ++uint32_t ++foo (uint32_t a, uint32_t b) ++{ ++ return __crc32cw (a, b); ++} +Index: gcc/testsuite/gcc.target/arm/pr86487.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/arm/pr86487.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/arm/pr86487.c (.../branches/gcc-8-branch) +@@ -0,0 +1,10 @@ ++/* { dg-skip-if "" { *-*-* } { "-march=armv[0-6]*" "-mthumb" } { "" } } */ ++/* { dg-require-effective-target arm_neon_hw } */ ++/* { dg-options "-O1 -mbig-endian" } */ ++/* { dg-add-options arm_neon } */ ++int a, b, c, d; ++long long fn1(long long p2) { return p2 == 0 ? -1 : -1 % p2; } ++void fn2(long long p1, short p2, long p3) { ++ b = fn1((d || 6) & a); ++ c = b | p3; ++} +Index: gcc/testsuite/gcc.target/arm/pr88167-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/arm/pr88167-1.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/arm/pr88167-1.c (.../branches/gcc-8-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_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/arm/pr88167-2.c (.../branches/gcc-8-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/pr89222.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/arm/pr89222.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/arm/pr89222.c (.../branches/gcc-8-branch) +@@ -0,0 +1,32 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O2" } */ ++ ++void g (void); ++ ++void f1 (int x) ++{ ++ if (x != (int) g + 3) ++ return; ++ g(); ++} ++ ++void (*a2)(void); ++ ++void f2 (void) ++{ ++ a2 = &g + 3; ++} ++ ++typedef void (*__sighandler_t)(int); ++void handler (int); ++ ++void f3 (int x) ++{ ++ __sighandler_t h = &handler; ++ if (h != (__sighandler_t) 2 && h != (__sighandler_t) 1) ++ h (x); ++} ++ ++/* { dg-final { scan-assembler-times {add(?:s)?\tr[0-9]+, r[0-9]+, #3} 2 } } */ ++/* { dg-final { scan-assembler-not {.word\tg\+3} } } */ ++/* { dg-final { scan-assembler-not {.word\thandler-1} } } */ +Index: gcc/testsuite/gcc.target/arm/f16_f64_conv_no_dp.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/arm/f16_f64_conv_no_dp.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/arm/f16_f64_conv_no_dp.c (.../branches/gcc-8-branch) +@@ -0,0 +1,16 @@ ++/* { dg-do compile } */ ++/* { dg-require-effective-target arm_fp16_ok } */ ++/* { dg-skip-if "do not override fpu" { *-*-* } { "-mfpu=*" } { "-mfpu=fpv5-sp-d16" } } */ ++/* { dg-skip-if "do not disable fpu" { *-*-* } { "-mfloat-abi=soft" } { * } } */ ++/* { dg-skip-if "do not override fp16-format" { *-*-* } { "-mfp16-format=*" } { "-mfp16-format=ieee" } } */ ++/* { dg-options "-O1 -mfpu=fpv5-sp-d16 -mfloat-abi=hard -mfp16-format=ieee" } */ ++ ++__fp16 foo (double a) ++{ ++ return a; ++} ++ ++double bar (__fp16 a) ++{ ++ return a; ++} +Index: gcc/testsuite/gcc.target/arm/pr89190.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/arm/pr89190.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/arm/pr89190.c (.../branches/gcc-8-branch) +@@ -0,0 +1,15 @@ ++/* { dg-do compile } */ ++/* { dg-require-effective-target arm_arch_v8m_base_ok } */ ++/* { dg-options "-O2" } */ ++/* { dg-add-options arm_arch_v8m_base } */ ++ ++long long a; ++int b, c; ++int d(int e, int f) { return e << f; } ++void g() { ++ long long h; ++ char i = d(b >= 7, 2); ++ c = i == 0 ?: 1 / i; ++ h = c && a ?: c + a; ++ b = h; ++} +Index: gcc/testsuite/gcc.target/alpha/pr86984.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/alpha/pr86984.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/alpha/pr86984.c (.../branches/gcc-8-branch) +@@ -0,0 +1,96 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -Wall -Wwrite-strings -Werror -fmerge-all-constants -fno-stack-protector -mieee -fdump-rtl-expand" } */ ++ ++struct expression { ++ unsigned long int num; ++}; ++union YYSTYPE { ++ unsigned long int num; ++ struct expression *exp; ++}; ++ ++typedef union YYSTYPE YYSTYPE; ++ ++struct expression * new_exp_0 (int); ++ ++union yyalloc { ++ short yyss_alloc; ++}; ++ ++static const signed char yypact[] = { ++ -9, -9, -10, -10, -9, 8, 36, -10, 13, -10, -9, -9, -9, -9, -9, -9, -9, -10, 26, 41, 45, 18, -2, 14, -10, -9, 36 }; ++static const unsigned char yydefact[] = { ++ 0, 0, 12, 11, 0, 0, 2, 10, 0, 1, 0, 0, 0, 0, 0, 0, 0, 13, 0, 4, 5, 6, 7, 8, 9, 0, 3 }; ++ ++static const signed char yypgoto[3] = "\366\366\377"; ++static const signed char yydefgoto[3] = "\377\005\006"; ++ ++static const unsigned char yytable[] = { ++ 7, 1, 2, 8, 3, 4, 15, 16, 9, 18, 19, 20, 21, 22, 23, 24, 10, 11, 12, 13, 14, 15, 16, 16, 26, 14, 15, 16, 17, 10, 11, 12, 13, 14, 15, 16, 0, 0, 25, 10, 11, 12, 13, 14, 15, 16, 12, 13, 14, 15, 16, 13, 14, 15, 16 }; ++ ++static const signed char yycheck[] = { ++ 1, 10, 11, 4, 13, 14, 8, 9, 0, 10, 11, 12, 13, 14, 15, 16, 3, 4, 5, 6, 7, 8, 9, 9, 25, 7, 8, 9, 15, 3, 4, 5, 6, 7, 8, 9, -1, -1, 12, 3, 4, 5, 6, 7, 8, 9, 5, 6, 7, 8, 9, 6, 7, 8, 9 }; ++ ++static const unsigned char yyr1[] = { ++ 0, 16, 17, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18 }; ++ ++static const unsigned char yyr2[] = { ++ 0, 2, 1, 5, 3, 3, 3, 3, 3, 3, 2, 1, 1, 3 }; ++ ++int __gettextparse (void) ++{ ++ int yystate = 0; ++ short yyssa[200]; ++ short *yyss = yyss; ++ short *yyssp = yyssa; ++ YYSTYPE yyvsa[200]; ++ YYSTYPE *yyvsp = yyvsa; ++ enum { yystacksize = 200 }; ++ int yylen = 0; ++ goto yysetstate; ++ yynewstate: yyssp++; ++ yysetstate: *yyssp = yystate; ++ ++ if (yyss + yystacksize - 1 <= yyssp) ++ { ++ long unsigned int yysize = yyssp - yyss + 1; ++ { ++ short *yyss1 = yyss; ++ union yyalloc *yyptr = (union yyalloc *) __builtin_malloc ((yystacksize * (sizeof (short) + sizeof (YYSTYPE)) + (sizeof (union yyalloc) - 1))); ++ if (!yyptr) return 0; ++ __builtin_memcpy (&yyptr->yyss_alloc, yyss, yysize * sizeof *(yyss)); ++ yyss = &yyptr->yyss_alloc; ++ if (yyss1 != yyssa) __builtin_free (yyss1); ++ } ++ if (yyss + yystacksize - 1 <= yyssp) ++ return 0; ++ } ++ ++ int yyn = yypact[yystate]; ++ if (yyn == -10) ++ goto yydefault; ++ ++ yyn = yytable[yyn]; ++ if (yyn <= 0) ++ goto yyreduce; ++ ++ yydefault: yyn = yydefact[yystate]; ++ yyreduce: yylen = yyr2[yyn]; ++ ++ YYSTYPE yyval; ++ if (yyn == 12 && (yyval.exp = new_exp_0 (0)) != 0) ++ (yyval.exp)->num = (yyvsp[0].num); ++ ++ (yyvsp -= yylen, yyssp -= yylen); ++ yyn = yyr1[yyn]; ++ yystate = yypgoto[yyn - 16] + *yyssp; ++ if (0 <= yystate && yystate <= 54 && yycheck[yystate] == *yyssp) ++ yystate = yytable[yystate]; ++ else ++ yystate = yydefgoto[yyn - 16]; ++ ++ goto yynewstate; ++} ++ ++/* { dg-final { scan-rtl-dump-not "const_int 230584300921" "expand" } } */ ++/* { dg-final { scan-assembler-not "yypgoto\\+230584300921" } } */ +Index: gcc/testsuite/gcc.target/s390/pr89775-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/s390/pr89775-1.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/s390/pr89775-1.c (.../branches/gcc-8-branch) +@@ -0,0 +1,17 @@ ++/* PR target/89775 */ ++/* { dg-do run } */ ++/* { dg-options "-O0 -fomit-frame-pointer" } */ ++/* { dg-additional-sources "pr89775-2.c" } */ ++ ++register void *sp __asm ("15"); ++ ++__attribute__((noipa)) int ++foo (const char *a, const char *b) ++{ ++ while (1) ++ { ++ char c = *a++; ++ if (c != *b++) return 0; ++ if (c == '\0') return 1; ++ } ++} +Index: gcc/testsuite/gcc.target/s390/pr89775-2.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/s390/pr89775-2.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/s390/pr89775-2.c (.../branches/gcc-8-branch) +@@ -0,0 +1,25 @@ ++/* PR target/89775 */ ++/* { dg-do compile } */ ++ ++extern int foo (const char *, const char *); ++ ++__attribute__((noipa)) void ++bar (const char *p) ++{ ++ static const char *x; ++ if (!x) ++ x = p; ++ else if (p != x) ++ __builtin_abort (); ++} ++ ++int ++main () ++{ ++ char a[8] = "abcdefg"; ++ bar (a); ++ if (foo (a, a) != 1) ++ __builtin_abort (); ++ bar (a); ++ return 0; ++} +Index: gcc/testsuite/gcc.target/s390/zvector/vec-addc-u128.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/s390/zvector/vec-addc-u128.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/s390/zvector/vec-addc-u128.c (.../branches/gcc-8-branch) +@@ -0,0 +1,10 @@ ++/* { dg-do compile { target { s390*-*-* } } } */ ++/* { dg-options "-O3 -mzarch -march=z13 -mzvector -fno-asynchronous-unwind-tables" } */ ++ ++#include <vecintrin.h> ++ ++vector unsigned char test(void) ++{ ++ vector unsigned char a = { 0 }; ++ return __builtin_s390_vec_addc_u128 (a, a); ++} +Index: gcc/testsuite/gcc.target/s390/zvector/xl-xst-align-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/s390/zvector/xl-xst-align-1.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/s390/zvector/xl-xst-align-1.c (.../branches/gcc-8-branch) +@@ -0,0 +1,45 @@ ++/* { dg-do compile { target { s390*-*-* } } } */ ++/* { dg-options "-O3 -mzarch -march=z14 -mzvector" } */ ++ ++#include <vecintrin.h> ++ ++vector float ++foo (float *a) ++{ ++ return vec_xl (0, a); ++} ++ ++vector float ++bar (const float *a) ++{ ++ return vec_xl (0, a); ++} ++ ++void ++baz (float *f, vector float a) ++{ ++ vec_xst (a, 0, f); ++} ++ ++vector float ++foo2 (float *a) ++{ ++ return vec_xlw4 (0, a); ++} ++ ++vector float ++bar2 (const float *a) ++{ ++ return vec_xlw4 (0, a); ++} ++ ++void ++baz2 (float *f, vector float a) ++{ ++ vec_xstw4 (a, 0, f); ++} ++ ++/* Make sure no alignment hints are generated. */ ++ ++/* { dg-final { scan-assembler-not "vl.*,3" } } */ ++/* { dg-final { scan-assembler-not "vst.*,3" } } */ +Index: gcc/testsuite/gcc.target/s390/zvector/xl-xst-align-2.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/s390/zvector/xl-xst-align-2.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/s390/zvector/xl-xst-align-2.c (.../branches/gcc-8-branch) +@@ -0,0 +1,48 @@ ++/* { dg-do compile { target { s390*-*-* } } } */ ++/* { dg-options "-O3 -mzarch -march=z14 -mzvector" } */ ++ ++#include <vecintrin.h> ++ ++typedef float __attribute__((aligned(8))) float_aligned; ++ ++vector float ++foo (float_aligned *a) ++{ ++ return vec_xl (0, a); ++} ++ ++vector float ++bar (const float_aligned *a) ++{ ++ return vec_xl (0, a); ++} ++ ++void ++baz (float_aligned *f, vector float a) ++{ ++ vec_xst (a, 0, f); ++} ++ ++vector float ++foo2 (float_aligned *a) ++{ ++ return vec_xlw4 (0, a); ++} ++ ++vector float ++bar2 (const float_aligned *a) ++{ ++ return vec_xlw4 (0, a); ++} ++ ++void ++baz2 (float_aligned *f, vector float a) ++{ ++ vec_xstw4 (a, 0, f); ++} ++ ++/* Make sure alignment hints are generated if the source or target ++ operand is properly aligned. */ ++ ++/* { dg-final { scan-assembler-times "vl\t%v\[0-9\]*,0\\(%r2\\),3" 4 } } */ ++/* { dg-final { scan-assembler-times "vst\t%v\[0-9\]*,0\\(%r2\\),3" 2 } } */ +Index: gcc/testsuite/gcc.target/s390/vector/vec-shift-2.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/s390/vector/vec-shift-2.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/s390/vector/vec-shift-2.c (.../branches/gcc-8-branch) +@@ -0,0 +1,24 @@ ++/* { dg-do run } */ ++/* { dg-options "-O3 -mzarch -march=z13 --save-temps" } */ ++ ++/* { dg-final { scan-assembler-times "veslf" 1 } } */ ++ ++typedef __attribute__((vector_size(16))) signed int v4si; ++ ++v4si __attribute__((noinline,noclone)) ++shift_left_by_scalar (v4si in, int shift_count) ++{ ++ return in << (3 + shift_count); ++} ++ ++int ++main () ++{ ++ v4si a = { 1, 2, 3, 4 }; ++ v4si result = shift_left_by_scalar (a, 1); ++ ++ if (result[1] != 32) ++ __builtin_abort (); ++ ++ return 0; ++} +Index: gcc/testsuite/gcc.target/sparc/overflow-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/sparc/overflow-1.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/sparc/overflow-1.c (.../branches/gcc-8-branch) +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-O -mcpu=v8" } */ ++/* { dg-options "-O -fno-pie -mcpu=v8" } */ + /* { dg-require-effective-target ilp32 } */ + + #include <stdbool.h> +Index: gcc/testsuite/gcc.target/sparc/overflow-5.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/sparc/overflow-5.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/sparc/overflow-5.c (.../branches/gcc-8-branch) +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-O -mvis3" } */ ++/* { dg-options "-O -fno-pie -mvis3" } */ + /* { dg-require-effective-target lp64 } */ + + #include <stdbool.h> +Index: gcc/testsuite/gcc.target/sparc/overflow-2.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/sparc/overflow-2.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/sparc/overflow-2.c (.../branches/gcc-8-branch) +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-O -mcpu=v8" } */ ++/* { dg-options "-O -fno-pie -mcpu=v8" } */ + /* { dg-require-effective-target ilp32 } */ + + #include <stdbool.h> +Index: gcc/testsuite/gcc.target/sparc/overflow-3.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/sparc/overflow-3.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/sparc/overflow-3.c (.../branches/gcc-8-branch) +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-O" } */ ++/* { dg-options "-O -fno-pie" } */ + /* { dg-require-effective-target lp64 } */ + + #include <stdbool.h> +Index: gcc/testsuite/gcc.target/sparc/overflow-4.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/sparc/overflow-4.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/sparc/overflow-4.c (.../branches/gcc-8-branch) +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-O -mno-vis3" } */ ++/* { dg-options "-O -fno-pie -mno-vis3" } */ + /* { dg-require-effective-target lp64 } */ + + #include <stdbool.h> +Index: gcc/testsuite/gcc.target/sparc/20161111-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/sparc/20161111-1.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/sparc/20161111-1.c (.../branches/gcc-8-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/dwarfregtable-3.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/mips/dwarfregtable-3.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/mips/dwarfregtable-3.c (.../branches/gcc-8-branch) +@@ -0,0 +1,5 @@ ++/* Check if content of dwarf reg size table matches the expected. */ ++/* { dg-do run } */ ++/* { dg-options "-mabi=32 -mfp64" } */ ++ ++#include "dwarfregtable.h" +Index: gcc/testsuite/gcc.target/mips/dwarfregtable-4.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/mips/dwarfregtable-4.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/mips/dwarfregtable-4.c (.../branches/gcc-8-branch) +@@ -0,0 +1,5 @@ ++/* Check if content of dwarf reg size table matches the expected. */ ++/* { dg-do run } */ ++/* { dg-options "-mabi=32 -mfp64 -modd-spreg" } */ ++ ++#include "dwarfregtable.h" +Index: gcc/testsuite/gcc.target/mips/msa-fmadd-o32.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/mips/msa-fmadd-o32.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/mips/msa-fmadd-o32.c (.../branches/gcc-8-branch) +@@ -0,0 +1,101 @@ ++/* { dg-do compile } */ ++/* { dg-options "-mabi=32 -mfp64 -mhard-float -mmsa -EL -flax-vector-conversions" } */ ++/* { dg-skip-if "uses global registers" { *-*-* } { "-O0" } { "" } } */ ++ ++typedef int v4i32 __attribute__ ((vector_size(16))); ++typedef float v4f32 __attribute__ ((vector_size(16))); ++typedef double v2f64 __attribute__ ((vector_size(16))); ++ ++/* Test that MSA FMADD-like intrinsics do not use first operand for multiplication. */ ++ ++register v4i32 a __asm__("$f20"); ++register v4i32 b __asm__("$f22"); ++register v4f32 c __asm__("$f24"); ++register v4f32 d __asm__("$f26"); ++register v2f64 e __asm__("$f28"); ++register v2f64 f __asm__("$f30"); ++ ++void ++maddv_b_msa (void) ++{ ++ a = __builtin_msa_maddv_b (a, b, b); ++} ++/* { dg-final { scan-assembler "maddv\\\.b\t\\\$w20,\\\$w22,\\\$w22" } } */ ++ ++void ++maddv_h_msa (void) ++{ ++ a = __builtin_msa_maddv_h (a, b, b); ++} ++/* { dg-final { scan-assembler "maddv\\\.h\t\\\$w20,\\\$w22,\\\$w22" } } */ ++ ++void ++maddv_w_msa (void) ++{ ++ a = __builtin_msa_maddv_w (a, b, b); ++} ++/* { dg-final { scan-assembler "maddv\\\.w\t\\\$w20,\\\$w22,\\\$w22" } } */ ++ ++void ++maddv_d_msa (void) ++{ ++ a = __builtin_msa_maddv_d (a, b, b); ++} ++/* { dg-final { scan-assembler "maddv\\\.d\t\\\$w20,\\\$w22,\\\$w22" } } */ ++ ++void ++msubv_b_msa (void) ++{ ++ a = __builtin_msa_msubv_b (a, b, b); ++} ++/* { dg-final { scan-assembler "msubv\\\.b\t\\\$w20,\\\$w22,\\\$w22" } } */ ++ ++void ++msubv_h_msa (void) ++{ ++ a = __builtin_msa_msubv_h (a, b, b); ++} ++/* { dg-final { scan-assembler "msubv\\\.h\t\\\$w20,\\\$w22,\\\$w22" } } */ ++ ++void ++msubv_w_msa (void) ++{ ++ a = __builtin_msa_msubv_w (a, b, b); ++} ++/* { dg-final { scan-assembler "msubv\\\.w\t\\\$w20,\\\$w22,\\\$w22" } } */ ++ ++void ++msubv_d_msa (void) ++{ ++ a = __builtin_msa_msubv_d (a, b, b); ++} ++/* { dg-final { scan-assembler "msubv\\\.d\t\\\$w20,\\\$w22,\\\$w22" } } */ ++ ++void ++fmadd_w_msa (void) ++{ ++ c = __builtin_msa_fmadd_w (c, d, d); ++} ++/* { dg-final { scan-assembler "fmadd\\\.w\t\\\$w24,\\\$w26,\\\$w26" } } */ ++ ++void ++fmadd_d_msa (void) ++{ ++ e = __builtin_msa_fmadd_d (e, f, f); ++} ++/* { dg-final { scan-assembler "fmadd\\\.d\t\\\$w28,\\\$w30,\\\$w30" } } */ ++ ++void ++fmsub_w_msa (void) ++{ ++ c = __builtin_msa_fmsub_w (c, d, d); ++} ++/* { dg-final { scan-assembler "fmsub\\\.w\t\\\$w24,\\\$w26,\\\$w26" } } */ ++ ++void ++fmsub_d_msa (void) ++{ ++ e = __builtin_msa_fmsub_d (e, f, f); ++} ++/* { dg-final { scan-assembler "fmsub\\\.d\t\\\$w28,\\\$w30,\\\$w30" } } */ ++ +Index: gcc/testsuite/gcc.target/mips/msa-fmadd-n64.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/mips/msa-fmadd-n64.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/mips/msa-fmadd-n64.c (.../branches/gcc-8-branch) +@@ -0,0 +1,101 @@ ++/* { dg-do compile } */ ++/* { dg-options "-mabi=64 -mfp64 -mhard-float -mmsa -EL -flax-vector-conversions" } */ ++/* { dg-skip-if "uses global registers" { *-*-* } { "-O0" } { "" } } */ ++ ++typedef int v4i32 __attribute__ ((vector_size(16))); ++typedef float v4f32 __attribute__ ((vector_size(16))); ++typedef double v2f64 __attribute__ ((vector_size(16))); ++ ++/* Test that MSA FMADD-like intrinsics do not use first operand for multiplication. */ ++ ++register v4i32 a __asm__("$f24"); ++register v4i32 b __asm__("$f25"); ++register v4f32 c __asm__("$f26"); ++register v4f32 d __asm__("$f27"); ++register v2f64 e __asm__("$f28"); ++register v2f64 f __asm__("$f29"); ++ ++void ++maddv_b_msa (void) ++{ ++ a = __builtin_msa_maddv_b (a, b, b); ++} ++/* { dg-final { scan-assembler "maddv\\\.b\t\\\$w24,\\\$w25,\\\$w25" } } */ ++ ++void ++maddv_h_msa (void) ++{ ++ a = __builtin_msa_maddv_h (a, b, b); ++} ++/* { dg-final { scan-assembler "maddv\\\.h\t\\\$w24,\\\$w25,\\\$w25" } } */ ++ ++void ++maddv_w_msa (void) ++{ ++ a = __builtin_msa_maddv_w (a, b, b); ++} ++/* { dg-final { scan-assembler "maddv\\\.w\t\\\$w24,\\\$w25,\\\$w25" } } */ ++ ++void ++maddv_d_msa (void) ++{ ++ a = __builtin_msa_maddv_d (a, b, b); ++} ++/* { dg-final { scan-assembler "maddv\\\.d\t\\\$w24,\\\$w25,\\\$w25" } } */ ++ ++void ++msubv_b_msa (void) ++{ ++ a = __builtin_msa_msubv_b (a, b, b); ++} ++/* { dg-final { scan-assembler "msubv\\\.b\t\\\$w24,\\\$w25,\\\$w25" } } */ ++ ++void ++msubv_h_msa (void) ++{ ++ a = __builtin_msa_msubv_h (a, b, b); ++} ++/* { dg-final { scan-assembler "msubv\\\.h\t\\\$w24,\\\$w25,\\\$w25" } } */ ++ ++void ++msubv_w_msa (void) ++{ ++ a = __builtin_msa_msubv_w (a, b, b); ++} ++/* { dg-final { scan-assembler "msubv\\\.w\t\\\$w24,\\\$w25,\\\$w25" } } */ ++ ++void ++msubv_d_msa (void) ++{ ++ a = __builtin_msa_msubv_d (a, b, b); ++} ++/* { dg-final { scan-assembler "msubv\\\.d\t\\\$w24,\\\$w25,\\\$w25" } } */ ++ ++void ++fmadd_w_msa (void) ++{ ++ c = __builtin_msa_fmadd_w (c, d, d); ++} ++/* { dg-final { scan-assembler "fmadd\\\.w\t\\\$w26,\\\$w27,\\\$w27" } } */ ++ ++void ++fmadd_d_msa (void) ++{ ++ e = __builtin_msa_fmadd_d (e, f, f); ++} ++/* { dg-final { scan-assembler "fmadd\\\.d\t\\\$w28,\\\$w29,\\\$w29" } } */ ++ ++void ++fmsub_w_msa (void) ++{ ++ c = __builtin_msa_fmsub_w (c, d, d); ++} ++/* { dg-final { scan-assembler "fmsub\\\.w\t\\\$w26,\\\$w27,\\\$w27" } } */ ++ ++void ++fmsub_d_msa (void) ++{ ++ e = __builtin_msa_fmsub_d (e, f, f); ++} ++/* { dg-final { scan-assembler "fmsub\\\.d\t\\\$w28,\\\$w29,\\\$w29" } } */ ++ +Index: gcc/testsuite/gcc.target/mips/get-fcsr-3.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/mips/get-fcsr-3.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/mips/get-fcsr-3.c (.../branches/gcc-8-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_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/mips/cfgcleanup-jalr1.c (.../branches/gcc-8-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/cfgcleanup-jalr2.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/mips/cfgcleanup-jalr2.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/mips/cfgcleanup-jalr2.c (.../branches/gcc-8-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/dwarfregtable-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/mips/dwarfregtable-1.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/mips/dwarfregtable-1.c (.../branches/gcc-8-branch) +@@ -0,0 +1,5 @@ ++/* Check if content of dwarf reg size table matches the expected. */ ++/* { dg-do run } */ ++/* { dg-options "-mabi=32 -mfp32" } */ ++ ++#include "dwarfregtable.h" +Index: gcc/testsuite/gcc.target/mips/dwarfregtable.h +=================================================================== +--- a/src/gcc/testsuite/gcc.target/mips/dwarfregtable.h (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/mips/dwarfregtable.h (.../branches/gcc-8-branch) +@@ -0,0 +1,22 @@ ++ ++typedef unsigned Unwind_Word __attribute__((__mode__(__unwind_word__))); ++ ++#define DWARF_FRAME_REGISTERS 188 ++ ++static unsigned char ref_dwarf_reg_size_table[DWARF_FRAME_REGISTERS + 1] = ++ { ++ [0 ... 66] = sizeof (Unwind_Word), ++ [80 ... 181] = sizeof (Unwind_Word) ++ }; ++ ++static unsigned char dwarf_reg_size_table[DWARF_FRAME_REGISTERS + 1] = {}; ++ ++int ++main (void) ++{ ++ __builtin_init_dwarf_reg_size_table (dwarf_reg_size_table); ++ if (__builtin_memcmp (ref_dwarf_reg_size_table, ++ dwarf_reg_size_table, DWARF_FRAME_REGISTERS + 1) != 0) ++ __builtin_abort (); ++ return 0; ++} +Index: gcc/testsuite/gcc.target/mips/cfgcleanup-jalr3.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/mips/cfgcleanup-jalr3.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/mips/cfgcleanup-jalr3.c (.../branches/gcc-8-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/mips/dwarfregtable-2.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/mips/dwarfregtable-2.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/mips/dwarfregtable-2.c (.../branches/gcc-8-branch) +@@ -0,0 +1,5 @@ ++/* Check if content of dwarf reg size table matches the expected. */ ++/* { dg-do run } */ ++/* { dg-options "-mabi=32 -mfpxx" } */ ++ ++#include "dwarfregtable.h" +Index: gcc/testsuite/gcc.target/riscv/promote-type-for-libcall.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/riscv/promote-type-for-libcall.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/riscv/promote-type-for-libcall.c (.../branches/gcc-8-branch) +@@ -0,0 +1,37 @@ ++/* { dg-do run } */ ++/* { dg-options "-O1 -ftree-slp-vectorize -funroll-loops" } */ ++ ++#include <stdio.h> ++#include <stdlib.h> ++#define N 4 ++volatile float f[N]; ++int x[N] __attribute__((aligned(8))); ++int main() { ++ int i; ++ x[0] = -1; ++ x[1] = 2; ++ x[2] = -2; ++ x[3] = 2; ++ ++ for (i=0;i<N;++i){ ++ f[i] = x[i]; ++ } ++ ++ if (f[0] != -1.0f) { ++ abort(); ++ } ++ ++ if (f[1] != 2.0f) { ++ abort(); ++ } ++ ++ if (f[2] != -2.0f) { ++ abort(); ++ } ++ ++ if (f[3] != 2.0f) { ++ abort(); ++ } ++ ++ return 0; ++} +Index: gcc/testsuite/gcc.target/aarch64/options_set_9.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/aarch64/options_set_9.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/aarch64/options_set_9.c (.../branches/gcc-8-branch) +@@ -0,0 +1,14 @@ ++/* { dg-do compile } */ ++/* { dg-additional-options "-march=armv8-a+simd+fp" } */ ++ ++int main () ++{ ++ return 0; ++} ++ ++/* { dg-final { scan-assembler-times {\.arch armv8\-a} 1 } } */ ++ ++ /* Check that grouping of bits that don't form a synthetic group don't turn ++ on the parent. e.g. rdma turns on simd+fp, but simd+fp does not turn on ++ rdma since rdma is it's own group. crypto however turns on aes and sha2 ++ and turning on sha2 and eas should turn on crypto!. */ +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_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/aarch64/nosplit-di-const-volatile_1.c (.../branches/gcc-8-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/options_set_1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/aarch64/options_set_1.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/aarch64/options_set_1.c (.../branches/gcc-8-branch) +@@ -0,0 +1,11 @@ ++/* { dg-do compile } */ ++/* { dg-additional-options "-march=armv8.2-a" } */ ++ ++int main () ++{ ++ return 0; ++} ++ ++/* { dg-final { scan-assembler-times {\.arch armv8\.2\-a\+crc} 1 } } */ ++ ++/* Check to see if crc is output by default. */ +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_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/aarch64/no-inline-lrint_3.c (.../branches/gcc-8-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/aarch64/options_set_2.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/aarch64/options_set_2.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/aarch64/options_set_2.c (.../branches/gcc-8-branch) +@@ -0,0 +1,11 @@ ++/* { dg-do compile } */ ++/* { dg-additional-options "-march=armv8.2-a+crypto" } */ ++ ++int main () ++{ ++ return 0; ++} ++ ++/* { dg-final { scan-assembler-times {\.arch armv8\.2\-a\+crypto\+crc} 1 } } */ ++ ++/* Check to see if crc and crypto are maintained if crypto specified. */ +Index: gcc/testsuite/gcc.target/aarch64/pr90075.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/aarch64/pr90075.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/aarch64/pr90075.c (.../branches/gcc-8-branch) +@@ -0,0 +1,21 @@ ++/* { dg-do compile } */ ++/* { dg-additional-options "-O1" } */ ++ ++typedef struct { ++ float one, two; ++} twofloats; ++ ++float ++bug (twofloats tf) ++{ ++ float f1, f2; ++ union { ++ twofloats tfloats; ++ float arr[2]; ++ } utfloats; ++ ++ utfloats.tfloats = tf; ++ f1 = utfloats.arr[1]; ++ f2 = __builtin_copysignf (0, f1); ++ return f2; ++} +Index: gcc/testsuite/gcc.target/aarch64/options_set_3.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/aarch64/options_set_3.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/aarch64/options_set_3.c (.../branches/gcc-8-branch) +@@ -0,0 +1,11 @@ ++/* { dg-do compile } */ ++/* { dg-additional-options "-march=armv8.2-a+aes+sha2+crypto" } */ ++ ++int main () ++{ ++ return 0; ++} ++ ++/* { dg-final { scan-assembler-times {\.arch armv8\.2\-a\+crypto\+crc} 1 } } */ ++ ++/* Check if smallest set is maintained when outputting. */ +Index: gcc/testsuite/gcc.target/aarch64/options_set_4.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/aarch64/options_set_4.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/aarch64/options_set_4.c (.../branches/gcc-8-branch) +@@ -0,0 +1,12 @@ ++/* { dg-do compile } */ ++/* { dg-additional-options "-march=armv8.2-a+aes+sha2" } */ ++ ++int main () ++{ ++ return 0; ++} ++ ++/* { dg-final { scan-assembler-times {\.arch armv8\.2\-a\+crypto\+crc} 1 } } */ ++ ++/* Check if individual bits that make up a grouping is specified that only the ++ grouping is kept. */ +\ No newline at end of file +Index: gcc/testsuite/gcc.target/aarch64/options_set_5.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/aarch64/options_set_5.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/aarch64/options_set_5.c (.../branches/gcc-8-branch) +@@ -0,0 +1,12 @@ ++/* { dg-do compile } */ ++/* { dg-additional-options "-march=armv8.2-a+aes+sha2+nosha2" } */ ++ ++int main () ++{ ++ return 0; ++} ++ ++/* { dg-final { scan-assembler-times {\.arch armv8\.2\-a\+crc\+aes} 1 } } */ ++ ++/* Check if turning off feature bits works correctly and grouping is no ++ longer valid. */ +Index: gcc/testsuite/gcc.target/aarch64/options_set_10.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/aarch64/options_set_10.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/aarch64/options_set_10.c (.../branches/gcc-8-branch) +@@ -0,0 +1,11 @@ ++/* { dg-do compile { target { { aarch64*-*-linux*} && native } } } */ ++/* { dg-additional-options "-mcpu=native" } */ ++ ++int main () ++{ ++ return 0; ++} ++ ++/* { dg-final { scan-assembler-not {\.arch .+\+profile.*} } } */ ++ ++ /* Check that an empty feature string is not detected during mcpu=native. */ +Index: gcc/testsuite/gcc.target/aarch64/options_set_6.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/aarch64/options_set_6.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/aarch64/options_set_6.c (.../branches/gcc-8-branch) +@@ -0,0 +1,12 @@ ++/* { dg-do compile } */ ++/* { dg-additional-options "-march=armv8.2-a+crypto+nosha2" } */ ++ ++int main () ++{ ++ return 0; ++} ++ ++/* { dg-final { scan-assembler-times {\.arch armv8\.2\-a\+crypto\+crc} 1 } } */ ++ ++/* Group as a whole was requested to be turned on, crypto itself is a bit and so ++ just turning off one feature can't turn it off. */ +Index: gcc/testsuite/gcc.target/aarch64/options_set_7.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/aarch64/options_set_7.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/aarch64/options_set_7.c (.../branches/gcc-8-branch) +@@ -0,0 +1,11 @@ ++/* { dg-do compile } */ ++/* { dg-additional-options "-march=armv8.4-a+dotprod" } */ ++ ++int main () ++{ ++ return 0; ++} ++ ++/* { dg-final { scan-assembler-times {\.arch armv8\.4\-a} 1 } } */ ++ ++/* Checking if enabling default features drops the superfluous bits. */ +Index: gcc/testsuite/gcc.target/aarch64/options_set_8.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/aarch64/options_set_8.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/aarch64/options_set_8.c (.../branches/gcc-8-branch) +@@ -0,0 +1,12 @@ ++/* { dg-do compile } */ ++/* { dg-additional-options "-march=armv8.4-a+nodotprod" } */ ++ ++int main () ++{ ++ return 0; ++} ++ ++/* { dg-final { scan-assembler-times {\.arch armv8\.4\-a} 1 } } */ ++ ++/* Checking if trying to turn off default features propagates the commandline ++ option. */ +Index: gcc/testsuite/gcc.target/i386/pr70799-5.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/pr70799-5.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/pr70799-5.c (.../branches/gcc-8-branch) +@@ -1,17 +0,0 @@ +-/* PR target/pr70799 */ +-/* { dg-do compile { target ia32 } } */ +-/* { dg-options "-O2 -march=slm -mavx512vl -mno-stackrealign" } */ +-/* { dg-final { scan-assembler "psllq" } } */ +-/* { dg-final { scan-assembler "psraq" } } */ +- +-long long a, b; +- +-void test1 (int c) +-{ +- a = b << c; +-} +- +-void test2 (int c) +-{ +- a = b >> c; +-} +Index: gcc/testsuite/gcc.target/i386/pr70799-4.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/pr70799-4.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/pr70799-4.c (.../branches/gcc-8-branch) +@@ -1,17 +0,0 @@ +-/* PR target/pr70799 */ +-/* { dg-do compile { target ia32 } } */ +-/* { dg-options "-O2 -march=slm -mno-stackrealign" } */ +-/* { dg-final { scan-assembler "psllq" } } */ +-/* { dg-final { scan-assembler "psrlq" } } */ +- +-unsigned long long a, b; +- +-void test1 (int c) +-{ +- a = b << c; +-} +- +-void test2 (int c) +-{ +- a = b >> c; +-} +Index: gcc/testsuite/gcc.target/i386/pr52146.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/pr52146.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/pr52146.c (.../branches/gcc-8-branch) +@@ -1,4 +1,5 @@ + /* { dg-do compile { target { ! ia32 } } } */ ++/* { dg-require-effective-target maybe_x32 } */ + /* { dg-options "-O2 -mx32" } */ + + void +Index: gcc/testsuite/gcc.target/i386/avx512bw-vpmovswb-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/avx512bw-vpmovswb-1.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/avx512bw-vpmovswb-1.c (.../branches/gcc-8-branch) +@@ -1,5 +1,6 @@ + /* { dg-do compile } */ + /* { dg-options "-mavx512bw -mavx512vl -O2" } */ ++/* { dg-additional-options "-fno-common" { target *-*-darwin* } } */ + /* { dg-final { scan-assembler-times "vpmovswb\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ + /* { dg-final { scan-assembler-times "vpmovswb\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\]*%xmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */ + /* { dg-final { scan-assembler-times "vpmovswb\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\]*%xmm\[0-9\]+\{%k\[1-7\]\}{z}(?:\n|\[ \\t\]+#)" 1 } } */ +Index: gcc/testsuite/gcc.target/i386/pr89523-4.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/pr89523-4.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/pr89523-4.c (.../branches/gcc-8-branch) +@@ -0,0 +1,36 @@ ++/* { dg-do compile { target { ! ia32 } } } */ ++/* { dg-require-effective-target maybe_x32 } */ ++/* { dg-options "-mx32 -O2 -march=haswell" } */ ++/* { dg-final { scan-assembler-not "\tvgather" } } */ ++/* { dg-final { scan-assembler "addr32 vgather" } } */ ++ ++typedef double __v2df __attribute__ ((__vector_size__ (16))); ++typedef int __v4si __attribute__ ((__vector_size__ (16))); ++typedef long long __v2di __attribute__ ((__vector_size__ (16))); ++ ++typedef long long __m128i __attribute__ ((__vector_size__ (16), __may_alias__)); ++typedef double __m128d __attribute__ ((__vector_size__ (16), __may_alias__)); ++ ++extern __inline __m128d ++__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) ++_mm_i32gather_pd (double const *__base, __m128i __index, const int __scale) ++{ ++ __v2df __zero = { 0.0, 0.0 }; ++ __v2df __mask = __builtin_ia32_cmpeqpd (__zero, __zero); ++ __v2df x = x; ++ ++ return (__m128d) __builtin_ia32_gathersiv2df (x, ++ __base, ++ (__v4si)__index, ++ __mask, ++ __scale); ++} ++ ++__m128d x; ++__m128i idx; ++ ++void extern ++avx2_test (void) ++{ ++ x = _mm_i32gather_pd ((void *) 0, idx, 1); ++} +Index: gcc/testsuite/gcc.target/i386/pr66819-4.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/pr66819-4.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/pr66819-4.c (.../branches/gcc-8-branch) +@@ -1,6 +1,6 @@ + /* { dg-do compile { target ia32 } } */ + /* { dg-options "-O2 -mregparm=3" } */ +-/* { dg-final { scan-assembler-not "call" } } */ ++/* { dg-final { scan-assembler-not {call[ \t]+_?bar} } } */ + + #include <stdarg.h> + +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_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-3.c (.../branches/gcc-8-branch) +@@ -1,5 +1,6 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk-inline -fno-pic" } */ ++/* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk-inline " } */ ++/* { dg-additional-options "-fno-pic" { target { ! *-*-darwin* } } } */ + + typedef void (*dispatch_t)(long offset); + +@@ -12,10 +13,12 @@ + return 0; + } + +-/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */ +-/* { dg-final { scan-assembler-times "jmp\[ \t\]*\.LIND" 2 } } */ +-/* { dg-final { scan-assembler-times "call\[ \t\]*\.LIND" 2 } } */ ++/* { 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]*[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 } } */ + /* { dg-final { scan-assembler-times {\tlfence} 1 } } */ +-/* { dg-final { scan-assembler-not "__x86_indirect_thunk" } } */ ++/* { dg-final { scan-assembler-not "_?__x86_indirect_thunk" } } */ + /* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" { target x32 } } } */ +Index: gcc/testsuite/gcc.target/i386/pr32219-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/pr32219-1.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/pr32219-1.c (.../branches/gcc-8-branch) +@@ -12,7 +12,11 @@ + return xxx; + } + +-/* { dg-final { scan-assembler "movl\[ \t\]xxx\\(%rip\\), %eax" { target { ! ia32 } } } } */ +-/* { dg-final { scan-assembler-not "xxx@GOTPCREL" { target { ! ia32 } } } } */ +-/* { dg-final { scan-assembler "movl\[ \t\]xxx@GOTOFF\\(%\[^,\]*\\), %eax" { target ia32 } } } */ +-/* { dg-final { scan-assembler-not "movl\[ \t\]xxx@GOT\\(%\[^,\]*\\), %eax" { target ia32 } } } */ ++/* { dg-final { scan-assembler {movl[ \t]_?xxx\(%rip\),[ \t]%eax} { target { ! ia32 } } } } */ ++/* { dg-final { scan-assembler-not "_?xxx@GOTPCREL" { target { ! ia32 } } } } */ ++ ++/* { dg-final { scan-assembler "movl\[ \t\]xxx@GOTOFF\\(%\[^,\]*\\), %eax" { target { ia32 && { ! *-*-darwin* } } } } } */ ++/* { dg-final { scan-assembler-not "movl\[ \t\]_?xxx@GOT\\(%\[^,\]*\\), %eax" { target { ia32 && { ! *-*-darwin* } } } } } */ ++ ++/* For Darwin, we default to PIC - but that's needed for Darwin's PIE. */ ++/* { dg-final { scan-assembler {movl[ \t]_xxx-L1\$pb\(%eax\),[ \t]%eax} { target { ia32 && *-*-darwin* } } } } */ +Index: gcc/testsuite/gcc.target/i386/indirect-thunk-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-1.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-1.c (.../branches/gcc-8-branch) +@@ -1,5 +1,6 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk -fno-pic" } */ ++/* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk" } */ ++/* { dg-additional-options "-fno-pic" { target { ! *-*-darwin* } } } */ + + typedef void (*dispatch_t)(long offset); + +@@ -11,9 +12,11 @@ + dispatch(offset); + } + +-/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */ +-/* { 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" } } */ ++/* { 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]*[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} } } */ + /* { dg-final { scan-assembler {\tpause} } } */ + /* { dg-final { scan-assembler {\tlfence} } } */ +Index: gcc/testsuite/gcc.target/i386/pr52857-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/pr52857-1.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/pr52857-1.c (.../branches/gcc-8-branch) +@@ -1,4 +1,5 @@ + /* { dg-do compile { target { ! ia32 } } } */ ++/* { dg-require-effective-target maybe_x32 } */ + /* { dg-options "-g -O -mx32 -maddress-mode=long" } */ + + extern void get_BID128 (int *); +Index: gcc/testsuite/gcc.target/i386/pr52698.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/pr52698.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/pr52698.c (.../branches/gcc-8-branch) +@@ -1,4 +1,5 @@ + /* { dg-do compile { target { ! ia32 } } } */ ++/* { dg-require-effective-target maybe_x32 } */ + /* { dg-options "-O2 -mx32 -maddress-mode=long" } */ + + extern void abort (void); +Index: gcc/testsuite/gcc.target/i386/ret-thunk-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/ret-thunk-1.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/ret-thunk-1.c (.../branches/gcc-8-branch) +@@ -6,8 +6,8 @@ + { + } + +-/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_return_thunk" } } */ +-/* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */ +-/* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */ ++/* { dg-final { scan-assembler "jmp\[ \t\]*_?__x86_return_thunk" } } */ ++/* { dg-final { scan-assembler {jmp[ \t]*\.?LIND} } } */ ++/* { dg-final { scan-assembler {call[ \t]*\.?LIND} } } */ + /* { dg-final { scan-assembler {\tpause} } } */ + /* { dg-final { scan-assembler {\tlfence} } } */ +Index: gcc/testsuite/gcc.target/i386/cet-notrack-icf-3.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/cet-notrack-icf-3.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/cet-notrack-icf-3.c (.../branches/gcc-8-branch) +@@ -3,8 +3,8 @@ + /* { dg-options "-O2 -fcf-protection=none" } */ + /* { dg-final { scan-assembler-not "endbr" } } */ + /* { dg-final { scan-assembler-not "fn2:" } } */ +-/* { dg-final { scan-assembler "set\[ \t]+fn2,fn1" } } */ +-/* { dg-final { scan-assembler "set\[ \t]+fn3,fn1" } } */ ++/* { dg-final { scan-assembler "set\[ \t]+fn2,fn1" { target { ! *-*-darwin* } } } } */ ++/* { dg-final { scan-assembler "set\[ \t]+fn3,fn1" { target { ! *-*-darwin* } } } } */ + + int (*foo)(int); + +Index: gcc/testsuite/gcc.target/i386/ret-thunk-10.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/ret-thunk-10.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/ret-thunk-10.c (.../branches/gcc-8-branch) +@@ -1,5 +1,6 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=thunk-inline -mindirect-branch=thunk -fno-pic" } */ ++/* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=thunk-inline -mindirect-branch=thunk " } */ ++/* { dg-additional-options "-fno-pic" { target { ! *-*-darwin* } } } */ + + extern void (*bar) (void); + +@@ -10,11 +11,11 @@ + return 0; + } + +-/* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */ +-/* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */ +-/* { dg-final { scan-assembler-not "jmp\[ \t\]*__x86_return_thunk" } } */ ++/* { dg-final { scan-assembler {jmp[ \t]*\.?LIND} } } */ ++/* { dg-final { scan-assembler {call[ \t]*\.?LIND} } } */ ++/* { dg-final { scan-assembler-not "jmp\[ \t\]*_?__x86_return_thunk" } } */ + /* { 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" } } */ +-/* { dg-final { scan-assembler "__x86_indirect_thunk_(r|e)ax:" } } */ ++/* { dg-final { scan-assembler "call\[ \t\]*_?__x86_indirect_thunk_(r|e)ax" } } */ ++/* { dg-final { scan-assembler "_?__x86_indirect_thunk_(r|e)ax:" } } */ + /* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" } } */ +Index: gcc/testsuite/gcc.target/i386/wbnoinvd-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/wbnoinvd-1.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/wbnoinvd-1.c (.../branches/gcc-8-branch) +@@ -1,6 +1,6 @@ + /* { dg-do compile } */ + /* { dg-options "-O2 -mwbnoinvd" } */ +-/* { dg-final { scan-assembler-times "wbnoinvd" 2 } } */ ++/* { dg-final { scan-assembler-times {\twbnoinvd} 1 } } */ + + #include "x86intrin.h" + +Index: gcc/testsuite/gcc.target/i386/pr55049-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/pr55049-1.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/pr55049-1.c (.../branches/gcc-8-branch) +@@ -1,5 +1,6 @@ + /* { dg-do compile { target { ! ia32 } } } */ + /* { dg-require-effective-target fpic } */ ++/* { dg-require-effective-target maybe_x32 } */ + /* { dg-options "-O2 -fPIC -mx32" } */ + + extern void __morestack_fail (const char *msg); +Index: gcc/testsuite/gcc.target/i386/pr54157.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/pr54157.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/pr54157.c (.../branches/gcc-8-branch) +@@ -1,4 +1,5 @@ + /* { dg-do compile { target { ! ia32 } } } */ ++/* { dg-require-effective-target maybe_x32 } */ + /* { dg-options "-O2 -mx32 -maddress-mode=long -ftree-vectorize" } */ + + struct s2{ +Index: gcc/testsuite/gcc.target/i386/stack-prot-sym.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/stack-prot-sym.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/stack-prot-sym.c (.../branches/gcc-8-branch) +@@ -1,4 +1,5 @@ + /* { dg-do compile } */ ++/* { dg-require-effective-target tls_native } */ + /* { dg-options "-O2 -fstack-protector-all -mstack-protector-guard=tls -mstack-protector-guard-reg=gs -mstack-protector-guard-symbol=my_guard" } */ + + void f(void) { } +Index: gcc/testsuite/gcc.target/i386/pconfig-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/pconfig-1.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/pconfig-1.c (.../branches/gcc-8-branch) +@@ -1,6 +1,6 @@ + /* { dg-do compile } */ + /* { dg-options "-O2 -mpconfig" } */ +-/* { dg-final { scan-assembler-times "pconfig" 5 } } */ ++/* { dg-final { scan-assembler-times {\tpconfig} 2 } } */ + + #include <x86intrin.h> + +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_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-2.c (.../branches/gcc-8-branch) +@@ -1,5 +1,6 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -fno-pic" } */ ++/* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep " } */ ++/* { dg-additional-options "-fno-pic" { target { ! *-*-darwin* } } } */ + + typedef void (*dispatch_t)(long offset); + +@@ -12,9 +13,11 @@ + dispatch[offset](offset); + } + +-/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */ +-/* { 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" } } */ ++/* { 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]*[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} } } */ + /* { dg-final { scan-assembler {\tpause} } } */ + /* { dg-final { scan-assembler {\tlfence} } } */ +Index: gcc/testsuite/gcc.target/i386/pr59874-3.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/pr59874-3.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/pr59874-3.c (.../branches/gcc-8-branch) +@@ -1,7 +1,8 @@ + /* PR target/59874 */ + /* { dg-do compile } */ + /* { dg-options "-O2 -mpopcnt -masm=att" } */ +-/* { dg-final { scan-assembler "popcntw" } } */ ++/* { dg-final { scan-assembler "\tpopcntw" { target { ! *-*-darwin* } } } } */ ++/* { dg-final { scan-assembler "\tpopcnt" { target *-*-darwin* } } } */ + + unsigned int + foo (unsigned short x) +Index: gcc/testsuite/gcc.target/i386/ret-thunk-25.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/ret-thunk-25.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/ret-thunk-25.c (.../branches/gcc-8-branch) +@@ -1,5 +1,6 @@ + /* PR target/r84530 */ + /* { dg-do compile { target ia32 } } */ ++/* { dg-skip-if "ABI differs for return complex value" { *-*-darwin* } } */ + /* { dg-options "-O2 -mfunction-return=thunk -fcheck-pointer-bounds -mmpx -fno-pic" } */ + + struct s { _Complex unsigned short x; }; +Index: gcc/testsuite/gcc.target/i386/pr91704.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/pr91704.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/pr91704.c (.../branches/gcc-8-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 <x86intrin.h> ++ ++__m256i ++foo (__m256i x, __m256i y) ++{ ++ return _mm256_cmpgt_epi8 (x, y); ++} +Index: gcc/testsuite/gcc.target/i386/avx512bw-vpmovuswb-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/avx512bw-vpmovuswb-1.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/avx512bw-vpmovuswb-1.c (.../branches/gcc-8-branch) +@@ -1,5 +1,6 @@ + /* { dg-do compile } */ + /* { dg-options "-mavx512bw -mavx512vl -O2" } */ ++/* { dg-additional-options "-fno-common" { target *-*-darwin* } } */ + /* { dg-final { scan-assembler-times "vpmovuswb\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ + /* { dg-final { scan-assembler-times "vpmovuswb\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\]*%xmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */ + /* { dg-final { scan-assembler-times "vpmovuswb\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\]*%xmm\[0-9\]+\{%k\[1-7\]\}{z}(?:\n|\[ \\t\]+#)" 1 } } */ +Index: gcc/testsuite/gcc.target/i386/ret-thunk-9.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/ret-thunk-9.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/ret-thunk-9.c (.../branches/gcc-8-branch) +@@ -1,5 +1,6 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=thunk -mindirect-branch=thunk -fno-pic" } */ ++/* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=thunk -mindirect-branch=thunk " } */ ++/* { dg-additional-options "-fno-pic" { target { ! *-*-darwin* } } } */ + + extern void (*bar) (void); + +@@ -10,12 +11,14 @@ + return 0; + } + +-/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_return_thunk" } } */ +-/* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */ +-/* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */ +-/* { dg-final { scan-assembler "__x86_return_thunk:" } } */ +-/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?bar" { target *-*-linux* } } } */ ++/* { dg-final { scan-assembler "jmp\[ \t\]*_?__x86_return_thunk" } } */ ++/* { dg-final { scan-assembler {jmp[ \t]+\.?LIND} } } */ ++/* { dg-final { scan-assembler {call[ \t]+\.?LIND} } } */ ++/* { 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]*[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" } } */ ++/* { 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/pr63538.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/pr63538.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/pr63538.c (.../branches/gcc-8-branch) +@@ -9,5 +9,5 @@ + { + return str; + } +- +-/* { dg-final { scan-assembler "movabs" } } */ ++/* See PR90698 re. Darwin xfail. */ ++/* { dg-final { scan-assembler "movabs" { xfail { *-*-darwin* } } } } */ +Index: gcc/testsuite/gcc.target/i386/pr49866.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/pr49866.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/pr49866.c (.../branches/gcc-8-branch) +@@ -1,5 +1,6 @@ + /* PR target/49866 */ + /* { dg-do assemble { target lp64 } } */ ++/* { dg-xfail-if "PR90698" { *-*-darwin* } } */ + /* { dg-options "-O2 -mcmodel=large" } */ + + void fn (void *, int, int); +Index: gcc/testsuite/gcc.target/i386/pr67985-2.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/pr67985-2.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/pr67985-2.c (.../branches/gcc-8-branch) +@@ -10,4 +10,4 @@ + + /* { dg-final { scan-assembler-not "mulss" } } */ + /* { dg-final { scan-assembler-not "movl\[ \t\].*, %eax" } } */ +-/* { dg-final { scan-assembler "call\[ \t\]__mulsf3" } } */ ++/* { dg-final { scan-assembler "call\[ \t\]_?__mulsf3" } } */ +Index: gcc/testsuite/gcc.target/i386/pr89523-5.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/pr89523-5.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/pr89523-5.c (.../branches/gcc-8-branch) +@@ -0,0 +1,39 @@ ++/* { dg-do compile { target { ! ia32 } } } */ ++/* { dg-require-effective-target maybe_x32 } */ ++/* { dg-options "-mx32 -O2 -mavx512pf" } */ ++/* { dg-final { scan-assembler "\tvgather" } } */ ++/* { dg-final { scan-assembler-not "addr32 vgather" } } */ ++ ++typedef int __v8si __attribute__ ((__vector_size__ (32))); ++typedef long long __m256i __attribute__ ((__vector_size__ (32), ++ __may_alias__)); ++typedef unsigned char __mmask8; ++ ++extern __inline void ++__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) ++_mm512_prefetch_i32gather_pd (__m256i __index, void const *__addr, ++ int __scale, int __hint) ++{ ++ __builtin_ia32_gatherpfdpd ((__mmask8) 0xFF, (__v8si) __index, __addr, ++ __scale, __hint); ++} ++ ++extern __inline void ++__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) ++_mm512_mask_prefetch_i32gather_pd (__m256i __index, __mmask8 __mask, ++ void const *__addr, int __scale, int __hint) ++{ ++ __builtin_ia32_gatherpfdpd (__mask, (__v8si) __index, __addr, __scale, ++ __hint); ++} ++ ++volatile __m256i idx; ++volatile __mmask8 m8; ++void *base; ++ ++void extern ++avx512pf_test (void) ++{ ++ _mm512_prefetch_i32gather_pd (idx, base, 8, 3); ++ _mm512_mask_prefetch_i32gather_pd (idx, m8, base, 8, 3); ++} +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_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-4.c (.../branches/gcc-8-branch) +@@ -1,5 +1,6 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk-inline -fno-pic" } */ ++/* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk-inline " } */ ++/* { dg-additional-options "-fno-pic" { target { ! *-*-darwin* } } } */ + + typedef void (*dispatch_t)(long offset); + +@@ -12,10 +13,12 @@ + return 0; + } + +-/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */ +-/* { dg-final { scan-assembler-times "jmp\[ \t\]*\.LIND" 2 } } */ +-/* { dg-final { scan-assembler-times "call\[ \t\]*\.LIND" 2 } } */ ++/* { 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]*[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 } } */ + /* { dg-final { scan-assembler-times {\tlfence} 1 } } */ +-/* { dg-final { scan-assembler-not "__x86_indirect_thunk" } } */ ++/* { dg-final { scan-assembler-not "_?__x86_indirect_thunk" } } */ + /* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" { target x32 } } } */ +Index: gcc/testsuite/gcc.target/i386/pr32219-2.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/pr32219-2.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/pr32219-2.c (.../branches/gcc-8-branch) +@@ -12,6 +12,13 @@ + } + + /* { dg-final { scan-assembler-not "movl\[ \t\]xxx\\(%rip\\), %" { target { ! ia32 } } } } */ ++/* For Darwin m64 we are always PIC, but common symbols are indirected, which happens to ++ match the general "ELF" case. */ + /* { dg-final { scan-assembler "xxx@GOTPCREL" { target { ! ia32 } } } } */ +-/* { dg-final { scan-assembler-not "movl\[ \t\]xxx@GOTOFF\\(%\[^,\]*\\), %" { target ia32 } } } */ +-/* { dg-final { scan-assembler "movl\[ \t\]xxx@GOT\\(%\[^,\]*\\), %" { target ia32 } } } */ ++ ++/* { dg-final { scan-assembler-not "movl\[ \t\]xxx@GOTOFF\\(%\[^,\]*\\), %" { target { ia32 && { ! *-*-darwin* } } } } } */ ++/* { 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][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_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-2.c (.../branches/gcc-8-branch) +@@ -1,5 +1,6 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk -fno-pic" } */ ++/* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk " } */ ++/* { dg-additional-options "-fno-pic" { target { ! *-*-darwin* } } } */ + + typedef void (*dispatch_t)(long offset); + +@@ -11,9 +12,11 @@ + dispatch[offset](offset); + } + +-/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */ +-/* { 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" } } */ ++/* { 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]*[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} } } */ + /* { dg-final { scan-assembler {\tpause} } } */ + /* { dg-final { scan-assembler {\tlfence} } } */ +Index: gcc/testsuite/gcc.target/i386/pr52857-2.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/pr52857-2.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/pr52857-2.c (.../branches/gcc-8-branch) +@@ -1,4 +1,5 @@ + /* { dg-do compile { target { ! ia32 } } } */ ++/* { dg-require-effective-target maybe_x32 } */ + /* { dg-options "-g -O -mx32 -maddress-mode=long" } */ + + void uw_init_context_1 (void *); +Index: gcc/testsuite/gcc.target/i386/indirect-thunk-register-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-register-1.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-register-1.c (.../branches/gcc-8-branch) +@@ -1,5 +1,6 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -mindirect-branch=thunk -mindirect-branch-register -fno-pic" } */ ++/* { dg-options "-O2 -mindirect-branch=thunk -mindirect-branch-register " } */ ++/* { dg-additional-options "-fno-pic" { target { ! *-*-darwin* } } } */ + + typedef void (*dispatch_t)(long offset); + +@@ -11,12 +12,12 @@ + dispatch(offset); + } + +-/* { 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" } } */ ++/* { 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} } } */ + /* { dg-final { scan-assembler "mov\[ \t\](%eax|%rax), \\((%esp|%rsp)\\)" } } */ + /* { dg-final { scan-assembler {\tpause} } } */ + /* { dg-final { scan-assembler-not "push(?:l|q)\[ \t\]*_?dispatch" } } */ + /* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" } } */ +-/* { dg-final { scan-assembler-not "__x86_indirect_thunk\n" } } */ +-/* { dg-final { scan-assembler-not "__x86_indirect_thunk_bnd\n" } } */ ++/* { dg-final { scan-assembler-not "_?__x86_indirect_thunk\n" } } */ ++/* { dg-final { scan-assembler-not "_?__x86_indirect_thunk_bnd\n" } } */ +Index: gcc/testsuite/gcc.target/i386/ret-thunk-2.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/ret-thunk-2.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/ret-thunk-2.c (.../branches/gcc-8-branch) +@@ -6,8 +6,8 @@ + { + } + +-/* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */ +-/* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */ ++/* { dg-final { scan-assembler {jmp[ \t]*\.?LIND} } } */ ++/* { dg-final { scan-assembler {call[ \t]*\.?LIND} } } */ + /* { dg-final { scan-assembler {\tpause} } } */ + /* { dg-final { scan-assembler {\tlfence} } } */ +-/* { dg-final { scan-assembler-not "jmp\[ \t\]*__x86_return_thunk" } } */ ++/* { dg-final { scan-assembler-not "jmp\[ \t\]*_?__x86_return_thunk" } } */ +Index: gcc/testsuite/gcc.target/i386/cet-notrack-icf-4.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/cet-notrack-icf-4.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/cet-notrack-icf-4.c (.../branches/gcc-8-branch) +@@ -3,7 +3,7 @@ + /* { dg-options "-O2 -fcf-protection" } */ + /* { dg-final { scan-assembler "endbr" } } */ + /* { dg-final { scan-assembler "fn2:" } } */ +-/* { dg-final { scan-assembler "set\[ \t]+fn3,fn1" } } */ ++/* { dg-final { scan-assembler "set\[ \t]+fn3,fn1" { target { ! *-*-darwin* } } } } */ + + int (*foo)(int); + +Index: gcc/testsuite/gcc.target/i386/ret-thunk-11.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/ret-thunk-11.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/ret-thunk-11.c (.../branches/gcc-8-branch) +@@ -1,5 +1,6 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=thunk-extern -mindirect-branch=thunk -fno-pic" } */ ++/* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=thunk-extern -mindirect-branch=thunk " } */ ++/* { dg-additional-options "-fno-pic" { target { ! *-*-darwin* } } } */ + + extern void (*bar) (void); + +@@ -10,11 +11,11 @@ + return 0; + } + +-/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_return_thunk" } } */ ++/* { dg-final { scan-assembler "jmp\[ \t\]*_?__x86_return_thunk" } } */ + /* { dg-final { scan-assembler-times {\tpause} 1 } } */ + /* { dg-final { scan-assembler-times {\tlfence} 1 } } */ +-/* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */ +-/* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */ +-/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */ +-/* { dg-final { scan-assembler "__x86_indirect_thunk_(r|e)ax:" } } */ ++/* { dg-final { scan-assembler {jmp[ \t]*\.?LIND} } } */ ++/* { dg-final { scan-assembler {call[ \t]*\.?LIND} } } */ ++/* { dg-final { scan-assembler "call\[ \t\]*_?__x86_indirect_thunk_(r|e)ax" } } */ ++/* { dg-final { scan-assembler "_?__x86_indirect_thunk_(r|e)ax:" } } */ + /* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" } } */ +Index: gcc/testsuite/gcc.target/i386/cet-sjlj-5.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/cet-sjlj-5.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/cet-sjlj-5.c (.../branches/gcc-8-branch) +@@ -3,7 +3,7 @@ + /* { dg-final { scan-assembler-times "endbr32" 2 { target ia32 } } } */ + /* { dg-final { scan-assembler-times "endbr64" 2 { target { ! ia32 } } } } */ + /* { dg-final { scan-assembler-times "call _?setjmp" 1 } } */ +-/* { dg-final { scan-assembler-times "call longjmp" 1 } } */ ++/* { dg-final { scan-assembler-times "call _?longjmp" 1 } } */ + + #include <stdio.h> + #include <setjmp.h> +Index: gcc/testsuite/gcc.target/i386/pr39013-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/pr39013-1.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/pr39013-1.c (.../branches/gcc-8-branch) +@@ -12,5 +12,9 @@ + return foo () + bar (); + } + +-/* { dg-final { scan-assembler "foo@PLT" } } */ +-/* { dg-final { scan-assembler "bar@PLT" } } */ ++/* { dg-final { scan-assembler "foo@PLT" { target { ! *-*-darwin* } } } } */ ++/* { dg-final { scan-assembler "bar@PLT" { target { ! *-*-darwin* } } } } */ ++ ++/* Darwin's dynamic linker does PIE without indirection. */ ++/* { dg-final { scan-assembler {call[ \t]_foo} { target *-*-darwin* } } } */ ++/* { dg-final { scan-assembler {call[ \t]_bar} { target *-*-darwin* } } } */ +Index: gcc/testsuite/gcc.target/i386/pr89848.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/pr89848.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/pr89848.c (.../branches/gcc-8-branch) +@@ -0,0 +1,11 @@ ++/* PR target/89848 */ ++/* { dg-do compile { target ia32 } } */ ++/* { dg-options "-O2 -msse2 -mtune=pentium3m" } */ ++ ++long long ++foo (long long x) ++{ ++ x >>= 3; ++ x <<= x; ++ return x; ++} +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_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-3.c (.../branches/gcc-8-branch) +@@ -1,5 +1,6 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -fno-pic" } */ ++/* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep " } */ ++/* { dg-additional-options "-fno-pic" { target { ! *-*-darwin* } } } */ + + typedef void (*dispatch_t)(long offset); + +@@ -14,9 +15,11 @@ + return 0; + } + +-/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */ +-/* { dg-final { scan-assembler-times "jmp\[ \t\]*\.LIND" 2 } } */ +-/* { dg-final { scan-assembler-times "call\[ \t\]*\.LIND" 2 } } */ ++/* { 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]*[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} } } */ + /* { dg-final { scan-assembler {\tlfence} } } */ +-/* { dg-final { scan-assembler-not "__x86_indirect_thunk" } } */ ++/* { dg-final { scan-assembler-not "_?__x86_indirect_thunk" } } */ +Index: gcc/testsuite/gcc.target/i386/pr90547.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/pr90547.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/pr90547.c (.../branches/gcc-8-branch) +@@ -0,0 +1,21 @@ ++/* PR target/90547 */ ++/* { dg-do compile } */ ++/* { dg-options "-O2" } */ ++ ++void ++foo () ++{ ++ void *g[] = {&&a, &&b}; ++ ++ for (unsigned c = 0x1F;; c >>= 1) ++ { ++ unsigned d = (long)("a"+1); ++ long e = 8; ++ ++ while (e) ++ { ++ a: goto *g[c&d]; ++ b: e--; ++ } ++ } ++} +Index: gcc/testsuite/gcc.target/i386/pr91131.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/pr91131.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/pr91131.c (.../branches/gcc-8-branch) +@@ -0,0 +1,19 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O" } */ ++ ++struct Reg_T { ++ unsigned int a : 3; ++ unsigned int b : 1; ++ unsigned int c : 4; ++}; ++ ++volatile struct Reg_T Reg_A; ++ ++int ++main () ++{ ++ Reg_A = (struct Reg_T){ .a = 0, .b = 0, .c = 0 }; ++ return 0; ++} ++ ++/* { dg-final { scan-assembler-times "mov\[^\r\n\]*Reg_A" 1 } } */ +Index: gcc/testsuite/gcc.target/i386/pr89523-6.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/pr89523-6.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/pr89523-6.c (.../branches/gcc-8-branch) +@@ -0,0 +1,38 @@ ++/* { dg-do compile { target { ! ia32 } } } */ ++/* { dg-require-effective-target maybe_x32 } */ ++/* { dg-options "-mx32 -O2 -mavx512pf" } */ ++/* { dg-final { scan-assembler-not "\tvgather" } } */ ++/* { dg-final { scan-assembler "addr32 vgather" } } */ ++ ++typedef int __v8si __attribute__ ((__vector_size__ (32))); ++typedef long long __m256i __attribute__ ((__vector_size__ (32), ++ __may_alias__)); ++typedef unsigned char __mmask8; ++ ++extern __inline void ++__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) ++_mm512_prefetch_i32gather_pd (__m256i __index, void const *__addr, ++ int __scale, int __hint) ++{ ++ __builtin_ia32_gatherpfdpd ((__mmask8) 0xFF, (__v8si) __index, __addr, ++ __scale, __hint); ++} ++ ++extern __inline void ++__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) ++_mm512_mask_prefetch_i32gather_pd (__m256i __index, __mmask8 __mask, ++ void const *__addr, int __scale, int __hint) ++{ ++ __builtin_ia32_gatherpfdpd (__mask, (__v8si) __index, __addr, __scale, ++ __hint); ++} ++ ++volatile __m256i idx; ++volatile __mmask8 m8; ++ ++void extern ++avx512pf_test (void) ++{ ++ _mm512_prefetch_i32gather_pd (idx, (void *) 0, 8, 3); ++ _mm512_mask_prefetch_i32gather_pd (idx, m8, (void *) 0, 8, 3); ++} +Index: gcc/testsuite/gcc.target/i386/pr32219-3.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/pr32219-3.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/pr32219-3.c (.../branches/gcc-8-branch) +@@ -12,7 +12,16 @@ + return xxx; + } + +-/* { dg-final { scan-assembler "movl\[ \t\]xxx\\(%rip\\), %eax" { target { ! ia32 } } } } */ +-/* { dg-final { scan-assembler-not "xxx@GOTPCREL" { target { ! ia32 } } } } */ +-/* { dg-final { scan-assembler "movl\[ \t\]xxx@GOTOFF\\(%\[^,\]*\\), %eax" { target ia32 } } } */ +-/* { dg-final { scan-assembler-not "movl\[ \t\]xxx@GOT\\(%\[^,\]*\\), %eax" { target ia32 } } } */ ++/* { dg-final { scan-assembler {movl[ \t]xxx\(%rip\),[ \t]%eax} { target { { ! ia32 } && { ! *-*-darwin* } } } } } */ ++/* { dg-final { scan-assembler-not "xxx@GOTPCREL" { target { { ! ia32 } && { ! *-*-darwin* } } } } } */ ++ ++/* For Darwin m64, code is always PIC and we need to indirect through the GOT to allow ++ weak symbols to be interposed. The dynamic loader knows how to apply PIE to this. */ ++/* { dg-final { scan-assembler {movq[ \t]_xxx@GOTPCREL\(%rip\),[ \t]%rax} { target { { ! ia32 } && *-*-darwin* } } } } */ ++ ++/* { dg-final { scan-assembler "movl\[ \t\]xxx@GOTOFF\\(%\[^,\]*\\), %eax" { target { ia32 && { ! *-*-darwin* } } } } } */ ++/* { dg-final { scan-assembler-not "movl\[ \t\]xxx@GOT\\(%\[^,\]*\\), %eax" { target { ia32 && { ! *-*-darwin* } } } } } */ ++ ++/* 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][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_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-3.c (.../branches/gcc-8-branch) +@@ -1,5 +1,6 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk -fno-pic" } */ ++/* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk " } */ ++/* { dg-additional-options "-fno-pic" { target { ! *-*-darwin* } } } */ + + typedef void (*dispatch_t)(long offset); + +@@ -12,9 +13,11 @@ + return 0; + } + +-/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */ +-/* { 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" } } */ ++/* { 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]*[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} } } */ + /* { dg-final { scan-assembler {\tpause} } } */ + /* { dg-final { scan-assembler {\tlfence} } } */ +Index: gcc/testsuite/gcc.target/i386/pr53698.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/pr53698.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/pr53698.c (.../branches/gcc-8-branch) +@@ -1,4 +1,5 @@ + /* { dg-do compile { target { ! ia32 } } } */ ++/* { dg-require-effective-target maybe_x32 } */ + /* { dg-options "-O -mx32 -maddress-mode=long -fno-tree-dominator-opts" } */ + + extern char foo[]; +Index: gcc/testsuite/gcc.target/i386/pr89827.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/pr89827.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/pr89827.c (.../branches/gcc-8-branch) +@@ -0,0 +1,11 @@ ++/* PR target/89827 */ ++/* { dg-do compile { target ia32 } } */ ++/* { dg-options "-O2 -msse2 -mstv -mno-stackrealign" } */ ++ ++unsigned long long a; ++ ++void ++foo (void) ++{ ++ a >>= (unsigned short) a; ++} +Index: gcc/testsuite/gcc.target/i386/indirect-thunk-register-2.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-register-2.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-register-2.c (.../branches/gcc-8-branch) +@@ -1,5 +1,6 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -mindirect-branch=thunk-inline -mindirect-branch-register -fno-pic" } */ ++/* { dg-options "-O2 -mindirect-branch=thunk-inline -mindirect-branch-register " } */ ++/* { dg-additional-options "-fno-pic" { target { ! *-*-darwin* } } } */ + + typedef void (*dispatch_t)(long offset); + +@@ -11,10 +12,10 @@ + dispatch(offset); + } + +-/* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */ +-/* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */ ++/* { dg-final { scan-assembler {jmp[ \t]*\.?LIND} } } */ ++/* { dg-final { scan-assembler {call[ \t]*\.?LIND} } } */ + /* { dg-final { scan-assembler "mov\[ \t\](%eax|%rax), \\((%esp|%rsp)\\)" } } */ + /* { dg-final { scan-assembler {\tpause} } } */ + /* { dg-final { scan-assembler-not "push(?:l|q)\[ \t\]*_?dispatch" } } */ + /* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" } } */ +-/* { dg-final { scan-assembler-not "__x86_indirect_thunk" } } */ ++/* { dg-final { scan-assembler-not "_?__x86_indirect_thunk" } } */ +Index: gcc/testsuite/gcc.target/i386/ret-thunk-3.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/ret-thunk-3.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/ret-thunk-3.c (.../branches/gcc-8-branch) +@@ -6,7 +6,7 @@ + { + } + +-/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_return_thunk" } } */ ++/* { dg-final { scan-assembler "jmp\[ \t\]*_?__x86_return_thunk" } } */ + /* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */ +-/* { dg-final { scan-assembler-not "jmp\[ \t\]*\.LIND" } } */ +-/* { dg-final { scan-assembler-not "call\[ \t\]*\.LIND" } } */ ++/* { dg-final { scan-assembler-not {jmp[ \t]*\.?LIND} } } */ ++/* { dg-final { scan-assembler-not {call[ \t]*\.?LIND} } } */ +Index: gcc/testsuite/gcc.target/i386/ret-thunk-12.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/ret-thunk-12.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/ret-thunk-12.c (.../branches/gcc-8-branch) +@@ -1,5 +1,6 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk -fno-pic" } */ ++/* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk " } */ ++/* { dg-additional-options "-fno-pic" { target { ! *-*-darwin* } } } */ + + extern void (*bar) (void); + +@@ -10,11 +11,11 @@ + return 0; + } + +-/* { dg-final { scan-assembler-not "jmp\[ \t\]*__x86_return_thunk" } } */ ++/* { dg-final { scan-assembler-not "jmp\[ \t\]*_?__x86_return_thunk" } } */ + /* { dg-final { scan-assembler-times {\tpause} 1 } } */ + /* { dg-final { scan-assembler-times {\tlfence} 1 } } */ +-/* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */ +-/* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */ +-/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */ +-/* { dg-final { scan-assembler "__x86_indirect_thunk_(r|e)ax:" } } */ ++/* { dg-final { scan-assembler {jmp[ \t]*\.?LIND} } } */ ++/* { dg-final { scan-assembler {call[ \t]*\.?LIND} } } */ ++/* { dg-final { scan-assembler "call\[ \t\]*_?__x86_indirect_thunk_(r|e)ax" } } */ ++/* { dg-final { scan-assembler "_?__x86_indirect_thunk_(r|e)ax:" } } */ + /* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" } } */ +Index: gcc/testsuite/gcc.target/i386/pr90867.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/pr90867.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/pr90867.c (.../branches/gcc-8-branch) +@@ -0,0 +1,30 @@ ++/* PR target/90867 */ ++/* { dg-do run { target lp64 } } */ ++/* { dg-options "-O2 -msse2" } */ ++ ++unsigned long long freq = 3600000000UL; /* 3.6 GHz = 3600.0 MHz */ ++ ++__attribute__((noipa)) void ++bar (double x) ++{ ++ static double d = 3600000000.0; ++ if (x != d) ++ __builtin_abort (); ++ d /= 1000.0; ++} ++ ++__attribute__ ((target ("arch=x86-64"))) int ++foo () ++{ ++ bar ((double) freq); ++ bar (1e-3 * freq); ++ bar (1e-6 * freq); ++ bar (1e-9 * freq); ++ return 0; ++} ++ ++int ++main () ++{ ++ return foo (); ++} +Index: gcc/testsuite/gcc.target/i386/indirect-thunk-extern-7.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-7.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-7.c (.../branches/gcc-8-branch) +@@ -1,5 +1,6 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk-extern -fno-pic" } */ ++/* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk-extern -fjump-tables" } */ ++/* { dg-additional-options "-fno-pic" { target { ! *-*-darwin* } } } */ + + void func0 (void); + void func1 (void); +@@ -36,7 +37,7 @@ + } + + /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*\.L\[0-9\]+\\(,%" { target *-*-linux* } } } */ +-/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk(_nt|)_(r|e)ax" } } */ ++/* { dg-final { scan-assembler "jmp\[ \t\]*_?__x86_indirect_thunk(_nt|)_(r|e)ax" } } */ + /* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */ +-/* { dg-final { scan-assembler-not "jmp\[ \t\]*\.LIND" } } */ +-/* { dg-final { scan-assembler-not "call\[ \t\]*\.LIND" } } */ ++/* { dg-final { scan-assembler-not {jmp[ \t]*\.?LIND} } } */ ++/* { dg-final { scan-assembler-not "call\[ \t\]*\.?LIND" } } */ +Index: gcc/testsuite/gcc.target/i386/pr39013-2.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/pr39013-2.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/pr39013-2.c (.../branches/gcc-8-branch) +@@ -12,5 +12,9 @@ + return foo () + bar (); + } + +-/* { dg-final { scan-assembler "foo@PLT" } } */ +-/* { dg-final { scan-assembler "bar@PLT" } } */ ++/* { dg-final { scan-assembler "foo@PLT" { target { ! *-*-darwin* } } } } */ ++/* { dg-final { scan-assembler "bar@PLT" { target { ! *-*-darwin* } } } } */ ++ ++/* Darwin's dynamic linker does PIE without indirection. */ ++/* { dg-final { scan-assembler {call[ \t]_foo} { target *-*-darwin* } } } */ ++/* { dg-final { scan-assembler {call[ \t]_bar} { target *-*-darwin* } } } */ +Index: gcc/testsuite/gcc.target/i386/pr89965.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/pr89965.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/pr89965.c (.../branches/gcc-8-branch) +@@ -0,0 +1,39 @@ ++/* PR rtl-optimization/89965 */ ++/* { dg-do run } */ ++/* { dg-options "-O -mtune=nano-x2 -fcaller-saves -fexpensive-optimizations -fno-tree-dce -fno-tree-ter" } */ ++/* { dg-additional-options "-march=i386" { target ia32 } } */ ++ ++int a; ++ ++__attribute__ ((noipa)) unsigned long long ++foo (unsigned char c, unsigned d, unsigned e, unsigned long long f, ++ unsigned char g, unsigned h, unsigned long long i) ++{ ++ (void) d; ++ unsigned short j = __builtin_mul_overflow_p (~0, h, c); ++ e <<= e; ++ i >>= 7; ++ c *= i; ++ i /= 12; ++ a = __builtin_popcount (c); ++ __builtin_add_overflow (e, a, &f); ++ return c + f + g + j + h; ++} ++ ++__attribute__ ((noipa)) void ++bar (void) ++{ ++ char buf[64]; ++ __builtin_memset (buf, 0x55, sizeof buf); ++ asm volatile ("" : : "r" (&buf[0]) : "memory"); ++} ++ ++int ++main (void) ++{ ++ bar (); ++ unsigned long long x = foo (2, 0, 0, 0, 0, 0, 0); ++ if (x != 0) ++ __builtin_abort (); ++ return 0; ++} +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_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-4.c (.../branches/gcc-8-branch) +@@ -1,5 +1,6 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -fno-pic" } */ ++/* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep " } */ ++/* { dg-additional-options "-fno-pic" { target { ! *-*-darwin* } } } */ + + typedef void (*dispatch_t)(long offset); + +@@ -13,9 +14,11 @@ + return 0; + } + +-/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */ +-/* { dg-final { scan-assembler-times "jmp\[ \t\]*\.LIND" 2 } } */ +-/* { dg-final { scan-assembler-times "call\[ \t\]*\.LIND" 2 } } */ ++/* { 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]*[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} } } */ + /* { dg-final { scan-assembler {\tlfence} } } */ +-/* { dg-final { scan-assembler-not "__x86_indirect_thunk" } } */ ++/* { dg-final { scan-assembler-not "_?__x86_indirect_thunk" } } */ +Index: gcc/testsuite/gcc.target/i386/fuse-caller-save-rec.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/fuse-caller-save-rec.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/fuse-caller-save-rec.c (.../branches/gcc-8-branch) +@@ -18,14 +18,12 @@ + return y + bar (y); + } + +-/* For !nonpic && ia32 xfails, see PR64895. */ +- + /* Check that no registers are saved/restored. */ +-/* { dg-final { scan-assembler-not "push" { xfail { { ! nonpic } && ia32 } } } } */ +-/* { dg-final { scan-assembler-not "pop" { xfail { { ! nonpic } && ia32 } } } } */ ++/* { dg-final { scan-assembler-not "push" } } */ ++/* { dg-final { scan-assembler-not "pop" } } */ + + /* Check that addition uses dx. */ +-/* { dg-final { scan-assembler-times "addl\t%\[re\]?dx, %\[re\]?ax" 1 { xfail { { ! nonpic } && ia32 } } } } */ ++/* { dg-final { scan-assembler-times "addl\t%\[re\]?dx, %\[re\]?ax" 1 } } */ + + /* Verify that bar is self-recursive. */ + /* { dg-final { scan-assembler-times "call\t_?bar" 2 } } */ +Index: gcc/testsuite/gcc.target/i386/fuse-caller-save-xmm.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/fuse-caller-save-xmm.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/fuse-caller-save-xmm.c (.../branches/gcc-8-branch) +@@ -15,14 +15,20 @@ + return y + bar (y); + } + +-/* For !nonpic && ia32 xfails, see PR64895. */ +- + /* Check presence of all insns on xmm registers. These checks are expected to + pass with both -fipa-ra and -fno-ipa-ra. */ +-/* { dg-final { scan-assembler-times "addpd\t\\.?LC0.*, %xmm0" 1 } } */ +-/* { dg-final { scan-assembler-times "addpd\t%xmm1, %xmm0" 1 { xfail { { ! nonpic } && ia32 } } } } */ +-/* { dg-final { scan-assembler-times "movapd\t%xmm0, %xmm1" 1 { xfail { { ! nonpic } && ia32 } } } } */ + ++/* Darwin local constant symbol is "lC0", ELF targets ".LC0" */ ++/* { dg-final { scan-assembler-times {addpd\t\.?[Ll]C0.*, %xmm0} 1 { target { { ! ia32 } || nonpic } } } } */ ++/* { dg-final { scan-assembler-times {movapd\t\.?[Ll]C0.*, %xmm1} 1 { target { ia32 && { ! nonpic } } } } } */ ++ ++/* We happen to get this for both cases, but in different positions. */ ++/* { dg-final { scan-assembler-times "addpd\t%xmm1, %xmm0" 1 } } */ ++ ++/* { dg-final { scan-assembler-times "movapd\t%xmm0, %xmm1" 1 { target { { ! ia32 } || nonpic } } } } */ ++/* { dg-final { scan-assembler-times "movapd\t%xmm0, %xmm2" 1 { target { ia32 && { ! nonpic } } } } } */ ++/* { dg-final { scan-assembler-times "addpd\t%xmm2, %xmm0" 1 { target { ia32 && { ! nonpic } } } } } */ ++ + /* Check absence of save/restore of xmm1 register. */ + /* { dg-final { scan-assembler-not "movaps\t%xmm1, \\(%\[re\]?sp\\)" } } */ + /* { dg-final { scan-assembler-not "movapd\t\\(%\[re\]?sp\\), %xmm1" } } */ +Index: gcc/testsuite/gcc.target/i386/pr77881.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/pr77881.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/pr77881.c (.../branches/gcc-8-branch) +@@ -8,5 +8,5 @@ + if (a < 0 || b) + baz (); + } +-/* { dg-final { scan-assembler "js\[ \t\]\.L" } } */ +-/* { dg-final { scan-assembler "jne\[ \t\]\.L" } } */ ++/* { dg-final { scan-assembler "js\[ \t\]\.?L" } } */ ++/* { dg-final { scan-assembler "jne\[ \t\]\.?L" } } */ +Index: gcc/testsuite/gcc.target/i386/cet-notrack-5a.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/cet-notrack-5a.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/cet-notrack-5a.c (.../branches/gcc-8-branch) +@@ -2,7 +2,8 @@ + /* { dg-options "-O -fcf-protection" } */ + /* { dg-final { scan-assembler-times "endbr32" 1 { target ia32 } } } */ + /* { dg-final { scan-assembler-times "endbr64" 1 { target { ! ia32 } } } } */ +-/* { dg-final { scan-assembler-not "\tcall\[ \t]+" } } */ ++/* { dg-final { scan-assembler-not "\tcall\[ \t]+" { target { { ! ia32 } || { ! *-*-darwin* } } } } } */ ++/* { dg-final { scan-assembler-times "\tcall\[ \t]+" 1 { target { ia32 && *-*-darwin* } } } } */ + /* { dg-final { scan-assembler-times "notrack call\[ \t]+" 1 } } */ + + int (*fptr) (int) __attribute__ ((nocf_check)); +Index: gcc/testsuite/gcc.target/i386/pr87853.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/pr87853.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/pr87853.c (.../branches/gcc-8-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 <x86intrin.h> ++ ++__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/pr89523-7.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/pr89523-7.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/pr89523-7.c (.../branches/gcc-8-branch) +@@ -0,0 +1,42 @@ ++/* { dg-do compile { target { ! ia32 } } } */ ++/* { dg-require-effective-target maybe_x32 } */ ++/* { dg-options "-mx32 -O2 -mavx512f" } */ ++/* { dg-final { scan-assembler "\tvscatter" } } */ ++/* { dg-final { scan-assembler-not "addr32 vscatter" } } */ ++ ++typedef int __v8si __attribute__ ((__vector_size__ (32))); ++typedef double __v8df __attribute__ ((__vector_size__ (64))); ++typedef long long __m256i __attribute__ ((__vector_size__ (32), ++ __may_alias__)); ++typedef double __m512d __attribute__ ((__vector_size__ (64), __may_alias__)); ++typedef unsigned char __mmask8; ++ ++extern __inline void ++__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) ++_mm512_i32scatter_pd (void *__addr, __m256i __index, __m512d __v1, ++ int __scale) ++{ ++ __builtin_ia32_scattersiv8df (__addr, (__mmask8) 0xFF, ++ (__v8si) __index, (__v8df) __v1, __scale); ++} ++ ++extern __inline void ++__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) ++_mm512_mask_i32scatter_pd (void *__addr, __mmask8 __mask, ++ __m256i __index, __m512d __v1, int __scale) ++{ ++ __builtin_ia32_scattersiv8df (__addr, __mask, (__v8si) __index, ++ (__v8df) __v1, __scale); ++} ++ ++volatile __m512d src; ++volatile __m256i idx; ++volatile __mmask8 m8; ++double *addr; ++ ++void extern ++avx512f_test (void) ++{ ++ _mm512_i32scatter_pd (addr, idx, src, 8); ++ _mm512_mask_i32scatter_pd (addr, m8, idx, src, 8); ++} +Index: gcc/testsuite/gcc.target/i386/pr32219-4.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/pr32219-4.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/pr32219-4.c (.../branches/gcc-8-branch) +@@ -13,6 +13,12 @@ + } + + /* { dg-final { scan-assembler-not "movl\[ \t\]xxx\\(%rip\\), %" { target { ! ia32 } } } } */ ++/* Darwin is always PIC for PIE so no change, weak symbols need to be indirect and this ++ happens to match the ELF case. */ + /* { dg-final { scan-assembler "xxx@GOTPCREL" { target { ! ia32 } } } } */ +-/* { dg-final { scan-assembler-not "movl\[ \t\]xxx@GOTOFF\\(%\[^,\]*\\), %" { target ia32 } } } */ +-/* { dg-final { scan-assembler "movl\[ \t\]xxx@GOT\\(%\[^,\]*\\), %" { target ia32 } } } */ ++ ++/* { dg-final { scan-assembler-not "movl\[ \t\]xxx@GOTOFF\\(%\[^,\]*\\), %" { target { ia32 && { ! *-*-darwin* } } } } } */ ++/* { dg-final { scan-assembler "movl\[ \t\]xxx@GOT\\(%\[^,\]*\\), %" { target { ia32 && { ! *-*-darwin* } } } } } */ ++ ++/* Darwin m32 equivalent (indirect and PIC). */ ++/* { 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_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-4.c (.../branches/gcc-8-branch) +@@ -1,5 +1,6 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk -fno-pic" } */ ++/* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk " } */ ++/* { dg-additional-options "-fno-pic" { target { ! *-*-darwin* } } } */ + + typedef void (*dispatch_t)(long offset); + +@@ -12,9 +13,11 @@ + return 0; + } + +-/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */ +-/* { 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" } } */ ++/* { 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]*[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} } } */ + /* { dg-final { scan-assembler {\tpause} } } */ + /* { dg-final { scan-assembler {\tlfence} } } */ +Index: gcc/testsuite/gcc.target/i386/indirect-thunk-register-3.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-register-3.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-register-3.c (.../branches/gcc-8-branch) +@@ -1,5 +1,6 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -mindirect-branch=thunk-extern -mindirect-branch-register -fno-pic" } */ ++/* { dg-options "-O2 -mindirect-branch=thunk-extern -mindirect-branch-register " } */ ++/* { dg-additional-options "-fno-pic" { target { ! *-*-darwin* } } } */ + + typedef void (*dispatch_t)(long offset); + +@@ -11,9 +12,9 @@ + dispatch(offset); + } + +-/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */ ++/* { dg-final { scan-assembler "jmp\[ \t\]*_?__x86_indirect_thunk_(r|e)ax" } } */ + /* { dg-final { scan-assembler-not "push(?:l|q)\[ \t\]*_?dispatch" } } */ + /* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" } } */ + /* { dg-final { scan-assembler-not {\t(pause|pause|nop)} } } */ +-/* { dg-final { scan-assembler-not "jmp\[ \t\]*\.LIND" } } */ +-/* { dg-final { scan-assembler-not "call\[ \t\]*\.LIND" } } */ ++/* { dg-final { scan-assembler-not {jmp[ \t]*\.?LIND} } } */ ++/* { dg-final { scan-assembler-not {call[ \t]*\.?LIND} } } */ +Index: gcc/testsuite/gcc.target/i386/ret-thunk-4.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/ret-thunk-4.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/ret-thunk-4.c (.../branches/gcc-8-branch) +@@ -6,7 +6,7 @@ + { + } + +-/* { dg-final { scan-assembler-not "jmp\[ \t\]*__x86_return_thunk" } } */ ++/* { dg-final { scan-assembler-not "jmp\[ \t\]*_?__x86_return_thunk" } } */ + /* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */ +-/* { dg-final { scan-assembler-not "jmp\[ \t\]*\.LIND" } } */ +-/* { dg-final { scan-assembler-not "call\[ \t\]*\.LIND" } } */ ++/* { dg-final { scan-assembler-not {jmp[ \t]*\.?LIND} } } */ ++/* { dg-final { scan-assembler-not {call[ \t]*\.?LIND} } } */ +Index: gcc/testsuite/gcc.target/i386/ret-thunk-13.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/ret-thunk-13.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/ret-thunk-13.c (.../branches/gcc-8-branch) +@@ -1,5 +1,6 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk-inline -fno-pic" } */ ++/* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk-inline " } */ ++/* { dg-additional-options "-fno-pic" { target { ! *-*-darwin* } } } */ + + extern void (*bar) (void); + extern int foo (void) __attribute__ ((function_return("thunk"))); +@@ -11,11 +12,11 @@ + return 0; + } + +-/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_return_thunk" } } */ ++/* { dg-final { scan-assembler "jmp\[ \t\]*_?__x86_return_thunk" } } */ + /* { dg-final { scan-assembler-times {\tpause} 2 } } */ + /* { dg-final { scan-assembler-times {\tlfence} 2 } } */ +-/* { dg-final { scan-assembler-times "jmp\[ \t\]*\.LIND" 3 } } */ +-/* { dg-final { scan-assembler-times "call\[ \t\]*\.LIND" 3 } } */ +-/* { dg-final { scan-assembler-not "jmp\[ \t\]*__x86_indirect_thunk" } } */ +-/* { dg-final { scan-assembler-not "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */ ++/* { dg-final { scan-assembler-times {jmp[ \t]*\.?LIND} 3 } } */ ++/* { dg-final { scan-assembler-times {call[ \t]*\.?LIND} 3 } } */ ++/* { dg-final { scan-assembler-not "jmp\[ \t\]*_?__x86_indirect_thunk" } } */ ++/* { dg-final { scan-assembler-not "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-5.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-5.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-5.c (.../branches/gcc-8-branch) +@@ -1,5 +1,6 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -fno-pic" } */ ++/* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep " } */ ++/* { dg-additional-options "-fno-pic" { target { ! *-*-darwin* } } } */ + + typedef void (*dispatch_t)(long offset); + +@@ -14,8 +15,10 @@ + return 0; + } + +-/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */ +-/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */ ++/* { 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]*[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" } } */ +-/* { dg-final { scan-assembler-not "call\[ \t\]*\.LIND" } } */ ++/* { dg-final { scan-assembler-not {jmp[ \t]*\.?LIND} } } */ ++/* { dg-final { scan-assembler-not {call[ \t]*\.?LIND} } } */ +Index: gcc/testsuite/gcc.target/i386/pr52876.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/pr52876.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/pr52876.c (.../branches/gcc-8-branch) +@@ -1,4 +1,5 @@ + /* { dg-do run { target x32 } } */ ++/* { dg-require-effective-target maybe_x32 } */ + /* { dg-options "-O2 -mx32 -maddress-mode=long" } */ + + extern void abort (void); +Index: gcc/testsuite/gcc.target/i386/avx512bw-vpmovwb-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/avx512bw-vpmovwb-1.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/avx512bw-vpmovwb-1.c (.../branches/gcc-8-branch) +@@ -1,5 +1,6 @@ + /* { dg-do compile } */ + /* { dg-options "-mavx512bw -mavx512vl -O2" } */ ++/* { dg-additional-options "-fno-common" { target *-*-darwin* } } */ + /* { dg-final { scan-assembler-times "vpmovwb\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ + /* { dg-final { scan-assembler-times "vpmovwb\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\]*%xmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */ + /* { dg-final { scan-assembler-times "vpmovwb\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\]*%xmm\[0-9\]+\{%k\[1-7\]\}{z}(?:\n|\[ \\t\]+#)" 1 } } */ +Index: gcc/testsuite/gcc.target/i386/cet-notrack-5b.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/cet-notrack-5b.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/cet-notrack-5b.c (.../branches/gcc-8-branch) +@@ -3,7 +3,8 @@ + /* { dg-options "-O -fcf-protection" } */ + /* { dg-final { scan-assembler-times "endbr32" 1 { target ia32 } } } */ + /* { dg-final { scan-assembler-times "endbr64" 1 { target { ! ia32 } } } } */ +-/* { dg-final { scan-assembler-times "\tcall\[ \t]+" 1 } } */ ++/* { dg-final { scan-assembler-times "\tcall\[ \t]+" 1 { target { { ! ia32 } || { ! *-*-darwin* } } } } } */ ++/* { dg-final { scan-assembler-times "\tcall\[ \t]+" 2 { target { ia32 && *-*-darwin* } } } } */ + /* { dg-final { scan-assembler-times "notrack call\[ \t]+" 1 } } */ + + int (*fptr) (int) __attribute__ ((nocf_check)); +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_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-1.c (.../branches/gcc-8-branch) +@@ -1,5 +1,6 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk-extern -fno-pic" } */ ++/* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk-extern " } */ ++/* { dg-additional-options "-fno-pic" { target { ! *-*-darwin* } } } */ + + typedef void (*dispatch_t)(long offset); + +@@ -11,8 +12,10 @@ + dispatch(offset); + } + +-/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */ +-/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */ ++/* { 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]*[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" } } */ +-/* { dg-final { scan-assembler-not "call\[ \t\]*\.LIND" } } */ ++/* { dg-final { scan-assembler-not {jmp[ \t]*\.?LIND} } } */ ++/* { dg-final { scan-assembler-not {call[ \t]*\.LIND} } } */ +Index: gcc/testsuite/gcc.target/i386/pr89523-8.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/pr89523-8.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/pr89523-8.c (.../branches/gcc-8-branch) +@@ -0,0 +1,41 @@ ++/* { dg-do compile { target { ! ia32 } } } */ ++/* { dg-require-effective-target maybe_x32 } */ ++/* { dg-options "-mx32 -O2 -mavx512f" } */ ++/* { dg-final { scan-assembler "\tvscatter" } } */ ++/* { dg-final { scan-assembler-not "addr32 vscatter" } } */ ++ ++typedef long long __v8di __attribute__ ((__vector_size__ (64))); ++typedef double __v8df __attribute__ ((__vector_size__ (64))); ++typedef long long __m512i __attribute__ ((__vector_size__ (64), __may_alias__)); ++typedef double __m512d __attribute__ ((__vector_size__ (64), __may_alias__)); ++typedef unsigned char __mmask8; ++ ++extern __inline void ++__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) ++_mm512_i64scatter_pd (void *__addr, __m512i __index, __m512d __v1, ++ int __scale) ++{ ++ __builtin_ia32_scatterdiv8df (__addr, (__mmask8) 0xFF, ++ (__v8di) __index, (__v8df) __v1, __scale); ++} ++ ++extern __inline void ++__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) ++_mm512_mask_i64scatter_pd (void *__addr, __mmask8 __mask, ++ __m512i __index, __m512d __v1, int __scale) ++{ ++ __builtin_ia32_scatterdiv8df (__addr, __mask, (__v8di) __index, ++ (__v8df) __v1, __scale); ++} ++ ++volatile __m512d src; ++volatile __m512i idx; ++volatile __mmask8 m8; ++double *addr; ++ ++void extern ++avx512f_test (void) ++{ ++ _mm512_i64scatter_pd (addr, idx, src, 8); ++ _mm512_mask_i64scatter_pd (addr, m8, idx, src, 8); ++} +Index: gcc/testsuite/gcc.target/i386/indirect-thunk-inline-7.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-7.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-7.c (.../branches/gcc-8-branch) +@@ -1,5 +1,6 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk-inline -fno-pic" } */ ++/* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk-inline -fjump-tables" } */ ++/* { dg-additional-options "-fno-pic" { target { ! *-*-darwin* } } } */ + + void func0 (void); + void func1 (void); +@@ -37,8 +38,8 @@ + + /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*\.L\[0-9\]+\\(,%" { target *-*-linux* } } } */ + /* { dg-final { scan-assembler-not "pushq\[ \t\]%(r|e)ax" } } */ +-/* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */ +-/* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */ ++/* { dg-final { scan-assembler {jmp[ \t]*\.?LIND} } } */ ++/* { dg-final { scan-assembler {call[ \t]*\.?LIND} } } */ + /* { dg-final { scan-assembler {\tpause} } } */ + /* { dg-final { scan-assembler {\tlfence} } } */ +-/* { dg-final { scan-assembler-not "__x86_indirect_thunk" } } */ ++/* { dg-final { scan-assembler-not "_?__x86_indirect_thunk" } } */ +Index: gcc/testsuite/gcc.target/i386/pr32219-5.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/pr32219-5.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/pr32219-5.c (.../branches/gcc-8-branch) +@@ -11,7 +11,11 @@ + return xxx; + } + +-/* { dg-final { scan-assembler "movl\[ \t\]xxx\\(%rip\\), %eax" { target { ! ia32 } } } } */ ++/* { dg-final { scan-assembler "movl\[ \t\]_?xxx\\(%rip\\), %eax" { target { ! ia32 } } } } */ + /* { dg-final { scan-assembler-not "xxx@GOTPCREL" { target { ! ia32 } } } } */ +-/* { dg-final { scan-assembler "movl\[ \t\]xxx@GOTOFF\\(%\[^,\]*\\), %eax" { target ia32 } } } */ +-/* { dg-final { scan-assembler-not "movl\[ \t\]xxx@GOT\\(%\[^,\]*\\), %eax" { target ia32 } } } */ ++ ++/* { dg-final { scan-assembler "movl\[ \t\]xxx@GOTOFF\\(%\[^,\]*\\), %eax" { target { ia32 && { ! *-*-darwin* } } } } } */ ++/* { dg-final { scan-assembler-not "movl\[ \t\]xxx@GOT\\(%\[^,\]*\\), %eax" { target { ia32 && { ! *-*-darwin* } } } } } */ ++ ++/* For Darwin m32, we need PIC (the default) to allow PIE. */ ++/* { dg-final { scan-assembler {movl[ \t]_xxx-L1\$pb\(%eax\),[ \t]%eax} { target { ia32 && *-*-darwin* } } } } */ +Index: gcc/testsuite/gcc.target/i386/pr89523-1a.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/pr89523-1a.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/pr89523-1a.c (.../branches/gcc-8-branch) +@@ -0,0 +1,24 @@ ++/* { dg-do compile { target { ! ia32 } } } */ ++/* { dg-require-effective-target maybe_x32 } */ ++/* { dg-options "-maddress-mode=short -mx32 -Ofast -funroll-loops -march=haswell" } */ ++/* { dg-final { scan-assembler-not "\tvgather" } } */ ++/* { dg-final { scan-assembler "addr32 vgather" } } */ ++ ++void foo (void); ++ ++extern float *ncost; ++ ++float ++bar (int type, int num) ++{ ++ int i; ++ float cost; ++ ++ cost = 0; ++ for (i = 0; i < num; i++) ++ if (type) ++ cost += ncost[i]; ++ else ++ foo (); ++ return (cost); ++} +Index: gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-1.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-1.c (.../branches/gcc-8-branch) +@@ -1,5 +1,6 @@ + /* { dg-do compile { target { ! x32 } } } */ +-/* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk -fcheck-pointer-bounds -mmpx -fno-pic" } */ ++/* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk -fcheck-pointer-bounds -mmpx" } */ ++/* { dg-additional-options "-fno-pic" { target { ! *-*-darwin* } } } */ + + void (*dispatch) (char *); + char buf[10]; +@@ -11,8 +12,8 @@ + } + + /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */ +-/* { dg-final { scan-assembler "bnd jmp\[ \t\]*__x86_indirect_thunk_bnd_rax" { target lp64 } } } */ +-/* { dg-final { scan-assembler "bnd call\[ \t\]*__x86_indirect_thunk_bnd_eax" { target ia32 } } } */ ++/* { dg-final { scan-assembler "bnd jmp\[ \t\]*_?__x86_indirect_thunk_bnd_rax" { target lp64 } } } */ ++/* { dg-final { scan-assembler "bnd call\[ \t\]*_?__x86_indirect_thunk_bnd_eax" { target ia32 } } } */ + /* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */ + /* { dg-final { scan-assembler "bnd call\[ \t\]*\.LIND" } } */ + /* { dg-final { scan-assembler "bnd ret" } } */ +Index: gcc/testsuite/gcc.target/i386/pr89945.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/pr89945.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/pr89945.c (.../branches/gcc-8-branch) +@@ -0,0 +1,21 @@ ++/* PR target/89945 */ ++/* { dg-do compile } */ ++/* { dg-options "-O2" } */ ++ ++void ++foo () ++{ ++ void *g[] = {&&a, &&b}; ++ ++ for (unsigned c = 0x1F;; c >>= 1) ++ { ++ unsigned d = (long)"a"; ++ long e = 8; ++ ++ while (e) ++ { ++ a: goto *g[c&d]; ++ b: e--; ++ } ++ } ++} +Index: gcc/testsuite/gcc.target/i386/indirect-thunk-register-4.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-register-4.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-register-4.c (.../branches/gcc-8-branch) +@@ -1,5 +1,6 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -mindirect-branch=keep -fno-pic" } */ ++/* { dg-options "-O2 -mindirect-branch=keep " } */ ++/* { dg-additional-options "-fno-pic" { target { ! *-*-darwin* } } } */ + + extern void (*func_p) (void); + +Index: gcc/testsuite/gcc.target/i386/ret-thunk-5.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/ret-thunk-5.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/ret-thunk-5.c (.../branches/gcc-8-branch) +@@ -8,8 +8,8 @@ + { + } + +-/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_return_thunk" } } */ +-/* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */ +-/* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */ ++/* { dg-final { scan-assembler "jmp\[ \t\]*_?__x86_return_thunk" } } */ ++/* { dg-final { scan-assembler {jmp[ \t]*\.?LIND} } } */ ++/* { dg-final { scan-assembler {call[ \t]*\.?LIND} } } */ + /* { dg-final { scan-assembler {\tpause} } } */ + /* { dg-final { scan-assembler {\tlfence} } } */ +Index: gcc/testsuite/gcc.target/i386/pr55093.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/pr55093.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/pr55093.c (.../branches/gcc-8-branch) +@@ -1,4 +1,5 @@ + /* { dg-do compile { target { ! ia32 } } } */ ++/* { dg-require-effective-target maybe_x32 } */ + /* { dg-options "-O2 -mx32 -maddress-mode=long" } */ + /* { dg-skip-if "different ABI" { x86_64-*-mingw* } } */ + +Index: gcc/testsuite/gcc.target/i386/ret-thunk-14.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/ret-thunk-14.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/ret-thunk-14.c (.../branches/gcc-8-branch) +@@ -1,5 +1,6 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk-extern -fno-pic" } */ ++/* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk-extern " } */ ++/* { dg-additional-options "-fno-pic" { target { ! *-*-darwin* } } } */ + + extern void (*bar) (void); + +@@ -13,9 +14,11 @@ + + /* { dg-final { scan-assembler-times {\tpause} 1 } } */ + /* { dg-final { scan-assembler-times {\tlfence} 1 } } */ +-/* { dg-final { scan-assembler-not "jmp\[ \t\]*__x86_return_thunk" } } */ +-/* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */ +-/* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */ +-/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?bar" { target *-*-linux* } } } */ +-/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */ ++/* { dg-final { scan-assembler-not "jmp\[ \t\]*_?__x86_return_thunk" } } */ ++/* { dg-final { scan-assembler {jmp[ \t]*\.?LIND} } } */ ++/* { 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]*[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/pr90193.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/pr90193.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/pr90193.c (.../branches/gcc-8-branch) +@@ -0,0 +1,21 @@ ++/* PR target/90193 * ++/* { dg-do link } */ ++/* { dg-options "-O1" } */ ++/* { dg-require-effective-target tls } */ ++ ++__thread int var; ++ ++static int ++foo (void) ++{ ++ asm goto ("jmp %l[l]\n\t" : : "m" (var) : : l); ++ return 0; ++l: ++ return 1; ++} ++ ++int ++main () ++{ ++ return foo (); ++} +Index: gcc/testsuite/gcc.target/i386/wbinvd-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/wbinvd-1.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/wbinvd-1.c (.../branches/gcc-8-branch) +@@ -1,6 +1,6 @@ + /* { dg-do compile } */ + /* { dg-options "-O2" } */ +-/* { dg-final { scan-assembler-times "wbinvd" 2 } } */ ++/* { dg-final { scan-assembler-times {\twbinvd} 1 } } */ + + #include "immintrin.h" + +Index: gcc/testsuite/gcc.target/i386/pr82659-3.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/pr82659-3.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/pr82659-3.c (.../branches/gcc-8-branch) +@@ -1,4 +1,5 @@ + /* { dg-do compile } */ ++/* { dg-require-alias "" } */ + /* { dg-options "-O2 -fcf-protection" } */ + /* { dg-final { scan-assembler-times {\mendbr} 2 } } */ + +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_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-6.c (.../branches/gcc-8-branch) +@@ -1,5 +1,6 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -fno-pic" } */ ++/* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep " } */ ++/* { dg-additional-options "-fno-pic" { target { ! *-*-darwin* } } } */ + + typedef void (*dispatch_t)(long offset); + +@@ -13,8 +14,10 @@ + return 0; + } + +-/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */ +-/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */ ++/* { 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]*[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" } } */ +-/* { dg-final { scan-assembler-not "call\[ \t\]*\.LIND" } } */ ++/* { dg-final { scan-assembler-not {jmp[ \t]*\.?LIND} } } */ ++/* { dg-final { scan-assembler-not {call[ \t]*\.?LIND} } } */ +Index: gcc/testsuite/gcc.target/i386/pr89902.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/pr89902.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/pr89902.c (.../branches/gcc-8-branch) +@@ -0,0 +1,13 @@ ++/* PR target/89902 */ ++/* { dg-do compile { target ia32 } } */ ++/* { dg-options "-O2 -fno-tree-coalesce-vars -mavx512bitalg" } */ ++ ++void bar (void); ++ ++int ++foo (long long x) ++{ ++ x <<= (char) x; ++ bar (); ++ return x; ++} +Index: gcc/testsuite/gcc.target/i386/pr66470.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/pr66470.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/pr66470.c (.../branches/gcc-8-branch) +@@ -1,5 +1,6 @@ + /* PR target/66470 */ + /* { dg-do compile { target { ! ia32 } } } */ ++/* { dg-require-effective-target maybe_x32 } */ + /* { dg-options "-O2 -mx32 -maddress-mode=long" } */ + /* { dg-require-effective-target tls } */ + +Index: gcc/testsuite/gcc.target/i386/pr59929.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/pr59929.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/pr59929.c (.../branches/gcc-8-branch) +@@ -1,5 +1,6 @@ + /* { dg-do run } */ + /* { dg-options "-O0 -mno-accumulate-outgoing-args" } */ ++/* { dg-require-effective-target maybe_x32 } */ + /* { dg-additional-options "-mx32 -maddress-mode=short" { target x32 } } */ + + void +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_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-2.c (.../branches/gcc-8-branch) +@@ -1,5 +1,6 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk-extern -fno-pic" } */ ++/* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk-extern " } */ ++/* { dg-additional-options "-fno-pic" { target { ! *-*-darwin* } } } */ + + typedef void (*dispatch_t)(long offset); + +@@ -11,8 +12,10 @@ + dispatch[offset](offset); + } + +-/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */ +-/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */ ++/* { 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]*[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" } } */ +-/* { dg-final { scan-assembler-not "call\[ \t\]*\.LIND" } } */ ++/* { dg-final { scan-assembler-not {jmp[ \t]*\.?LIND} } } */ ++/* { dg-final { scan-assembler-not {call[ \t]*\.?LIND} } } */ +Index: gcc/testsuite/gcc.target/i386/pr89523-9.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/pr89523-9.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/pr89523-9.c (.../branches/gcc-8-branch) +@@ -0,0 +1,30 @@ ++/* { dg-do compile { target { ! ia32 } } } */ ++/* { dg-require-effective-target maybe_x32 } */ ++/* { dg-options "-mx32 -O2 -mavx512f" } */ ++/* { dg-final { scan-assembler-not "\tvscatter" } } */ ++/* { dg-final { scan-assembler "addr32 vscatter" } } */ ++ ++typedef int __v8si __attribute__ ((__vector_size__ (32))); ++typedef double __v8df __attribute__ ((__vector_size__ (64))); ++typedef long long __m256i __attribute__ ((__vector_size__ (32), ++ __may_alias__)); ++typedef double __m512d __attribute__ ((__vector_size__ (64), __may_alias__)); ++typedef unsigned char __mmask8; ++ ++extern __inline void ++__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) ++_mm512_i32scatter_pd (void *__addr, __m256i __index, __m512d __v1, ++ int __scale) ++{ ++ __builtin_ia32_scattersiv8df (__addr, (__mmask8) 0xFF, ++ (__v8si) __index, (__v8df) __v1, __scale); ++} ++ ++volatile __m512d src; ++volatile __m256i idx; ++ ++void extern ++avx512f_test (void) ++{ ++ _mm512_i32scatter_pd ((void *) 0, idx, src, 8); ++} +Index: gcc/testsuite/gcc.target/i386/pr32219-6.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/pr32219-6.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/pr32219-6.c (.../branches/gcc-8-branch) +@@ -11,7 +11,14 @@ + return xxx; + } + +-/* { dg-final { scan-assembler-not "movl\[ \t\]xxx\\(%rip\\), %" { target { ! ia32 } } } } */ +-/* { dg-final { scan-assembler "xxx@GOTPCREL" { target { ! ia32 } } } } */ +-/* { dg-final { scan-assembler-not "movl\[ \t\]xxx@GOTOFF\\(%\[^,\]*\\), %" { target ia32 } } } */ +-/* { dg-final { scan-assembler "movl\[ \t\]xxx@GOT\\(%\[^,\]*\\), %" { target ia32 } } } */ ++/* { dg-final { scan-assembler-not "movl\[ \t\]xxx\\(%rip\\), %" { target { { ! ia32 } && { ! *-*-darwin* } } } } } */ ++/* { dg-final { scan-assembler "xxx@GOTPCREL" { target { { ! ia32 } && { ! *-*-darwin* } } } } } */ ++ ++/* Darwin m64 is always PIC, and the dynamic linker doesn't need an indirection. */ ++/* { dg-final { scan-assembler {movl[ \t]_xxx\(%rip\),[ \t]%eax} { target { { ! ia32 } && *-*-darwin* } } } } */ ++ ++/* { dg-final { scan-assembler-not "movl\[ \t\]xxx@GOTOFF\\(%\[^,\]*\\), %" { target { ia32 && { ! *-*-darwin* } } } } } */ ++/* { dg-final { scan-assembler "movl\[ \t\]xxx@GOT\\(%\[^,\]*\\), %" { target { ia32 && { ! *-*-darwin* } } } } } */ ++ ++/* Darwin m32 defaults to PIC, so no change. */ ++/* { dg-final { scan-assembler {movl[ \t]_xxx-L1\$pb\(%eax\),[ \t]%eax} { target { ia32 && *-*-darwin* } } } } */ +Index: gcc/testsuite/gcc.target/i386/pr89523-1b.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/pr89523-1b.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/pr89523-1b.c (.../branches/gcc-8-branch) +@@ -0,0 +1,7 @@ ++/* { dg-do compile { target { ! ia32 } } } */ ++/* { dg-require-effective-target maybe_x32 } */ ++/* { dg-options "-maddress-mode=long -mx32 -Ofast -funroll-loops -march=haswell" } */ ++/* { dg-final { scan-assembler-not "\tvgather" } } */ ++/* { dg-final { scan-assembler "addr32 vgather" } } */ ++ ++#include "pr89523-1a.c" +Index: gcc/testsuite/gcc.target/i386/pr89684.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/pr89684.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/pr89684.c (.../branches/gcc-8-branch) +@@ -0,0 +1,23 @@ ++/* PR ipa/89684 */ ++/* { dg-do compile } */ ++/* { dg-require-ifunc "" } */ ++ ++void bar (int, void (*) (void)); ++ ++__attribute__((target_clones ("default", "avx"))) ++void foo (void) ++{ ++ bar (0, foo); ++ bar (0, foo); ++} ++ ++__attribute__((target_clones ("default", "avx", "avx2"))) ++void baz (void) ++{ ++ bar (0, foo); ++ bar (0, foo); ++ bar (0, foo); ++ bar (0, foo); ++ bar (0, foo); ++ bar (0, foo); ++} +Index: gcc/testsuite/gcc.target/i386/pr22076.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/pr22076.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/pr22076.c (.../branches/gcc-8-branch) +@@ -1,6 +1,8 @@ + /* { dg-do compile } */ + /* { dg-options "-O2 -fomit-frame-pointer -flax-vector-conversions -mmmx" } */ + /* { dg-additional-options "-mno-vect8-ret-in-mem" { target *-*-vxworks* } } */ ++/* { dg-additional-options "-fno-common" { target *-*-darwin* } } */ ++/* { dg-additional-options "-mdynamic-no-pic" { target { ia32 && *-*-darwin* } } } */ + + #include <mmintrin.h> + +Index: gcc/testsuite/gcc.target/i386/ret-thunk-22.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/ret-thunk-22.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/ret-thunk-22.c (.../branches/gcc-8-branch) +@@ -6,10 +6,12 @@ + struct s gs = { 100 + 200i }; + struct s __attribute__((noinline)) foo (void) { return gs; } + +-/* { dg-final { scan-assembler-times "popl\[\\t \]*%ecx" 1 } } */ +-/* { dg-final { scan-assembler "lea\[l\]?\[\\t \]*4\\(%esp\\), %esp" } } */ +-/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_return_thunk_ecx" } } */ +-/* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */ +-/* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */ ++/* { dg-final { scan-assembler-times "popl\[\\t \]*%ecx" 1 { target { ! *-*-darwin* } } } } */ ++/* { dg-final { scan-assembler "lea\[l\]?\[\\t \]*4\\(%esp\\), %esp" { target { ! *-*-darwin* } } } } */ ++/* { dg-final { scan-assembler "jmp\[ \t\]*_?__x86_return_thunk_ecx" { target { ! *-*-darwin* } } } } */ ++/* { dg-final { scan-assembler {call[ \t]*___x86.get_pc_thunk.cx} { target { *-*-darwin* } } } } */ ++/* { dg-final { scan-assembler {jmp[ \t]*___x86_return_thunk} { target { *-*-darwin* } } } } */ ++/* { dg-final { scan-assembler {jmp[ \t]*\.?LIND} } } */ ++/* { dg-final { scan-assembler {call[ \t]*\.?LIND} } } */ + /* { dg-final { scan-assembler {\tpause} } } */ + /* { dg-final { scan-assembler {\tlfence} } } */ +Index: gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-2.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-2.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-2.c (.../branches/gcc-8-branch) +@@ -1,5 +1,6 @@ + /* { dg-do compile { target { ! x32 } } } */ +-/* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk -fcheck-pointer-bounds -mmpx -fno-pic" } */ ++/* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk -fcheck-pointer-bounds -mmpx" } */ ++/* { dg-additional-options "-fno-pic" { target { ! *-*-darwin* } } } */ + + void (*dispatch) (char *); + char buf[10]; +@@ -12,8 +13,8 @@ + } + + /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */ +-/* { dg-final { scan-assembler "bnd call\[ \t\]*__x86_indirect_thunk_bnd_(r|e)ax" } } */ +-/* { dg-final { scan-assembler "bnd call\[ \t\]*\.LIND" } } */ ++/* { dg-final { scan-assembler "bnd call\[ \t\]*_?__x86_indirect_thunk_bnd_(r|e)ax" } } */ ++/* { dg-final { scan-assembler "bnd call\[ \t\]*\.?LIND" } } */ + /* { dg-final { scan-assembler "bnd ret" } } */ + /* { dg-final { scan-assembler {\tpause} } } */ + /* { dg-final { scan-assembler {\tlfence} } } */ +Index: gcc/testsuite/gcc.target/i386/ret-thunk-6.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/ret-thunk-6.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/ret-thunk-6.c (.../branches/gcc-8-branch) +@@ -7,8 +7,8 @@ + { + } + +-/* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */ +-/* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */ ++/* { dg-final { scan-assembler {jmp[ \t]*\.?LIND} } } */ ++/* { dg-final { scan-assembler {call[ \t]*\.?LIND} } } */ + /* { dg-final { scan-assembler {\tpause} } } */ + /* { dg-final { scan-assembler {\tlfence} } } */ +-/* { dg-final { scan-assembler-not "jmp\[ \t\]*__x86_return_thunk" } } */ ++/* { dg-final { scan-assembler-not "jmp\[ \t\]*_?__x86_return_thunk" } } */ +Index: gcc/testsuite/gcc.target/i386/pr24414.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/pr24414.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/pr24414.c (.../branches/gcc-8-branch) +@@ -1,5 +1,6 @@ + /* { dg-do run } */ + /* { dg-options "-O2" } */ ++/* { dg-skip-if "asm insert mismatches ABI for Darwin" { *-*-darwin* } } */ + int test; + + int +Index: gcc/testsuite/gcc.target/i386/ret-thunk-15.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/ret-thunk-15.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/ret-thunk-15.c (.../branches/gcc-8-branch) +@@ -1,5 +1,6 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=keep -fno-pic" } */ ++/* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=keep " } */ ++/* { dg-additional-options "-fno-pic" { target { ! *-*-darwin* } } } */ + + extern void (*bar) (void); + +@@ -11,11 +12,13 @@ + return 0; + } + +-/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_return_thunk" } } */ +-/* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */ +-/* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */ ++/* { dg-final { scan-assembler "jmp\[ \t\]*_?__x86_return_thunk" } } */ ++/* { dg-final { scan-assembler {jmp[ \t]*\.?LIND} } } */ ++/* { dg-final { scan-assembler {call[ \t]*\.?LIND} } } */ + /* { dg-final { scan-assembler-times {\tpause} 1 } } */ + /* { dg-final { scan-assembler-times {\tlfence} 1 } } */ +-/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?bar" { target *-*-linux* } } } */ +-/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */ ++/* { 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]*[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/cet-sjlj-6b.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/cet-sjlj-6b.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/cet-sjlj-6b.c (.../branches/gcc-8-branch) +@@ -1,4 +1,5 @@ + /* { dg-do compile { target { ! ia32 } } } */ ++/* { dg-require-effective-target maybe_x32 } */ + /* { dg-options "-O -maddress-mode=long -fcf-protection -mx32" } */ + /* { dg-final { scan-assembler-times "endbr64" 2 } } */ + /* { dg-final { scan-assembler-times "movq\t.*buf\\+16" 1 } } */ +Index: gcc/testsuite/gcc.target/i386/fuse-caller-save.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/fuse-caller-save.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/fuse-caller-save.c (.../branches/gcc-8-branch) +@@ -16,11 +16,9 @@ + return y + bar (y); + } + +-/* For !nonpic && ia32 xfails, see PR64895. */ +- + /* Check that no registers are saved/restored. */ +-/* { dg-final { scan-assembler-not "push" { xfail { { ! nonpic } && ia32 } } } } */ +-/* { dg-final { scan-assembler-not "pop" { xfail { { ! nonpic } && ia32 } } } } */ ++/* { dg-final { scan-assembler-not "push" } } */ ++/* { dg-final { scan-assembler-not "pop" } } */ + + /* PR61605. If the first argument register and the return register differ, then + bar leaves the first argument register intact. That means in foo that the +@@ -31,4 +29,4 @@ + /* { dg-final { scan-assembler-not "movl" { target { ! ia32 } } } } */ + + /* Check that addition uses di (in case of no copy) or dx (in case of copy). */ +-/* { dg-final { scan-assembler-times "addl\t%\[re\]?d\[ix\], %\[re\]?ax" 1 { xfail { { ! nonpic } && ia32 } } } } */ ++/* { dg-final { scan-assembler-times "addl\t%\[re\]?d\[ix\], %\[re\]?ax" 1 } } */ +Index: gcc/testsuite/gcc.target/i386/pr90899.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/pr90899.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/pr90899.c (.../branches/gcc-8-branch) +@@ -0,0 +1,6 @@ ++/* PR middle-end/90899 */ ++/* { dg-do compile } */ ++/* { dg-require-ifunc "" } */ ++ ++__attribute__ ((target_clones ("default", "arch=slm"))) static int f () { return 0; } ++__attribute__ ((alias ("f"))) __typeof (f) g; +Index: gcc/testsuite/gcc.target/i386/pr89523-2.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/pr89523-2.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/pr89523-2.c (.../branches/gcc-8-branch) +@@ -0,0 +1,37 @@ ++/* { dg-do compile { target { ! ia32 } } } */ ++/* { dg-require-effective-target maybe_x32 } */ ++/* { dg-options "-mx32 -O2 -march=haswell" } */ ++/* { dg-final { scan-assembler "\tvgather" } } */ ++/* { dg-final { scan-assembler-not "addr32 vgather" } } */ ++ ++typedef double __v2df __attribute__ ((__vector_size__ (16))); ++typedef int __v4si __attribute__ ((__vector_size__ (16))); ++typedef long long __v2di __attribute__ ((__vector_size__ (16))); ++ ++typedef long long __m128i __attribute__ ((__vector_size__ (16), __may_alias__)); ++typedef double __m128d __attribute__ ((__vector_size__ (16), __may_alias__)); ++ ++extern __inline __m128d ++__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) ++_mm_i32gather_pd (double const *__base, __m128i __index, const int __scale) ++{ ++ __v2df __zero = { 0.0, 0.0 }; ++ __v2df __mask = __builtin_ia32_cmpeqpd (__zero, __zero); ++ __v2df x = x; ++ ++ return (__m128d) __builtin_ia32_gathersiv2df (x, ++ __base, ++ (__v4si)__index, ++ __mask, ++ __scale); ++} ++ ++__m128d x; ++double *base; ++__m128i idx; ++ ++void extern ++avx2_test (void) ++{ ++ x = _mm_i32gather_pd (base, idx, 1); ++} +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_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-1.c (.../branches/gcc-8-branch) +@@ -1,5 +1,6 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk-inline -fno-pic" } */ ++/* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk-inline " } */ ++/* { dg-additional-options "-fno-pic" { target { ! *-*-darwin* } } } */ + + typedef void (*dispatch_t)(long offset); + +@@ -11,10 +12,12 @@ + dispatch(offset); + } + +-/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */ +-/* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */ +-/* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */ ++/* { 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]*[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} } } */ + /* { dg-final { scan-assembler {\tlfence} } } */ +-/* { dg-final { scan-assembler-not "__x86_indirect_thunk" } } */ ++/* { dg-final { scan-assembler-not "_?__x86_indirect_thunk" } } */ + /* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" { target x32 } } } */ +Index: gcc/testsuite/gcc.target/i386/indirect-thunk-attr-7.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-7.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-7.c (.../branches/gcc-8-branch) +@@ -1,5 +1,6 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -fno-pic" } */ ++/* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep " } */ ++/* { dg-additional-options "-fno-pic" { target { ! *-*-darwin* } } } */ + + void func0 (void); + void func1 (void); +@@ -37,7 +38,9 @@ + } + + /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*\.L\[0-9\]+\\(,%" { target *-*-linux* } } } */ +-/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk(_nt|)_(r|e)ax" } } */ ++/* { dg-final { scan-assembler {leaq[ \t]*L[0-9]+\(%rip\)} { target { lp64 && *-*-darwin* } } } } */ ++/* { dg-final { scan-assembler {addl[ \t]*L[0-9]+-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */ ++/* { dg-final { scan-assembler "jmp\[ \t\]*_?__x86_indirect_thunk(_nt|)_(r|e)ax" } } */ + /* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */ +-/* { dg-final { scan-assembler-not "jmp\[ \t\]*\.LIND" } } */ +-/* { dg-final { scan-assembler-not "call\[ \t\]*\.LIND" } } */ ++/* { dg-final { scan-assembler-not {jmp[ \t]*\.?LIND} } } */ ++/* { dg-final { scan-assembler-not {call[ \t]*\.?LIND} } } */ +Index: gcc/testsuite/gcc.target/i386/pr89903.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/pr89903.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/pr89903.c (.../branches/gcc-8-branch) +@@ -0,0 +1,14 @@ ++/* PR target/89903 */ ++/* { dg-do compile { target ia32 } } */ ++/* { dg-options "-O2 -march=skylake" } */ ++ ++int a, b; ++ ++void ++foo (void) ++{ ++ unsigned long long d = 983040; ++ d += a; ++ d >>= (short) d; ++ b = d; ++} +Index: gcc/testsuite/gcc.target/i386/pr82662.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/pr82662.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/pr82662.c (.../branches/gcc-8-branch) +@@ -23,4 +23,4 @@ + int f10 (S x, S y) { return x < y; } + int f11 (S x, S y) { return x <= y; } + +-/* { dg-final { scan-assembler-times {\mset} 12 } } */ ++/* { dg-final { scan-assembler-times {\tset} 12 } } */ +Index: gcc/testsuite/gcc.target/i386/fpprec-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/fpprec-1.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/fpprec-1.c (.../branches/gcc-8-branch) +@@ -11,6 +11,9 @@ + 0x1.0000000000001p-1, 0x1.fffffffffffffp-2, + 0x1.0000000000001p+0, 0x1.fffffffffffffp-1, + 0x1.8000000000001p+0, 0x1.7ffffffffffffp+0, ++ -0x1.0000000000001p-1, -0x1.fffffffffffffp-2, ++ -0x1.0000000000001p+0, -0x1.fffffffffffffp-1, ++ -0x1.8000000000001p+0, -0x1.7ffffffffffffp+0, + -0.0, 0.0, -0.5, 0.5, -1.0, 1.0, -1.5, 1.5, -2.0, 2.0, + -2.5, 2.5 }; + #define NUM (sizeof(x)/sizeof(double)) +@@ -19,6 +22,7 @@ + -0x1.fffffffffffffp+1023, 0x1.fffffffffffffp+1023, + -0.0, 0.0, + 1.0, 0.0, 1.0, 1.0, 2.0, 1.0, ++ -1.0, -0.0, -1.0, -1.0, -2.0, -1.0, + -0.0, 0.0, -1.0, 1.0, -1.0, 1.0, -2.0, 2.0, -2.0, 2.0, + -3.0, 3.0 }; + +@@ -26,6 +30,7 @@ + -0x1.fffffffffffffp+1023, 0x1.fffffffffffffp+1023, + -0.0, 0.0, + 1.0, 0.0, 1.0, 1.0, 2.0, 1.0, ++ -1.0, -0.0, -1.0, -1.0, -2.0, -1.0, + -0.0, 0.0, -0.0, 0.0, -1.0, 1.0, -2.0, 2.0, -2.0, 2.0, + -2.0, 2.0 }; + +@@ -33,6 +38,7 @@ + -0x1.fffffffffffffp+1023, 0x1.fffffffffffffp+1023, + -1.0, 0.0, + 0.0, 0.0, 1.0, 0.0, 1.0, 1.0, ++ -1.0, -1.0, -2.0, -1.0, -2.0, -2.0, + -0.0, 0.0, -1.0, 0.0, -1.0, 1.0, -2.0, 1.0, -2.0, 2.0, + -3.0, 2.0 }; + +@@ -40,6 +46,7 @@ + -0x1.fffffffffffffp+1023, 0x1.fffffffffffffp+1023, + -0.0, 1.0, + 1.0, 1.0, 2.0, 1.0, 2.0, 2.0, ++ -0.0, -0.0, -1.0, -0.0, -1.0, -1.0, + -0.0, 0.0, -0.0, 1.0, -1.0, 1.0, -1.0, 2.0, -2.0, 2.0, + -2.0, 3.0 }; + +@@ -47,6 +54,7 @@ + -0x1.fffffffffffffp+1023, 0x1.fffffffffffffp+1023, + -0.0, 0.0, + 0.0, 0.0, 1.0, 0.0, 1.0, 1.0, ++ -0.0, -0.0, -1.0, -0.0, -1.0, -1.0, + -0.0, 0.0, -0.0, 0.0, -1.0, 1.0, -1.0, 1.0, -2.0, 2.0, + -2.0, 2.0 }; + +Index: gcc/testsuite/gcc.target/i386/avx512bw-pr91150.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/avx512bw-pr91150.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/avx512bw-pr91150.c (.../branches/gcc-8-branch) +@@ -0,0 +1,37 @@ ++/* PR target/91150 */ ++/* { dg-do run } */ ++/* { dg-options "-O2 -mavx512bw" } */ ++/* { dg-require-effective-target avx512bw } */ ++ ++#include "avx512bw-check.h" ++ ++typedef unsigned char V __attribute__((vector_size (64))); ++ ++__attribute__((noipa)) void ++foo (V *x, V *y, V *z) ++{ ++ *x = __builtin_shuffle (*y, *z, (V) { 0, 1, 2, 3, 4, 5, 6, 7, 8, ++ 9, 10, 11, 12, 13, 14, 15, ++ 80, 81, 82, 83, 84, 85, 86, 87, ++ 88, 89, 90, 91, 92, 93, 94, 95, ++ 96, 97, 98, 99, 100, 101, 102, 103, ++ 104, 105, 106, 107, 108, 109, 110, 111, ++ 112, 113, 114, 115, 116, 117, 118, 119, ++ 120, 121, 122, 123, 124, 125, 126, 127 }); ++} ++ ++static void ++avx512bw_test (void) ++{ ++ union U { unsigned char a[64]; V v; } a, b, c; ++ int i; ++ for (i = 0; i < 64; i++) ++ { ++ b.a[i] = i + 1; ++ c.a[i] = i + 65; ++ } ++ foo (&a.v, &b.v, &c.v); ++ for (i = 0; i < 64; i++) ++ if (a.a[i] != (i < 16 ? i + 1 : i + 65)) ++ __builtin_abort (); ++} +Index: gcc/testsuite/gcc.target/i386/cet-notrack-icf-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/cet-notrack-icf-1.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/cet-notrack-icf-1.c (.../branches/gcc-8-branch) +@@ -3,8 +3,8 @@ + /* { dg-options "-O2 -fcf-protection=none" } */ + /* { dg-final { scan-assembler-not "endbr" } } */ + /* { dg-final { scan-assembler-not "fn3:" } } */ +-/* { dg-final { scan-assembler "set\[ \t]+fn2,fn1" } } */ +-/* { dg-final { scan-assembler "set\[ \t]+fn3,fn1" } } */ ++/* { dg-final { scan-assembler "set\[ \t]+fn2,fn1" { target { ! *-*-darwin* } } } } */ ++/* { dg-final { scan-assembler "set\[ \t]+fn3,fn1" { target { ! *-*-darwin* } } } } */ + + static __attribute__((noinline)) int + fn1 (int x) +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_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-3.c (.../branches/gcc-8-branch) +@@ -1,5 +1,6 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk-extern -fno-pic" } */ ++/* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk-extern " } */ ++/* { dg-additional-options "-fno-pic" { target { ! *-*-darwin* } } } */ + + typedef void (*dispatch_t)(long offset); + +@@ -12,8 +13,10 @@ + return 0; + } + +-/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */ +-/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */ ++/* { 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]*[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" } } */ +-/* { dg-final { scan-assembler-not "call\[ \t\]*\.LIND" } } */ ++/* { dg-final { scan-assembler-not {jmp[ \t]*\.?LIND} } } */ ++/* { dg-final { scan-assembler-not {call[ \t]*\.?LIND} } } */ +Index: gcc/testsuite/gcc.target/i386/memset-strategy-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/memset-strategy-1.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/memset-strategy-1.c (.../branches/gcc-8-branch) +@@ -1,6 +1,9 @@ + /* { dg-do compile } */ + /* { dg-options "-O2 -march=atom -mmemset-strategy=libcall:-1:align" } */ +-/* { dg-final { scan-assembler-times "memset" 2 } } */ ++/* On ELF platforms, one hit comes from the .file directive. */ ++/* { dg-final { scan-assembler-times "memset" 2 { target { ! *-*-darwin* } } } } */ ++/* But not on Darwin, which doesn't have a .file directive by default. */ ++/* { dg-final { scan-assembler-times "_memset" 1 { target *-*-darwin* } } } */ + + char a[2048]; + void t (void) +@@ -7,4 +10,3 @@ + { + __builtin_memset (a, 1, 2048); + } +- +Index: gcc/testsuite/gcc.target/i386/pr61599-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/pr61599-1.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/pr61599-1.c (.../branches/gcc-8-branch) +@@ -1,5 +1,6 @@ + /* PR target/61599 */ + /* { dg-do run { target lp64 } } */ ++/* { dg-skip-if "PR90698" { *-*-darwin* } } */ + /* { dg-additional-sources pr61599-2.c } */ + /* { dg-options "-mcmodel=medium -fdata-sections" } */ + +Index: gcc/testsuite/gcc.target/i386/pr32219-7.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/pr32219-7.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/pr32219-7.c (.../branches/gcc-8-branch) +@@ -12,7 +12,15 @@ + return xxx; + } + +-/* { dg-final { scan-assembler "movl\[ \t\]xxx\\(%rip\\), %eax" { target { ! ia32 } } } } */ +-/* { dg-final { scan-assembler-not "xxx@GOTPCREL" { target { ! ia32 } } } } */ +-/* { dg-final { scan-assembler "movl\[ \t\]xxx@GOTOFF\\(%\[^,\]*\\), %eax" { target ia32 } } } */ +-/* { dg-final { scan-assembler-not "movl\[ \t\]xxx@GOT\\(%\[^,\]*\\), %eax" { target ia32 } } } */ ++/* { dg-final { scan-assembler "movl\[ \t\]xxx\\(%rip\\), %eax" { target { { ! ia32 } && { ! *-*-darwin* } } } } } */ ++/* { dg-final { scan-assembler-not "xxx@GOTPCREL" { target { { ! ia32 } && { ! *-*-darwin* } } } } } */ ++ ++/* For Darwin m64, code is always PIC but we need to indirect through the GOT to allow ++ weak symbols to be interposed. The dynamic loader knows how to apply PIE to this. */ ++/* { dg-final { scan-assembler {movq[ \t]_xxx@GOTPCREL\(%rip\),[ \t]%rax} { target { { ! ia32 } && *-*-darwin* } } } } */ ++ ++/* { dg-final { scan-assembler "movl\[ \t\]xxx@GOTOFF\\(%\[^,\]*\\), %eax" { target { ia32 && { ! *-*-darwin* } } } } } */ ++/* { 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][Ll]_xxx\$non_lazy_ptr-L1\$pb\(%eax\),[ \t]%eax} { target { ia32 && *-*-darwin* } } } } */ +Index: gcc/testsuite/gcc.target/i386/indirect-thunk-7.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-7.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-7.c (.../branches/gcc-8-branch) +@@ -1,5 +1,6 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk -fno-pic" } */ ++/* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk -fjump-tables" } */ ++/* { dg-additional-options "-fno-pic" { target { ! *-*-darwin* } } } */ + + void func0 (void); + void func1 (void); +@@ -36,8 +37,10 @@ + } + + /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*\.L\[0-9\]+\\(,%" { target *-*-linux* } } } */ +-/* { 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" } } */ ++/* { dg-final { scan-assembler {leaq[ \t]*L[0-9]+\(%rip\)} { target { lp64 && *-*-darwin* } } } } */ ++/* { dg-final { scan-assembler {addl[ \t]*L[0-9]+-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} } } */ + /* { dg-final { scan-assembler {\tpause} } } */ + /* { dg-final { scan-assembler {\tlfence} } } */ +Index: gcc/testsuite/gcc.target/i386/ret-thunk-23.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/ret-thunk-23.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/ret-thunk-23.c (.../branches/gcc-8-branch) +@@ -6,10 +6,12 @@ + struct s gs = { 100 + 200i }; + struct s __attribute__((noinline)) foo (void) { return gs; } + +-/* { dg-final { scan-assembler-times "popl\[\\t \]*%ecx" 1 } } */ +-/* { dg-final { scan-assembler "lea\[l\]?\[\\t \]*4\\(%esp\\), %esp" } } */ +-/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_return_thunk_ecx" } } */ +-/* { dg-final { scan-assembler-not "jmp\[ \t\]*\.LIND" } } */ +-/* { dg-final { scan-assembler-not "call\[ \t\]*\.LIND" } } */ ++/* { dg-final { scan-assembler-times "popl\[\\t \]*%ecx" 1 { target { ! *-*-darwin* } } } } */ ++/* { dg-final { scan-assembler "lea\[l\]?\[\\t \]*4\\(%esp\\), %esp" { target { ! *-*-darwin* } } } } */ ++/* { dg-final { scan-assembler "jmp\[ \t\]*_?__x86_return_thunk_ecx" { target { ! *-*-darwin* } } } } */ ++/* { dg-final { scan-assembler {call[ \t]*___x86.get_pc_thunk.cx} { target { *-*-darwin* } } } } */ ++/* { dg-final { scan-assembler {jmp[ \t]*___x86_return_thunk} { target { *-*-darwin* } } } } */ ++/* { dg-final { scan-assembler-not {jmp[ \t]*\.?LIND} } } */ ++/* { dg-final { scan-assembler-not {call[ \t]*\.?LIND} } } */ + /* { dg-final { scan-assembler-not {\tpause} } } */ + /* { dg-final { scan-assembler-not {\tlfence} } } */ +Index: gcc/testsuite/gcc.target/i386/pr85860.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/pr85860.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/pr85860.c (.../branches/gcc-8-branch) +@@ -0,0 +1,23 @@ ++/* { dg-do compile { target lp64 } } */ ++/* { dg-options "-O2 -fno-guess-branch-probability -flive-range-shrinkage -mbmi2" } */ ++ ++int a, b, c, d, e; ++ ++extern int bar(void); ++ ++__int128 ++foo (unsigned g, int h, long i, __int128 j, short k, __int128 l) ++{ ++ unsigned __int128 m = j; ++ do ++ { ++ j %= 5; ++ c = c >> (m & 31); ++ e = __builtin_sub_overflow (b, 0, &m); ++ d = bar (); ++ l *= __builtin_mul_overflow_p ((unsigned) d, ~(unsigned __int128) 1, ++ (unsigned __int128) 0); ++ } ++ while (a); ++ return m + j + k + l; ++} +Index: gcc/testsuite/gcc.target/i386/ret-thunk-7.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/ret-thunk-7.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/ret-thunk-7.c (.../branches/gcc-8-branch) +@@ -7,7 +7,7 @@ + { + } + +-/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_return_thunk" } } */ ++/* { dg-final { scan-assembler "jmp\[ \t\]*_?__x86_return_thunk" } } */ + /* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */ +-/* { dg-final { scan-assembler-not "jmp\[ \t\]*\.LIND" } } */ +-/* { dg-final { scan-assembler-not "call\[ \t\]*\.LIND" } } */ ++/* { dg-final { scan-assembler-not {jmp[ \t]*\.?LIND} } } */ ++/* { dg-final { scan-assembler-not {call[ \t]*\.?LIND} } } */ +Index: gcc/testsuite/gcc.target/i386/ret-thunk-16.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/ret-thunk-16.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/ret-thunk-16.c (.../branches/gcc-8-branch) +@@ -1,5 +1,6 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -mfunction-return=thunk-inline -mindirect-branch=thunk-extern -fno-pic" } */ ++/* { dg-options "-O2 -mfunction-return=thunk-inline -mindirect-branch=thunk-extern " } */ ++/* { dg-additional-options "-fno-pic" { target { ! *-*-darwin* } } } */ + + extern void (*bar) (void); + +@@ -11,8 +12,8 @@ + return 0; + } + +-/* { dg-final { scan-assembler-not "__x86_indirect_thunk" } } */ +-/* { dg-final { scan-assembler-not "__x86_return_thunk" } } */ ++/* { dg-final { scan-assembler-not "_?__x86_indirect_thunk" } } */ ++/* { dg-final { scan-assembler-not "_?__x86_return_thunk" } } */ + /* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */ +-/* { dg-final { scan-assembler-not "jmp\[ \t\]*\.LIND" } } */ +-/* { dg-final { scan-assembler-not "call\[ \t\]*\.LIND" } } */ ++/* { dg-final { scan-assembler-not {jmp[ \t]*\.?LIND} } } */ ++/* { dg-final { scan-assembler-not {call[ \t]*\.?LIND} } } */ +Index: gcc/testsuite/gcc.target/i386/pr55116-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/pr55116-1.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/pr55116-1.c (.../branches/gcc-8-branch) +@@ -1,4 +1,5 @@ + /* { dg-do compile { target { ! ia32 } } } */ ++/* { dg-require-effective-target maybe_x32 } */ + /* { dg-options "-O2 -mx32 -maddress-mode=long" } */ + + int glob_int_arr[100]; +Index: gcc/testsuite/gcc.target/i386/memcpy-strategy-3.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/memcpy-strategy-3.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/memcpy-strategy-3.c (.../branches/gcc-8-branch) +@@ -1,6 +1,9 @@ + /* { dg-do compile } */ + /* { dg-options "-O2 -march=atom -mmemcpy-strategy=vector_loop:2000:align,libcall:-1:align" } */ +-/* { dg-final { scan-assembler-times "memcpy" 2 } } */ ++/* On ELF platforms, one hit comes from the .file directive. */ ++/* { dg-final { scan-assembler-times "memcpy" 2 { target { ! *-*-darwin* } } } } */ ++/* But not on Darwin, which doesn't have a .file directive by default. */ ++/* { dg-final { scan-assembler-times "_memcpy" 1 { target *-*-darwin* } } } */ + + char a[2048]; + char b[2048]; +Index: gcc/testsuite/gcc.target/i386/pr89523-3.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/pr89523-3.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/pr89523-3.c (.../branches/gcc-8-branch) +@@ -0,0 +1,36 @@ ++/* { dg-do compile { target { ! ia32 } } } */ ++/* { dg-require-effective-target maybe_x32 } */ ++/* { dg-options "-mx32 -O2 -march=haswell" } */ ++/* { dg-final { scan-assembler "\tvgather" } } */ ++/* { dg-final { scan-assembler-not "addr32 vgather" } } */ ++ ++typedef double __v2df __attribute__ ((__vector_size__ (16))); ++typedef int __v4si __attribute__ ((__vector_size__ (16))); ++typedef long long __v2di __attribute__ ((__vector_size__ (16))); ++ ++typedef long long __m128i __attribute__ ((__vector_size__ (16), __may_alias__)); ++typedef double __m128d __attribute__ ((__vector_size__ (16), __may_alias__)); ++ ++extern __inline __m128d ++__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) ++_mm_i64gather_pd (double const *__base, __m128i __index, const int __scale) ++{ ++ __v2df __zero = { 0.0, 0.0 }; ++ __v2df __mask = __builtin_ia32_cmpeqpd (__zero, __zero); ++ ++ return (__m128d) __builtin_ia32_gatherdiv2df (__zero, ++ __base, ++ (__v2di)__index, ++ __mask, ++ __scale); ++} ++ ++__m128d x; ++double *base; ++__m128i idx; ++ ++void extern ++avx2_test (void) ++{ ++ x = _mm_i64gather_pd (base, idx, 1); ++} +Index: gcc/testsuite/gcc.target/i386/pr66819-3.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/pr66819-3.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/pr66819-3.c (.../branches/gcc-8-branch) +@@ -1,6 +1,6 @@ + /* { dg-do compile { target ia32 } } */ + /* { dg-options "-O2 -mregparm=3" } */ +-/* { dg-final { scan-assembler-not "call" } } */ ++/* { dg-final { scan-assembler-not {call[ \t]+_?bar} } } */ + + void (*bar)(int, int); + +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_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-2.c (.../branches/gcc-8-branch) +@@ -1,5 +1,6 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk-inline -fno-pic" } */ ++/* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk-inline " } */ ++/* { dg-additional-options "-fno-pic" { target { ! *-*-darwin* } } } */ + + typedef void (*dispatch_t)(long offset); + +@@ -11,10 +12,12 @@ + dispatch[offset](offset); + } + +-/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */ +-/* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */ +-/* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */ ++/* { 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]*[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} } } */ + /* { dg-final { scan-assembler {\tlfence} } } */ +-/* { dg-final { scan-assembler-not "__x86_indirect_thunk" } } */ ++/* { dg-final { scan-assembler-not "_?__x86_indirect_thunk" } } */ + /* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" { target x32 } } } */ +Index: gcc/testsuite/gcc.target/i386/indirect-thunk-attr-8.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-8.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-8.c (.../branches/gcc-8-branch) +@@ -1,5 +1,6 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -mfunction-return=keep -mindirect-branch=thunk -fno-pic" } */ ++/* { dg-options "-O2 -mfunction-return=keep -mindirect-branch=thunk " } */ ++/* { dg-additional-options "-fno-pic" { target { ! *-*-darwin* } } } */ + + void func0 (void); + void func1 (void); +@@ -36,7 +37,7 @@ + } + } + +-/* { dg-final { scan-assembler-not "__x86_indirect_thunk" } } */ ++/* { dg-final { scan-assembler-not "_?__x86_indirect_thunk" } } */ + /* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */ +-/* { dg-final { scan-assembler-not "jmp\[ \t\]*\.LIND" } } */ +-/* { dg-final { scan-assembler-not "call\[ \t\]*\.LIND" } } */ ++/* { dg-final { scan-assembler-not {jmp[ \t]*\.?LIND} } } */ ++/* { dg-final { scan-assembler-not {call[ \t]*\.?LIND} } } */ +Index: gcc/testsuite/gcc.target/i386/cet-notrack-6b.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/cet-notrack-6b.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/cet-notrack-6b.c (.../branches/gcc-8-branch) +@@ -2,7 +2,8 @@ + /* { dg-options "-O0 -fcf-protection" } */ + /* { dg-final { scan-assembler-times "endbr32" 1 { target ia32 } } } */ + /* { dg-final { scan-assembler-times "endbr64" 1 { target { ! ia32 } } } } */ +-/* { dg-final { scan-assembler-not "\tcall\[ \t]+" } } */ ++/* { dg-final { scan-assembler-not "\tcall\[ \t]+" { target { { ! ia32 } || { ! *-*-darwin* } } } } } */ ++/* { dg-final { scan-assembler-times "\tcall\[ \t]+" 1 { target { ia32 && *-*-darwin* } } } } */ + /* { dg-final { scan-assembler-times "notrack call\[ \t]+" 1 } } */ + + int foo (int arg); +Index: gcc/testsuite/gcc.target/i386/pr70738-7.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/pr70738-7.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/pr70738-7.c (.../branches/gcc-8-branch) +@@ -1,4 +1,4 @@ +-/* { dg-do compile { target ia32 } } */ ++/* { dg-do compile { target { ia32 && { ! *-*-darwin* } } } } */ + /* { dg-options "-msse2 -mgeneral-regs-only" } */ + + extern float a, b, c; +Index: gcc/testsuite/gcc.target/i386/cet-notrack-icf-2.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/cet-notrack-icf-2.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/cet-notrack-icf-2.c (.../branches/gcc-8-branch) +@@ -3,7 +3,7 @@ + /* { dg-options "-O2 -fcf-protection" } */ + /* { dg-final { scan-assembler "endbr" } } */ + /* { dg-final { scan-assembler "fn3:" } } */ +-/* { dg-final { scan-assembler "set\[ \t]+fn2,fn1" } } */ ++/* { dg-final { scan-assembler "set\[ \t]+fn2,fn1" { target { ! *-*-darwin* } } } } */ + + static __attribute__((noinline)) int + fn1 (int x) +Index: gcc/testsuite/gcc.target/i386/cet-sjlj-3.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/cet-sjlj-3.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/cet-sjlj-3.c (.../branches/gcc-8-branch) +@@ -3,7 +3,7 @@ + /* { dg-final { scan-assembler-times "endbr32" 4 { target ia32 } } } */ + /* { dg-final { scan-assembler-times "endbr64" 4 { target { ! ia32 } } } } */ + /* { dg-final { scan-assembler-times "call _?setjmp" 1 } } */ +-/* { dg-final { scan-assembler-times "call longjmp" 1 } } */ ++/* { dg-final { scan-assembler-times "call _?longjmp" 1 } } */ + + #include <stdio.h> + #include <setjmp.h> +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_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-4.c (.../branches/gcc-8-branch) +@@ -1,5 +1,6 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk-extern -fno-pic" } */ ++/* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk-extern " } */ ++/* { dg-additional-options "-fno-pic" { target { ! *-*-darwin* } } } */ + + typedef void (*dispatch_t)(long offset); + +@@ -12,7 +13,8 @@ + return 0; + } + +-/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" { target x32 } } } */ +-/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */ +-/* { dg-final { scan-assembler "call\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */ ++/* { 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]*[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/pr55597.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/pr55597.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/pr55597.c (.../branches/gcc-8-branch) +@@ -1,5 +1,6 @@ + /* { dg-do compile { target { ! ia32 } } } */ + /* { dg-require-effective-target fpic } */ ++/* { dg-require-effective-target maybe_x32 } */ + /* { dg-options "-O2 -fPIC -mx32 -maddress-mode=long" } */ + + struct initial_sp +Index: gcc/testsuite/gcc.target/i386/pr64317.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/pr64317.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/pr64317.c (.../branches/gcc-8-branch) +@@ -2,9 +2,14 @@ + /* { dg-require-effective-target ia32 } */ + /* { dg-require-effective-target pie } */ + /* { dg-options "-O2 -fpie" } */ +-/* { dg-final { scan-assembler "addl\[ \\t\]+\[$\]_GLOBAL_OFFSET_TABLE_, %ebx" } } */ +-/* { dg-final { scan-assembler "movl\[ \\t\]+c@GOTOFF\[(\]%ebx\[)\]" } } */ +-/* { dg-final { scan-assembler-not "movl\[ \\t\]+\[0-9]+\[(\]%esp\[)\], %ebx" } } */ ++/* { dg-final { scan-assembler "addl\[ \\t\]+\[$\]_GLOBAL_OFFSET_TABLE_, %ebx" { target { ! *-*-darwin* } } } } */ ++/* { dg-final { scan-assembler "movl\[ \\t\]+c@GOTOFF\[(\]%ebx\[)\]" { target { ! *-*-darwin* } } } } */ ++/* { dg-final { scan-assembler-not "movl\[ \\t\]+\[0-9]+\[(\]%esp\[)\], %ebx" { target { ! *-*-darwin* } } } } */ ++ ++/* Check PIC access to c and t1 on Darwin (PIC is default, needed for PIE). */ ++/* { dg-final { scan-assembler {_c-L1\$pb\(%} { target *-*-darwin* } } } */ ++/* { dg-final { scan-assembler {_t1.[0-9]+-L1\$pb\(%} { target *-*-darwin* } } } */ ++ + long c = 1; + + int bar(); +Index: gcc/testsuite/gcc.target/i386/pr32219-8.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/pr32219-8.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/pr32219-8.c (.../branches/gcc-8-branch) +@@ -13,6 +13,12 @@ + } + + /* { dg-final { scan-assembler-not "movl\[ \t\]xxx\\(%rip\\), %" { target { ! ia32 } } } } */ +-/* { dg-final { scan-assembler "xxx@GOTPCREL" { target { ! ia32 } } } } */ +-/* { dg-final { scan-assembler-not "movl\[ \t\]xxx@GOTOFF\\(%\[^,\]*\\), %" { target ia32 } } } */ +-/* { dg-final { scan-assembler "movl\[ \t\]xxx@GOT\\(%\[^,\]*\\), %" { target ia32 } } } */ ++/* Darwin is always PIC so no change, weak symbols needs to be indirect and this ++ happens to match the ELF case. */ ++/* { dg-final { scan-assembler "_?xxx@GOTPCREL" { target { ! ia32 } } } } */ ++ ++/* { dg-final { scan-assembler-not "movl\[ \t\]xxx@GOTOFF\\(%\[^,\]*\\), %" { target { ia32 && { ! *-*-darwin* } } } } } */ ++/* { 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][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_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-1.c (.../branches/gcc-8-branch) +@@ -1,5 +1,6 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -fno-pic" } */ ++/* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep " } */ ++/* { dg-additional-options "-fno-pic" { target { ! *-*-darwin* } } } */ + + typedef void (*dispatch_t)(long offset); + +@@ -14,9 +15,11 @@ + dispatch(offset); + } + +-/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */ +-/* { 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" } } */ ++/* { 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]*[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} } } */ + /* { dg-final { scan-assembler {\tpause} } } */ + /* { dg-final { scan-assembler {\tlfence} } } */ +Index: gcc/testsuite/gcc.target/i386/ret-thunk-24.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/ret-thunk-24.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/ret-thunk-24.c (.../branches/gcc-8-branch) +@@ -6,10 +6,12 @@ + struct s gs = { 100 + 200i }; + struct s __attribute__((noinline)) foo (void) { return gs; } + +-/* { dg-final { scan-assembler-times "popl\[\\t \]*%ecx" 1 } } */ +-/* { dg-final { scan-assembler "lea\[l\]?\[\\t \]*4\\(%esp\\), %esp" } } */ +-/* { dg-final { scan-assembler-not "jmp\[ \t\]*__x86_return_thunk_ecx" } } */ +-/* { dg-final { scan-assembler "jmp\[ \t\]*\.LIND" } } */ +-/* { dg-final { scan-assembler "call\[ \t\]*\.LIND" } } */ ++/* { dg-final { scan-assembler-times "popl\[\\t \]*%ecx" 1 { target { ! *-*-darwin* } } } } */ ++/* { dg-final { scan-assembler "lea\[l\]?\[\\t \]*4\\(%esp\\), %esp" { target { ! *-*-darwin* } } } } */ ++/* { dg-final { scan-assembler-not "jmp\[ \t\]*_?__x86_return_thunk_ecx" { target { ! *-*-darwin* } } } } */ ++/* { dg-final { scan-assembler {call[ \t]*___x86.get_pc_thunk.cx} { target { *-*-darwin* } } } } */ ++/* { dg-final { scan-assembler-not {jmp[ \t]*___x86_return_thunk} { target { *-*-darwin* } } } } */ ++/* { dg-final { scan-assembler {jmp[ \t]*\.?LIND} } } */ ++/* { dg-final { scan-assembler {call[ \t]*\.?LIND} } } */ + /* { dg-final { scan-assembler {\tpause} } } */ + /* { dg-final { scan-assembler {\tlfence} } } */ +Index: gcc/testsuite/gcc.target/i386/ret-thunk-8.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/ret-thunk-8.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/ret-thunk-8.c (.../branches/gcc-8-branch) +@@ -8,7 +8,7 @@ + { + } + +-/* { dg-final { scan-assembler-not "jmp\[ \t\]*__x86_return_thunk" } } */ ++/* { dg-final { scan-assembler-not "jmp\[ \t\]*_?__x86_return_thunk" } } */ + /* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */ +-/* { dg-final { scan-assembler-not "jmp\[ \t\]*\.LIND" } } */ +-/* { dg-final { scan-assembler-not "call\[ \t\]*\.LIND" } } */ ++/* { dg-final { scan-assembler-not {jmp[ \t]*\.?LIND} } } */ ++/* { dg-final { scan-assembler-not {call[ \t]*\.?LIND} } } */ +Index: gcc/testsuite/gcc.target/i386/pr91623.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/pr91623.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/pr91623.c (.../branches/gcc-8-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/gcc.target/i386/pr55116-2.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/pr55116-2.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/pr55116-2.c (.../branches/gcc-8-branch) +@@ -1,4 +1,5 @@ + /* { dg-do compile { target { ! ia32 } } } */ ++/* { dg-require-effective-target maybe_x32 } */ + /* { dg-options "-O2 -mx32 -maddress-mode=long" } */ + + typedef struct rtx_def *rtx; +Index: gcc/testsuite/gcc.target/x86_64/abi/avx512f/abi-avx512f.exp +=================================================================== +--- a/src/gcc/testsuite/gcc.target/x86_64/abi/avx512f/abi-avx512f.exp (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/x86_64/abi/avx512f/abi-avx512f.exp (.../branches/gcc-8-branch) +@@ -37,7 +37,6 @@ + foreach src [lsort [glob -nocomplain $srcdir/$subdir/test_*.c]] { + if {[runtest_file_p $runtests $src]} { + if { ([istarget *-*-darwin*]) } then { +- # FIXME: Darwin isn't tested. + c-torture-execute [list $src \ + $srcdir/$subdir/asm-support-darwin.s] \ + $additional_flags +Index: gcc/testsuite/gcc.target/x86_64/abi/avx512f/asm-support-darwin.s +=================================================================== +--- a/src/gcc/testsuite/gcc.target/x86_64/abi/avx512f/asm-support-darwin.s (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.target/x86_64/abi/avx512f/asm-support-darwin.s (.../branches/gcc-8-branch) +@@ -0,0 +1,93 @@ ++ .text ++ .p2align 4,,15 ++ .globl _snapshot ++_snapshot: ++LFB3: ++ movq %rax, _rax(%rip) ++ movq %rbx, _rbx(%rip) ++ movq %rcx, _rcx(%rip) ++ movq %rdx, _rdx(%rip) ++ movq %rdi, _rdi(%rip) ++ movq %rsi, _rsi(%rip) ++ movq %rbp, _rbp(%rip) ++ movq %rsp, _rsp(%rip) ++ movq %r8, _r8(%rip) ++ movq %r9, _r9(%rip) ++ movq %r10, _r10(%rip) ++ movq %r11, _r11(%rip) ++ movq %r12, _r12(%rip) ++ movq %r13, _r13(%rip) ++ movq %r14, _r14(%rip) ++ movq %r15, _r15(%rip) ++ vmovdqu32 %zmm0, _zmm_regs+0(%rip) ++ vmovdqu32 %zmm1, _zmm_regs+64(%rip) ++ vmovdqu32 %zmm2, _zmm_regs+128(%rip) ++ vmovdqu32 %zmm3, _zmm_regs+192(%rip) ++ vmovdqu32 %zmm4, _zmm_regs+256(%rip) ++ vmovdqu32 %zmm5, _zmm_regs+320(%rip) ++ vmovdqu32 %zmm6, _zmm_regs+384(%rip) ++ vmovdqu32 %zmm7, _zmm_regs+448(%rip) ++ vmovdqu32 %zmm8, _zmm_regs+512(%rip) ++ vmovdqu32 %zmm9, _zmm_regs+576(%rip) ++ vmovdqu32 %zmm10, _zmm_regs+640(%rip) ++ vmovdqu32 %zmm11, _zmm_regs+704(%rip) ++ vmovdqu32 %zmm12, _zmm_regs+768(%rip) ++ vmovdqu32 %zmm13, _zmm_regs+832(%rip) ++ vmovdqu32 %zmm14, _zmm_regs+896(%rip) ++ vmovdqu32 %zmm15, _zmm_regs+960(%rip) ++ vmovdqu32 %zmm16, _zmm_regs+1024(%rip) ++ vmovdqu32 %zmm17, _zmm_regs+1088(%rip) ++ vmovdqu32 %zmm18, _zmm_regs+1152(%rip) ++ vmovdqu32 %zmm19, _zmm_regs+1216(%rip) ++ vmovdqu32 %zmm20, _zmm_regs+1280(%rip) ++ vmovdqu32 %zmm21, _zmm_regs+1344(%rip) ++ vmovdqu32 %zmm22, _zmm_regs+1408(%rip) ++ vmovdqu32 %zmm23, _zmm_regs+1472(%rip) ++ vmovdqu32 %zmm24, _zmm_regs+1536(%rip) ++ vmovdqu32 %zmm25, _zmm_regs+1600(%rip) ++ vmovdqu32 %zmm26, _zmm_regs+1664(%rip) ++ vmovdqu32 %zmm27, _zmm_regs+1728(%rip) ++ vmovdqu32 %zmm28, _zmm_regs+1792(%rip) ++ vmovdqu32 %zmm29, _zmm_regs+1856(%rip) ++ vmovdqu32 %zmm30, _zmm_regs+1920(%rip) ++ vmovdqu32 %zmm31, _zmm_regs+1984(%rip) ++ jmp *_callthis(%rip) ++LFE3: ++ ++ .p2align 4,,15 ++ .globl _snapshot_ret ++_snapshot_ret: ++ movq %rdi, _rdi(%rip) ++ subq $8, %rsp ++ call *_callthis(%rip) ++ addq $8, %rsp ++ movq %rax, _rax(%rip) ++ movq %rdx, _rdx(%rip) ++ vmovdqu32 %zmm0, _zmm_regs+0(%rip) ++ vmovdqu32 %zmm1, _zmm_regs+64(%rip) ++ fstpt _x87_regs(%rip) ++ fstpt _x87_regs+16(%rip) ++ fldt _x87_regs+16(%rip) ++ fldt _x87_regs(%rip) ++ ret ++ ++ .comm _callthis,8,8 ++ .comm _rax,8,8 ++ .comm _rbx,8,8 ++ .comm _rcx,8,8 ++ .comm _rdx,8,8 ++ .comm _rsi,8,8 ++ .comm _rdi,8,8 ++ .comm _rsp,8,8 ++ .comm _rbp,8,8 ++ .comm _r8,8,8 ++ .comm _r9,8,8 ++ .comm _r10,8,8 ++ .comm _r11,8,8 ++ .comm _r12,8,8 ++ .comm _r13,8,8 ++ .comm _r14,8,8 ++ .comm _r15,8,8 ++ .comm _zmm_regs,2048,64 ++ .comm _x87_regs,128,32 ++ .comm _volatile_var,8,8 +Index: gcc/testsuite/lib/scanasm.exp +=================================================================== +--- a/src/gcc/testsuite/lib/scanasm.exp (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/lib/scanasm.exp (.../branches/gcc-8-branch) +@@ -504,7 +504,10 @@ + } + } + +- if { [istarget hppa*-*-*] } { ++ if { [istarget hppa*-*-linux*] } { ++ set pattern [format {%s:\n\t.PROC\n\t.CALLINFO.*\n\t.ENTRY\n.L.*:\n(\t.file[^\t]*)*\t[^:]+:%d(:[0-9]+)?\n} \ ++ $symbol $line] ++ } elseif { [istarget hppa*-*-*] } { + set pattern [format {\t;[^:]+:%d(:[0-9]+)?\n(\t[^\t]+\n)+%s:\n\t.PROC} \ + $line $symbol] + } elseif { [istarget mips*-*-*] } { +Index: gcc/testsuite/lib/target-supports.exp +=================================================================== +--- a/src/gcc/testsuite/lib/target-supports.exp (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/lib/target-supports.exp (.../branches/gcc-8-branch) +@@ -5018,13 +5018,13 @@ + || [istarget powerpc*-*-aix5.2*] } { + return 0 + } ++ # Darwin doesn't run on power8, so far. ++ if { [istarget *-*-darwin*] } { ++ return 0 ++ } + return [check_no_compiler_messages powerpc_p8vector_ok object { + int main (void) { +-#ifdef __MACH__ +- asm volatile ("xxlorc vs0,vs0,vs0"); +-#else + asm volatile ("xxlorc 0,0,0"); +-#endif + return 0; + } + } "-mpower8-vector"] +@@ -5045,6 +5045,10 @@ + || [istarget powerpc*-*-aix5.2*] } { + return 0 + } ++ # Darwin doesn't run on power9, so far. ++ if { [istarget *-*-darwin*] } { ++ return 0 ++ } + return [check_no_compiler_messages powerpc_p9vector_ok object { + int main (void) { + long e = -1; +@@ -5095,6 +5099,10 @@ + || [istarget powerpc*-*-aix5.2*] } { + return 0 + } ++ # Darwin doesn't have VSX, so no soft support for float128. ++ if { [istarget *-*-darwin*] } { ++ return 0 ++ } + return [check_no_compiler_messages powerpc_float128_sw_ok object { + volatile __float128 x = 1.0q; + volatile __float128 y = 2.0q; +@@ -5121,6 +5129,10 @@ + || [istarget powerpc*-*-aix5.2*] } { + return 0 + } ++ # Darwin doesn't run on any machine with float128 h/w so far. ++ if { [istarget *-*-darwin*] } { ++ return 0 ++ } + return [check_no_compiler_messages powerpc_float128_hw_ok object { + volatile __float128 x = 1.0q; + volatile __float128 y = 2.0q; +@@ -5147,13 +5159,14 @@ + || [istarget powerpc*-*-aix6*] } { + return 0 + } ++ # Darwin doesn't have VSX, even if it's used with an assembler ++ # which recognises the insns. ++ if { [istarget *-*-darwin*] } { ++ return 0 ++ } + return [check_no_compiler_messages powerpc_vsx_ok object { + int main (void) { +-#ifdef __MACH__ +- asm volatile ("xxlor vs0,vs0,vs0"); +-#else + asm volatile ("xxlor 0,0,0"); +-#endif + return 0; + } + } "-mvsx"] +Index: gcc/testsuite/gfortran.dg/transfer_simplify_12.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/transfer_simplify_12.f90 (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/transfer_simplify_12.f90 (.../branches/gcc-8-branch) +@@ -0,0 +1,27 @@ ++! { dg-do run } ++! { dg-options "-O -std=legacy" } ++! ++! Test fixes for some findings while resolving PR fortran/89077 ++ ++program test ++ implicit none ++ integer :: i ++ character(*) ,parameter :: s = 'abcdef' ! Length will be 6 ++ character(*) ,parameter :: h = 6Habcdef ! Length will be 8 (Hollerith!) ++ character(10) ,parameter :: k = 6Habcdef ++ character(10) ,parameter :: t = transfer (s, s) ++ character(10) ,save :: u = transfer (s, s) ++ character(10) ,parameter :: v = transfer (h, h) ++ character(10) ,save :: w = transfer (h, h) ++ character(10) ,parameter :: x = transfer ([(s(i:i),i=len(s),1,-1)], s) ++ character(10) ,save :: y = transfer ([(s(i:i),i=len(s),1,-1)], s) ++ if (len (h) /= 8) stop 1 ++ if (h /= s) stop 2 ++ if (k /= s) stop 3 ++ if (t /= s) stop 4 ++ if (u /= s) stop 5 ++ if (v /= s) stop 6 ++ if (w /= s) stop 7 ++ if (x /= "fedcba") stop 8 ++ if (y /= x) stop 9 ++end program test +Index: gcc/testsuite/gfortran.dg/associate_49.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/associate_49.f90 (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/associate_49.f90 (.../branches/gcc-8-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 <gscfq@t-online.de> ++! ++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/gomp/pr89651.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/gomp/pr89651.f90 (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/gomp/pr89651.f90 (.../branches/gcc-8-branch) +@@ -0,0 +1,21 @@ ++! PR fortran/89651 ++! { dg-do compile } ++! { dg-additional-options "-Wuninitialized" } ++ ++program pr89651 ++ integer :: n ++ real, allocatable :: t(:) ++ n = 10 ++ allocate (t(n), source = 0.0) ++!$omp parallel firstprivate(t) ++ print *, sum (t) ! { dg-bogus "lbound' may be used uninitialized in this function" } ++ ! { dg-bogus "ubound' may be used uninitialized in this function" "" { target *-*-* } .-1 } ++ ! { dg-bogus "offset' may be used uninitialized in this function" "" { target *-*-* } .-2 } ++!$omp end parallel ++!$omp parallel private(t) ++ t = 0.0 ++ print *, sum (t) ! { dg-bogus "lbound' may be used uninitialized in this function" } ++ ! { dg-bogus "ubound' may be used uninitialized in this function" "" { target *-*-* } .-1 } ++ ! { dg-bogus "offset' may be used uninitialized in this function" "" { target *-*-* } .-2 } ++!$omp end parallel ++end program pr89651 +Index: gcc/testsuite/gfortran.dg/gomp/pr89621.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/gomp/pr89621.f90 (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/gomp/pr89621.f90 (.../branches/gcc-8-branch) +@@ -0,0 +1,18 @@ ++! PR middle-end/89621 ++! { dg-do compile } ++ ++subroutine sub(str) ++ character(*), intent(in) :: str ++end subroutine sub ++ ++program pr89621 ++ implicit none ++ integer i ++ character(len=:), allocatable :: str ++ str = "test" ++ !$omp parallel do ++ do i = 1, 10 ++ call sub(str) ++ enddo ++ !$omp end parallel do ++end program pr89621 +Index: gcc/testsuite/gfortran.dg/substr_8.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/substr_8.f90 (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/substr_8.f90 (.../branches/gcc-8-branch) +@@ -0,0 +1,15 @@ ++! { dg-do run } ++! PR fortran/71203 - used to ICE on zero-length arrays or substrings ++! Derived from original test cases by Gerhard Steinmetz ++ ++program p ++ implicit none ++ character(3), parameter :: a(4) = ' ' ++ character(*), parameter :: b(4) = 'abc' ++ character(*), parameter :: x(*) = a(2:2)(3:1) ++ character(*), parameter :: y(*) = a(2:1)(3:1) ++ character(*), parameter :: z(*) = b(2:1)(2:3) ++ if (size (x) /= 1 .or. len(x) /= 0) stop 1 ++ if (size (y) /= 0 .or. len(y) /= 0) stop 2 ++ if (size (z) /= 0 .or. len(z) /= 2) stop 3 ++end +Index: gcc/testsuite/gfortran.dg/allocate_with_mold_3.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/allocate_with_mold_3.f90 (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/allocate_with_mold_3.f90 (.../branches/gcc-8-branch) +@@ -0,0 +1,21 @@ ++! { dg-do run } ++! PR fortran/89174 - this used to segfault on execution. ++! Test case by Neil Carlson. ++module mod ++ type :: array_data ++ class(*), allocatable :: mold ++ contains ++ procedure :: push ++ end type ++contains ++ subroutine push(this, value) ++ class(array_data), intent(inout) :: this ++ class(*), intent(in) :: value ++ allocate(this%mold, mold=value) ! <== SEGFAULTS HERE ++ end subroutine ++end module ++ ++use mod ++type(array_data) :: foo ++call foo%push(42) ++end +Index: gcc/testsuite/gfortran.dg/char_result_mod_19.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/char_result_mod_19.f90 (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/char_result_mod_19.f90 (.../branches/gcc-8-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/pointer_array_11.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pointer_array_11.f90 (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/pointer_array_11.f90 (.../branches/gcc-8-branch) +@@ -0,0 +1,90 @@ ++! { dg-do run } ++! ++! Test the fix for PR91077 - both the original test and that in comment #4 of the PR. ++! ++! Contribute by Ygal Klein <ygalklein@gmail.com> ++! ++program test ++ implicit none ++ call original ++ call comment_4 ++contains ++ subroutine original ++ integer, parameter :: length = 9 ++ real(8), dimension(2) :: a, b ++ integer :: i ++ type point ++ real(8) :: x ++ end type point ++ ++ type stored ++ type(point), dimension(:), allocatable :: np ++ end type stored ++ type(stored), dimension(:), pointer :: std =>null() ++ allocate(std(1)) ++ allocate(std(1)%np(length)) ++ std(1)%np(1)%x = 0.3d0 ++ std(1)%np(2)%x = 0.3555d0 ++ std(1)%np(3)%x = 0.26782d0 ++ std(1)%np(4)%x = 0d0 ++ std(1)%np(5)%x = 1.555d0 ++ std(1)%np(6)%x = 7.3d0 ++ std(1)%np(7)%x = 7.8d0 ++ std(1)%np(8)%x = 6.3d0 ++ std(1)%np(9)%x = 5.5d0 ++! do i = 1, 2 ++! write(*, "('std(1)%np(',i1,')%x = ',1e22.14)") i, std(1)%np(i)%x ++! end do ++! do i = 1, 2 ++! write(*, "('std(1)%np(1:',i1,') = ',9e22.14)") i, std(1)%np(1:i)%x ++! end do ++ a = std(1)%np(1:2)%x ++ b = [std(1)%np(1)%x, std(1)%np(2)%x] ++! print *,a ++! print *,b ++ if (allocated (std(1)%np)) deallocate (std(1)%np) ++ if (associated (std)) deallocate (std) ++ if (norm2(a - b) .gt. 1d-3) stop 1 ++ end subroutine ++ ++ subroutine comment_4 ++ integer, parameter :: length = 2 ++ real(8), dimension(length) :: a, b ++ integer :: i ++ ++ type point ++ real(8) :: x ++ end type point ++ ++ type points ++ type(point), dimension(:), pointer :: np=>null() ++ end type points ++ ++ type stored ++ integer :: l ++ type(points), pointer :: nfpoint=>null() ++ end type stored ++ ++ type(stored), dimension(:), pointer :: std=>null() ++ ++ ++ allocate(std(1)) ++ allocate(std(1)%nfpoint) ++ allocate(std(1)%nfpoint%np(length)) ++ std(1)%nfpoint%np(1)%x = 0.3d0 ++ std(1)%nfpoint%np(2)%x = 0.3555d0 ++ ++! do i = 1, length ++! write(*, "('std(1)%nfpoint%np(',i1,')%x = ',1e22.14)") i, std(1)%nfpoint%np(i)%x ++! end do ++! do i = 1, length ++! write(*, "('std(1)%nfpoint%np(1:',i1,')%x = ',2e22.14)") i, std(1)%nfpoint%np(1:i)%x ++! end do ++ a = std(1)%nfpoint%np(1:2)%x ++ b = [std(1)%nfpoint%np(1)%x, std(1)%nfpoint%np(2)%x] ++ if (associated (std(1)%nfpoint%np)) deallocate (std(1)%nfpoint%np) ++ if (associated (std(1)%nfpoint)) deallocate (std(1)%nfpoint) ++ if (associated (std)) deallocate (std) ++ if (norm2(a - b) .gt. 1d-3) stop 2 ++ end subroutine ++end program test +Index: gcc/testsuite/gfortran.dg/typebound_call_22.f03 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/typebound_call_22.f03 (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/typebound_call_22.f03 (.../branches/gcc-8-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/c_ptr_tests_19.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/c_ptr_tests_19.f90 (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/c_ptr_tests_19.f90 (.../branches/gcc-8-branch) +@@ -0,0 +1,36 @@ ++! { dg-do run } ++ ++! PR 71544 - this failed with some optimization options due to a ++! pointer not being marked as escaping. ++ ++module store_cptr ++ use, intrinsic :: iso_c_binding ++ implicit none ++ public ++ type(c_ptr), save :: cptr ++end module store_cptr ++ ++subroutine init() ++ use, intrinsic :: iso_c_binding ++ implicit none ++ integer(c_int), pointer :: a ++ allocate(a) ++ call save_cptr(c_loc(a)) ++ a = 100 ++end subroutine init ++ ++subroutine save_cptr(cptr_in) ++ use store_cptr ++ implicit none ++ type(c_ptr), intent(in) :: cptr_in ++ cptr = cptr_in ++end subroutine save_cptr ++ ++program init_fails ++ use store_cptr ++ implicit none ++ integer(c_int), pointer :: val ++ call init() ++ call c_f_pointer(cptr,val) ++ if (val /= 100) stop 1 ++end program init_fails +Index: gcc/testsuite/gfortran.dg/public_private_module_10.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/public_private_module_10.f90 (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/public_private_module_10.f90 (.../branches/gcc-8-branch) +@@ -0,0 +1,18 @@ ++! { dg-do compile } ++! PR 87734 - this used to issue spurious errors. ++ ++module m_vstring ++ implicit none ++ ++ public :: vstring_length ++ ++contains ++ ++ subroutine vstring_cast() ++ character ( len = vstring_length() ) :: char_string ++ end subroutine ++ ++ pure integer function vstring_length () ++ end function ++ ++end module +Index: gcc/testsuite/gfortran.dg/entry_22.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/entry_22.f90 (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/entry_22.f90 (.../branches/gcc-8-branch) +@@ -0,0 +1,12 @@ ++! { dg-do compile } ++! { dg-additional-options "-pedantic" } ++! PR fortran/89981 - this used to give a wrong warning (error with ++! -pedantic) ++program main ++ call bar(i) ++ call baz(i) ! { dg-error "Type mismatch in argument" } ++end program main ++subroutine foo(r) ++ entry bar(i) ++ entry baz(r) ++end subroutine foo +Index: gcc/testsuite/gfortran.dg/proc_ptr_51.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/proc_ptr_51.f90 (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/proc_ptr_51.f90 (.../branches/gcc-8-branch) +@@ -0,0 +1,38 @@ ++! { dg-do run } ++! ++! Test the fix for PR90786. ++! ++! Contributed by Andrew benson <abensonca@gmail.com> ++! ++module f ++procedure(c), pointer :: c_ ++ ++ type :: s ++ integer :: i = 42 ++ end type s ++ class(s), pointer :: res, tgt ++ ++contains ++ ++ function c() ++ implicit none ++ class(s), pointer :: c ++ c => tgt ++ return ++ end function c ++ ++ subroutine fs() ++ implicit none ++ c_ => c ! This used to ICE ++ return ++ end subroutine fs ++ ++end module f ++ ++ use f ++ allocate (tgt, source = s(99)) ++ call fs() ++ res => c_() ++ if (res%i .ne. 99) stop 1 ++ deallocate (tgt) ++end +Index: gcc/testsuite/gfortran.dg/dependency_53.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/dependency_53.f90 (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/dependency_53.f90 (.../branches/gcc-8-branch) +@@ -0,0 +1,25 @@ ++! { dg-do run } ++! PR fortran/66089 - used to ICE and, after that ICE was fixed, ++! gave wrong results. ++ type :: t ++ integer :: c ++ end type t ++ ++ class(t), dimension(:), allocatable :: b,c ++ ++ allocate (b(5), source=t(7)) ++ allocate(c(5), source=t(13)) ++ c = plus(c(1), b) ++ if (any(c%c /= 20)) stop 1 ++ c = t(13) ++ c = plus(b, c(1)) ++ if (any(c%c /= 20)) stop 2 ++contains ++ ++ elemental function plus(lhs, rhs) ++ class(t), intent(in) :: lhs, rhs ++ type(t) :: plus ++ plus%c = lhs%c + rhs%c ++ end function plus ++ ++end +Index: gcc/testsuite/gfortran.dg/binding_label_tests_30.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/binding_label_tests_30.f90 (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/binding_label_tests_30.f90 (.../branches/gcc-8-branch) +@@ -0,0 +1,7 @@ ++! { dg-do compile } ++! Make sure this error is flagged. ++subroutine foo() ! { dg-error "is already being used as a SUBROUTINE" } ++end subroutine foo ++ ++subroutine bar() bind(C,name="foo") ! { dg-error "is already being used as a SUBROUTINE" } ++end subroutine bar +Index: gcc/testsuite/gfortran.dg/class_70.f03 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/class_70.f03 (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/class_70.f03 (.../branches/gcc-8-branch) +@@ -0,0 +1,38 @@ ++! { dg-do run } ++! ++! Test the fix for PR57284 - [OOP] ICE with find_array_spec for polymorphic ++! arrays. Once thw ICE was fixed, work was needed to fix a segfault while ++! determining the size of 'z'. ++! ++! Contributed by Lorenz Huedepohl <bugs@stellardeath.org> ++! ++module testmod ++ type type_t ++ integer :: idx ++ end type type_t ++ type type_u ++ type(type_t), allocatable :: cmp(:) ++ end type ++contains ++ function foo(a, b) result(add) ++ class(type_t), intent(in) :: a(:), b(size(a)) ++ type(type_t) :: add(size(a)) ++ add%idx = a%idx + b%idx ++ end function ++end module testmod ++program p ++ use testmod ++ class(type_t), allocatable, dimension(:) :: x, y, z ++ class(type_u), allocatable :: w ++ allocate (x, y, source = [type_t (1), type_t(2)]) ++ z = foo (x, y) ++ if (any (z%idx .ne. [2, 4])) stop 1 ++ ++! Try something a bit more complicated than the original. ++ ++ allocate (w) ++ allocate (w%cmp, source = [type_t (2), type_t(3)]) ++ z = foo (w%cmp, y) ++ if (any (z%idx .ne. [3, 5])) stop 2 ++ deallocate (w, x, y, z) ++end program +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_8_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/warn_unused_dummy_argument_5.f90 (.../branches/gcc-8-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/transpose_optimization_2.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/transpose_optimization_2.f90 (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/transpose_optimization_2.f90 (.../branches/gcc-8-branch) +@@ -61,4 +61,4 @@ + ! The check below for temporaries gave 14 and 33 for "parm" and "atmp". + ! + ! { dg-final { scan-tree-dump-times "parm" 72 "original" } } +-! { dg-final { scan-tree-dump-times "atmp" 12 "original" } } ++! { dg-final { scan-tree-dump-times "atmp" 13 "original" } } +Index: gcc/testsuite/gfortran.dg/external_procedures_4.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/external_procedures_4.f90 (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/external_procedures_4.f90 (.../branches/gcc-8-branch) +@@ -0,0 +1,28 @@ ++! { dg-do run } ++! ++! Test the fix for PR87127 in which the references to exfunc cause ++! the error "‘exfunc’ at (1) is not a function". ++! ++! Contributed by Gerhard Steinmetz <gscfq@t-online.de> ++! ++function exfunc(i) ++ implicit none ++ integer :: exfunc,i ++ exfunc = 2*i ++end function ++ ++! contents of test.f90 ++program test ++ implicit none ++ integer :: exfunc,i ++ integer,parameter :: array(2)=[6,7] ++ associate(i=>array(2)) ! Original bug ++ if (exfunc(i) .ne. 2*i) stop 1 ++ end associate ++ i = 99 ++ call foo ++contains ++ subroutine foo() ! Comment #3 ++ if (exfunc(i) .ne. 2*i) stop 2 ++ end subroutine foo ++end program +Index: gcc/testsuite/gfortran.dg/whole_file_3.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/whole_file_3.f90 (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/whole_file_3.f90 (.../branches/gcc-8-branch) +@@ -14,8 +14,8 @@ + + program test + EXTERNAL R +- call PHLOAD (R, 1) ! { dg-warning "Missing alternate return spec" } +- CALL PHLOAD (R, 2) ! { dg-warning "Missing alternate return spec" } ++ call PHLOAD (R, 1) ! { dg-error "Missing alternate return specifier" } ++ CALL PHLOAD (R, 2) ! { dg-error "Missing alternate return specifier" } + CALL PHLOAD (R, *999) ! This one is OK + 999 continue + END program test +Index: gcc/testsuite/gfortran.dg/pr85797.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pr85797.f90 (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/pr85797.f90 (.../branches/gcc-8-branch) +@@ -0,0 +1,31 @@ ++! { dg-do compile } ++! PR fortran/83515 - ICE: Invalid expression in gfc_element_size ++! PR fortran/85797 - ICE in gfc_element_size, at fortran/target-memory.c:126 ++! PR fortran/89904 - ICE in gfortran starting with r270045 ++ ++recursive subroutine a ++ c = transfer (a, b) ! { dg-error "'SOURCE' argument of 'TRANSFER'" } ++end ++ ++recursive subroutine d ++ c = transfer (b, d) ! { dg-error "'MOLD' argument of 'TRANSFER'" } ++end ++ ++subroutine f ++ use, intrinsic :: iso_c_binding ++ integer(c_intptr_t) :: b, c ++ procedure(), pointer :: a ++ c = transfer (a, b) ++ c = transfer (transfer (b, a), b) ++end ++ ++module m ++contains ++ function f () result (z) ++ class(*), pointer :: z ++ end function f ++ recursive subroutine s (q) ++ procedure(f) :: q ++ call s (q) ++ end subroutine s ++end +Index: gcc/testsuite/gfortran.dg/dtio_34.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/dtio_34.f90 (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/dtio_34.f90 (.../branches/gcc-8-branch) +@@ -0,0 +1,32 @@ ++! { dg-do run } ++! PR84387 Defined output does not work for a derived type that ++! has no components ++module m ++ type :: t ++ private ++ !integer :: m_i = 0 !<-- *** ++ contains ++ private ++ procedure, pass(this) :: write_t ++ generic, public :: write(formatted) => write_t ++ end type ++contains ++ subroutine write_t(this, lun, iotype, vlist, istat, imsg) ++ ! argument definitions ++ class(t), intent(in) :: this ++ integer, intent(in) :: lun ++ character(len=*), intent(in) :: iotype ++ integer, intent(in) :: vlist(:) ++ integer, intent(out) :: istat ++ character(len=*), intent(inout) :: imsg ++ write(lun, fmt=*, iostat=istat, iomsg=imsg) "Hello World!" ++ return ++ end subroutine write_t ++ ++end module ++ ++program p ++ use m, only : t ++ type(t) :: foo ++ print "(dt)", foo ! { dg-output " Hello World!" } ++end program +Index: gcc/testsuite/gfortran.dg/associate_48.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/associate_48.f90 (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/associate_48.f90 (.../branches/gcc-8-branch) +@@ -0,0 +1,41 @@ ++! { dg=do run } ++! ++! Test the fix for PR90498. ++! ++! Contributed by Vladimir Fuka <vladimir.fuka@gmail.com> ++! ++ type field_names_a ++ class(*), pointer :: var(:) =>null() ++ end type ++ ++ type(field_names_a),pointer :: a(:) ++ allocate (a(2)) ++ ++ allocate (a(1)%var(2), source = ["hello"," vlad"]) ++ allocate (a(2)%var(2), source = ["HELLO"," VLAD"]) ++ call s(a) ++ deallocate (a(1)%var) ++ deallocate (a(2)%var) ++ deallocate (a) ++contains ++ subroutine s(a) ++ ++ type(field_names_a) :: a(:) ++ ++ select type (var => a(1)%var) ++ type is (character(*)) ++ if (any (var .ne. ["hello"," vlad"])) stop 1 ++ class default ++ stop ++ end select ++ ++ associate (var => a(2)%var) ++ select type (var) ++ type is (character(*)) ++ if (any (var .ne. ["HELLO"," VLAD"])) stop 2 ++ class default ++ stop ++ end select ++ end associate ++ end ++end +Index: gcc/testsuite/gfortran.dg/coarray_data_1.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/coarray_data_1.f90 (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/coarray_data_1.f90 (.../branches/gcc-8-branch) +@@ -0,0 +1,11 @@ ++! { dg-do run } ++! { dg-options "-fcoarray=lib -lcaf_single " } ++! PR 71066 - this used to ICE ++program p ++ real :: a(2,2)[*] ++ integer :: b(2,2)[*] ++ data a /4*0.0/ ++ data b /1234, 2345, 3456, 4567/ ++ if (any (a /= 0.0)) stop 1 ++ if (any (b /= reshape([1234, 2345, 3456, 4567],[2,2]))) stop 2 ++end +Index: gcc/testsuite/gfortran.dg/eof_6.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/eof_6.f90 (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/eof_6.f90 (.../branches/gcc-8-branch) +@@ -0,0 +1,23 @@ ++! { dg-do run } ++! { dg-options "-ffrontend-optimize" } ++! PR 92569 - the EOF condition was not recognized with ++! -ffrontend-optimize. Originjal test case by Bill Lipa. ++program main ++ implicit none ++ real(kind=8) :: tdat(1000,10) ++ real(kind=8) :: res (10, 3) ++ integer :: i, j, k, np ++ ++ open (unit=20, status="scratch") ++ res = reshape([(real(i),i=1,30)], shape(res)) ++ write (20,'(10G12.5)') res ++ rewind 20 ++ do j = 1,1000 ++ read (20,*,end=1)(tdat(j,k),k=1,10) ++ end do ++ ++1 continue ++ np = j-1 ++ if (np /= 3) stop 1 ++ if (any(transpose(res) /= tdat(1:np,:))) stop 2 ++end program main +Index: gcc/testsuite/gfortran.dg/deferred_character_33.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/deferred_character_33.f90 (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/deferred_character_33.f90 (.../branches/gcc-8-branch) +@@ -0,0 +1,35 @@ ++! { dg-do run } ++! { dg-additional-sources deferred_character_33a.f90 } ++! PR fortran/90744 - this used to pass a wrong length ++! to an external function without a prototype. ++! Original test case by Tomáš Trnka. ++module StringModule ++ implicit none ++ ++contains ++ function getstr() ++ character(:), allocatable :: getstr ++ ++ getstr = 'OK' ++ end function ++end module ++module TestModule ++ use StringModule ++ implicit none ++ ++contains ++ subroutine DoTest() ++ if (.false.) then ++ call convrs('A',getstr()) ++ else ++ call convrs('B',getstr()) ++ end if ++ end subroutine ++end module ++program external_char_length ++ use TestModule ++ ++ implicit none ++ ++ call DoTest() ++end program +Index: gcc/testsuite/gfortran.dg/transfer_check_5.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/transfer_check_5.f90 (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/transfer_check_5.f90 (.../branches/gcc-8-branch) +@@ -0,0 +1,14 @@ ++! { dg-do compile } ++! { dg-options "-Wsurprising" } ++! ++! PR fortran/89516 - ICE in gfc_calculate_transfer_sizes at gcc/fortran/check.c:5506 ++! Found by Martin Liška ++ ++program test ++ character(*), parameter :: n = '' ++ character(*), parameter :: o = transfer ([''], n) ++ print *, transfer(1,'',size=0) ! No warning ++ print *, transfer(1,'',size=1) ! No warning ++ print *, transfer('',1,size=0) ! No warning ++ print *, transfer('',1,size=1) ! { dg-warning "has partly undefined result" } ++end program test +Index: gcc/testsuite/gfortran.dg/do_subscript_6.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/do_subscript_6.f90 (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/do_subscript_6.f90 (.../branches/gcc-8-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/pr89492.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pr89492.f90 (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/pr89492.f90 (.../branches/gcc-8-branch) +@@ -0,0 +1,27 @@ ++! { dg-do compile } ++! ++! PR fortran/89492 - Endless compilation of an invalid TRANSFER after r269177 ++! Test error recovery for invalid uses of TRANSFER ++! Test proper simplification for MOLD with size 0 ++! ++! Derived from original testcase by Dominique d'Humieres ++ ++program bug4a ++ implicit none ++ type bug4 ++! Intentionally left empty ++ end type bug4 ++ integer, parameter :: k = size(transfer('',[''])) ! k = 0 ++ integer, parameter :: i = len (transfer('',[''])) ! i = 0 ++ integer, parameter :: l = len (transfer('', '' )) ! l = 0 ++ integer, parameter :: m(k) = k ++ integer, parameter :: j(i) = i ++ integer, parameter :: n(l) = l ++ print *, k,i,l,m,j,n ++ print *, transfer(1,['']) ! { dg-error "shall not have storage size 0" } ++ print *, transfer(1, '' ) ! No error ++ print *, size(transfer(1,[''])) ! { dg-error "shall not have storage size 0" } ++ print *, len (transfer(1, '' )) ! No error ++ print *, size(transfer([1],[bug4()])) ! { dg-error "shall not have storage size 0" } ++ print *, transfer(transfer([1],[bug4()]),[1]) ! { dg-error "shall not have storage size 0" } ++end program bug4a +Index: gcc/testsuite/gfortran.dg/external_procedure_4.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/external_procedure_4.f90 (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/external_procedure_4.f90 (.../branches/gcc-8-branch) +@@ -0,0 +1,19 @@ ++! { dg-do compile } ++! PR fortran/90937 - this used to cause an ICE. ++! Original test case by Toon Moene. ++subroutine lfidiff ++ ++ implicit none ++ ++ contains ++ ++ subroutine grlfi(cdnom) ++ ++ character(len=*) cdnom(:) ++ character(len=len(cdnom)) clnoma ++ ++ call lficas(clnoma) ++ ++ end subroutine grlfi ++ ++end subroutine lfidiff +Index: gcc/testsuite/gfortran.dg/assign_10.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/assign_10.f90 (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/assign_10.f90 (.../branches/gcc-8-branch) +@@ -24,4 +24,4 @@ + ! Note that it is the kind conversion that generates the temp. + ! + ! { dg-final { scan-tree-dump-times "parm" 20 "original" } } +-! { dg-final { scan-tree-dump-times "atmp" 18 "original" } } ++! { dg-final { scan-tree-dump-times "atmp" 20 "original" } } +Index: gcc/testsuite/gfortran.dg/deferred_character_33a.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/deferred_character_33a.f90 (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/deferred_character_33a.f90 (.../branches/gcc-8-branch) +@@ -0,0 +1,9 @@ ++! { dg-do compile } ++subroutine convrs(quanty,fromto) ++ implicit none ++ ++ character(*), intent(in) :: quanty,fromto ++ ++ if (len(fromto) /= 2) stop 1 ++ if (fromto /= 'OK') stop 2 ++end subroutine +Index: gcc/testsuite/gfortran.dg/coarray_allocate_11.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/coarray_allocate_11.f90 (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/coarray_allocate_11.f90 (.../branches/gcc-8-branch) +@@ -0,0 +1,15 @@ ++! { dg-do compile } ++! { dg-additional-options -fcoarray=single } ++program p ++ integer, allocatable :: z[:,:] ++ integer :: i ++ allocate (z[1:,*]) ! { dg-error "Bad array specification in ALLOCATE statement" } ++ allocate (z[:2,*]) ! { dg-error "Bad array specification in ALLOCATE statement" } ++ allocate (z[2:1,*]) ! { dg-error "Upper cobound is less than lower cobound" } ++ allocate (z[:0,*]) ! { dg-error "Bad array specification in ALLOCATE statement" } ++ allocate (z[0,*]) ! { dg-error "Upper cobound is less than lower cobound" } ++ allocate (z[1,*]) ! This is OK ++ allocate (z[1:1,*]) ! This is OK ++ allocate (z[i:i,*]) ! This is OK ++ allocate (z[i:i-1,*]) ! { dg-error "Upper cobound is less than lower cobound" } ++end +Index: gcc/testsuite/gfortran.dg/pointer_intent_8.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pointer_intent_8.f90 (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/pointer_intent_8.f90 (.../branches/gcc-8-branch) +@@ -0,0 +1,22 @@ ++! { dg-do run } ++! PR 85797 - this used to get wrong results. ++ ++ ++PROGRAM testfortran2 ++ IMPLICIT NONE ++ ++ INTEGER, DIMENSION(10), TARGET :: i4array ++ ++ i4array = (/ 1,2,3,4,5,6,7,8,9,10 /) ++ ++ call InRef(i4array) ++ ++CONTAINS ++ ++ subroutine InRef(v) ++ INTEGER, DIMENSION(:), POINTER, INTENT(in) :: v ++ INTEGER :: i ++ if (any (v /= [(i,i=1,10)])) stop 1 ++ END subroutine ++ ++END +Index: gcc/testsuite/gfortran.dg/ieee/ieee.exp +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/ieee/ieee.exp (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/ieee/ieee.exp (.../branches/gcc-8-branch) +@@ -22,15 +22,15 @@ + load_lib gfortran-dg.exp + load_lib target-supports.exp + +-# Initialize `dg'. +-dg-init +- +-# Flags specified in each test ++# If a testcase doesn't have special options, use these. + global DEFAULT_FFLAGS + if ![info exists DEFAULT_FFLAGS] then { +- set DEFAULT_FFLAGS "" ++ set DEFAULT_FFLAGS " -pedantic-errors" + } + ++# Initialize `dg'. ++dg-init ++ + # Flags for finding the IEEE modules + if [info exists TOOL_OPTIONS] { + set specpath [get_multilibs ${TOOL_OPTIONS}] +Index: gcc/testsuite/gfortran.dg/binding_label_tests_33.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/binding_label_tests_33.f90 (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/binding_label_tests_33.f90 (.../branches/gcc-8-branch) +@@ -0,0 +1,39 @@ ++! { dg-do run } ++! PR 79485 - used to crash because the wrong routine was called. ++module fmod1 ++ ++ contains ++ ++ subroutine foo(i) ++ implicit none ++ ++ integer, intent(inout) :: i ++ ++ i=i+1 ++ ++ end subroutine foo ++ ++end module fmod1 ++ ++module fmod2 ++ use iso_c_binding ++ use fmod1, only : foo_first => foo ++ ++ contains ++ ++ subroutine foo(i) bind(c) ++ implicit none ++ ++ integer, intent(inout) :: i ++ ++ i=i+2 ++ call foo_first(i) ++ ++ end subroutine foo ++ ++end module fmod2 ++ ++ use fmod2 ++ ++ call foo(i) ++end +Index: gcc/testsuite/gfortran.dg/charlen_17.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/charlen_17.f90 (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/charlen_17.f90 (.../branches/gcc-8-branch) +@@ -0,0 +1,14 @@ ++! { dg-do compile } ++! PR 87673 - used to cause errors about non-pure functions. ++ ++module x ++ implicit none ++contains ++ pure function foo() result(res) ++ character(len=:), allocatable :: res ++ allocate (character(bar()) :: res) ++ end function foo ++ pure integer function bar() ++ bar = 1 ++ end function bar ++end module x +Index: gcc/testsuite/gfortran.dg/char_result_19.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/char_result_19.f90 (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/char_result_19.f90 (.../branches/gcc-8-branch) +@@ -0,0 +1,24 @@ ++! { dg-do preprocess } ++! { dg-additional-options "-cpp" } ++! ++! Test the fix for PR86248 ++! ++! Contributed by Bill Long <longb@cray.com> ++! ++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/deferred_character_32.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/deferred_character_32.f90 (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/deferred_character_32.f90 (.../branches/gcc-8-branch) +@@ -0,0 +1,13 @@ ++! { dg-do run } ++! ++! Test the fix for PR88117. ++! ++! Contributed by Gerhard Steinmetz <gscfq@t-online.de> ++! ++program p ++ character(:), pointer :: z(:) ++ allocate (z, source = ['abcd', 'bcde']) ++ z = (z) ! gimplifier choked here. ++ if (any (z .ne. ['abcd', 'bcde'])) stop 1 ++ deallocate (z) ++end +Index: gcc/testsuite/gfortran.dg/do_subscript_5.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/do_subscript_5.f90 (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/do_subscript_5.f90 (.../branches/gcc-8-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/dg.exp +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/dg.exp (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/dg.exp (.../branches/gcc-8-branch) +@@ -36,7 +36,7 @@ + global gfortran_test_path + global gfortran_aux_module_flags + if { [llength $args] != 2 } { +- error "dg-set-target-env-var: needs one argument" ++ error "dg-compile-aux-modules: needs one argument" + return + } + +Index: gcc/testsuite/gfortran.dg/pr91660_2.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pr91660_2.f90 (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/pr91660_2.f90 (.../branches/gcc-8-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/pr69455_2.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pr69455_2.f90 (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/pr69455_2.f90 (.../branches/gcc-8-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/finalize_28.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/finalize_28.f90 (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/finalize_28.f90 (.../branches/gcc-8-branch) +@@ -21,4 +21,4 @@ + integer, intent(out) :: edges(:,:) + end subroutine coo_dump_edges + end module coo_graphs +-! { dg-final { scan-tree-dump-times "__builtin_free" 6 "original" } } ++! { dg-final { scan-tree-dump-times "__builtin_free" 5 "original" } } +Index: gcc/testsuite/gfortran.dg/substr_simplify.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/substr_simplify.f90 (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/substr_simplify.f90 (.../branches/gcc-8-branch) +@@ -0,0 +1,20 @@ ++! { dg-do run } ++! ++! Test fixes for substring simplications derived from ++! PR fortran/89077 - ICE using * as len specifier for character parameter ++ ++program test ++ implicit none ++ integer :: i ++ character(*), parameter :: s = 'abcdef', y = 'efcdab' ++ character(6), save :: t = transfer ([(s(i:i), i=1,len(s) )], s) ++ character(*), parameter :: u = transfer ([(s(i:i+2),i=1,len(s),3)], s) ++ character(6), save :: v = transfer ([(s(i:i+2),i=1,len(s),3)], s) ++ character(*), parameter :: w = transfer ([(y(i:i+1),i=len(s)-1,1,-2)], s) ++ character(6), save :: x = transfer ([(y(i:i+1),i=len(s)-1,1,-2)], s) ++ if (len (t) /= len (s) .or. t /= s) stop 1 ++ if (len (u) /= len (s) .or. u /= s) stop 2 ++ if (len (v) /= len (s) .or. v /= s) stop 3 ++ if (len (w) /= len (s) .or. w /= s) stop 4 ++ if (len (x) /= len (s) .or. x /= s) stop 5 ++end +Index: gcc/testsuite/gfortran.dg/altreturn_10.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/altreturn_10.f90 (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/altreturn_10.f90 (.../branches/gcc-8-branch) +@@ -0,0 +1,19 @@ ++! { dg-do compile } ++! { dg-options -Os } ++! PR 78865 - this used to ICE. ++program p ++ call sub (3) ++end ++subroutine sub (x) ++ integer :: x, i, n ++ do i = 1, x ++ if ( n /= 0 ) stop ++ call sub2 ++ end do ++ print *, x, n ++end ++subroutine sub2 ++ call sub (*99) ! { dg-error "Unexpected alternate return specifier" } ++ call sub (99.) ! { dg-warning "Type mismatch in argument" } ++99 stop ++end +Index: gcc/testsuite/gfortran.dg/altreturn_9_1.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/altreturn_9_1.f90 (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/altreturn_9_1.f90 (.../branches/gcc-8-branch) +@@ -0,0 +1,7 @@ ++! { dg-do compile } ++! { dg-options "-std=gnu" } ++! See altreturn_9_0.f90 ++subroutine sub(i, *, j) ++ if (i == 10 .and. j == 20) return 1 ++ return ++end subroutine sub +Index: gcc/testsuite/gfortran.dg/binding_label_tests_32.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/binding_label_tests_32.f90 (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/binding_label_tests_32.f90 (.../branches/gcc-8-branch) +@@ -0,0 +1,35 @@ ++! { dg-do run } ++! PR 77746 - this used to crash during execution. ++! Original test case by Vladimir Fuka. ++module first ++ private ++ public execute ++ ++ interface execute ++ module procedure random_name ++ end interface ++ ++contains ++ ++ subroutine random_name() ++ end subroutine ++end module ++ ++module test ++ use first ++ ++ implicit none ++ ++contains ++ ++ subroutine p_execute(i) bind(C, name="random_name") ++ integer :: i ++ ++ call execute() ++ end subroutine ++ ++end module ++ ++ use test ++ call p_execute(1) ++end +Index: gcc/testsuite/gfortran.dg/interface_abstract_5.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/interface_abstract_5.f90 (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/interface_abstract_5.f90 (.../branches/gcc-8-branch) +@@ -0,0 +1,32 @@ ++! { dg-do compile } ++! ++! PR 71861: [7/8/9 Regression] [F03] ICE in write_symbol(): bad module symbol ++! ++! Contributed by Gerhard Steinmetz <gerhard.steinmetz.fortran@t-online.de> ++ ++module m1 ++ intrinsic abs ++ abstract interface ++ function abs(x) ! { dg-error "ABSTRACT attribute conflicts with INTRINSIC attribute" } ++ real :: abs, x ++ end ++ end interface ++end ++ ++module m2 ++ abstract interface ++ function abs(x) ++ real :: abs, x ++ end ++ end interface ++ intrinsic abs ! { dg-error "ABSTRACT attribute conflicts with INTRINSIC attribute" } ++end ++ ++module m3 ++ abstract interface ++ function f(x) ++ real :: f, x ++ end ++ end interface ++ intrinsic f ! { dg-error "ABSTRACT attribute conflicts with INTRINSIC attribute" } ++end +Index: gcc/testsuite/gfortran.dg/pr89266.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pr89266.f90 (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/pr89266.f90 (.../branches/gcc-8-branch) +@@ -0,0 +1,25 @@ ++! { dg-do run } ++! ++! PR fortran/89266 - ICE with TRANSFER of len=0 character array constructor ++ ++program test ++ implicit none ++ character(*), parameter :: n = '' ++ character(*), parameter :: o = transfer ([''], n) ++ character(*), parameter :: p = transfer ( n , n) ++ character(*), parameter :: q = transfer ([n], n) ++ character(6), save :: r = transfer ([''], n) ++ character(6), save :: s = transfer ( n , n) ++ character(6), save :: t = transfer ([n], n) ++ integer, parameter :: a(0) = 0 ++ integer, parameter :: b(0) = transfer (a, a) ++ integer, save :: c(0) = transfer (a, a) ++ if (len (o) /= 0) stop 1 ++ if (len (p) /= 0) stop 2 ++ if (len (q) /= 0) stop 3 ++ if (r /= "") stop 4 ++ if (s /= "") stop 5 ++ if (t /= "") stop 6 ++ if (size (b) /= 0 .or. any (b /= 0)) stop 7 ++ if (size (c) /= 0 .or. any (c /= 0)) stop 8 ++end program test +Index: gcc/testsuite/gfortran.dg/pr91660_1.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pr91660_1.f90 (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/pr91660_1.f90 (.../branches/gcc-8-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 "Can't convert" } ++end +Index: gcc/testsuite/gfortran.dg/coarray/caf.exp +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/coarray/caf.exp (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/coarray/caf.exp (.../branches/gcc-8-branch) +@@ -51,11 +51,21 @@ + global gfortran_test_path + global gfortran_aux_module_flags + if { [llength $args] != 2 } { +- error "dg-set-target-env-var: needs one argument" ++ error "dg-compile-aux-modules: needs one argument" + return + } ++ ++ set level [info level] ++ if { [info procs dg-save-unknown] != [list] } { ++ rename dg-save-unknown dg-save-unknown-level-$level ++ } ++ + dg-test $gfortran_test_path/[lindex $args 1] "" $gfortran_aux_module_flags +- # cleanup-modules isn't intentionally invoked here. ++ # cleanup-modules is intentionally not invoked here. ++ ++ if { [info procs dg-save-unknown-level-$level] != [list] } { ++ rename dg-save-unknown-level-$level dg-save-unknown ++ } + } + + # Add -latomic only where supported. Assume built-in support elsewhere. +Index: gcc/testsuite/gfortran.dg/lto/20091028-1_0.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/lto/20091028-1_0.f90 (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/lto/20091028-1_0.f90 (.../branches/gcc-8-branch) +@@ -1,5 +1,5 @@ + ! { dg-lto-do link } +-! { dg-extra-ld-options "-r -nostdlib -finline-functions" } ++! { dg-extra-ld-options "-r -nostdlib -finline-functions -Wno-lto-type-mismatch" } + + SUBROUTINE int_gen_ti_header_char( hdrbuf, hdrbufsize, itypesize, & + DataHandle, Element, VarName, Data, code ) +Index: gcc/testsuite/gfortran.dg/lto/20091028-2_0.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/lto/20091028-2_0.f90 (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/lto/20091028-2_0.f90 (.../branches/gcc-8-branch) +@@ -1,5 +1,5 @@ + ! { dg-lto-do link } +-! { dg-extra-ld-options "-r -nostdlib -finline-functions" } ++! { dg-extra-ld-options "-r -nostdlib -finline-functions -Wno-lto-type-mismatch" } + + SUBROUTINE int_gen_ti_header_char( hdrbuf, hdrbufsize, itypesize, & + DataHandle, Element, VarName, Data, code ) +Index: gcc/testsuite/gfortran.dg/lto/pr87689_0.f +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/lto/pr87689_0.f (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/lto/pr87689_0.f (.../branches/gcc-8-branch) +@@ -0,0 +1,13 @@ ++! { dg-lto-run } ++! PR 87689 - this used to fail for POWER, plus it used to ++! give warnings about mismatches with LTO. ++! Original test case by Judicaël Grasset. ++ program main ++ implicit none ++ character :: c ++ character(len=20) :: res, doesntwork_p8 ++ external doesntwork_p8 ++ c = 'o' ++ res = doesntwork_p8(c,1,2,3,4,5,6) ++ if (res /= 'foo') stop 3 ++ end program main +Index: gcc/testsuite/gfortran.dg/lto/pr87689_1.f +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/lto/pr87689_1.f (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/lto/pr87689_1.f (.../branches/gcc-8-branch) +@@ -0,0 +1,11 @@ ++ function doesntwork_p8(c,a1,a2,a3,a4,a5,a6) ++ implicit none ++ character(len=20) :: doesntwork_p8 ++ character :: c ++ integer :: a1,a2,a3,a4,a5,a6 ++ if (a1 /= 1 .or. a2 /= 2 .or. a3 /= 3 .or. a4 /= 4 .or. a5 /= 5 ++ & .or. a6 /= 6) stop 1 ++ if (c /= 'o ') stop 2 ++ doesntwork_p8 = 'foo' ++ return ++ end +Index: gcc/testsuite/gfortran.dg/finalize_34.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/finalize_34.f90 (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/finalize_34.f90 (.../branches/gcc-8-branch) +@@ -0,0 +1,25 @@ ++! { dg-do compile } ++! { dg-additional-options "-fdump-tree-original" } ++! PR 87352 - this used to cause an excessive number of deallocations. ++module testmodule ++ implicit none ++ public ++ ++ type :: evtlist_type ++ real, allocatable, dimension(:) :: p1 ++ real, allocatable, dimension(:) :: p2 ++ real, allocatable, dimension(:) :: p3 ++ real, allocatable, dimension(:) :: p4 ++ end type evtlist_type ++ ++ type :: evtlistlist_type ++ type(evtlist_type) :: evtlist(1:1) ++ end type evtlistlist_type ++ ++end module testmodule ++ ++program main ++ use testmodule ++ type(evtlist_type), dimension(10) :: a ++end program main ++! { dg-final { scan-tree-dump-times "__builtin_free" 8 "original" } } +Index: gcc/testsuite/gfortran.dg/pr89664.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pr89664.f90 (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/pr89664.f90 (.../branches/gcc-8-branch) +@@ -0,0 +1,24 @@ ++! { dg-do compile } ++! { dg-options "-Ofast" } ++ ++subroutine s (x) ++ real :: x ++ call sub (x) ++end ++subroutine sub (x) ++ real :: x, y ++ logical :: a, b ++ real :: f1, f2, f3, f4 ++ y = f1() ++ a = .false. ++ if ( f2() > f3() ) a = .true. ++ b = .false. ++ if ( f2() > f4() ) b = .true. ++ if ( a ) then ++ x = 1.0 ++ else if ( b ) then ++ x = 1.0/y**2 ++ else ++ x = 1.0/y - y**2 ++ end if ++end +Index: gcc/testsuite/gfortran.dg/no_arg_check_2.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/no_arg_check_2.f90 (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/no_arg_check_2.f90 (.../branches/gcc-8-branch) +@@ -139,7 +139,7 @@ + ! { dg-final { scan-tree-dump-times "sub_scalar .\\(struct t1 .\\) array_class_t1_alloc._data.data" 1 "original" } } + ! { dg-final { scan-tree-dump-times "sub_scalar .\\(struct t1 .\\) \\(array_class_t1_ptr._data.dat" 1 "original" } } + +-! { dg-final { scan-tree-dump-times "sub_array_assumed \\(D" 3 "original" } } ++! { dg-final { scan-tree-dump-times "sub_array_assumed \\(D" 4 "original" } } + ! { dg-final { scan-tree-dump-times " = _gfortran_internal_pack \\(&parm" 1 "original" } } + ! { dg-final { scan-tree-dump-times "sub_array_assumed \\(&array_int\\)" 1 "original" } } + ! { dg-final { scan-tree-dump-times "sub_array_assumed \\(\\(real\\(kind=4\\).0:. . restrict\\) array_real_alloc.data" 1 "original" } } +@@ -148,5 +148,5 @@ + ! { dg-final { scan-tree-dump-times "sub_array_assumed \\(\\(struct t1.0:. .\\) parm" 1 "original" } } + ! { dg-final { scan-tree-dump-times "sub_array_assumed \\(\\(struct t2.0:. . restrict\\) array_t2_alloc.data\\);" 1 "original" } } + ! { dg-final { scan-tree-dump-times "sub_array_assumed \\(\\(struct t1.0:. . restrict\\) array_class_t1_alloc._data.data\\);" 1 "original" } } +-! { dg-final { scan-tree-dump-times "sub_array_assumed \\(\\(struct t1.0:. .\\) array_class_t1_ptr._data.data\\);" 1 "original" } } ++! { dg-final { scan-tree-dump-times "sub_array_assumed \\(\\(struct t1.0:. .\\) array_class_t1_ptr._data.data\\);" 0 "original" } } + +Index: gcc/testsuite/gfortran.dg/pr69455_1.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pr69455_1.f90 (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/pr69455_1.f90 (.../branches/gcc-8-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/pr77583.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pr77583.f90 (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/pr77583.f90 (.../branches/gcc-8-branch) +@@ -0,0 +1,10 @@ ++! { dg-do compile } ++! ++! PR fortran/77583 - ICE in pp_quoted_string, at pretty-print.c:966 ++! Contributed by Gerhard Steinmetz <gerhard.steinmetz.fortran@t-online.de> ++ ++pure subroutine sub(s) ++contains ++ pure subroutine s ! { dg-error "conflicts with DUMMY argument" } ++ end ++end +Index: gcc/testsuite/gfortran.dg/blockdata_11.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/blockdata_11.f90 (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/blockdata_11.f90 (.../branches/gcc-8-branch) +@@ -0,0 +1,33 @@ ++! { dg-do run } ++! PR 84394 - this used to complain about private procedures in ++! BLOCK data. ++module mod1 ++ implicit none ++ type :: type1 ++ integer :: i1 ++ end type type1 ++end module ++ ++module mod2 ++ implicit none ++ contains ++ subroutine sub1 ++ integer vals ++ common /block1/ vals(5) ++ if (any(vals /= [1, 2, 3, 4, 5])) stop 1 ++ end subroutine ++end module ++ ++block data blkdat ++ use mod1 ++ integer vals ++ common /block1/ vals(5) ++ data vals/1, 2, 3, 4, 5/ ++end block data blkdat ++ ++program main ++ use mod2, only: sub1 ++ implicit none ++ call sub1 ++end program ++ +Index: gcc/testsuite/gfortran.dg/altreturn_9_0.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/altreturn_9_0.f90 (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/altreturn_9_0.f90 (.../branches/gcc-8-branch) +@@ -0,0 +1,10 @@ ++! { dg-do run } ++! { dg-options -std=gnu } ++! { dg-additional-sources altreturn_9_1.f90 } ++! PR 89496 - wrong type for alternate return was generated ++ ++program main ++ call sub(10, *10, 20) ++ stop 1 ++10 continue ++end program main +Index: gcc/testsuite/gfortran.dg/binding_label_tests_31.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/binding_label_tests_31.f90 (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/binding_label_tests_31.f90 (.../branches/gcc-8-branch) +@@ -0,0 +1,19 @@ ++! { dg-do compile } ++! PR fortran/66695 - this used to ICE. ++! Original test case by Vladimir Fuka. ++module mod ++ implicit none ++contains ++ integer function F() ++ end function ++end module ++ ++module mod_C ++ use mod ++ implicit none ++contains ++ subroutine s() bind(C, name="f") ++ integer :: x ++ x = F() ++ end subroutine ++end module +Index: gcc/testsuite/gfortran.dg/streamio_18.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/streamio_18.f90 (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/streamio_18.f90 (.../branches/gcc-8-branch) +@@ -0,0 +1,23 @@ ++! { dg-do run } ++! PR91200 ++program foo ++ implicit none ++ integer fd ++ open(newunit=fd, file='test.dat', access='stream', form='formatted') ++ write(fd,'(A)') '$MeshFormat' ++ write(fd,'(A)') 'aabbccdd' ++ close(fd) ++ call readfile ! Read test.dat ++contains ++ subroutine readfile ++ character(len=20) buf1, buf2 ++ integer fd, m, n ++ open(newunit=fd, file='test.dat', access='stream', form='formatted') ++ inquire(fd, pos=m) ++ if (m /= 1) stop 'm /= 1' ++ read(fd, *) buf1 ++ read(fd, *, pos=m) buf2 ! Reread by using pos=1 ++ close(fd, status='delete') ++ if (buf1 /= buf2) stop 'wrong' ++ end subroutine readfile ++end program +Index: gcc/testsuite/gfortran.dg/pr88326.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pr88326.f90 (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/pr88326.f90 (.../branches/gcc-8-branch) +@@ -0,0 +1,11 @@ ++! { dg-do compile } ++! ++! PR fortran/88326 - ICE in gfc_conv_array_initializer ++ ++program p ++ character, parameter :: x(3) = ['a','b','c'] ++ character :: y(1) = transfer('', x) ! { dg-error "Different shape for array assignment" } ++ character(0) :: z(1) = transfer('', x) ! { dg-error "Different shape for array assignment" } ++ character :: u(0) = transfer('', x) ++ print *, y, z, u ++end +Index: gcc/testsuite/gfortran.dg/warn_conversion_11.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/warn_conversion_11.f90 (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/warn_conversion_11.f90 (.../branches/gcc-8-branch) +@@ -0,0 +1,18 @@ ++! { dg-do compile } ++! { dg-options "-Wconversion" } ++! PR 86119 - this used to warn. ++program proglen ++ ++implicit none ++ ++ class(*), allocatable :: s ++ integer :: l2 ++ ++ allocate(s, source = '123 ') ++ ++ select type(s) ++ type is (character(len=*)) ++ l2 = len(s) ++ end select ++ ++end program proglen +Index: gcc/testsuite/gfortran.dg/pdt_4.f03 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pdt_4.f03 (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/pdt_4.f03 (.../branches/gcc-8-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/assumed_type_2.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/assumed_type_2.f90 (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/assumed_type_2.f90 (.../branches/gcc-8-branch) +@@ -157,7 +157,7 @@ + ! { dg-final { scan-tree-dump-times "sub_scalar .\\(struct t1 .\\) array_class_t1_alloc._data.data" 1 "original" } } + ! { dg-final { scan-tree-dump-times "sub_scalar .\\(struct t1 .\\) \\(array_class_t1_ptr._data.dat" 1 "original" } } + +-! { dg-final { scan-tree-dump-times "sub_array_assumed \\(D" 3 "original" } } ++! { dg-final { scan-tree-dump-times "sub_array_assumed \\(D" 4 "original" } } + ! { dg-final { scan-tree-dump-times " = _gfortran_internal_pack \\(&parm" 1 "original" } } + ! { dg-final { scan-tree-dump-times "sub_array_assumed \\(&array_int\\)" 1 "original" } } + ! { dg-final { scan-tree-dump-times "sub_array_assumed \\(\\(real\\(kind=4\\).0:. . restrict\\) array_real_alloc.data" 1 "original" } } +@@ -166,7 +166,7 @@ + ! { dg-final { scan-tree-dump-times "sub_array_assumed \\(\\(struct t1.0:. .\\) parm" 1 "original" } } + ! { dg-final { scan-tree-dump-times "sub_array_assumed \\(\\(struct t2.0:. . restrict\\) array_t2_alloc.data\\);" 1 "original" } } + ! { dg-final { scan-tree-dump-times "sub_array_assumed \\(\\(struct t1.0:. . restrict\\) array_class_t1_alloc._data.data\\);" 1 "original" } } +-! { dg-final { scan-tree-dump-times "sub_array_assumed \\(\\(struct t1.0:. .\\) array_class_t1_ptr._data.data\\);" 1 "original" } } ++! { dg-final { scan-tree-dump-times "sub_array_assumed \\(\\(struct t1.0:. .\\) array_class_t1_ptr._data.data\\);" 0 "original" } } + + ! { dg-final { scan-tree-dump-times "sub_array_shape \\(&array_real_alloc," 1 "original" } } + ! { dg-final { scan-tree-dump-times "sub_array_shape \\(&array_char_ptr," 1 "original" } } +Index: gcc/testsuite/gcc.c-torture/execute/20190228-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.c-torture/execute/20190228-1.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.c-torture/execute/20190228-1.c (.../branches/gcc-8-branch) +@@ -0,0 +1,16 @@ ++/* PR tree-optimization/89536 */ ++/* Testcase by Zhendong Su <su@cs.ucdavis.edu> */ ++ ++int a = 1; ++ ++int main (void) ++{ ++ a = ~(a && 1); ++ if (a < -1) ++ a = ~a; ++ ++ if (!a) ++ __builtin_abort (); ++ ++ return 0; ++} +Index: gcc/testsuite/gcc.c-torture/execute/20190820-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.c-torture/execute/20190820-1.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.c-torture/execute/20190820-1.c (.../branches/gcc-8-branch) +@@ -0,0 +1,111 @@ ++/* PR rtl-optimization/91347 */ ++/* Reported by John David Anglin <danglin@gcc.gnu.org> */ ++ ++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_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.c-torture/execute/20191023-1.c (.../branches/gcc-8-branch) +@@ -0,0 +1,73 @@ ++/* PR tree-optimization/92131 */ ++/* Testcase by Armin Rigo <arigo@tunes.org> */ ++ ++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/pr91450-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.c-torture/execute/pr91450-1.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.c-torture/execute/pr91450-1.c (.../branches/gcc-8-branch) +@@ -0,0 +1,88 @@ ++/* PR middle-end/91450 */ ++ ++__attribute__((noipa)) unsigned long long ++foo (int a, int b) ++{ ++ unsigned long long r; ++ if (!__builtin_mul_overflow (a, b, &r)) ++ __builtin_abort (); ++ return r; ++} ++ ++__attribute__((noipa)) unsigned long long ++bar (int a, int b) ++{ ++ unsigned long long r; ++ if (a >= 0) ++ return 0; ++ if (!__builtin_mul_overflow (a, b, &r)) ++ __builtin_abort (); ++ return r; ++} ++ ++__attribute__((noipa)) unsigned long long ++baz (int a, int b) ++{ ++ unsigned long long r; ++ if (b >= 0) ++ return 0; ++ if (!__builtin_mul_overflow (a, b, &r)) ++ __builtin_abort (); ++ return r; ++} ++ ++__attribute__((noipa)) unsigned long long ++qux (int a, int b) ++{ ++ unsigned long long r; ++ if (a >= 0) ++ return 0; ++ if (b < 0) ++ return 0; ++ if (!__builtin_mul_overflow (a, b, &r)) ++ __builtin_abort (); ++ return r; ++} ++ ++__attribute__((noipa)) unsigned long long ++quux (int a, int b) ++{ ++ unsigned long long r; ++ if (a < 0) ++ return 0; ++ if (b >= 0) ++ return 0; ++ if (!__builtin_mul_overflow (a, b, &r)) ++ __builtin_abort (); ++ return r; ++} ++ ++int ++main () ++{ ++ if (foo (-4, 2) != -8ULL) ++ __builtin_abort (); ++ if (foo (2, -4) != -8ULL) ++ __builtin_abort (); ++ if (bar (-4, 2) != -8ULL) ++ __builtin_abort (); ++ if (baz (2, -4) != -8ULL) ++ __builtin_abort (); ++ if (qux (-4, 2) != -8ULL) ++ __builtin_abort (); ++ if (quux (2, -4) != -8ULL) ++ __builtin_abort (); ++ if (foo (-2, 1) != -2ULL) ++ __builtin_abort (); ++ if (foo (1, -2) != -2ULL) ++ __builtin_abort (); ++ if (bar (-2, 1) != -2ULL) ++ __builtin_abort (); ++ if (baz (1, -2) != -2ULL) ++ __builtin_abort (); ++ if (qux (-2, 1) != -2ULL) ++ __builtin_abort (); ++ if (quux (1, -2) != -2ULL) ++ __builtin_abort (); ++ return 0; ++} +Index: gcc/testsuite/gcc.c-torture/execute/pr91137.c +=================================================================== +--- a/src/gcc/testsuite/gcc.c-torture/execute/pr91137.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.c-torture/execute/pr91137.c (.../branches/gcc-8-branch) +@@ -0,0 +1,34 @@ ++long long a; ++unsigned b; ++int c[70]; ++int d[70][70]; ++int e; ++ ++__attribute__ ((noinline)) void f(long long *g, int p2) { ++ *g = p2; ++} ++ ++__attribute__ ((noinline)) void fn2() { ++ for (int j = 0; j < 70; j++) { ++ for (int i = 0; i < 70; i++) { ++ if (b) ++ c[i] = 0; ++ for (int l = 0; l < 70; l++) ++ d[i][1] = d[l][i]; ++ } ++ for (int k = 0; k < 70; k++) ++ e = c[0]; ++ } ++} ++ ++int main() { ++ b = 5; ++ for (int j = 0; j < 70; ++j) ++ c[j] = 2075593088; ++ fn2(); ++ f(&a, e); ++ if (a) ++ __builtin_abort(); ++ return 0; ++} ++ +Index: gcc/testsuite/gcc.c-torture/execute/pr90949.c +=================================================================== +--- a/src/gcc/testsuite/gcc.c-torture/execute/pr90949.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.c-torture/execute/pr90949.c (.../branches/gcc-8-branch) +@@ -0,0 +1,42 @@ ++void __attribute__ ((noipa, noinline)) my_puts (const char *str) { } ++ ++void __attribute__ ((noipa, noinline)) my_free (void *p) { } ++ ++ ++struct Node ++{ ++ struct Node *child; ++}; ++ ++struct Node space[2] = { }; ++ ++struct Node * __attribute__ ((noipa, noinline)) my_malloc (int bytes) ++{ ++ return &space[0]; ++} ++ ++void ++walk (struct Node *module, int cleanup) ++{ ++ if (module == 0) ++ { ++ return; ++ } ++ if (!cleanup) ++ { ++ my_puts ("No cleanup"); ++ } ++ walk (module->child, cleanup); ++ if (cleanup) ++ { ++ my_free (module); ++ } ++} ++ ++int ++main () ++{ ++ struct Node *node = my_malloc (sizeof (struct Node)); ++ node->child = 0; ++ walk (node, 1); ++} +Index: gcc/testsuite/gcc.c-torture/execute/builtins/builtins.exp +=================================================================== +--- a/src/gcc/testsuite/gcc.c-torture/execute/builtins/builtins.exp (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.c-torture/execute/builtins/builtins.exp (.../branches/gcc-8-branch) +@@ -37,7 +37,7 @@ + torture-init + set-torture-options $C_TORTURE_OPTIONS {{}} $LTO_TORTURE_OPTIONS + +-set additional_flags "-fno-tree-loop-distribute-patterns -fno-tracer" ++set additional_flags "-fno-tree-loop-distribute-patterns -fno-tracer -fno-ipa-ra" + if [istarget "powerpc-*-darwin*"] { + lappend additional_flags "-Wl,-multiply_defined,suppress" + } +Index: gcc/testsuite/gcc.c-torture/execute/20190901-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.c-torture/execute/20190901-1.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.c-torture/execute/20190901-1.c (.../branches/gcc-8-branch) +@@ -0,0 +1,36 @@ ++/* PR target/91472 */ ++/* Reported by John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de> */ ++ ++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/pr91450-2.c +=================================================================== +--- a/src/gcc/testsuite/gcc.c-torture/execute/pr91450-2.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.c-torture/execute/pr91450-2.c (.../branches/gcc-8-branch) +@@ -0,0 +1,76 @@ ++/* PR middle-end/91450 */ ++ ++__attribute__((noipa)) void ++foo (int a, int b) ++{ ++ unsigned long long r; ++ if (__builtin_mul_overflow (a, b, &r)) ++ __builtin_abort (); ++ if (r != 0) ++ __builtin_abort (); ++} ++ ++__attribute__((noipa)) void ++bar (int a, int b) ++{ ++ unsigned long long r; ++ if (a >= 0) ++ return; ++ if (__builtin_mul_overflow (a, b, &r)) ++ __builtin_abort (); ++ if (r != 0) ++ __builtin_abort (); ++} ++ ++__attribute__((noipa)) void ++baz (int a, int b) ++{ ++ unsigned long long r; ++ if (b >= 0) ++ return; ++ if (__builtin_mul_overflow (a, b, &r)) ++ __builtin_abort (); ++ if (r != 0) ++ __builtin_abort (); ++} ++ ++__attribute__((noipa)) void ++qux (int a, int b) ++{ ++ unsigned long long r; ++ if (a >= 0) ++ return; ++ if (b < 0) ++ return; ++ if (__builtin_mul_overflow (a, b, &r)) ++ __builtin_abort (); ++ if (r != 0) ++ __builtin_abort (); ++} ++ ++__attribute__((noipa)) void ++quux (int a, int b) ++{ ++ unsigned long long r; ++ if (a < 0) ++ return; ++ if (b >= 0) ++ return; ++ if (__builtin_mul_overflow (a, b, &r)) ++ __builtin_abort (); ++ if (r != 0) ++ __builtin_abort (); ++} ++ ++int ++main () ++{ ++ foo (-4, 0); ++ foo (0, -4); ++ foo (0, 0); ++ bar (-4, 0); ++ baz (0, -4); ++ qux (-4, 0); ++ quux (0, -4); ++ return 0; ++} +Index: gcc/testsuite/gcc.c-torture/compile/pr89703-2.c +=================================================================== +--- a/src/gcc/testsuite/gcc.c-torture/compile/pr89703-2.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.c-torture/compile/pr89703-2.c (.../branches/gcc-8-branch) +@@ -0,0 +1,13 @@ ++/* PR tree-optimization/89703 */ ++ ++typedef __SIZE_TYPE__ size_t; ++extern void *memcpy (void *, const void *, size_t); ++extern char *strlen (const char *); ++extern char c[2]; ++ ++void ++foo (char **q) ++{ ++ memcpy (c, "a", 2); ++ q[0] = strlen (c); ++} +Index: gcc/testsuite/gcc.c-torture/compile/pr89998-2.c +=================================================================== +--- a/src/gcc/testsuite/gcc.c-torture/compile/pr89998-2.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.c-torture/compile/pr89998-2.c (.../branches/gcc-8-branch) +@@ -0,0 +1,4 @@ ++/* PR tree-optimization/89998 */ ++/* { dg-additional-options "-fno-printf-return-value" } */ ++ ++#include "pr89998-1.c" +Index: gcc/testsuite/gcc.c-torture/compile/pr90139.c +=================================================================== +--- a/src/gcc/testsuite/gcc.c-torture/compile/pr90139.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.c-torture/compile/pr90139.c (.../branches/gcc-8-branch) +@@ -0,0 +1,20 @@ ++/* PR middle-end/90139 */ ++ ++typedef float __attribute__((vector_size (sizeof (float)))) V; ++void bar (int, V *); ++int l; ++ ++void ++foo (void) ++{ ++ V n, b, o; ++ while (1) ++ switch (l) ++ { ++ case 0: ++ o = n; ++ n = b; ++ b = o; ++ bar (1, &o); ++ } ++} +Index: gcc/testsuite/gcc.c-torture/compile/pr72802.c +=================================================================== +--- a/src/gcc/testsuite/gcc.c-torture/compile/pr72802.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.c-torture/compile/pr72802.c (.../branches/gcc-8-branch) +@@ -1,3 +1,4 @@ ++/* { dg-skip-if "see PR trail" { *-*-darwin* } } */ + static a[]; + static b, h, m, n, o, p, q, t, u, v, t5, t6, t16, t17, t18, t25; + c; +Index: gcc/testsuite/gcc.c-torture/compile/pr91001.c +=================================================================== +--- a/src/gcc/testsuite/gcc.c-torture/compile/pr91001.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.c-torture/compile/pr91001.c (.../branches/gcc-8-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/pr89663-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.c-torture/compile/pr89663-1.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.c-torture/compile/pr89663-1.c (.../branches/gcc-8-branch) +@@ -0,0 +1,81 @@ ++/* PR middle-end/89663 */ ++ ++int irint (); ++long lrint (); ++long long llrint (); ++int iround (); ++long lround (); ++long long llround (); ++int iceil (); ++long lceil (); ++long long llceil (); ++int ifloor (); ++long lfloor (); ++long long llfloor (); ++int irintf (); ++long lrintf (); ++long long llrintf (); ++int iroundf (); ++long lroundf (); ++long long llroundf (); ++int iceilf (); ++long lceilf (); ++long long llceilf (); ++int ifloorf (); ++long lfloorf (); ++long long llfloorf (); ++int irintl (); ++long lrintl (); ++long long llrintl (); ++int iroundl (); ++long lroundl (); ++long long llroundl (); ++int iceill (); ++long lceill (); ++long long llceill (); ++int ifloorl (); ++long lfloorl (); ++long long llfloorl (); ++ ++void ++foo (long long *p) ++{ ++ int n = 0; ++#define T(f) p[n++] = f (1); ++ T (irint) ++ T (lrint) ++ T (llrint) ++ T (iround) ++ T (lround) ++ T (llround) ++ T (iceil) ++ T (lceil) ++ T (llceil) ++ T (ifloor) ++ T (lfloor) ++ T (llfloor) ++ T (irintf) ++ T (lrintf) ++ T (llrintf) ++ T (iroundf) ++ T (lroundf) ++ T (llroundf) ++ T (iceilf) ++ T (lceilf) ++ T (llceilf) ++ T (ifloorf) ++ T (lfloorf) ++ T (llfloorf) ++ T (irintl) ++ T (lrintl) ++ T (llrintl) ++ T (iroundl) ++ T (lroundl) ++ T (llroundl) ++ T (iceill) ++ T (lceill) ++ T (llceill) ++ T (ifloorl) ++ T (lfloorl) ++ T (llfloorl) ++} +Index: gcc/testsuite/gcc.c-torture/compile/pr90840.c +=================================================================== +--- a/src/gcc/testsuite/gcc.c-torture/compile/pr90840.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.c-torture/compile/pr90840.c (.../branches/gcc-8-branch) +@@ -0,0 +1,19 @@ ++/* PR middle-end/90840 */ ++struct S { long long a; int b; }; ++struct S foo (void); ++struct __attribute__((packed)) T { long long a; char b; }; ++struct T baz (void); ++ ++void ++bar (void) ++{ ++ _Complex long double c; ++ *(struct S *) &c = foo (); ++} ++ ++void ++qux (void) ++{ ++ _Complex long double c; ++ *(struct T *) &c = baz (); ++} +Index: gcc/testsuite/gcc.c-torture/compile/pr89703-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.c-torture/compile/pr89703-1.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.c-torture/compile/pr89703-1.c (.../branches/gcc-8-branch) +@@ -0,0 +1,13 @@ ++/* PR tree-optimization/89703 */ ++ ++typedef __SIZE_TYPE__ size_t; ++extern char *strlen (const char *); ++extern char *strnlen (const char *, size_t); ++extern char c[2]; ++ ++void ++foo (char **q) ++{ ++ q[0] = strlen (c); ++ q[1] = strnlen (c, 2); ++} +Index: gcc/testsuite/gcc.c-torture/compile/pr89655.c +=================================================================== +--- a/src/gcc/testsuite/gcc.c-torture/compile/pr89655.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.c-torture/compile/pr89655.c (.../branches/gcc-8-branch) +@@ -0,0 +1,15 @@ ++/* PR middle-end/89655 */ ++ ++int a, b, d; ++char *c; ++ ++void ++foo (void) ++{ ++ int f = a; ++ for (;;) ++ { ++ for (f = 0; f < (a > 3 ? : a); f++) ++ b = c[f] ? c[(f + 2 > a - 1 ? a - 1 : 2) * d] : 0; ++ } ++} +Index: gcc/testsuite/gcc.c-torture/compile/pr89998-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.c-torture/compile/pr89998-1.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.c-torture/compile/pr89998-1.c (.../branches/gcc-8-branch) +@@ -0,0 +1,42 @@ ++/* PR tree-optimization/89998 */ ++ ++unsigned int sprintf (char *str, const char *fmt, ...); ++unsigned int snprintf (char *str, __SIZE_TYPE__ len, const char *fmt, ...); ++ ++int ++f1 (char *s) ++{ ++ return sprintf (s, "foo"); ++} ++ ++int ++f2 (char *s) ++{ ++ return sprintf (s, "%d", 123); ++} ++ ++int ++f3 (int *p, char *s) ++{ ++ const char *t = "bar"; ++ return sprintf (s, "%s", t); ++} ++ ++int ++f4 (char *s) ++{ ++ return snprintf (s, 8, "foo"); ++} ++ ++int ++f5 (char *s) ++{ ++ return snprintf (s, 8, "%d", 123); ++} ++ ++int ++f6 (int *p, char *s) ++{ ++ const char *t = "bar"; ++ return snprintf (s, 8, "%s", t); ++} +Index: gcc/testsuite/gcc.c-torture/compile/pr89412.c +=================================================================== +--- a/src/gcc/testsuite/gcc.c-torture/compile/pr89412.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.c-torture/compile/pr89412.c (.../branches/gcc-8-branch) +@@ -0,0 +1,16 @@ ++/* PR middle-end/89412 */ ++ ++struct S { double a, b; } d; ++int e; ++double f; ++ ++void ++foo () ++{ ++ _Complex double h; ++ while (e) ++ { ++ f = h; ++ *(struct S *) &h = d; ++ } ++} +Index: gcc/testsuite/gcc.c-torture/compile/pr92056.c +=================================================================== +--- a/src/gcc/testsuite/gcc.c-torture/compile/pr92056.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.c-torture/compile/pr92056.c (.../branches/gcc-8-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.c-torture/compile/pr89663-2.c +=================================================================== +--- a/src/gcc/testsuite/gcc.c-torture/compile/pr89663-2.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.c-torture/compile/pr89663-2.c (.../branches/gcc-8-branch) +@@ -0,0 +1,82 @@ ++/* PR middle-end/89663 */ ++ ++int irint (double); ++long lrint (double); ++long long llrint (double); ++int iround (double); ++long lround (double); ++long long llround (double); ++int iceil (double); ++long lceil (double); ++long long llceil (double); ++int ifloor (double); ++long lfloor (double); ++long long llfloor (double); ++int irintf (float); ++long lrintf (float); ++long long llrintf (float); ++int iroundf (float); ++long lroundf (float); ++long long llroundf (float); ++int iceilf (float); ++long lceilf (float); ++long long llceilf (float); ++int ifloorf (float); ++long lfloorf (float); ++long long llfloorf (float); ++int irintl (long double); ++long lrintl (long double); ++long long llrintl (long double); ++int iroundl (long double); ++long lroundl (long double); ++long long llroundl (long double); ++int iceill (long double); ++long lceill (long double); ++long long llceill (long double); ++int ifloorl (long double); ++long lfloorl (long double); ++long long llfloorl (long double); ++ ++void ++foo (long long *p) ++{ ++ int (*fn) (int); ++ int n = 0; ++#define T(f) fn = (int (*) (int)) f; p[n++] = fn (1); ++ T (irint) ++ T (lrint) ++ T (llrint) ++ T (iround) ++ T (lround) ++ T (llround) ++ T (iceil) ++ T (lceil) ++ T (llceil) ++ T (ifloor) ++ T (lfloor) ++ T (llfloor) ++ T (irintf) ++ T (lrintf) ++ T (llrintf) ++ T (iroundf) ++ T (lroundf) ++ T (llroundf) ++ T (iceilf) ++ T (lceilf) ++ T (llceilf) ++ T (ifloorf) ++ T (lfloorf) ++ T (llfloorf) ++ T (irintl) ++ T (lrintl) ++ T (llrintl) ++ T (iroundl) ++ T (lroundl) ++ T (llroundl) ++ T (iceill) ++ T (lceill) ++ T (llceill) ++ T (ifloorl) ++ T (lfloorl) ++ T (llfloorl) ++} +Index: gcc/testsuite/gcc.c-torture/compile/20191108-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.c-torture/compile/20191108-1.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.c-torture/compile/20191108-1.c (.../branches/gcc-8-branch) +@@ -0,0 +1,14 @@ ++/* PR target/92095 */ ++/* Testcase by Sergei Trofimovich <slyfox@inbox.ru> */ ++ ++typedef union { ++ double a; ++ int b[2]; ++} c; ++ ++double d(int e) ++{ ++ c f; ++ (&f)->b[0] = 15728640; ++ return e ? -(&f)->a : (&f)->a; ++} +Index: gcc/testsuite/gnat.dg/unchecked_convert13.adb +=================================================================== +--- a/src/gcc/testsuite/gnat.dg/unchecked_convert13.adb (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gnat.dg/unchecked_convert13.adb (.../branches/gcc-8-branch) +@@ -0,0 +1,30 @@ ++-- { dg-do compile } ++ ++with Ada.Unchecked_Conversion; ++ ++procedure Unchecked_Convert13 is ++ ++ type B16_T is mod 2 ** 16; ++ for B16_T'Size use 16; ++ for B16_T'Alignment use 1; ++ ++ type Rec_T is record ++ A : Short_Integer; ++ end record; ++ for Rec_T use record ++ A at 0 range 0 .. 15; ++ end record; ++ for Rec_T'Size use 16; ++ ++ Rec : constant Rec_T := (A => 0); ++ ++ function Rec_To_B16 is new Ada.Unchecked_Conversion (Rec_T, B16_T); ++ ++ procedure Nested (B16 : B16_T) is ++ begin ++ null; ++ end; ++ ++begin ++ Nested (Rec_To_B16 (Rec)); ++end; +Index: gcc/testsuite/gnat.dg/opt77.adb +=================================================================== +--- a/src/gcc/testsuite/gnat.dg/opt77.adb (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gnat.dg/opt77.adb (.../branches/gcc-8-branch) +@@ -0,0 +1,14 @@ ++-- { dg-do run } ++-- { dg-options "-O -fno-inline" } ++ ++with Opt77_Pkg; use Opt77_Pkg; ++ ++procedure Opt77 is ++ N : Natural := 0; ++ To_Add : Boolean; ++begin ++ Proc ("One", N, To_Add); ++ if To_Add then ++ raise Program_Error; ++ end if; ++end; +Index: gcc/testsuite/gnat.dg/opt78.adb +=================================================================== +--- a/src/gcc/testsuite/gnat.dg/opt78.adb (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gnat.dg/opt78.adb (.../branches/gcc-8-branch) +@@ -0,0 +1,16 @@ ++-- { dg-do compile } ++-- { dg-options "-O" } ++ ++package body Opt78 is ++ ++ procedure Proc (P : UC; Msg : String) is ++ Default : UC := (1, "!"); ++ begin ++ if P = Default then ++ raise Program_Error; ++ else ++ raise Constraint_Error; ++ end if; ++ end; ++ ++end Opt78; +Index: gcc/testsuite/gnat.dg/opt78.ads +=================================================================== +--- a/src/gcc/testsuite/gnat.dg/opt78.ads (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gnat.dg/opt78.ads (.../branches/gcc-8-branch) +@@ -0,0 +1,13 @@ ++package Opt78 is ++ ++ subtype Reasonable is Integer range 1..10; ++ ++ type UC (D: Reasonable := 2) is record ++ S: String (1 .. D) := "Hi"; ++ end record; ++ ++ type AUC is access all UC; ++ ++ procedure Proc (P : UC; Msg : String); ++ ++end Opt78; +Index: gcc/testsuite/gnat.dg/opt79.adb +=================================================================== +--- a/src/gcc/testsuite/gnat.dg/opt79.adb (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gnat.dg/opt79.adb (.../branches/gcc-8-branch) +@@ -0,0 +1,28 @@ ++-- { dg-do compile } ++-- { dg-options "-O" } ++ ++package body Opt79 is ++ ++ function F (I : Integer) return Arr is ++ A : Arr; ++ ++ procedure Nested is ++ ++ procedure Inner is ++ begin ++ A (1) := 0; ++ end; ++ ++ begin ++ Inner; ++ end; ++ ++ begin ++ Nested; ++ for J in A'Range loop ++ A (J) := I; ++ end loop; ++ return A; ++ end; ++ ++end Opt79; +Index: gcc/testsuite/gnat.dg/opt79.ads +=================================================================== +--- a/src/gcc/testsuite/gnat.dg/opt79.ads (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gnat.dg/opt79.ads (.../branches/gcc-8-branch) +@@ -0,0 +1,7 @@ ++package Opt79 is ++ ++ type Arr is array (1 .. 8) of Integer; ++ ++ function F (I : Integer) return Arr; ++ ++end Opt79; +Index: gcc/testsuite/gnat.dg/opt77_pkg.adb +=================================================================== +--- a/src/gcc/testsuite/gnat.dg/opt77_pkg.adb (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gnat.dg/opt77_pkg.adb (.../branches/gcc-8-branch) +@@ -0,0 +1,28 @@ ++package body Opt77_Pkg is ++ ++ function Compare (S : String) return Boolean is ++ begin ++ return S = "Two"; ++ end; ++ ++ procedure Proc (S : String; N : in out Natural; To_Add : out Boolean) is ++ To_Take : Boolean := False; ++ To_Read : Boolean := False; ++ begin ++ To_Add := False; ++ ++ if S = "One" then ++ To_Read := True; ++ To_Take := Compare (S); ++ end if; ++ ++ if To_Read and not To_Take then ++ N := N + 1; ++ end if; ++ ++ if To_Take then ++ To_Add := True; ++ end if; ++ end; ++ ++end Opt77_Pkg; +Index: gcc/testsuite/gnat.dg/opt77_pkg.ads +=================================================================== +--- a/src/gcc/testsuite/gnat.dg/opt77_pkg.ads (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gnat.dg/opt77_pkg.ads (.../branches/gcc-8-branch) +@@ -0,0 +1,5 @@ ++package Opt77_Pkg is ++ ++ procedure Proc (S : String; N : in out Natural; To_Add : out Boolean); ++ ++end Opt77_Pkg; +Index: gcc/testsuite/gnat.dg/specs/array5_pkg2-g.ads +=================================================================== +--- a/src/gcc/testsuite/gnat.dg/specs/array5_pkg2-g.ads (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gnat.dg/specs/array5_pkg2-g.ads (.../branches/gcc-8-branch) +@@ -0,0 +1,13 @@ ++with System.Address_To_Access_Conversions; ++ ++generic ++ ++ type T is new Root with private; ++ ++package Array5_Pkg2.G is ++ ++ package Ptr is new System.Address_To_Access_Conversions (T); ++ ++ Data : Ptr.Object_Pointer; ++ ++end Array5_Pkg2.G; +Index: gcc/testsuite/gnat.dg/specs/array5_pkg2.ads +=================================================================== +--- a/src/gcc/testsuite/gnat.dg/specs/array5_pkg2.ads (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gnat.dg/specs/array5_pkg2.ads (.../branches/gcc-8-branch) +@@ -0,0 +1,5 @@ ++package Array5_Pkg2 is ++ ++ type Root is tagged null record; ++ ++end Array5_Pkg2; +Index: gcc/testsuite/gnat.dg/specs/array5.ads +=================================================================== +--- a/src/gcc/testsuite/gnat.dg/specs/array5.ads (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gnat.dg/specs/array5.ads (.../branches/gcc-8-branch) +@@ -0,0 +1,9 @@ ++-- { dg-do compile } ++ ++with Array5_Pkg1; use Array5_Pkg1; ++ ++package Array5 is ++ ++ C : constant Integer := Arr'Last; ++ ++end Array5; +Index: gcc/testsuite/gnat.dg/specs/array5_pkg1.ads +=================================================================== +--- a/src/gcc/testsuite/gnat.dg/specs/array5_pkg1.ads (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gnat.dg/specs/array5_pkg1.ads (.../branches/gcc-8-branch) +@@ -0,0 +1,14 @@ ++with Array5_Pkg2; use Array5_Pkg2; ++with Array5_Pkg2.G; ++ ++package Array5_Pkg1 is ++ ++ type Derived is new Root with record ++ N : Integer; ++ end record; ++ ++ package My_G is new Array5_Pkg2.G (Derived); ++ ++ type Arr is array (1 .. My_G.Data.N) of Integer; ++ ++end Array5_Pkg1; +Index: gcc/testsuite/gnat.dg/specs/array4.ads +=================================================================== +--- a/src/gcc/testsuite/gnat.dg/specs/array4.ads (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gnat.dg/specs/array4.ads (.../branches/gcc-8-branch) +@@ -0,0 +1,17 @@ ++-- { dg-do compile } ++-- { dg-skip-if "missing -gsplit-dwarf support" { *-*-darwin* } } ++-- { dg-options "-gsplit-dwarf" } ++ ++package Array4 is ++ ++ type Arr1 is array (Positive range <>) of Boolean; ++ ++ Size : Positive := 20; ++ ++ type Rec is record ++ A : Arr1 (1 .. Size); ++ end record; ++ ++ type Arr2 is array (Positive range <>) of Rec; ++ ++end Array4; +Index: gcc/testsuite/gcc.dg/darwin-minversion-2.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/darwin-minversion-2.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/darwin-minversion-2.c (.../branches/gcc-8-branch) +@@ -1,6 +1,6 @@ + /* Basic test for -mmacosx-version-min switch on Darwin. */ + /* { dg-options "-mmacosx-version-min=10.1 -mmacosx-version-min=10.5" } */ +-/* { dg-do run { target *-*-darwin* } } */ ++/* { dg-do compile { target *-*-darwin* } } */ + + int + main () +Index: gcc/testsuite/gcc.dg/pr90756.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/pr90756.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/pr90756.c (.../branches/gcc-8-branch) +@@ -0,0 +1,26 @@ ++/* PR rtl-optimization/90756 */ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -Wno-psabi" } */ ++/* { dg-additional-options "-mno-sse" { target ia32 } } */ ++ ++typedef float B __attribute__((vector_size(4 * sizeof (float)))); ++typedef unsigned long long C __attribute__((vector_size(4 * sizeof (long long)))); ++typedef short D __attribute__((vector_size(4 * sizeof (short)))); ++B z; ++void foo (C); ++C bar (D); ++B baz (); ++D qux (B); ++ ++void ++quux (int x) ++{ ++ B n = z, b = z; ++ while (1) ++ switch (x) ++ { ++ case 0: n = baz (); /* FALLTHRU */ ++ case 1: { B o = n; n = b; b = o; } /* FALLTHRU */ ++ case 2: { D u = qux (b); C v = bar (u); foo (v); } ++ } ++} +Index: gcc/testsuite/gcc.dg/darwin-weakimport-3.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/darwin-weakimport-3.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/darwin-weakimport-3.c (.../branches/gcc-8-branch) +@@ -1,5 +1,20 @@ + /* { dg-do compile { target *-*-darwin* } } */ +-/* { dg-options "-fno-asynchronous-unwind-tables" } */ ++ ++/* Here we want to test if "foo" gets placed into a coalesced ++ section (it should not). ++ ++ However, for i386, and PIC code we have a "get_pc thunk" that ++ is (correctly) placed in a coalesced section when using an older ++ linker - also unwind tables are emitted into coalesced. ++ ++ With modern linkers this is moot, since even weak symbols ++ are emitted into the regular sections. ++ ++ To avoid the unwind tables -fno-asynchronous-unwind-tables. ++ To ensure that we emit code for an older linker -mtarget-linker ++ To avoid the get_pc thunk optimise at least O1. */ ++ ++/* { dg-options "-fno-asynchronous-unwind-tables -O1 -mtarget-linker 85.2" } */ + /* { dg-require-weak "" } */ + + /* { dg-final { scan-assembler-not "coalesced" } } */ +Index: gcc/testsuite/gcc.dg/gomp/pr89796.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/gomp/pr89796.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/gomp/pr89796.c (.../branches/gcc-8-branch) +@@ -0,0 +1,23 @@ ++/* PR c++/89796 */ ++/* { dg-do compile } */ ++/* { dg-additional-options "-Wunused-value" } */ ++ ++int ++f1 (int *p) ++{ ++ int r; ++ #pragma omp atomic capture /* { dg-bogus "value computed is not used" } */ ++ { r = *p; (*p)++; } ++ return r; ++} ++ ++int ++f2 (int *p) ++{ ++ int s ++ = ({ int r; ++ #pragma omp atomic capture /* { dg-bogus "value computed is not used" } */ ++ { r = *p; (*p)++; } ++ r; }); ++ return s; ++} +Index: gcc/testsuite/gcc.dg/gomp/pr90900.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/gomp/pr90900.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/gomp/pr90900.c (.../branches/gcc-8-branch) +@@ -0,0 +1,11 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -fopenmp -g" } */ ++ ++void f (int a) ++{ ++ void *x = &&lab; ++#pragma omp parallel ++ if (a) ++ { lab: __builtin_unreachable(); } ++ x; ++} +Index: gcc/testsuite/gcc.dg/gomp/pr78884.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/gomp/pr78884.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/gomp/pr78884.c (.../branches/gcc-8-branch) +@@ -0,0 +1,16 @@ ++/* PR middle-end/78884 */ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -fopenmp" } */ ++ ++void bar (int *); ++ ++void ++foo (int n) ++{ ++#pragma omp simd ++ for (int i = 0; i < 1024; i++) ++ { ++ int vla[n]; ++ bar (vla); ++ } ++} +Index: gcc/testsuite/gcc.dg/pr89521-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/pr89521-1.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/pr89521-1.c (.../branches/gcc-8-branch) +@@ -0,0 +1,13 @@ ++/* PR c/89521 */ ++/* { dg-do compile } */ ++/* { dg-options "-Ofast -w" } */ ++ ++#define A(name) __typeof (__builtin_##name (0)) name (); long name##1 () { return name (1); } ++#define B(name) A(name) A(name##f) A(name##l) ++B (ceil) ++B (floor) ++B (round) ++B (trunc) ++B (nearbyint) ++B (rint) ++B (logb) +Index: gcc/testsuite/gcc.dg/debug/pr89704.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/debug/pr89704.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/debug/pr89704.c (.../branches/gcc-8-branch) +@@ -0,0 +1,14 @@ ++/* PR debug/89704 */ ++/* { dg-do compile } */ ++ ++typedef __INTPTR_TYPE__ intptr_t; ++ ++int ++foo (void) ++{ ++ lab1:; ++ lab2:; ++ static int i = (intptr_t) &&lab1 - (intptr_t) &&lab2; ++ static int j = (intptr_t) &&lab1 - (intptr_t) &&lab2; ++ return i; ++} +Index: gcc/testsuite/gcc.dg/pr89521-2.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/pr89521-2.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/pr89521-2.c (.../branches/gcc-8-branch) +@@ -0,0 +1,42 @@ ++/* PR c/89521 */ ++/* { dg-do compile } */ ++/* { dg-options "-Ofast -w" } */ ++ ++#define A(name) __typeof (__builtin_##name (0)) name (); \ ++ float name##1 () { return name (1); } \ ++ double name##2 () { return name (1); } ++#define B(name) A(name) A(name##l) ++B (cosh) ++B (exp) ++B (exp10) ++B (exp2) ++B (expm1) ++B (gamma) ++B (j0) ++B (j1) ++B (lgamma) ++B (pow10) ++B (sinh) ++B (tgamma) ++B (y0) ++B (y1) ++B (acos) ++B (acosh) ++B (asin) ++B (asinh) ++B (atan) ++B (atanh) ++B (cbrt) ++B (cos) ++B (erf) ++B (erfc) ++B (log) ++B (log10) ++B (log2) ++B (log1p) ++B (sin) ++B (tan) ++B (tanh) ++B (sqrt) ++B (fabs) ++B (logb) +Index: gcc/testsuite/gcc.dg/Wrestrict-19.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/Wrestrict-19.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/Wrestrict-19.c (.../branches/gcc-8-branch) +@@ -0,0 +1,33 @@ ++/* PR middle-end/89934 - ICE on a call with fewer arguments to strncpy ++ declared without prototype ++ { dg-do compile } ++ { dg-options "-O2 -Wall" } */ ++ ++typedef __SIZE_TYPE__ size_t; ++ ++char *strncpy (); ++ ++char* f0 (char *s) ++{ ++ return strncpy (); ++} ++ ++char* f1 (char *s) ++{ ++ return strncpy (s); ++} ++ ++char* f2 (char *s) ++{ ++ return strncpy (s, s + 1); /* ICE here. */ ++} ++ ++void f3 (char *s, size_t n, const char *t) ++{ ++ strncpy (s, n, t); ++ strncpy (n, s, t); ++} ++ ++/* { dg-prune-output "\\\[-Wbuiltin-declaration-mismatch]" } ++ { dg-prune-output "\\\[-Wint-conversion]" } */ ++ +Index: gcc/testsuite/gcc.dg/pr90082.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/pr90082.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/pr90082.c (.../branches/gcc-8-branch) +@@ -0,0 +1,13 @@ ++/* PR rtl-optimization/90082 */ ++/* { dg-do compile } */ ++/* { dg-options "-O1 -fnon-call-exceptions -ftrapv" } */ ++ ++void *buf[5]; ++ ++void ++foo (int a) ++{ ++ if (__builtin_setjmp (buf) == 0) ++ __asm__ ("" : : "n" (a * 2)); /* { dg-error "impossible constraint in 'asm'" } */ ++ /* { dg-warning "asm operand 0 probably doesn't match constraints" "" { target *-*-* } .-1 } */ ++} +Index: gcc/testsuite/gcc.dg/pr89520-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/pr89520-1.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/pr89520-1.c (.../branches/gcc-8-branch) +@@ -0,0 +1,13 @@ ++/* PR c/89520 */ ++/* { dg-do compile } */ ++/* { dg-options "-Ofast -w" } */ ++ ++#define A(name) __typeof (__builtin_##name (0)) name (); long name##1 () { return name (); } ++#define B(name) A(name) A(name##f) A(name##l) ++B (ceil) ++B (floor) ++B (round) ++B (trunc) ++B (nearbyint) ++B (rint) ++B (logb) +Index: gcc/testsuite/gcc.dg/pr90010.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/pr90010.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/pr90010.c (.../branches/gcc-8-branch) +@@ -0,0 +1,27 @@ ++/* PR c++/90010 */ ++/* { dg-do compile } */ ++/* { dg-options "-Wall" } */ ++ ++char b[4096] = "abc"; ++void bar (char *); ++ ++void ++foo () ++{ ++ char d[4096]; ++ __builtin_snprintf (d, sizeof d, "%sfoobarbazquxquuxquuzthudfred", b); /* { dg-warning "'foobarbazquxquuxquuzthudfred' directive output may be truncated writing 28 bytes into a region of size between 1 and 4096" } */ ++ /* { dg-message "'__builtin_snprintf' output between 29 and 4124 bytes into a destination of size 4096" "" { target *-*-* } .-1 } */ ++ bar (d); ++ __builtin_snprintf (d, sizeof d, "%sfoobarbazquxquuxquuzcorgefred", b); /* { dg-warning "'foobarbazquxquuxquuzcorgefred' directive output may be truncated writing 29 bytes into a region of size between 1 and 4096" } */ ++ /* { dg-message "'__builtin_snprintf' output between 30 and 4125 bytes into a destination of size 4096" "" { target *-*-* } .-1 } */ ++ bar (d); ++ __builtin_snprintf (d, sizeof d, "%sfoobarbazquxquuxquuzcorgewaldo", b); /* { dg-warning "'foobarbazquxquuxquuzcorgewaldo' directive output may be truncated writing 30 bytes into a region of size between 1 and 4096" } */ ++ /* { dg-message "'__builtin_snprintf' output between 31 and 4126 bytes into a destination of size 4096" "" { target *-*-* } .-1 } */ ++ bar (d); ++ __builtin_snprintf (d, sizeof d, "%sfoobarbazquxquuxquuzcorgegarply", b); /* { dg-warning "'foobarbazquxquuxquuzcorgegarply' directive output may be truncated writing 31 bytes into a region of size between 1 and 4096" } */ ++ /* { dg-message "'__builtin_snprintf' output between 32 and 4127 bytes into a destination of size 4096" "" { target *-*-* } .-1 } */ ++ bar (d); ++ __builtin_snprintf (d, sizeof d, "%sfoobarfredquxquuxquuzcorgegarply", b); /* { dg-warning "'foobarfredquxquuxquuzcorgega\.\.\.' directive output may be truncated writing 32 bytes into a region of size between 1 and 4096" } */ ++ /* { dg-message "'__builtin_snprintf' output between 33 and 4128 bytes into a destination of size 4096" "" { target *-*-* } .-1 } */ ++ bar (d); ++} +Index: gcc/testsuite/gcc.dg/torture/neon-immediate-timode.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/torture/neon-immediate-timode.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/torture/neon-immediate-timode.c (.../branches/gcc-8-branch) +@@ -0,0 +1,10 @@ ++union a { ++ char b; ++ long long c; ++}; ++union a d; ++int g(int, union a, union a); ++void e() { ++ union a f[2] = {-1L}; ++ g(0, d, f[0]); ++} +Index: gcc/testsuite/gcc.dg/torture/pr91812.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/torture/pr91812.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/torture/pr91812.c (.../branches/gcc-8-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/pr91200.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/torture/pr91200.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/torture/pr91200.c (.../branches/gcc-8-branch) +@@ -0,0 +1,32 @@ ++/* { dg-do compile } */ ++ ++int printf (const char *, ...); ++ ++char a; ++int b, c, **d; ++ ++int main () ++{ ++ int f = -128, *g, *h[2] = {0, 0}, i; ++ printf("0"); ++ if (a) ++ { ++ while (f > a) { ++ int *j = &i; ++ *j |= 0; ++ } ++ h[i] = &c; ++ } ++ if (h[1]) ++ { ++ int **k = &g; ++ *k = &f; ++ while (i) ++ { ++ int **l[] = {&g}; ++ } ++ int **m = &g; ++ *d = *m = &b; ++ } ++ return 0; ++} +Index: gcc/testsuite/gcc.dg/torture/pr90278.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/torture/pr90278.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/torture/pr90278.c (.../branches/gcc-8-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/torture/pr89572.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/torture/pr89572.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/torture/pr89572.c (.../branches/gcc-8-branch) +@@ -0,0 +1,28 @@ ++/* { dg-do compile } */ ++/* { dg-additional-options "-finline-functions" } */ ++ ++int vh, it, k1; ++ ++void ++vn (void) ++{ ++ ++vh; ++ if (vh == 0 && it == 0) ++ k1 = -k1; ++} ++ ++__attribute__ ((returns_twice)) void ++ef (int *uw) ++{ ++ while (uw != (void *) 0) ++ { ++ vn (); ++ *uw = 0; ++ } ++} ++ ++void ++gu (int *uw) ++{ ++ ef (uw); ++} +Index: gcc/testsuite/gcc.dg/torture/pr90071.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/torture/pr90071.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/torture/pr90071.c (.../branches/gcc-8-branch) +@@ -0,0 +1,24 @@ ++/* { dg-do compile } */ ++ ++int a; ++static int b; ++ ++void ++foo () ++{ ++ int d; ++ int e = (int) (__INTPTR_TYPE__) &&f; ++ void *g = &&h; ++h: ++e; ++ if (a) ++ i: goto *g; ++ for (;;) ++ { ++ e = 0; ++ if (b) ++ goto i; ++ } ++f: ++ goto *({ d || e < 0 || e >= 2; }); ++ &e; ++} +Index: gcc/testsuite/gcc.dg/torture/pr91126.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/torture/pr91126.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/torture/pr91126.c (.../branches/gcc-8-branch) +@@ -0,0 +1,28 @@ ++/* { dg-do run } */ ++ ++struct S ++{ ++ __INT32_TYPE__ a : 24; ++ __INT32_TYPE__ b : 8; ++} s; ++ ++int ++main() ++{ ++ s.a = 0xfefefe; ++ s.b = 0xfe; ++ unsigned char c; ++ c = ((unsigned char *)&s)[0]; ++ if (c != 0xfe) ++ __builtin_abort (); ++ c = ((unsigned char *)&s)[1]; ++ if (c != 0xfe) ++ __builtin_abort (); ++ c = ((unsigned char *)&s)[2]; ++ if (c != 0xfe) ++ __builtin_abort (); ++ c = ((unsigned char *)&s)[3]; ++ if (c != 0xfe) ++ __builtin_abort (); ++ return 0; ++} +Index: gcc/testsuite/gcc.dg/torture/pr90328.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/torture/pr90328.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/torture/pr90328.c (.../branches/gcc-8-branch) +@@ -0,0 +1,24 @@ ++/* { dg-do run } */ ++ ++void g(int*__restrict x, int*y) ++{ ++ *x = *y; ++} ++ ++void __attribute__((noipa)) f(int* a,int* b) ++{ ++ for(int i=0;i<1024;++i) ++ g(a+i,b+i); ++} ++ ++int main() ++{ ++ int x[1025]; ++ for (int i = 0; i < 1025; ++i) ++ x[i] = i+1; ++ f(x+1, x); ++ for (int i = 0; i < 1025; ++i) ++ if (x[i] != 1) ++ __builtin_abort (); ++ return 0; ++} +Index: gcc/testsuite/gcc.dg/torture/pr89091.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/torture/pr89091.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/torture/pr89091.c (.../branches/gcc-8-branch) +@@ -0,0 +1,10 @@ ++/* PR middle-end/89091 */ ++/* { dg-do compile { target int128 } } */ ++ ++struct S { unsigned __int128 s : 65; }; ++ ++int ++foo (struct S *x, int y) ++{ ++ return y && x->s; ++} +Index: gcc/testsuite/gcc.dg/torture/restrict-7.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/torture/restrict-7.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/torture/restrict-7.c (.../branches/gcc-8-branch) +@@ -0,0 +1,27 @@ ++/* { dg-do run } */ ++ ++extern void abort (void); ++ ++static inline __attribute__((always_inline)) void ++copy(int *restrict a, int *restrict b) ++{ ++ *b = *a; ++ *a = 7; ++} ++ ++void __attribute__((noinline)) ++floppy(int mat[static 2], unsigned idxs[static 3]) ++{ ++ for (int i = 0; i < 3; i++) ++ copy(&mat[i%2], &mat[idxs[i]]); ++} ++ ++int main() ++{ ++ int mat[2] = {10, 20}; ++ unsigned idxs[3] = {1, 0, 1}; ++ floppy(mat, idxs); ++ if (mat[0] != 7 || mat[1] != 10) ++ abort (); ++ return 0; ++} +Index: gcc/testsuite/gcc.dg/torture/pr89595.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/torture/pr89595.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/torture/pr89595.c (.../branches/gcc-8-branch) +@@ -0,0 +1,39 @@ ++/* { dg-do run } */ ++/* { dg-additional-options "-fgimple" } */ ++ ++int __attribute__((noipa)) ++__GIMPLE(startwith("dom")) bar(int cond, int val) ++{ ++ int i; ++ ++ if (0 != 0) ++ goto bb_6; ++ else ++ goto bb_2; ++ ++bb_2: ++ if (cond_5(D) != 0) ++ goto bb_4; ++ else ++ goto bb_5; ++ ++bb_4: ++ i_6 = val_2(D); ++ i_1 = val_2(D) > 0 ? i_6 : 0; ++ ++bb_5: ++ i_3 = __PHI (bb_4: i_1, bb_2: 0); ++ return i_3; ++ ++bb_6: ++ i_4 = 1; ++ i_9 = 2; ++ goto bb_2; ++} ++ ++int main() ++{ ++ if (bar (1, 1) != 1) ++ __builtin_abort (); ++ return 0; ++} +Index: gcc/testsuite/gcc.dg/torture/pr89677.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/torture/pr89677.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/torture/pr89677.c (.../branches/gcc-8-branch) +@@ -0,0 +1,15 @@ ++/* { dg-do compile } */ ++/* { dg-require-effective-target int32plus } */ ++ ++int a, b, d; ++unsigned c; ++float e, f, g; ++void h() { ++ float *i = &g; ++ for (; c < 10; c += 3) ++ for (; d; d += 3) { ++ a = *i; ++ g = f + 0; ++ f = b + *i + (b - e + 305219) + -b + 3; ++ } ++} +Index: gcc/testsuite/gcc.dg/torture/pr89505.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/torture/pr89505.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/torture/pr89505.c (.../branches/gcc-8-branch) +@@ -0,0 +1,22 @@ ++/* { dg-do run } */ ++ ++struct S { int i; void *p; int j; }; ++int a; ++int __attribute__((noinline)) ++foo (struct S * __restrict p, int q) ++{ ++ int *x = &p->j; ++ if (q) ++ x = &a; ++ p->j = 1; ++ *x = 2; ++ return p->j; ++} ++ ++int main() ++{ ++ struct S s; ++ if (foo (&s, 0) != 2) ++ __builtin_abort (); ++ return 0; ++} +Index: gcc/testsuite/gcc.dg/torture/pr90020.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/torture/pr90020.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/torture/pr90020.c (.../branches/gcc-8-branch) +@@ -0,0 +1,29 @@ ++/* { dg-do run } */ ++/* { dg-require-weak "" } */ ++/* { dg-additional-options "-Wl,-undefined,dynamic_lookup" { target *-*-darwin* } } */ ++/* { dg-additional-options "-Wl,-flat_namespace" { target *-*-darwin[89]* } } */ ++ ++void __attribute__((noinline,noclone)) ++check (int i) ++{ ++ if (i == 0) ++ __builtin_exit (0); ++} ++ ++int i; ++extern int x __attribute__((weak)); ++ ++int main(int argc, char **argv) ++{ ++ if (argc) ++ { ++ check (i); ++ return x; ++ } ++ else ++ { ++ check (i); ++ return x-1; ++ } ++ return 0; ++} +Index: gcc/testsuite/gcc.dg/torture/pr89710.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/torture/pr89710.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/torture/pr89710.c (.../branches/gcc-8-branch) +@@ -0,0 +1,30 @@ ++/* { dg-do compile } */ ++ ++void ++gm (int *); ++ ++__attribute__ ((returns_twice)) void ++jg (void) ++{ ++} ++ ++void ++eb (void) ++{ ++ int r6 = 0; ++ ++ if (r6 != 0) ++ gm (&r6); ++} ++ ++void ++gm (int *r6) ++{ ++ jg (); ++ ++ for (;;) ++ { ++ eb (); ++ *r6 = 0; ++ } ++} +Index: gcc/testsuite/gcc.dg/uninit-pr89296.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/uninit-pr89296.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/uninit-pr89296.c (.../branches/gcc-8-branch) +@@ -0,0 +1,13 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -Wuninitialized" } */ ++ ++int get_a_value (); ++void printk(const char *); ++void test_func() ++{ ++ int loop; ++ while (!loop) { /* { dg-warning "is used uninitialized" } */ ++ loop = get_a_value(); ++ printk("..."); ++ } ++} +Index: gcc/testsuite/gcc.dg/ipa/ipcp-5.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/ipa/ipcp-5.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/ipa/ipcp-5.c (.../branches/gcc-8-branch) +@@ -0,0 +1,45 @@ ++/* Test that estimated local cloning time benefit of extern inline functions is ++ zero. */ ++ ++/* { dg-do compile } */ ++/* { dg-options "-O3 -fdump-ipa-cp -fno-early-inlining" } */ ++/* { dg-add-options bind_pic_locally } */ ++ ++extern int get_int (void); ++extern void use_stuff (int); ++ ++int arr[10]; ++ ++inline void ++f (int a) ++{ ++ arr[0] += a + 5; ++ arr[1] += a + 50; ++ arr[2] += a - 3; ++ arr[3] += a; ++ arr[4] += a + 21; ++ arr[5] += a + 900; ++ arr[6] += a + 2; ++ arr[7] += a + 3456; ++ arr[8] += a + 3; ++ arr[9] += a + 32; ++ use_stuff (a); ++} ++ ++ ++int ++entry (void) ++{ ++ int i; ++ for (i = 0; i < 100; i++) ++ f (7); ++ for (i = 0; i < 100; i++) ++ f (get_int ()); ++ return 0; ++} ++ ++ ++/* { dg-final { scan-ipa-dump "loc_time: 0" "cp" } } */ ++/* { dg-final { scan-ipa-dump-not "replacing param.*with const" "cp" } } */ ++ ++ +Index: gcc/testsuite/gcc.dg/pr88074.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/pr88074.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/pr88074.c (.../branches/gcc-8-branch) +@@ -0,0 +1,14 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O" } */ ++ ++#include <complex.h> ++ ++int main() ++{ ++ _Complex double x; ++ __real x = 3.091e+8; ++ __imag x = -4.045e+8; ++ /* This used to spend huge amounts of compile-time inside mpc. */ ++ volatile _Complex double y = ctan (x); ++ return 0; ++} +Index: gcc/testsuite/gcc.dg/pr89520-2.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/pr89520-2.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/pr89520-2.c (.../branches/gcc-8-branch) +@@ -0,0 +1,42 @@ ++/* PR c/89520 */ ++/* { dg-do compile } */ ++/* { dg-options "-Ofast -w" } */ ++ ++#define A(name) __typeof (__builtin_##name (0)) name (); \ ++ float name##1 () { return name (); } \ ++ double name##2 () { return name (); } ++#define B(name) A(name) A(name##l) ++B (cosh) ++B (exp) ++B (exp10) ++B (exp2) ++B (expm1) ++B (gamma) ++B (j0) ++B (j1) ++B (lgamma) ++B (pow10) ++B (sinh) ++B (tgamma) ++B (y0) ++B (y1) ++B (acos) ++B (acosh) ++B (asin) ++B (asinh) ++B (atan) ++B (atanh) ++B (cbrt) ++B (cos) ++B (erf) ++B (erfc) ++B (log) ++B (log10) ++B (log2) ++B (log1p) ++B (sin) ++B (tan) ++B (tanh) ++B (sqrt) ++B (fabs) ++B (logb) +Index: gcc/testsuite/gcc.dg/vect/pr91293-2.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/vect/pr91293-2.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/vect/pr91293-2.c (.../branches/gcc-8-branch) +@@ -0,0 +1,19 @@ ++/* { dg-do run } */ ++/* { dg-additional-options "-msse4.1" { target { sse4_runtime } } } */ ++ ++long long a; ++unsigned b, c; ++int d = 62; ++void e(long long *f, int p2) { *f = p2; } ++int main() ++{ ++ for (int g = 2; g <= d; g++) ++ { ++ c += 5 - g; ++ b += g + 4; ++ } ++ e(&a, b); ++ if (a != 2196) ++ __builtin_abort (); ++ return 0; ++} +Index: gcc/testsuite/gcc.dg/vect/pr91665.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/vect/pr91665.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/vect/pr91665.c (.../branches/gcc-8-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/pr81740-2.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/vect/pr81740-2.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/vect/pr81740-2.c (.../branches/gcc-8-branch) +@@ -0,0 +1,25 @@ ++/* { dg-do run } */ ++/* { dg-require-effective-target vect_int } */ ++/* { dg-require-effective-target vect_hw_misalign } */ ++ ++#include "tree-vect.h" ++ ++int a[8][10] = { [2][5] = 4 }, c; ++ ++int ++main () ++{ ++ short b; ++ int i, d; ++ check_vect (); ++ for (b = 4; b >= 0; b--) ++ for (c = 6; c >= 0; c--) ++ a[c + 1][b + 2] = a[c][b + 1]; ++ for (i = 0; i < 8; i++) ++ for (d = 0; d < 10; d++) ++ if (a[i][d] != (i == 3 && d == 6) * 4) ++ __builtin_abort (); ++ return 0; ++} ++ ++/* { dg-final { scan-tree-dump "OUTER LOOP VECTORIZED" "vect" } } */ +Index: gcc/testsuite/gcc.dg/vect/pr91293-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/vect/pr91293-1.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/vect/pr91293-1.c (.../branches/gcc-8-branch) +@@ -0,0 +1,19 @@ ++/* { dg-do run } */ ++/* { dg-additional-options "-msse4.1" { target { sse4_runtime } } } */ ++ ++long long a; ++unsigned b, c; ++int d = 62; ++void e(long long *f, int p2) { *f = p2; } ++int main() ++{ ++ for (int g = 2; g <= d; g++) ++ { ++ b += g + 4; ++ c += 5 - g; ++ } ++ e(&a, b); ++ if (a != 2196) ++ __builtin_abort (); ++ return 0; ++} +Index: gcc/testsuite/gcc.dg/vect/pr91293-3.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/vect/pr91293-3.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/vect/pr91293-3.c (.../branches/gcc-8-branch) +@@ -0,0 +1,20 @@ ++/* { dg-do run } */ ++/* { dg-additional-options "-msse4.1" { target { sse4_runtime } } } */ ++ ++long long a; ++unsigned b, c; ++int d = 62; ++void e(long long *f, int p2) { *f = p2; } ++int xx = 5, yy = 4; ++int main() ++{ ++ for (int g = 2; g <= d; g++) ++ { ++ c += xx - g; ++ b += yy + g; ++ } ++ e(&a, b); ++ if (a != 2196) ++ __builtin_abort (); ++ return 0; ++} +Index: gcc/testsuite/gcc.dg/vect/pr90018.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/vect/pr90018.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/vect/pr90018.c (.../branches/gcc-8-branch) +@@ -0,0 +1,47 @@ ++/* { dg-do run } */ ++/* { dg-require-effective-target vect_double } */ ++ ++#include "tree-vect.h" ++ ++void __attribute__((noinline,noclone)) ++foo (double *a4, int n) ++{ ++ for (int i = 0; i < n; ++i) ++ { ++ /* We may not apply interleaving to the group (a), (b) because of (c). */ ++ double tem1 = a4[i*4] + a4[i*4+n*4] /* (a) */; ++ double tem2 = a4[i*4+2*n*4+1]; ++ a4[i*4+n*4+1] = tem1; /* (c) */ ++ a4[i*4+1] = tem2; ++ double tem3 = a4[i*4] - tem2; ++ double tem4 = tem3 + a4[i*4+n*4]; ++ a4[i*4+n*4+1] = tem4 + a4[i*4+n*4+1] /* (b) */; ++ } ++} ++int main(int argc, char **argv) ++{ ++ int n = 11; ++ double a4[4 * n * 3]; ++ double a42[4 * n * 3]; ++ check_vect (); ++ for (int i = 0; i < 4 * n * 3; ++i) ++ a4[i] = a42[i] = i; ++ foo (a4, n); ++ for (int i = 0; i < n; ++i) ++ { ++ double tem1 = a42[i*4] + a42[i*4+n*4]; ++ double tem2 = a42[i*4+2*n*4+1]; ++ a42[i*4+n*4+1] = tem1; ++ a42[i*4+1] = tem2; ++ double tem3 = a42[i*4] - tem2; ++ double tem4 = tem3 + a42[i*4+n*4]; ++ a42[i*4+n*4+1] = tem4 + a42[i*4+n*4+1]; ++ __asm__ volatile ("": : : "memory"); ++ } ++ for (int i = 0; i < 4 * n * 3; ++i) ++ if (a4[i] != a42[i]) ++ __builtin_abort (); ++ return 0; ++} ++ ++/* { dg-final { scan-tree-dump "READ_WRITE dependence in interleaving" "vect" } } */ +Index: gcc/testsuite/gcc.dg/vect/slp-reduc-sad.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/vect/slp-reduc-sad.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/vect/slp-reduc-sad.c (.../branches/gcc-8-branch) +@@ -12,7 +12,7 @@ + int __attribute__((noinline,noclone)) + foo (uint8_t *pix1, uint8_t *pix2, int i_stride_pix2) + { +- int i_sum = 0; ++ int i_sum = 5; + for( int y = 0; y < 16; y++ ) + { + i_sum += abs ( pix1[0] - pix2[0] ); +@@ -52,7 +52,7 @@ + __asm__ volatile (""); + } + +- if (foo (X, Y, 16) != 32512) ++ if (foo (X, Y, 16) != 32512 + 5) + abort (); + + return 0; +Index: gcc/testsuite/gcc.dg/vect/pr81740-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/vect/pr81740-1.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/vect/pr81740-1.c (.../branches/gcc-8-branch) +@@ -0,0 +1,22 @@ ++/* { dg-do run } */ ++/* { dg-require-effective-target vect_int } */ ++ ++#include "tree-vect.h" ++ ++int a[8][10] = { [2][5] = 4 }, c; ++ ++int ++main () ++{ ++ short b; ++ int i, d; ++ check_vect (); ++ for (b = 4; b >= 0; b--) ++ for (c = 0; c <= 6; c++) ++ a[c + 1][b + 2] = a[c][b + 1]; ++ for (i = 0; i < 8; i++) ++ for (d = 0; d < 10; d++) ++ if (a[i][d] != (i == 3 && d == 6) * 4) ++ __builtin_abort (); ++ return 0; ++} +Index: gcc/testsuite/gcc.dg/vect/bb-slp-pr90006.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/vect/bb-slp-pr90006.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/vect/bb-slp-pr90006.c (.../branches/gcc-8-branch) +@@ -0,0 +1,31 @@ ++/* { dg-do compile } */ ++/* { dg-additional-options "-fno-math-errno" } */ ++/* { dg-additional-options "-march=x86-64" { target x86_64-*-* i?86-*-* } } */ ++ ++long int lrint(double x); ++ ++int a, b; ++union c { ++ int d; ++}; ++ ++int e() ++{ ++ int f, g, h; ++ long i, j, k; ++ double l, m = b = lrint(0.3127); ++ a = b >> 16 >> 8 & 255; ++ ((union c *)e)->d = a; ++ k = m; ++ h = k >> 16 >> 8 & 255; ++ ((union c *)(e + 4))->d = h; ++ j = lrint(l); ++ g = j >> 16 >> 8 & 255; ++ ((union c *)(e + 8))->d = g; ++ i = lrint(0.292); ++ f = i >> 16 >> 8 & 255; ++ ((union c *)(e + 12))->d = f; ++ return 0; ++} ++ ++/* { dg-final { scan-tree-dump "basic block vectorized" "slp2" { target { { x86_64-*-* i?86-*-* } && ilp32 } } } } */ +Index: gcc/testsuite/gcc.dg/pr89734.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/pr89734.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/pr89734.c (.../branches/gcc-8-branch) +@@ -0,0 +1,12 @@ ++/* PR c/89734 */ ++/* { dg-do compile } */ ++/* { dg-options "" } */ ++ ++typedef const int CI; ++typedef _Atomic int AI; ++ ++CI foo (void); ++const int foo (void); ++ ++AI baz (void); ++_Atomic int baz (void); +Index: gcc/testsuite/gcc.dg/pr84032.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/pr84032.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/pr84032.c (.../branches/gcc-8-branch) +@@ -0,0 +1,23 @@ ++/* PR rtl-optimization/84032 */ ++/* { dg-do compile } */ ++/* { dg-options "-O1 -fmodulo-sched" } */ ++/* { dg-additional-options "-mcpu=power6" { target { powerpc-*-* } } } */ ++ ++void ++yr (int cm) ++{ ++ int ka = cm; ++ ++ for (;;) ++ { ++ short int m0; ++ ++ for (m0 = 0; m0 < 6; ++m0) ++ { ++ ka &= 1; ++ cm *= 2; ++ } ++ ++ ka = (ka == 0) ? cm : 0; ++ } ++} +Index: gcc/testsuite/gcc.dg/tsan/pr90208-2.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/tsan/pr90208-2.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/tsan/pr90208-2.c (.../branches/gcc-8-branch) +@@ -0,0 +1,20 @@ ++/* PR tree-optimization/90208 */ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -fexceptions -fsanitize=thread" } */ ++ ++void *b[5]; ++void foo (void); ++ ++void ++bar (int d) ++{ ++ while (d) ++ foo (); ++} ++ ++void ++baz (void) ++{ ++ bar (2); ++ __builtin_setjmp (b); ++} +Index: gcc/testsuite/gcc.dg/pr89037.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/pr89037.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/pr89037.c (.../branches/gcc-8-branch) +@@ -0,0 +1,24 @@ ++/* { dg-do run { target int128 } } */ ++/* { dg-options "" } */ ++ ++struct s ++{ ++ __int128 y : 66; ++}; ++typedef struct s T; ++T a[] = { 1, 10000, 0x12345, 0xff000001, 1ULL << 63, (__int128) 1 << 64, ++ ((__int128) 1 << 64) | 1 }; ++ ++int ++main (void) ++{ ++ if (a[0].y != 1 ++ || a[1].y != 10000 ++ || a[2].y != 0x12345 ++ || a[3].y != 0xff000001 ++ || a[4].y != (1ULL << 63) ++ || a[5].y != ((__int128) 1 << 64) ++ || a[6].y != (((__int128) 1 << 64) | 1)) ++ __builtin_abort (); ++ return 0; ++} +Index: gcc/testsuite/gcc.dg/guality/pr54970.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/guality/pr54970.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/guality/pr54970.c (.../branches/gcc-8-branch) +@@ -8,17 +8,17 @@ + int + main () + { +- int a[] = { 1, 2, 3 }; /* { dg-final { gdb-test 15 "a\[0\]" "1" } } */ ++ int a[] = { 1, 2, 3 }; /* { dg-final { gdb-test 15 "a\[0\]" "1" { xfail { *-*-* } } } } */ + int *p = a + 2; /* { dg-final { gdb-test 15 "a\[1\]" "2" } } */ + int *q = a + 1; /* { dg-final { gdb-test 15 "a\[2\]" "3" } } */ + /* { dg-final { gdb-test 15 "*p" "3" } } */ + asm volatile (NOP); /* { dg-final { gdb-test 15 "*q" "2" } } */ +- *p += 10; /* { dg-final { gdb-test 20 "a\[0\]" "1" } } */ ++ *p += 10; /* { dg-final { gdb-test 20 "a\[0\]" "1" { xfail { *-*-* } } } } */ + /* { dg-final { gdb-test 20 "a\[1\]" "2" } } */ + /* { dg-final { gdb-test 20 "a\[2\]" "13" } } */ + /* { dg-final { gdb-test 20 "*p" "13" } } */ + asm volatile (NOP); /* { dg-final { gdb-test 20 "*q" "2" } } */ +- *q += 10; /* { dg-final { gdb-test 25 "a\[0\]" "1" } } */ ++ *q += 10; /* { dg-final { gdb-test 25 "a\[0\]" "1" { xfail { *-*-* } } } } */ + /* { dg-final { gdb-test 25 "a\[1\]" "12" } } */ + /* { dg-final { gdb-test 25 "a\[2\]" "13" } } */ + /* { dg-final { gdb-test 25 "*p" "13" } } */ +Index: gcc/testsuite/gcc.dg/uninit-pred-8_b.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/uninit-pred-8_b.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/uninit-pred-8_b.c (.../branches/gcc-8-branch) +@@ -1,6 +1,7 @@ +- + /* { dg-do compile } */ +-/* { dg-options "-Wuninitialized -O2" } */ ++/* ??? Jump threading makes a mess of the logical-op-non-short-circuit=0 case ++ so force it our way. */ ++/* { dg-options "-Wuninitialized -O2 --param logical-op-non-short-circuit=1" } */ + + int g; + void bar(); +Index: gcc/testsuite/gcc.dg/cpp/usr/include/stdio.h +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/cpp/usr/include/stdio.h (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/cpp/usr/include/stdio.h (.../branches/gcc-8-branch) +@@ -1,4 +0,0 @@ +-/* Used by gcc.dg/cpp/isysroot-1.c to test isysroot. */ +-void foo() +-{ +-} +Index: gcc/testsuite/gcc.dg/cpp/usr/include/example.h +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/cpp/usr/include/example.h (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/cpp/usr/include/example.h (.../branches/gcc-8-branch) +@@ -0,0 +1,4 @@ ++/* Used by gcc.dg/cpp/isysroot-1.c to test isysroot. */ ++void foo() ++{ ++} +Index: gcc/testsuite/gcc.dg/cpp/isysroot-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/cpp/isysroot-1.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/cpp/isysroot-1.c (.../branches/gcc-8-branch) +@@ -1,10 +1,17 @@ + /* { dg-options "-isysroot ${srcdir}/gcc.dg/cpp" } */ + /* { dg-do compile { target *-*-darwin* } } */ + +-#include <stdio.h> ++/* For the test to succeed there needs to be some header that is to be found ++ in the 'expected' place i.e. <sysroot>/usr/include/. It's important that ++ it is not the name of a header for which fixincludes have been applied, ++ since such headers will be found in the gcc include-fixed dir and, in ++ general, reference additional headers. The dummy sysroot will prevent the ++ additional headers from being found, resulting in a failed test. So use ++ a header name we don't expect to see. */ ++#include <example.h> + int main() + { +- /* Special stdio.h supplies function foo. */ ++ /* Special example.h supplies function foo. */ + void (*x)(void) = foo; + return 0; + } +Index: gcc/testsuite/gcc.dg/pr90898.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/pr90898.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/pr90898.c (.../branches/gcc-8-branch) +@@ -0,0 +1,16 @@ ++/* PR c/90898 */ ++/* { dg-do compile } */ ++/* { dg-options "-O2" } */ ++ ++void *p; ++int bar (void); ++void baz (int *); ++ ++void ++foo (void) ++{ ++ p = __builtin_stack_save (); ++ int a[(bar (), 2)]; ++ baz (a); ++ __builtin_stack_restore (p); ++} +Index: gcc/testsuite/gcc.dg/pr90760.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/pr90760.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/pr90760.c (.../branches/gcc-8-branch) +@@ -0,0 +1,9 @@ ++/* PR c/90760 */ ++/* { dg-do compile } */ ++/* { dg-require-alias "" } */ ++/* { dg-require-named-sections "" } */ ++ ++void bar (void) {} ++void foo (void) __attribute__ ((alias ("bar"))); /* { dg-error "section of alias 'foo' must match section of its target" } */ ++void foo (void) __attribute__ ((section ("baz"))); ++void qux (void) __attribute__ ((alias ("bar"), section ("baz"))); /* { dg-error "section of alias 'qux' must match section of its target" } */ +Index: gcc/testsuite/gcc.dg/darwin-minversion-link.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/darwin-minversion-link.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/darwin-minversion-link.c (.../branches/gcc-8-branch) +@@ -0,0 +1,26 @@ ++/* Test that we can handle leading-zeros on mmacosx-version-min for invocations ++ including linking (so that spec processing works). To make sure that any ++ necessary target libs are present we make this specific to the target version ++ being built. */ ++/* { dg-do link { target *-*-darwin* } } */ ++/* { dg-additional-options "-mmacosx-version-min=010.04.11 -DCHECK=1049" { target *-*-darwin8* } } */ ++/* { dg-additional-options "-mmacosx-version-min=010.05.08 -DCHECK=1058" { target *-*-darwin9* } } */ ++/* { dg-additional-options "-mmacosx-version-min=010.06.08 -DCHECK=1068" { target *-*-darwin10* } } */ ++/* { dg-additional-options "-mmacosx-version-min=010.07.05 -DCHECK=1075" { target *-*-darwin11* } } */ ++/* { dg-additional-options "-mmacosx-version-min=010.08.05 -DCHECK=1085" { target *-*-darwin12* } } */ ++/* { dg-additional-options "-mmacosx-version-min=010.09.05 -DCHECK=1095" { target *-*-darwin13* } } */ ++/* { dg-additional-options "-mmacosx-version-min=010.010.03 -DCHECK=101003" { target *-*-darwin14* } } */ ++/* { dg-additional-options "-mmacosx-version-min=010.011.06 -DCHECK=101106" { target *-*-darwin15* } } */ ++/* { dg-additional-options "-mmacosx-version-min=010.012.06 -DCHECK=101206" { target *-*-darwin16* } } */ ++/* { dg-additional-options "-mmacosx-version-min=010.013.06 -DCHECK=101306" { target *-*-darwin17* } } */ ++/* This next test covers 10.18 and (currently unreleased) 10.19 for now. */ ++/* { dg-additional-options "-mmacosx-version-min=010.014.05 -DCHECK=101405" { target *-*-darwin1[89]* } } */ ++ ++int ++main () ++{ ++#if __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ != CHECK ++ fail me; ++#endif ++ return 0; ++} +Index: gcc/testsuite/gcc.dg/Wrestrict-5.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/Wrestrict-5.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/Wrestrict-5.c (.../branches/gcc-8-branch) +@@ -1,19 +1,11 @@ +-/* Test to verify that valid calls to common restrict-qualified built-in ++/* PR tree-optimization/83655 - ICE on an invalid call to memcpy declared ++ with no prototype ++ Test to verify that valid calls to common restrict-qualified built-in + functions declared with no prototype are checked for overlap, and that + invalid calls are ignored. + { dg-do compile } + { dg-options "-O2 -Wrestrict" } */ + +-typedef __SIZE_TYPE__ size_t; +- +-#if __cplusplus +-extern "C" { +- +-#define NO_PROTO ... +-#else +-#define NO_PROTO /* empty */ +-#endif +- + void* memcpy (); + char* strncpy (); + +@@ -41,3 +33,6 @@ + { + strncpy (d + 1, d + 3, ""); + } ++ ++/* { dg-prune-output "\\\[-Wbuiltin-declaration-mismatch]" } ++ { dg-prune-output "\\\[-Wint-conversion]" } */ +Index: gcc/testsuite/gcc.dg/pr88074-2.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/pr88074-2.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/pr88074-2.c (.../branches/gcc-8-branch) +@@ -0,0 +1,17 @@ ++/* PR middle-end/88074 */ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -fdump-tree-optimized" } */ ++/* { dg-add-options float128 } */ ++/* { dg-require-effective-target float128 } */ ++/* { dg-final { scan-tree-dump-not "link_error " "optimized" } } */ ++ ++extern void link_error (void); ++int ++main () ++{ ++ if (((__FLT128_MAX__ * 0.5 + __FLT128_MAX__ * 0.5i) ++ / (__FLT128_MAX__ * 0.25 + __FLT128_MAX__ * 0.25i)) ++ != (_Complex _Float128) 2) ++ link_error (); ++ return 0; ++} +Index: gcc/testsuite/gcc.dg/pr87979.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/pr87979.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/pr87979.c (.../branches/gcc-8-branch) +@@ -0,0 +1,11 @@ ++/* PR rtl-optimization/87979 */ ++/* { dg-do compile } */ ++/* { dg-options "-Os -fmodulo-sched -fno-tree-loop-im" } */ ++/* { dg-additional-options "-march=z196" { target { s390*-*-* } } } */ ++ ++void foo(void) ++{ ++ static int m; ++ for (int i = 0; i < 10; ++i) ++ m++; ++} +Index: gcc/testsuite/gcc.dg/autopar/pr91162.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/autopar/pr91162.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/autopar/pr91162.c (.../branches/gcc-8-branch) +@@ -0,0 +1,25 @@ ++/* { dg-do compile { target int128 } } */ ++/* { dg-options "-O -ftree-parallelize-loops=2 -fno-tree-dominator-opts --param parloops-min-per-thread=30" } */ ++ ++void ++zf (__int128 ct) ++{ ++ __int128 *rk = &ct; ++ ++ if (0) ++ { ++ int jj; ++ ++t9: ++ for (jj = 0; jj < 60; ++jj) ++ { ++ } ++ ++ __builtin_unreachable (); ++ } ++ ++ while (*rk < 1) ++ ++*rk; ++ ++ goto t9; ++} +Index: gcc/testsuite/gcc.dg/pr89590.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/pr89590.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/pr89590.c (.../branches/gcc-8-branch) +@@ -0,0 +1,11 @@ ++/* PR middle-end/89590 */ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -Wall -w" } */ ++ ++void free (void *); ++ ++void ++foo (void) ++{ ++ ((void (*)()) free) (); ++} +Index: gcc/testsuite/gcc.dg/pr91854.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/pr91854.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/pr91854.c (.../branches/gcc-8-branch) +@@ -0,0 +1,55 @@ ++/* PR target/91854 */ ++/* Testcase by Sergei Trofimovich <slyfox@inbox.ru> */ ++/* { dg-do assemble } */ ++/* { dg-options "-O2 -Wno-int-conversion" } */ ++/* { dg-additional-options "-fPIE -mcpu=niagara4" { target sparc*-*-* } } */ ++ ++typedef struct { ++ long a; ++} __attribute__((packed)) c; ++void *e, *f; ++int i, j, ab, k, l, m, o; ++inline int g(int p) { ++ if (__builtin_expect(p, 1)) { ++ const int aa = ((c *)e)->a ^ ((c *)f)->a; ++ if (aa) ++ f = sizeof(long); ++ return f; ++ } ++} ++void d(); ++int am (); ++inline int n(char p, int u) { ++ int q, r, ac = i; ++ short b = m; ++ while (r && u) { ++ if (l) { ++ if (k) { ++ void *h = i; ++ if (__builtin_expect(p, 1)) { ++ const int aa = ((c *)e)->a ^ ((c *)h)->a; ++ if (aa) ++ h = sizeof(long); ++ q = h; ++ } ++ } ++ ab = q; ++ char s; ++ if (s) { ++ char t = l = g(t); ++ } ++ } ++ if (j && b) ++ if (ac) ++ d(); ++ } ++} ++void v() { ++ const int al = am(); ++ if (al) ++ n(am, v); ++an: ++ n(am, v); ++ if (o) ++ goto an; ++} +Index: gcc/testsuite/gcc.dg/tree-ssa/pr89725.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr89725.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr89725.c (.../branches/gcc-8-branch) +@@ -0,0 +1,28 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -floop-interchange -fno-tree-dce" } */ ++int abs (int); ++int find_sad_16x16(int *intra_mode) ++{ ++ int current_intra_sad_2,best_intra_sad2; ++ int M1[16][16],M0[4][4][4][4],M3[4],M4[4][4]; ++ int i,j,k; ++ int ii,jj; ++ int up_avail, left_avail, left_up_avail; ++ for (i=0;i<17;i++) ++ if (left_up_avail) ++ { ++ for (jj=0;jj<4;jj++) ++ for (ii=0;ii<4;ii++) ++ for (j=0;j<4;j++) ++ for (i=0;i<4;i++) ++ { ++ M0[i][ii][2][jj]=M3[0]-M3[1]; ++ M0[i][ii][1][jj]=M3[2]+M3[3]; ++ current_intra_sad_2 += abs(M0[i][ii][j][jj]); ++ } ++ ++ if(current_intra_sad_2 < best_intra_sad2) ++ best_intra_sad2=current_intra_sad_2; ++ } ++ return 0; ++} +Index: gcc/testsuite/gcc.dg/tree-ssa/reassoc-43.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/tree-ssa/reassoc-43.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/reassoc-43.c (.../branches/gcc-8-branch) +@@ -50,4 +50,4 @@ + } + } + } +-/* { dg-final { scan-tree-dump-not "0 != 0" "reassoc2"} } */ ++/* { dg-final { scan-tree-dump-not "\[ (\]0 != 0" "reassoc2"} } */ +Index: gcc/testsuite/gcc.dg/tree-ssa/pr91091-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr91091-1.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr91091-1.c (.../branches/gcc-8-branch) +@@ -0,0 +1,23 @@ ++/* { dg-do run } */ ++/* { dg-options "-O3 -fno-strict-aliasing" } */ ++ ++struct s { int x; } __attribute__((packed)); ++struct t { int x; }; ++ ++void __attribute__((noinline,noipa)) ++swap(struct s* p, struct t* q) ++{ ++ p->x = q->x; ++ q->x = p->x; ++} ++ ++int main() ++{ ++ struct t a[2]; ++ a[0].x = 0x12345678; ++ a[1].x = 0x98765432; ++ swap ((struct s *)((char *)a + 1), a); ++ if (a[0].x != 0x12345678) ++ __builtin_abort (); ++ return 0; ++} +Index: gcc/testsuite/gcc.dg/tree-ssa/pr89872.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr89872.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr89872.c (.../branches/gcc-8-branch) +@@ -0,0 +1,27 @@ ++/* PR c/89872 */ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -fdump-tree-optimized" } */ ++/* { dg-final { scan-tree-dump-times " ={v} 1;" 1 "optimized" } } */ ++/* { dg-final { scan-tree-dump-times " ={v} 2;" 1 "optimized" } } */ ++/* { dg-final { scan-tree-dump-times " ={v} 3;" 1 "optimized" } } */ ++/* { dg-final { scan-tree-dump-times " ={v} 4;" 1 "optimized" } } */ ++/* { dg-final { scan-tree-dump-times " ={v} 0;" 1 "optimized" } } */ ++/* { dg-final { scan-tree-dump-times " ={v} " 10 "optimized" } } */ ++ ++void ++foo (void) ++{ ++ (volatile int){1} + (volatile int){2}; ++} ++ ++void ++bar (void) ++{ ++ (volatile int){3}; ++} ++ ++void ++baz (void) ++{ ++ (volatile int){4} / (volatile int){0}; ++} +Index: gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-78.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-78.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-78.c (.../branches/gcc-8-branch) +@@ -0,0 +1,27 @@ ++/* { dg-do run } */ ++/* { dg-options "-O3 -fstrict-aliasing" } */ ++ ++union U { ++ struct A { int : 2; int x : 8; } a; ++ struct B { int : 6; int x : 8; } b; ++}; ++ ++int __attribute__((noipa)) ++foo (union U *p, union U *q) ++{ ++ p->a.x = 1; ++ q->b.x = 1; ++ return p->a.x; ++} ++ ++int ++main() ++{ ++ union U x; ++ if (foo (&x, &x) != x.a.x) ++ __builtin_abort (); ++ return 0; ++} ++ ++/* We support arbitrary punning through unions when it happens through ++ the union type and thus p == q is valid here. */ +Index: gcc/testsuite/gcc.dg/tree-ssa/pr89546.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr89546.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr89546.c (.../branches/gcc-8-branch) +@@ -0,0 +1,100 @@ ++/* { dg-do run } */ ++/* { dg-options "-O" } */ ++ ++struct I ++{ ++ int i; ++}; ++ ++struct A ++{ ++ struct I i1; ++ struct I i2; ++ struct I i3; ++}; ++ ++struct B ++{ ++ struct I i0; ++ struct A a; ++}; ++ ++struct C ++{ ++ struct I i00; ++ struct B b; ++}; ++ ++volatile int v; ++ ++void __attribute__((noipa)) ++consume_i (struct I i) ++{ ++ v = i.i; ++} ++ ++void __attribute__((noipa)) ++consume_a (struct A a) ++{ ++ v = a.i1.i; ++} ++ ++void __attribute__((noipa)) ++consume_b (struct B b) ++{ ++ v = b.a.i1.i; ++} ++ ++void __attribute__((noipa)) ++consume_c (struct C c) ++{ ++ v = c.b.a.i1.i; ++} ++ ++ ++ ++ ++int __attribute__((noipa)) ++foo (struct I input) ++{ ++ struct I i1, i2, i3; ++ struct A a1, a2, a3; ++ struct B b1; ++ struct C c; ++ ++ i1 = input; ++ a1.i1 = i1; ++ b1.a = a1; ++ ++ i2.i = 1; ++ b1.i0 = i2; ++ ++ c.b = b1; ++ ++ a2 = c.b.a; ++ a3 = a2; ++ i3 = a3.i1; ++ ++ int t = c.b.i0.i; ++ a2.i3.i = 4; ++ consume_i (i1); ++ consume_i (i2); ++ consume_b (b1); ++ consume_a (a1); ++ consume_a (a2); ++ consume_a (a3); ++ consume_c (c); ++ ++ return i3.i + t; ++} ++ ++int ++main (int argc, char *argv[]) ++{ ++ struct I s; ++ s.i = 1234; ++ int i = foo (s); ++ if (i != 1235) ++ __builtin_abort (); ++ return 0; ++} +Index: gcc/testsuite/gcc.dg/Wnonnull.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/Wnonnull.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/Wnonnull.c (.../branches/gcc-8-branch) +@@ -2,7 +2,10 @@ + { dg-do compile } + { dg-options "-O2 -Wall" } */ + +-#include <string.h> ++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/pr90733.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/pr90733.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/pr90733.c (.../branches/gcc-8-branch) +@@ -0,0 +1,22 @@ ++/* PR debug/90733 */ ++/* { dg-do compile } */ ++/* { dg-options "-g -O2 -w" } */ ++ ++struct S { unsigned a : 1; }; ++union U { struct S b; _Complex unsigned c; }; ++ ++union U ++foo (union U d) ++{ ++ union U e = d; ++ return e; ++} ++ ++int ++bar (void) ++{ ++ union U x, y; ++ x.c = x.b.a; ++ y = foo (x); ++ return x.c != y.c; ++} +Index: gcc/testsuite/gcc.dg/darwin-minversion-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/darwin-minversion-1.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/darwin-minversion-1.c (.../branches/gcc-8-branch) +@@ -1,6 +1,6 @@ + /* Basic test for -mmacosx-version-min switch on Darwin. */ + /* { dg-options "-mmacosx-version-min=10.5" } */ +-/* { dg-do run { target *-*-darwin* } } */ ++/* { dg-do compile { target *-*-darwin* } } */ + + int + main () +Index: gcc/testsuite/gcc.dg/Warray-bounds-38.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/Warray-bounds-38.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/Warray-bounds-38.c (.../branches/gcc-8-branch) +@@ -0,0 +1,30 @@ ++/* PR middle-end/88273 - bogus warning: 'memcpy' offset [-527, -529] ++ is out of the bounds [0, 16] ++ { dg-do compile } ++ { dg-options "-O2 -Wall" } */ ++ ++typedef __SIZE_TYPE__ size_t; ++ ++void *q; ++ ++size_t x, y; ++ ++inline void f (char *p, int i, size_t j) ++{ ++ size_t n = y ? y : j; ++ ++ p += x - i; ++ ++ __builtin_memcpy (q, p, n); /* { dg-bogus "bounds" } */ ++ ++ x = n; ++} ++ ++void g (void) ++{ ++ struct { char a[16]; } s; ++ ++ f (q, 0, sizeof s); ++ ++ f (s.a, 33 * sizeof s, 1); ++} +Index: gcc/testsuite/gcc.dg/uninit-19.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/uninit-19.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/uninit-19.c (.../branches/gcc-8-branch) +@@ -12,7 +12,7 @@ + { + if (p1 & 8) + b[3] = p10[a]; +- /* { dg-warning "may be used uninitialized" "" { target { { nonpic } || { hppa*64*-*-* } } } .-1 } */ ++ /* { dg-warning "may be used uninitialized" "" { target { { nonpic } || { hppa*64*-*-* *-*-darwin* } } } .-1 } */ + } + + void +@@ -22,5 +22,5 @@ + if (l & 6) + n = &c + m; + fn1 (l, &d, &e, &g, &i, &h, &k, n); +- /* { dg-warning "may be used uninitialized" "" { target { ! { { nonpic } || { hppa*64*-*-* } } } } .-1 } */ ++ /* { dg-warning "may be used uninitialized" "" { target { ! { { nonpic } || { hppa*64*-*-* *-*-darwin* } } } } .-1 } */ + } +Index: gcc/testsuite/gcc.dg/pr89679.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/pr89679.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/gcc.dg/pr89679.c (.../branches/gcc-8-branch) +@@ -0,0 +1,26 @@ ++/* PR rtl-optimization/89679 */ ++/* { dg-do run } */ ++/* { dg-options "-Og -frerun-cse-after-loop -fno-tree-fre" } */ ++ ++unsigned short g; ++ ++void ++foo (unsigned long long x) ++{ ++ if (x != 0xffff) ++ __builtin_abort (); ++} ++ ++int ++main () ++{ ++#if __SIZEOF_SHORT__ == 2 && __SIZEOF_INT__ == 4 && __CHAR_BIT__ == 8 ++ unsigned short d = 0; ++ unsigned long long x, c = ~0; ++ c = c >> d; ++ __builtin_memset (&d, c, 2); ++ x = d + g; ++ foo (x); ++#endif ++ return 0; ++} +Index: gcc/testsuite/ChangeLog +=================================================================== +--- a/src/gcc/testsuite/ChangeLog (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/ChangeLog (.../branches/gcc-8-branch) +@@ -1,3 +1,2144 @@ ++2019-11-26 Jerry DeLisle <jvdelisle@gcc.ngu.org> ++ ++ Backport from trunk ++ PR fortran/92100 ++ gfortran.dg/streamio_18.f90: New test. ++ ++2019-11-25 Thomas Koenig <tkoenig@gcc.gnu.org> ++ Harald Anlauf <anlauf@gmx.de> ++ ++ Backport from trunk ++ PR fortran/92569 ++ * gfortran.dg/eof_6.f90: New test. ++ ++2019-11-21 Jakub Jelinek <jakub@redhat.com> ++ ++ PR tree-optimization/91355 ++ * g++.dg/torture/pr91355.C: New test. ++ ++ Backported from mainline ++ 2019-11-20 Jakub Jelinek <jakub@redhat.com> ++ ++ PR middle-end/90840 ++ * gcc.c-torture/compile/pr90840.c: New test. ++ ++ PR target/90867 ++ * gcc.target/i386/pr90867.c: New test. ++ ++ PR c/90898 ++ * gcc.dg/pr90898.c: New test. ++ ++ 2019-11-19 Jakub Jelinek <jakub@redhat.com> ++ ++ PR middle-end/91450 ++ * gcc.c-torture/execute/pr91450-1.c: New test. ++ * gcc.c-torture/execute/pr91450-2.c: New test. ++ ++ 2019-11-08 Jakub Jelinek <jakub@redhat.com> ++ ++ PR c++/92384 ++ * g++.dg/torture/pr92384.C: New test. ++ ++ 2019-10-31 Jakub Jelinek <jakub@redhat.com> ++ ++ PR preprocessor/92296 ++ * c-c++-common/cpp/pr92296-1.c: New test. ++ * c-c++-common/cpp/pr92296-2.c: New test. ++ ++ 2019-10-29 Jakub Jelinek <jakub@redhat.com> ++ ++ PR c++/92201 ++ * g++.dg/other/pr92201.C: New test. ++ ++ 2019-10-17 Jakub Jelinek <jakub@redhat.com> ++ ++ PR tree-optimization/92056 ++ * gcc.c-torture/compile/pr92056.c: New test. ++ ++ 2019-10-04 Jakub Jelinek <jakub@redhat.com> ++ ++ PR c++/91974 ++ * g++.dg/cpp1z/eval-order5.C: New test. ++ ++ 2019-09-07 Jakub Jelinek <jakub@redhat.com> ++ ++ PR tree-optimization/91665 ++ * gcc.dg/vect/pr91665.c: New test. ++ ++ 2019-09-05 Jakub Jelinek <jakub@redhat.com> ++ ++ PR middle-end/91001 ++ PR middle-end/91105 ++ PR middle-end/91106 ++ * gcc.c-torture/compile/pr91001.c: New test. ++ ++ 2019-09-01 Jakub Jelinek <jakub@redhat.com> ++ ++ PR middle-end/91623 ++ * gcc.target/i386/pr91623.c: New test. ++ ++ 2019-08-09 Jakub Jelinek <jakub@redhat.com> ++ ++ PR c/91401 ++ * c-c++-common/gomp/pr91401-1.c: New test. ++ * c-c++-common/gomp/pr91401-2.c: New test. ++ ++2019-11-20 Peter Bergner <bergner@linux.ibm.com> ++ ++ Backport from mainline ++ 2019-11-13 David Edelsohn <dje.gcc@gmail.com> ++ ++ * gcc.target/powerpc/pr92090.c: Limit -mbig to powerpc64le-*-*. ++ * gcc.target/powerpc/pr92090-2.c: Likewise. ++ ++ 2019-11-07 Peter Bergner <bergner@linux.ibm.com> ++ ++ PR other/92090 ++ * gcc.target/powerpc/pr92090-2.c: New test. ++ ++ 2019-11-07 Peter Bergner <bergner@linux.ibm.com> ++ ++ PR other/92090 ++ * gcc.target/powerpc/pr92090.c: New test. ++ ++2019-11-08 Eric Botcazou <ebotcazou@adacore.com> ++ ++ * gcc.c-torture/compile/20191108-1.c: New test. ++ * gcc.target/sparc/overflow-1.c: Add -fno-pie to the options. ++ * gcc.target/sparc/overflow-2.c: Likewise. ++ * gcc.target/sparc/overflow-3.c: Likewise. ++ * gcc.target/sparc/overflow-4.c: Likewise. ++ * gcc.target/sparc/overflow-5.c: Likewise. ++ ++2019-11-05 Iain Sandoe <iain@sandoe.co.uk> ++ ++ Backport from mainline. ++ 2019-06-20 Iain Sandoe <iain@sandoe.co.uk> ++ ++ * obj-c++.dg/stubify-1.mm: Adjust options and scan-asm checks. ++ * obj-c++.dg/stubify-2.mm: Likewise. ++ * objc.dg/stubify-1.m: Likewise. ++ * objc.dg/stubify-2.m: Likewise. ++ ++2019-11-03 Iain Sandoe <iain@sandoe.co.uk> ++ ++ PR c++/79274 ++ * g++.dg/tls/pr77285-2.C: XFAIL test for Darwin. ++ ++2019-11-02 Iain Sandoe <iain@sandoe.co.uk> ++ ++ Backport from mainline ++ 2019-06-13 Iain Sandoe <iain@sandoe.co.uk> ++ ++ * gcc.dg/pr90760.c: Require alias support. ++ ++2019-11-01 Delia Burduv <Delia.Burduv@arm.com> ++ ++ Backport from trunk ++ 2019-02-20 Andre Vieira <andre.simoesdiasvieira@arm.com> ++ ++ PR target/86487 ++ * gcc.target/arm/pr86487.c: New. ++ ++2019-10-31 Iain Sandoe <iain@sandoe.co.uk> ++ ++ Backport from mainline. ++ 2019-10-22 Iain Sandoe <iain@sandoe.co.uk> ++ ++ * 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 <iain@sandoe.co.uk> ++ ++ * gcc.dg/Wnonnull.c: Add attributed function declarations for ++ memcpy and strlen for Darwin. ++ ++2019-10-31 Iain Sandoe <iain@sandoe.co.uk> ++ ++ Backport from mainline. ++ 2019-10-13 Iain Sandoe <iain@sandoe.co.uk> ++ ++ * 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-31 Iain Sandoe <iain@sandoe.co.uk> ++ ++ Backport from mainline. ++ 2019-08-13 Iain Sandoe <iain@sandoe.co.uk> ++ ++ * 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-31 Iain Sandoe <iain@sandoe.co.uk> ++ ++ Backport from mainline. ++ 2019-05-15 Iain Sandoe <iain@sandoe.co.uk> ++ ++ * 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. ++ (check_effective_target_powerpc_float128_hw_ok): Likewise. ++ (check_effective_target_powerpc_vsx_ok): Likewise. ++ * gcc.target/powerpc/bfp/bfp.exp: Don't try to run this for Darwin. ++ * gcc.target/powerpc/dfp/dfp.exp: Likewise. ++ ++2019-10-30 Dragan Mladjenovic <dmladjenovic@wavecomp.com> ++ ++ Backport from mainline ++ 2019-07-09 Dragan Mladjenovic <dmladjenovic@wavecomp.com> ++ ++ * 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-28 Iain Sandoe <iain@sandoe.co.uk> ++ ++ * gcc.c-torture/compile/pr72802.c: Skip for Darwin. ++ ++2019-10-28 Jiufu Guo <guojiufu@linux.ibm.com> ++ ++ Backport from mainline ++ PR target/70010 ++ * gcc.target/powerpc/pr70010.c: Add -Wno-psabi and -mvsx. ++ ++2019-10-28 Peter Bergner <bergner@linux.ibm.com> ++ Jiufu Guo <guojiufu@linux.ibm.com> ++ ++ PR target/70010 ++ * gcc.target/powerpc/pr70010.c: New test. ++ * gcc.target/powerpc/pr70010-1.c: New test. ++ * gcc.target/powerpc/pr70010-3.c: New test. ++ * gcc.target/powerpc/pr70010-4.c: New test. ++ ++2019-10-27 Paul Thomas <pault@gcc.gnu.org> ++ ++ 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 <rearnsha@arm.com> ++ ++ Backport from mainline ++ 2019-05-08 Mihail Ionescu <mihail.ionescu@arm.com> ++ Richard Earnshaw <rearnsha@arm.com> ++ PR target/88167 ++ * gcc.target/arm/pr88167-1.c: New test. ++ * gcc.target/arm/pr88167-2.c: New test. ++ ++2019-10-23 Richard Biener <rguenther@suse.de> ++ ++ Backport from mainline ++ 2019-10-17 Richard Biener <rguenther@suse.de> ++ ++ PR debug/91887 ++ * g++.dg/debug/dwarf2/pr91887.C: New testcase. ++ ++ 2019-09-19 Richard Biener <rguenther@suse.de> ++ ++ PR tree-optimization/91812 ++ * gcc.dg/torture/pr91812.c: New testcase. ++ ++2019-10-23 Eric Botcazou <ebotcazou@adacore.com> ++ ++ * gcc.c-torture/execute/20191023-1.c: New test. ++ ++2019-10-18 Steven G. Kargl <kargl@gcc.gnu.org> ++ ++ PR fortran/69455 ++ * gfortran.dg/pr69455_1.f90: New test. ++ * gfortran.dg/pr69455_2.f90: Ditto. ++ ++2019-10-17 Bill Schmidt <wschmidt@linux.ibm.com> ++ ++ Backport from mainline ++ 2019-10-15 Bill Schmidt <wschmidt@linux.ibm.com> ++ ++ PR target/92093 ++ * gcc.target/powerpc/pr91275.c: Fix type and endian issues. ++ ++2019-10-14 Will Schmidt <will_schmidt@vnet.ibm.com> ++ ++ Backport from trunk. ++ 2019-09-26 Will Schmidt <will_schmidt@vnet.ibm.com> ++ ++ * gcc.target/powerpc/pure-builtin-redundant-load.c: New. ++ ++2019-10-10 Uroš Bizjak <ubizjak@gmail.com> ++ ++ PR target/92022 ++ * g++.dg/pr92022.C: New test. ++ ++2019-10-07 Thomas Koenig <tkoenig@gcc.gnu.org> ++ ++ Backport from trunk ++ PR fortran/84487 ++ * gfortran.dg/typebound_call_22.f03: xfail. ++ ++2019-10-07 Bill Schmidt <wschmidt@linux.ibm.com> ++ ++ Backport from mainline ++ 2019-10-01 Bill Schmidt <wschmdit@linux.ibm.com> ++ ++ PR target/91275 ++ * gcc.target/powerpc/pr91275.c: New. ++ ++2019-10-01 Kyrylo Tkachov <kyrylo.tkachov@arm.com> ++ ++ Backport from mainline ++ 2019-09-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com> ++ ++ * gcc.target/aarch64/nosplit-di-const-volatile_1.c: New test. ++ ++2019-10-01 Eric Botcazou <ebotcazou@adacore.com> ++ ++ * gcc.dg/pr91854.c: New test. ++ ++2019-09-28 Paul Thomas <pault@gcc.gnu.org> ++ ++ Backport from mainline ++ PR fortran/91588 ++ * gfortran.dg/associate_49.f90 : New test. ++ ++2019-09-25 Kyrylo Tkachov <kyrylo.tkachov@arm.com> ++ ++ Backport from mainline ++ 2019-08-22 Kyrylo Tkachov <kyrylo.tkachov@arm.com> ++ ++ * gcc.target/arm/acle/crc_hf_1.c: New test. ++ ++2019-09-20 Iain Sandoe <iain@sandoe.co.uk> ++ ++ Backport from mainline. ++ 2019-05-11 Iain Sandoe <iain@sandoe.co.uk> ++ ++ PR testsuite/81058 ++ * gcc.target/i386/avx512bw-vpmovswb-1.c: Use regular data section ++ for variables on Darwin, rather than common. ++ * gcc.target/i386/avx512bw-vpmovuswb-1.c: Likewise. ++ * gcc.target/i386/avx512bw-vpmovwb-1.c: Likewise. ++ ++2019-09-18 Thomas Koenig <tkoenig@gcc.gnu.org> ++ ++ Backport from trunk ++ PR fortran/91550 ++ * gfortran.dg/do_subscript_6.f90: New test. ++ ++2019-09-15 Thomas Koenig <tkoenig@gcc.gnu.org> ++ ++ Backport from trunk ++ PR fortran/91557 ++ * gfortran.dg/warn_unused_dummy_argument_5.f90: New test. ++ ++2019-09-11 Eric Botcazou <ebotcazou@adacore.com> ++ ++ * gcc.target/sparc/20161111-1.c: XFAIL redundant zero-extension test. ++ ++2019-09-09 Jakub Jelinek <jakub@redhat.com> ++ ++ PR target/87853 ++ * gcc.target/i386/pr87853.c: New test. ++ ++ PR target/91704 ++ * gcc.target/i386/pr91704.c: New test. ++ ++2019-09-05 Steven G. Kargl <kargl@gcc.gnu.org> ++ ++ 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 <wdijkstr@arm.com> ++ ++ Backport from mainline ++ 2019-08-13 Wilco Dijkstra <wdijkstr@arm.com> ++ ++ PR target/81800 ++ * gcc.target/aarch64/no-inline-lrint_3.c: New test. ++ ++2019-09-02 Richard Biener <rguenther@suse.de> ++ ++ PR testsuite/91619 ++ * gcc.dg/vect/pr81740-2.c: Restrict to vect_hw_misalign. ++ ++2019-09-01 Iain Sandoe <iain@sandoe.co.uk> ++ ++ Backport from mainline. ++ 2019-06-15 Iain Sandoe <iain@sandoe.co.uk> ++ ++ PR objc/90709 ++ * obj-c++.dg/proto-lossage-7.mm: Use proxy headers. ++ * obj-c++.dg/strings/const-cfstring-2.mm: Likewise. ++ * obj-c++.dg/strings/const-cfstring-5.mm: Likewise ++ * obj-c++.dg/strings/const-str-12.mm: Likewise. ++ * obj-c++.dg/syntax-error-1.mm: Likewise. ++ * obj-c++.dg/torture/strings/const-cfstring-1.mm: Likewise. ++ * obj-c++.dg/torture/strings/const-str-10.mm: Likewise. ++ * obj-c++.dg/torture/strings/const-str-11.mm: Likewise. ++ * obj-c++.dg/torture/strings/const-str-9.mm: Likewise. ++ * obj-c++.dg/cxx-ivars-3.mm: Skip on later Darwin, where the 10.4 API ++ in no longer supported, also on m64 where there's no meaning to it. ++ * obj-c++.dg/isa-field-1.mm: Suppress unwanted warning, add comment why. ++ * obj-c++.dg/objc-gc-3.mm: Skip for Darwin > 16, the API use is an error ++ there. ++ * obj-c++.dg/qual-types-1.mm: Prune a spurious l64 warning. ++ * obj-c++.dg/stubify-1.mm: Tidy up after better compiler warnings. ++ * obj-c++.dg/stubify-2.mm: Likewise. ++ * obj-c++.dg/try-catch-1.mm: Likewise. ++ * obj-c++.dg/try-catch-3.mm: Likewise. ++ ++ Backport from mainline. ++ 2019-06-15 Iain Sandoe <iain@sandoe.co.uk> ++ ++ PR objc/90709 ++ * objc.dg/encode-7-next-64bit.m: Use proxy headers. ++ * objc.dg/image-info.m: Likewise. ++ * objc.dg/method-6.m: Likewise. ++ * objc.dg/no-extra-load.m: Likewise. ++ * objc.dg/objc-foreach-4.m: Likewise. ++ * objc.dg/objc-foreach-5.m: Likewise. ++ * objc.dg/proto-lossage-7.m: Likewise. ++ * objc.dg/strings/const-cfstring-2.m: Likewise. ++ * objc.dg/strings/const-cfstring-5.m: Likewise. ++ * objc.dg/strings/const-str-12b.m: Likewise. ++ * objc.dg/symtab-1.m: Likewise. ++ * objc.dg/torture/strings/const-cfstring-1.m: Likewise. ++ * objc.dg/torture/strings/const-str-10.m: Likewise. ++ * objc.dg/torture/strings/const-str-11.m: Likewise. ++ * objc.dg/torture/strings/const-str-9.m: Likewise. ++ * objc.dg/zero-link-1.m: Likewise. ++ * objc.dg/zero-link-2.m: Likewise. ++ * objc.dg/zero-link-3.m: Likewise. ++ * objc.dg/isa-field-1.m: Suppress unwanted warning, add comment why. ++ * objc.dg/headers.m: XFAIL for Darwin14-19. ++ * objc.dg/objc-gc-4.m: Skip for Darwin > 16, the API use is an error ++ there. ++ ++ Backport from mainline. ++ 2019-06-15 Iain Sandoe <iain@sandoe.co.uk> ++ ++ PR objc/90709 ++ * objc-obj-c++-shared/CF-CFString.h: New. ++ * objc-obj-c++-shared/F-NSArray.h: New. ++ * objc-obj-c++-shared/F-NSAutoreleasePool.h: New. ++ * objc-obj-c++-shared/F-NSObject.h: New. ++ * objc-obj-c++-shared/F-NSString.h: New. ++ * objc-obj-c++-shared/F-NSValue.h: New. ++ * objc-obj-c++-shared/GNUStep/CoreFoundation/CFArray.h: New. ++ * objc-obj-c++-shared/GNUStep/CoreFoundation/CFAvailability.h: New. ++ * objc-obj-c++-shared/GNUStep/CoreFoundation/CFBase.h: New. ++ * objc-obj-c++-shared/GNUStep/CoreFoundation/CFCharacterSet.h: New. ++ * objc-obj-c++-shared/GNUStep/CoreFoundation/CFData.h: New. ++ * objc-obj-c++-shared/GNUStep/CoreFoundation/CFDictionary.h: New. ++ * objc-obj-c++-shared/GNUStep/CoreFoundation/CFLocale.h: New. ++ * objc-obj-c++-shared/GNUStep/CoreFoundation/CFString.h: New. ++ * objc-obj-c++-shared/GNUStep/Foundation/NSArray.h: New. ++ * objc-obj-c++-shared/GNUStep/Foundation/NSAutoreleasePool.h: New. ++ * objc-obj-c++-shared/GNUStep/Foundation/NSDate.h: New. ++ * objc-obj-c++-shared/GNUStep/Foundation/NSEnumerator.h: New. ++ * objc-obj-c++-shared/GNUStep/Foundation/NSGeometry.h: New. ++ * objc-obj-c++-shared/GNUStep/Foundation/NSObjCRuntime.h: New. ++ * objc-obj-c++-shared/GNUStep/Foundation/NSObject.h: New. ++ * objc-obj-c++-shared/GNUStep/Foundation/NSRange.h: New. ++ * objc-obj-c++-shared/GNUStep/Foundation/NSString.h: New. ++ * objc-obj-c++-shared/GNUStep/Foundation/NSValue.h: New. ++ * objc-obj-c++-shared/GNUStep/Foundation/NSZone.h: New. ++ * objc-obj-c++-shared/GNUStep/GNUstepBase/GNUstep.h: New. ++ * objc-obj-c++-shared/GNUStep/GNUstepBase/GSBlocks.h: New. ++ * objc-obj-c++-shared/GNUStep/GNUstepBase/GSConfig.h: New. ++ * objc-obj-c++-shared/GNUStep/GNUstepBase/GSObjCRuntime.h: New. ++ * objc-obj-c++-shared/GNUStep/GNUstepBase/GSVersionMacros.h: New. ++ * objc-obj-c++-shared/GNUStep/GNUstepBase/NSArray+GNUstepBase.h: New. ++ * objc-obj-c++-shared/GNUStep/GNUstepBase/NSMutableString+GNUstepBase.h: ++ New. ++ * objc-obj-c++-shared/GNUStep/GNUstepBase/NSNumber+GNUstepBase.h: New. ++ * objc-obj-c++-shared/GNUStep/GNUstepBase/NSObject+GNUstepBase.h: New. ++ * objc-obj-c++-shared/GNUStep/GNUstepBase/NSString+GNUstepBase.h: New. ++ ++2019-09-01 Iain Sandoe <iain@sandoe.co.uk> ++ ++ Backport from mainline. ++ 2019-07-27 Iain Sandoe <iain@sandoe.co.uk> ++ ++ * gcc.target/powerpc/bmi2-bzhi64-1a.c: Add options to enable altivec ++ and vsx. ++ ++2019-09-01 Iain Sandoe <iain@sandoe.co.uk> ++ ++ Backport from mainline. ++ 2019-07-25 Iain Sandoe <iain@sandoe.co.uk> ++ ++ PR gcov-profile/91087 ++ * g++.dg/gcov/pr16855.C: Xfail the count lines for the DTORs and the ++ "final" line for the failure summaries. Adjust source layout so that ++ dejagnu xfail expressions work. ++ ++2019-09-01 Iain Sandoe <iain@sandoe.co.uk> ++ ++ Backport from mainline. ++ 2019-07-13 Iain Sandoe <iain@sandoe.co.uk> ++ ++ * gcc.target/powerpc/stabs-attrib-vect-darwin.c: Require stabs ++ support. ++ ++2019-09-01 Iain Sandoe <iain@sandoe.co.uk> ++ ++ Backport from mainline. ++ 2019-06-24 Iain Sandoe <iain@sandoe.co.uk> ++ ++ * gcc.target/powerpc/safe-indirect-jump-1.c: Skip for Darwin. ++ * gcc.target/powerpc/safe-indirect-jump-7.c: Likewise. ++ ++2019-09-01 Iain Sandoe <iain@sandoe.co.uk> ++ ++ Backport from mainline. ++ 2019-04-15 Dominique d'Humieres <dominiq@gcc.gnu.org> ++ ++ PR tree-optimization/90020 ++ * gcc.dg/torture/pr90020.c: Add linker options for darwin. ++ ++2019-09-01 Iain Sandoe <iain@sandoe.co.uk> ++ ++ Backport from mainline. ++ 2019-05-10 Iain Sandoe <iain@sandoe.co.uk> ++ ++ * gcc.target/x86_64/abi/avx512f/abi-avx512f.exp: Darwin is ++ now tested. ++ * gcc.target/x86_64/abi/avx512f/asm-support-darwin.s: New. ++ ++2019-09-01 Eric Botcazou <ebotcazou@adacore.com> ++ ++ * gcc.c-torture/execute/20190901-1.c: New test. ++ ++2019-08-31 Iain Sandoe <iain@sandoe.co.uk> ++ ++ Backport from mainline. ++ 2019-06-24 Iain Sandoe <iain@sandoe.co.uk> ++ ++ * gcc.target/powerpc/spec-barr-1.c: Adjust scan assembler regex ++ to recognise Darwin's register names. ++ ++2019-08-31 Iain Sandoe <iain@sandoe.co.uk> ++ ++ Backport from mainline. ++ 2019-06-24 Iain Sandoe <iain@sandoe.co.uk> ++ ++ * gcc.dg/cpp/isysroot-1.c: Use <example.h> as the test header. ++ * gcc.dg/cpp/usr/include/stdio.h: Rename... ++ * gcc.dg/cpp/usr/include/example.h: ... to this. ++ ++2019-08-31 Iain Sandoe <iain@sandoe.co.uk> ++ ++ Backport from mainline. ++ 2019-06-23 Iain Sandoe <iain@sandoe.co.uk> ++ ++ * gcc.target/powerpc/builtins-2.c: Require VSX hardware support. ++ ++2019-08-31 Iain Sandoe <iain@sandoe.co.uk> ++ ++ Backport from mainline. ++ 2019-06-23 Iain Sandoe <iain@sandoe.co.uk> ++ ++ * gcc.target/powerpc/pr80125.c (foo): Use an unsigned char ++ vector explicitly for the vec_perm. ++ ++2019-08-31 Iain Sandoe <iain@sandoe.co.uk> ++ ++ Backport from mainline. ++ 2019-06-23 Iain Sandoe <iain@sandoe.co.uk> ++ ++ * gcc.target/powerpc/pr71785.c: For Darwin, make test non-PIC, ++ expect the out-of-line GPR restore, and test specifically for ++ absence of branches to local labels. ++ ++2019-08-31 Iain Sandoe <iain@sandoe.co.uk> ++ ++ Backport from mainline. ++ 2019-06-22 Iain Sandoe <iain@sandoe.co.uk> ++ ++ * gcc.target/powerpc/pr64205.c: Require effective target dfp. ++ * gcc.target/powerpc/pr79909.c: Likewise. ++ ++2019-08-31 Iain Sandoe <iain@sandoe.co.uk> ++ ++ Backport from mainline. ++ 2019-06-22 Iain Sandoe <iain@sandoe.co.uk> ++ ++ * gcc.target/powerpc/darwin-bool-1.c: Suppress the pedantic ++ warning about _Bool. ++ ++2019-08-31 Iain Sandoe <iain@sandoe.co.uk> ++ ++ Backport from mainline. ++ 2019-06-13 Iain Sandoe <iain@sandoe.co.uk> ++ ++ * g++.dg/pr71694.C: Use non-PIC codegen for Darwin m32. ++ ++2019-08-31 Iain Sandoe <iain@sandoe.co.uk> ++ ++ Backport from mainline. ++ 2019-06-13 Iain Sandoe <iain@sandoe.co.uk> ++ ++ * gcc.dg/darwin-minversion-1.c: Use compile rather than link/run. ++ * gcc.dg/darwin-minversion-2.c: Likewise. ++ ++2019-08-31 Iain Sandoe <iain@sandoe.co.uk> ++ ++ Backport from mainline. ++ 2019-06-11 Iain Sandoe <iain@sandoe.co.uk> ++ ++ PR testsuite/65364 ++ * gcc.dg/uninit-19.c (fn1): Adjust target condition for Darwin. ++ (fn2): Likewise. ++ ++2019-08-31 Iain Sandoe <iain@sandoe.co.uk> ++ ++ Backport from mainline. ++ 2019-06-06 Iain Sandoe <iain@sandoe.co.uk> ++ ++ * g++.dg/cpp0x/alignas4.C: Amend test to check for zerofill syntax ++ on Darwin. ++ ++2019-08-31 Segher Boessenkool <segher@kernel.crashing.org> ++ ++ PR target/91481 ++ * gcc.target/powerpc/darn-3.c: Fix testcase. ++ ++2019-08-30 Iain Sandoe <iain@sandoe.co.uk> ++ ++ Backport from mainline. ++ 2019-06-01 Iain Sandoe <iain@sandoe.co.uk> ++ ++ PR target/90698 ++ * gcc.target/i386/pr49866.c: XFAIL for Darwin. ++ * gcc.target/i386/pr63538.c: Likewise. ++ * gcc.target/i386/pr61599-1.c: Skip for Darwin. ++ ++2019-08-30 Iain Sandoe <iain@sandoe.co.uk> ++ ++ Backport from mainline. ++ 2019-05-31 Iain Sandoe <iain@sandoe.co.uk> ++ ++ * g++.dg/cpp0x/pr84497.C: Require alias support. ++ ++2019-08-30 Iain Sandoe <iain@sandoe.co.uk> ++ ++ Backport from mainline. ++ 2019-05-30 Iain Sandoe <iain@sandoe.co.uk> ++ ++ * gcc.target/i386/stack-prot-sym.c: Require native TLS support. ++ ++2019-08-30 Iain Sandoe <iain@sandoe.co.uk> ++ ++ Backport from mainline. ++ 2019-05-27 Iain Sandoe <iain@sandoe.co.uk> ++ ++ * gcc.target/i386/pr22076.c: Adjust options to ++ match codegen expected by the scan-asms. ++ ++2019-08-30 Iain Sandoe <iain@sandoe.co.uk> ++ ++ Backport from mainline. ++ 2019-05-26 Iain Sandoe <iain@sandoe.co.uk> ++ ++ * gcc.target/i386/pr39013-1.c: Adjust scan-asms for PIE to ++ account for PIC code on Darwin. ++ * gcc.target/i386/pr39013-2.c: Likewise. ++ * gcc.target/i386/pr64317.c: Likewise. ++ ++2019-08-30 Iain Sandoe <iain@sandoe.co.uk> ++ ++ Backport from mainline. ++ 2019-05-25 Iain Sandoe <iain@sandoe.co.uk> ++ ++ * gcc.target/i386/pr59874-3.c: Use the spelling of popcnt ++ expected for Darwin. ++ ++2019-08-30 Iain Sandoe <iain@sandoe.co.uk> ++ ++ Backport from mainline. ++ 2019-05-25 Iain Sandoe <iain@sandoe.co.uk> ++ ++ * gcc.target/i386/pr82659-3.c: Require alias support. ++ ++2019-08-30 Iain Sandoe <iain@sandoe.co.uk> ++ ++ Backport from mainline. ++ 2019-05-24 Iain Sandoe <iain@sandoe.co.uk> ++ ++ * gcc.target/i386/pconfig-1.c: Scan for the string in the generated ++ code, not in comments or miscellaneous directives. ++ * gcc.target/i386/wbinvd-1.c: Likewise. ++ * gcc.target/i386/wbnoinvd-1.c: Likewise. ++ * gcc.target/i386/pr66819-3.c: Specifically, check that there is no ++ call to "bar". ++ * gcc.target/i386/pr66819-4.c: Likewise. ++ * gcc.target/i386/pr82662.c ++ ++2019-08-30 Iain Sandoe <iain@sandoe.co.uk> ++ ++ Backport from mainline. ++ 2019-05-24 Iain Sandoe <iain@sandoe.co.uk> ++ ++ * gcc.target/i386/pr67985-2.c: Adjust label checks for ++ Darwin. ++ * gcc.target/i386/pr77881.c: Likewise. ++ ++2019-08-30 Iain Sandoe <iain@sandoe.co.uk> ++ ++ Backport from mainline. ++ 2019-05-24 Iain Sandoe <iain@sandoe.co.uk> ++ ++ * gcc.target/i386/pr70738-7.c: Likewise. ++ * gcc.target/i386/pr24414.c: Likewise. ++ ++2019-08-30 Iain Sandoe <iain@sandoe.co.uk> ++ ++ Backport from mainline. ++ 2019-05-23 Iain Sandoe <iain@sandoe.co.uk> ++ ++ PR rtl-optimisation/64895 ++ * gcc.target/i386/fuse-caller-save-rec.c: Remove XFAILs. ++ * gcc.target/i386/fuse-caller-save.c: Likewise. ++ * gcc.target/i386/fuse-caller-save-xmm.c: Adjust tests for ++ PIC cases, remove XFAILs. ++ ++2019-08-30 Richard Biener <rguenther@suse.de> ++ ++ Backport from mainline ++ 2019-07-08 Richard Biener <rguenther@suse.de> ++ ++ PR tree-optimization/91108 ++ * gcc.dg/tree-ssa/pr91091-1.c: New testcase. ++ * gcc.dg/tree-ssa/ssa-fre-78.c: Likewise. ++ ++2019-08-30 Segher Boessenkool <segher@kernel.crashing.org> ++ ++ Backport from trunk ++ 2019-08-23 Segher Boessenkool <segher@kernel.crashing.org> ++ ++ PR target/91481 ++ * gcc.target/powerpc/darn-3.c: New testcase. ++ ++2019-08-30 Richard Biener <rguenther@suse.de> ++ ++ Backport from mainline ++ 2018-12-04 Richard Biener <rguenther@suse.de> ++ ++ PR tree-optimization/88315 ++ * gcc.dg/vect/slp-reduc-sad.c: Adjust to provide non-trivial ++ initial value. ++ ++2019-08-30 Richard Biener <rguenther@suse.de> ++ ++ Backport from mainline ++ 2019-06-18 Richard Biener <rguenther@suse.de> ++ ++ PR debug/90900 ++ * gcc.dg/gomp/pr90900.c: New testcase. ++ ++ 2019-04-29 Richard Biener <rguenther@suse.de> ++ ++ PR tree-optimization/90278 ++ * gcc.dg/torture/pr90278.c: New testcase. ++ ++ 2019-04-25 Richard Biener <rguenther@suse.de> ++ ++ PR middle-end/90194 ++ * g++.dg/torture/pr90194.C: New testcase. ++ ++2019-08-30 Richard Biener <rguenther@suse.de> ++ ++ Backport from mainline ++ 2019-07-31 Richard Biener <rguenther@suse.de> ++ ++ PR tree-optimization/91293 ++ * gcc.dg/vect/pr91293-1.c: New testcase. ++ * gcc.dg/vect/pr91293-2.c: Likewise. ++ * gcc.dg/vect/pr91293-3.c: Likewise. ++ ++ 2019-07-31 Richard Biener <rguenther@suse.de> ++ ++ PR tree-optimization/91280 ++ * g++.dg/torture/pr91280.C: New testcase. ++ ++ 2019-07-19 Richard Biener <rguenther@suse.de> ++ ++ PR tree-optimization/91200 ++ * gcc.dg/torture/pr91200.c: New testcase. ++ ++ 2019-07-15 Richard Biener <rguenther@suse.de> ++ ++ PR middle-end/91162 ++ * gcc.dg/autopar/pr91162.c: New testcase. ++ ++ 2019-07-11 Richard Biener <rguenther@suse.de> ++ ++ PR middle-end/91131 ++ * gcc.target/i386/pr91131.c: New testcase. ++ ++ 2019-07-10 Richard Biener <rguenther@suse.de> ++ ++ PR tree-optimization/91126 ++ * gcc.dg/torture/pr91126.c: New testcase. ++ ++2019-08-30 Richard Biener <rguenther@suse.de> ++ ++ Backport from mainline ++ 2019-05-06 Richard Biener <rguenther@suse.de> ++ ++ PR tree-optimization/90328 ++ * gcc.dg/torture/pr90328.c: New testcase. ++ ++ 2019-02-22 Richard Biener <rguenther@suse.de> ++ ++ PR middle-end/87609 ++ * gcc.dg/torture/restrict-7.c: New testcase. ++ ++2019-08-30 Bin Cheng <bin.linux@linux.alibaba.com> ++ ++ Backport from mainline ++ 2019-07-18 Bin Cheng <bin.linux@linux.alibaba.com> ++ ++ PR tree-optimization/91137 ++ * gcc.c-torture/execute/pr91137.c: New test. ++ ++2019-08-30 Richard Biener <rguenther@suse.de> ++ ++ Backport from mainline ++ 2019-04-08 Richard Biener <rguenther@suse.de> ++ ++ PR tree-optimization/90006 ++ * gcc.dg/vect/bb-slp-pr90006.c: New testcase. ++ ++ 2019-04-01 Bin Cheng <bin.cheng@linux.alibaba.com> ++ ++ PR tree-optimization/89725 ++ * gcc.dg/tree-ssa/pr89725.c: New test. ++ ++ 2019-03-26 Bin Cheng <bin.cheng@linux.alibaba.com> ++ ++ PR tree-optimization/81740 ++ * gcc.dg/vect/pr81740-1.c: New testcase. ++ * gcc.dg/vect/pr81740-2.c: Likewise. ++ ++2019-08-30 Richard Biener <rguenther@suse.de> ++ ++ Backport from mainline ++ 2019-04-11 Richard Biener <rguenther@suse.de> ++ ++ PR tree-optimization/90020 ++ * gcc.dg/torture/pr90020.c: New testcase. ++ ++2019-08-29 Iain Sandoe <iain@sandoe.co.uk> ++ ++ Backport from mainline. ++ 2019-05-22 Iain Sandoe <iain@sandoe.co.uk> ++ ++ PR testsuite/27221 ++ * g++.dg/ext/alignof2.C: XFAIL for 32bit Darwin. ++ ++2019-08-29 Iain Sandoe <iain@sandoe.co.uk> ++ ++ Backport from mainline. ++ 2019-05-21 Iain Sandoe <iain@sandoe.co.uk> ++ ++ PR testsuite/67958 ++ * gcc.target/i386/pr32219-1.c: Adjust scan-asms for Darwin, comment ++ the differences. ++ * 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-5.c: Likewise. ++ * gcc.target/i386/pr32219-6.c: Likewise. ++ * gcc.target/i386/pr32219-7.c: Likewise. ++ * gcc.target/i386/pr32219-8.c: Likewise. ++ ++2019-08-29 Jakub Jelinek <jakub@redhat.com> ++ ++ Backported from mainline ++ 2019-07-30 Jakub Jelinek <jakub@redhat.com> ++ ++ PR target/91150 ++ * gcc.target/i386/avx512bw-pr91150.c: New test. ++ ++ 2019-07-04 Jakub Jelinek <jakub@redhat.com> ++ ++ PR middle-end/78884 ++ * gcc.dg/gomp/pr78884.c: New test. ++ ++ PR rtl-optimization/90756 ++ * gcc.dg/pr90756.c: New test. ++ ++ 2019-06-25 Jakub Jelinek <jakub@redhat.com> ++ ++ PR sanitizer/90954 ++ * c-c++-common/gomp/pr90954.c: New test. ++ ++ 2019-06-21 Jakub Jelinek <jakub@redhat.com> ++ ++ PR c++/90950 ++ * g++.dg/gomp/lastprivate-1.C: New test. ++ ++ 2019-06-12 Jakub Jelinek <jakub@redhat.com> ++ ++ PR c/90760 ++ * gcc.dg/pr90760.c: New test. ++ ++ 2019-06-05 Jakub Jelinek <jakub@redhat.com> ++ ++ PR debug/90733 ++ * gcc.dg/pr90733.c: New test. ++ ++ 2019-05-10 Jakub Jelinek <jakub@redhat.com> ++ ++ PR pch/90326 ++ * g++.dg/pch/pr90326.C: New test. ++ * g++.dg/pch/pr90326.Hs: New file. ++ ++ 2019-04-19 Jakub Jelinek <jakub@redhat.com> ++ ++ PR middle-end/90139 ++ * gcc.c-torture/compile/pr90139.c: New test. ++ ++2019-08-28 Iain Sandoe <iain@sandoe.co.uk> ++ ++ Backport from mainline. ++ 2019-05-21 Iain Sandoe <iain@sandoe.co.uk> ++ ++ PR target/63891 ++ * gcc.dg/darwin-weakimport-3.c: Adjust options and explain ++ the reasons. ++ ++2019-08-28 Iain Sandoe <iain@sandoe.co.uk> ++ ++ Backport from mainline. ++ 2019-05-20 Iain Sandoe <iain@sandoe.co.uk> ++ ++ PR testsuite/58321 ++ * gcc.target/i386/memcpy-strategy-3.c: Adjust count for Darwin and ++ add a comment as to the reason for the difference. ++ * gcc.target/i386/memset-strategy-1.c: Likewise. ++ ++2019-08-28 Iain Sandoe <iain@sandoe.co.uk> ++ ++ Backport from mainline. ++ 2019-05-18 Iain Sandoe <iain@sandoe.co.uk> ++ ++ * objc.dg/instancetype-0.m: New. ++ ++2019-08-25 Iain Sandoe <iain@sandoe.co.uk> ++ ++ Backport from mainline. ++ 2019-06-13 Iain Sandoe <iain@sandoe.co.uk> ++ ++ * gcc.dg/darwin-minversion-link.c: New test. ++ ++2019-08-23 Mihailo Stojanovic <mistojanovic@wavecomp.com> ++ ++ * gcc.target/mips/get-fcsr-3.c: New test. ++ ++2019-08-20 Eric Botcazou <ebotcazou@adacore.com> ++ ++ * gcc.c-torture/execute/20190820-1.c: New test. ++ ++2019-08-15 Jonathan Wakely <jwakely@redhat.com> ++ ++ Backport from mainline. ++ 2019-08-14 Jonathan Wakely <jwakely@redhat.com> ++ ++ 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-14 Iain Sandoe <iain@sandoe.co.uk> ++ ++ Backport from mainline. ++ 2019-05-02 Iain Sandoe <iain@sandoe.co.uk> ++ ++ * g++.dg/ext/instantiate2.C: Remove special-casing for Darwin. ++ ++2013-08-13 Thomas Koenig <tkoenig@gcc.gnu.org> ++ ++ Backport from trunk ++ PR fortran/90563 ++ * gfortran.dg/do_subscript_5.f90: New test. ++ ++2019-08-05 Kito Cheng <kito.cheng@sifive.com> ++ ++ Backport from mainline ++ 2019-08-05 Kito Cheng <kito.cheng@sifive.com> ++ ++ * gcc.target/riscv/promote-type-for-libcall.c: New. ++ ++2019-08-02 Thomas Koenig <tkoenig@gcc.gnu.org> ++ Paul Thomas <pault@gcc.gnu.org> ++ ++ Backport from trunk ++ PR fortran/90786 ++ PR fortran/90813 ++ * gfortran.dg/proc_ptr_51.f90: New test. ++ ++2019-07-22 Martin Liska <mliska@suse.cz> ++ ++ Backport from mainline ++ 2019-07-22 Martin Liska <mliska@suse.cz> ++ ++ PR driver/91172 ++ * gcc.dg/pr91172.c: New test. ++ ++2019-07-21 Richard Sandiford <richard.sandiford@arm.com> ++ ++ Backport from mainline ++ 2019-07-18 Richard Sandiford <richard.sandiford@arm.com> ++ ++ * c-c++-common/pr53633-2.c: New test. ++ ++2019-07-16 Wilco Dijkstra <wdijkstr@arm.com> ++ ++ Backport from mainline ++ PR target/89222 ++ * gcc.target/arm/pr89222.c: Add new test. ++ ++2019-07-16 Wilco Dijkstra <wdijkstr@arm.com> ++ ++ Backport from mainline ++ 2019-02-04 Wilco Dijkstra <wdijkstr@arm.com> ++ PR target/89190 ++ * gcc.target/arm/pr89190.c: New test. ++ ++2019-07-15 Andreas Krebbel <krebbel@linux.ibm.com> ++ ++ Backport from mainline ++ 2019-07-01 Andreas Krebbel <krebbel@linux.ibm.com> ++ ++ * gcc.target/s390/vector/vec-shift-2.c: New test. ++ ++2019-07-12 Wilco Dijkstra <wdijkstr@arm.com> ++ ++ PR testsuite/78529 ++ * gcc.c-torture/execute/builtins/builtins.exp: Add -fno-ipa-ra. ++ ++2019-07-07 Paul Thomas <pault@gcc.gnu.org> ++ ++ Backport from trunk ++ PR fortran/91077 ++ * gfortran.dg/pointer_array_11.f90 : New test. ++ ++2019-07-04 Chenghua Xu <paul.hua.gm@gmail.com> ++ ++ Backported from mainline. ++ * gcc.target/mips/mips-fmadd.c: Rename to ... ++ * gcc.target/mips/mips-fmadd-o32.c: ... Here; add abi=32. ++ * gcc.target/mips/mips-fmadd-n64.c: New. ++ ++2019-07-04 Martin Liska <mliska@suse.cz> ++ ++ Backport from mainline ++ 2019-07-03 Martin Liska <mliska@suse.cz> ++ ++ PR middle-end/90899 ++ * gcc.target/i386/pr90899.c: New test. ++ ++2019-06-29 Eric Botcazou <ebotcazou@adacore.com> ++ ++ * gnat.dg/specs/array5.ads: New test. ++ * gnat.dg/specs/array5_pkg1.ads: New helper. ++ * gnat.dg/specs/array5_pkg2.ads: Likewise. ++ * gnat.dg/specs/array5_pkg2-g.ads: Likewise. ++ ++2019-06-21 Jeff Law <law@redhat.com> ++ ++ Backport fom mainline ++ 2019-06-21 Jeff Law <law@redhat.com> ++ ++ PR tree-optimization/90949 ++ * gcc.c-torture/execute/pr90949.c: New test. ++ ++2019-06-21 Thomas Koenig <tkoenig@gcc.gnu.org> ++ ++ Backport from trunk ++ PR fortran/90937 ++ * gfortran.dg/external_procedure_4.f90: New test. ++ ++2019-06-16 Jeff Law <law@redhat.com> ++ ++ Backported from mainline ++ 2019-05-31 Dragan Mladjenovic <dmladjenovic@wavecomp.com> ++ * gcc.target/mips/msa-fmadd.c: New. ++ ++2019-06-12 Thomas Koenig <tkoenig@gcc.gnu.org> ++ Tomáš Trnka <trnka@scm.com> ++ ++ Backport from trunk ++ PR fortran/90744 ++ * gfortran.dg/deferred_character_33.f90: New test. ++ * gfortran.dg/deferred_character_33a.f90: New test. ++ ++2019-06-11 Jakub Jelinek <jakub@redhat.com> ++ ++ PR c++/90810 ++ * g++.dg/ext/vector37.C: New test. ++ ++2019-06-10 Paul Thomas <pault@gcc.gnu.org> ++ ++ Backport from trunk ++ PR fortran/90498 ++ * gfortran.dg/associate_48.f90 : New test. ++ ++2019-06-09 Paul Thomas <pault@gcc.gnu.org> ++ ++ Backport from trunk ++ PR fortran/57284 ++ * gfortran.dg/assign_10.f90: Bump up counts of "atmp". ++ * gfortran.dg/transpose_optimization_2.f90: Ditto ++ ++2019-06-09 Paul Thomas <pault@gcc.gnu.org> ++ ++ Backport from trunk ++ PR fortran/57284 ++ * gfortran.dg/class_70.f03 ++ ++2019-06-07 John David Anglin <danglin@gcc.gnu.org> ++ ++ * lib/scanasm.exp (dg-function-on-line): Add pattern for hppa*-*-linux*. ++ ++2019-06-07 Iain Sandoe <iain@sandoe.co.uk> ++ ++ PR target/82920 ++ * gcc.target/i386/indirect-thunk-bnd-1.c: Adjust scan-asms for Darwin, ++ do not use -fno-pic on Darwin. ++ * gcc.target/i386/indirect-thunk-bnd-2.c: Likewise. ++ * gcc.target/i386/ret-thunk-25.c: Skip for Darwin, which has a ++ different ABI for returning this category of complex value. ++ ++2019-06-07 Iain Sandoe <iain@sandoe.co.uk> ++ ++ Backport from mainline. ++ 2019-05-15 Iain Sandoe <iain@sandoe.co.uk> ++ ++ PR target/82920 ++ * g++.dg/cet-notrack-1.C: Adjust scan assembler for Darwin. ++ * gcc.target/i386/cet-notrack-5a.c: Likewise. ++ * gcc.target/i386/cet-notrack-5b.c: Likewise. ++ * gcc.target/i386/cet-notrack-6b.c: Likewise. ++ * gcc.target/i386/cet-notrack-icf-1.c: Likewise. ++ * gcc.target/i386/cet-notrack-icf-2.c: Likewise. ++ * gcc.target/i386/cet-notrack-icf-3.c: Likewise. ++ * gcc.target/i386/cet-notrack-icf-4.c: Likewise. ++ * gcc.target/i386/cet-sjlj-3.c: Likewise. ++ * gcc.target/i386/cet-sjlj-5.c: Likewise. ++ ++2019-06-07 Iain Sandoe <iain@sandoe.co.uk> ++ ++ Backport from mainline. ++ 2019-05-14 Iain Sandoe <iain@sandoe.co.uk> ++ ++ PR target/82920 ++ * gcc.target/i386/cet-sjlj-6b.c: Require effective target x32. ++ * gcc.target/i386/pr52146.c: Likewise. ++ * gcc.target/i386/pr52698.c: Likewise. ++ * gcc.target/i386/pr52857-1.c: Likewise. ++ * gcc.target/i386/pr52857-2.c: Likewise. ++ * gcc.target/i386/pr52876.c: Likewise. ++ * gcc.target/i386/pr53698.c: Likewise. ++ * gcc.target/i386/pr54157.c: Likewise. ++ * gcc.target/i386/pr55049-1.c: Likewise. ++ * gcc.target/i386/pr55093.c: Likewise. ++ * gcc.target/i386/pr55116-1.c: Likewise. ++ * gcc.target/i386/pr55116-2.c: Likewise. ++ * gcc.target/i386/pr55597.c: Likewise. ++ * gcc.target/i386/pr59929.c: Likewise. ++ * gcc.target/i386/pr66470.c: Likewise. ++ ++2019-06-07 Iain Sandoe <iain@sandoe.co.uk> ++ ++ Backport from mainline. ++ 2019-05-12 Iain Sandoe <iain@sandoe.co.uk> ++ Dominique d'Humieres <dominiq@gcc.gnu.org> ++ ++ PR target/82920 ++ * gcc.target/i386/indirect-thunk-1.c: Adjust scan-asms for Darwin, ++ do not use -fno-pic on 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-7.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-attr-7.c: Likewise. ++ * gcc.target/i386/indirect-thunk-attr-8.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-extern-7.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/indirect-thunk-inline-7.c: Likewise. ++ * gcc.target/i386/indirect-thunk-register-1.c: Likewise. ++ * gcc.target/i386/indirect-thunk-register-2.c: Likewise. ++ * gcc.target/i386/indirect-thunk-register-3.c: Likewise. ++ * gcc.target/i386/indirect-thunk-register-4.c: Likewise. ++ * gcc.target/i386/ret-thunk-1.c: Likewise. ++ * gcc.target/i386/ret-thunk-10.c: Likewise. ++ * gcc.target/i386/ret-thunk-11.c: Likewise. ++ * gcc.target/i386/ret-thunk-12.c: Likewise. ++ * gcc.target/i386/ret-thunk-13.c: Likewise. ++ * gcc.target/i386/ret-thunk-14.c: Likewise. ++ * gcc.target/i386/ret-thunk-15.c: Likewise. ++ * gcc.target/i386/ret-thunk-16.c: Likewise. ++ * gcc.target/i386/ret-thunk-2.c: Likewise. ++ * gcc.target/i386/ret-thunk-22.c: Likewise. ++ * gcc.target/i386/ret-thunk-23.c: Likewise. ++ * gcc.target/i386/ret-thunk-24.c: Likewise. ++ * gcc.target/i386/ret-thunk-3.c: Likewise. ++ * gcc.target/i386/ret-thunk-4.c: Likewise. ++ * gcc.target/i386/ret-thunk-5.c: Likewise. ++ * gcc.target/i386/ret-thunk-6.c: Likewise. ++ * gcc.target/i386/ret-thunk-7.c: Likewise. ++ * gcc.target/i386/ret-thunk-8.c: Likewise. ++ * gcc.target/i386/ret-thunk-9.c: Likewise. ++ ++2019-05-28 Eric Botcazou <ebotcazou@adacore.com> ++ ++ * gnat.dg/opt79.ad[sb]: New test. ++ ++2019-05-27 Eric Botcazou <ebotcazou@adacore.com> ++ ++ * gnat.dg/specs/array4.ads: New test. ++ ++2019-05-27 Eric Botcazou <ebotcazou@adacore.com> ++ ++ * gnat.dg/unchecked_convert13.adb: New test. ++ ++2019-05-24 Martin Liska <mliska@suse.cz> ++ ++ Backport from mainline ++ 2019-05-23 Martin Liska <mliska@suse.cz> ++ ++ PR sanitizer/90570 ++ * g++.dg/asan/pr90570.C: New test. ++ ++2019-05-23 Eric Botcazou <ebotcazou@adacore.com> ++ ++ * gnat.dg/opt78.ad[sb]: New test. ++ ++2019-05-23 Uroš Bizjak <ubizjak@gmail.com> ++ ++ Backported from mainline ++ 2019-05-21 Uroš Bizjak <ubizjak@gmail.com> ++ ++ PR target/90547 ++ * gcc.target/i386/pr90547.c: New test. ++ ++2019-05-22 Eric Botcazou <ebotcazou@adacore.com> ++ ++ * g++.dg/tls/pr85400.C: New test. ++ ++2019-05-20 Jeff Law <law@redhat.com> ++ ++ Backported from mainline ++ 2019-05-17 Dragan Mladjenovic <dmladjenovic@wavecomp.com> ++ ++ * g++.dg/eh/o32-fp.C: New. ++ * gcc.target/mips/dwarfregtable-1.c: New. ++ * gcc.target/mips/dwarfregtable-2.c: New. ++ * gcc.target/mips/dwarfregtable-3.c: New. ++ * gcc.target/mips/dwarfregtable-4.c: New. ++ * gcc.target/mips/dwarfregtable.h: New. ++ ++2019-05-20 Jonathan Wakely <jwakely@redhat.com> ++ ++ Backported from mainline ++ 2019-05-20 Jonathan Wakely <jwakely@redhat.com> ++ ++ PR c++/90532 Ensure __is_constructible(T[]) is false ++ * g++.dg/ext/90532.C: New test. ++ ++2019-05-16 Kelvin Nilsen <kelvin@gcc.gnu.org> ++ ++ Backport from mainline. ++ 2019-05-07 Kelvin Nilsen <kelvin@gcc.gnu.org> ++ ++ PR target/89765 ++ * gcc.target/powerpc/pr89765-mc.c: New test. ++ * gcc.target/powerpc/vsx-builtin-10c.c: New test. ++ * gcc.target/powerpc/vsx-builtin-10d.c: New test. ++ * gcc.target/powerpc/vsx-builtin-11c.c: New test. ++ * gcc.target/powerpc/vsx-builtin-11d.c: New test. ++ * gcc.target/powerpc/vsx-builtin-12c.c: New test. ++ * gcc.target/powerpc/vsx-builtin-12d.c: New test. ++ * gcc.target/powerpc/vsx-builtin-13c.c: New test. ++ * gcc.target/powerpc/vsx-builtin-13d.c: New test. ++ * gcc.target/powerpc/vsx-builtin-14c.c: New test. ++ * gcc.target/powerpc/vsx-builtin-14d.c: New test. ++ * gcc.target/powerpc/vsx-builtin-15c.c: New test. ++ * gcc.target/powerpc/vsx-builtin-15d.c: New test. ++ * gcc.target/powerpc/vsx-builtin-16c.c: New test. ++ * gcc.target/powerpc/vsx-builtin-16d.c: New test. ++ * gcc.target/powerpc/vsx-builtin-17c.c: New test. ++ * gcc.target/powerpc/vsx-builtin-17d.c: New test. ++ * gcc.target/powerpc/vsx-builtin-18c.c: New test. ++ * gcc.target/powerpc/vsx-builtin-18d.c: New test. ++ * gcc.target/powerpc/vsx-builtin-19c.c: New test. ++ * gcc.target/powerpc/vsx-builtin-19d.c: New test. ++ * gcc.target/powerpc/vsx-builtin-20c.c: New test. ++ * gcc.target/powerpc/vsx-builtin-20d.c: New test. ++ * gcc.target/powerpc/vsx-builtin-9c.c: New test. ++ * gcc.target/powerpc/vsx-builtin-9d.c: New test. ++ ++2019-05-08 Kelvin Nilsen <kelvin@gcc.gnu.org> ++ ++ Backport from mainline. ++ 2019-05-06 Kelvin Nilsen <kelvin@gcc.gnu.org> ++ ++ PR target/89424 ++ * gcc.target/powerpc/pr89424-0.c: New test. ++ * gcc.target/powerpc/vsx-builtin-13a.c: Define macro PR89424 to ++ enable testing of newly patched capability. ++ * gcc.target/powerpc/vsx-builtin-13b.c: Likewise. ++ * gcc.target/powerpc/vsx-builtin-20a.c: Likewise. ++ * gcc.target/powerpc/vsx-builtin-20b.c: Likewise. ++ ++2019-05-06 Richard Biener <rguenther@suse.de> ++ ++ PR bootstrap/90359 ++ Backport from mainline ++ 2019-03-11 Jakub Jelinek <jakub@redhat.com> ++ ++ PR middle-end/89655 ++ PR bootstrap/89656 ++ * gcc.c-torture/compile/pr89655.c: New test. ++ ++2019-05-03 Richard Biener <rguenther@suse.de> ++ ++ Backport from mainline ++ 2019-03-14 Richard Biener <rguenther@suse.de> ++ ++ PR middle-end/89698 ++ * g++.dg/torture/pr89698.C: New testcase. ++ ++ 2019-03-07 Richard Biener <rguenther@suse.de> ++ ++ PR tree-optimization/89595 ++ * gcc.dg/torture/pr89595.c: New testcase. ++ ++ 2019-03-14 Richard Biener <rguenther@suse.de> ++ ++ PR tree-optimization/89710 ++ * gcc.dg/torture/pr89710.c: New testcase. ++ ++ 2019-04-15 Richard Biener <rguenther@suse.de> ++ ++ PR tree-optimization/90071 ++ * gcc.dg/torture/pr90071.c: New testcase. ++ ++ 2018-08-20 Bernd Edlinger <bernd.edlinger@hotmail.de> ++ ++ PR target/86984 ++ * gcc.target/alpha/pr86984.c: New test. ++ ++2019-04-30 Jakub Jelinek <jakub@redhat.com> ++ ++ Backported from mainline ++ 2019-04-24 Jakub Jelinek <jakub@redhat.com> ++ ++ PR target/90193 ++ * gcc.target/i386/pr90193.c: New test. ++ ++ PR target/90187 ++ * g++.dg/opt/pr90187.C: New test. ++ ++ PR tree-optimization/90208 ++ * gcc.dg/tsan/pr90208-2.c: New test. ++ ++ 2019-04-19 Jakub Jelinek <jakub@redhat.com> ++ ++ PR c++/90108 ++ * c-c++-common/pr90108.c: New test. ++ ++ 2019-04-16 Jakub Jelinek <jakub@redhat.com> ++ ++ PR rtl-optimization/90082 ++ * gcc.dg/pr90082.c: New test. ++ ++ PR tree-optimization/90090 ++ * g++.dg/opt/pr90090.C: New test. ++ ++ 2019-04-12 Jakub Jelinek <jakub@redhat.com> ++ ++ PR c/89933 ++ * c-c++-common/pr89933.c: New test. ++ ++ PR rtl-optimization/89965 ++ * gcc.target/i386/pr89965.c: New test. ++ ++ PR c/89946 ++ * c-c++-common/pr89946.c: New test. ++ ++ PR rtl-optimization/90026 ++ * g++.dg/opt/pr90026.C: New test. ++ ++ 2019-04-10 Jakub Jelinek <jakub@redhat.com> ++ ++ PR c++/90010 ++ * gcc.dg/pr90010.c: New test. ++ ++ 2019-04-09 Jakub Jelinek <jakub@redhat.com> ++ ++ PR tree-optimization/89998 ++ * gcc.c-torture/compile/pr89998-1.c: New test. ++ * gcc.c-torture/compile/pr89998-2.c: New test. ++ ++ 2019-03-29 Jakub Jelinek <jakub@redhat.com> ++ ++ PR sanitizer/89869 ++ * g++.dg/ubsan/vptr-14.C: New test. ++ ++ PR c/89872 ++ * gcc.dg/tree-ssa/pr89872.c: New test. ++ ++ 2019-03-28 Jakub Jelinek <jakub@redhat.com> ++ ++ PR middle-end/89621 ++ * gfortran.dg/gomp/pr89621.f90: New test. ++ ++ 2019-03-26 Jakub Jelinek <jakub@redhat.com> ++ ++ PR c++/89796 ++ * g++.dg/gomp/pr89796.C: New test. ++ * gcc.dg/gomp/pr89796.c: New test. ++ ++ 2019-03-25 Jakub Jelinek <jakub@redhat.com> ++ ++ PR c++/60702 ++ * g++.dg/tls/thread_local11.C: Remove scan-tree-dump-times directives ++ for _ZTH* calls. ++ * g++.dg/tls/thread_local11a.C: New test. ++ ++ 2019-03-22 Jakub Jelinek <jakub@redhat.com> ++ ++ PR c++/60702 ++ * g++.dg/tls/thread_local11.C: New test. ++ * g++.dg/tls/thread_local11.h: New test. ++ * g++.dg/tls/thread_local12a.C: New test. ++ * g++.dg/tls/thread_local12b.C: New test. ++ * g++.dg/tls/thread_local12c.C: New test. ++ * g++.dg/tls/thread_local12d.C: New test. ++ * g++.dg/tls/thread_local12e.C: New test. ++ * g++.dg/tls/thread_local12f.C: New test. ++ * g++.dg/tls/thread_local12g.C: New test. ++ * g++.dg/tls/thread_local12h.C: New test. ++ * g++.dg/tls/thread_local12i.C: New test. ++ * g++.dg/tls/thread_local12j.C: New test. ++ * g++.dg/tls/thread_local12k.C: New test. ++ * g++.dg/tls/thread_local12l.C: New test. ++ ++ 2019-03-21 Jakub Jelinek <jakub@redhat.com> ++ ++ PR c++/89767 ++ * g++.dg/cpp1y/lambda-init18.C: New test. ++ * g++.dg/cpp1y/lambda-init19.C: New test. ++ * g++.dg/cpp1y/pr89767.C: New test. ++ ++ 2019-03-19 Jakub Jelinek <jakub@redhat.com> ++ ++ PR target/89752 ++ * g++.dg/ext/asm15.C: Check for particular diagnostic wording. ++ * g++.dg/ext/asm16.C: Likewise. ++ * g++.dg/ext/asm17.C: New test. ++ ++ PR target/89726 ++ * gcc.target/i386/fpprec-1.c (x): Add 6 new constants. ++ (expect_round, expect_rint, expect_floor, expect_ceil, expect_trunc): ++ Add expected results for them. ++ ++ PR c/89734 ++ * gcc.dg/pr89734.c: New test. ++ ++ 2019-03-15 Jakub Jelinek <jakub@redhat.com> ++ ++ PR debug/89704 ++ * gcc.dg/debug/pr89704.c: New test. ++ ++ 2019-03-14 Jakub Jelinek <jakub@redhat.com> ++ ++ PR ipa/89684 ++ * gcc.target/i386/pr89684.c: New test. ++ ++ PR rtl-optimization/89679 ++ * gcc.dg/pr89679.c: New test. ++ ++ PR tree-optimization/89703 ++ * gcc.c-torture/compile/pr89703-1.c: New test. ++ * gcc.c-torture/compile/pr89703-2.c: New test. ++ ++ PR c++/89512 ++ * g++.dg/cpp1y/var-templ61.C: New test. ++ ++ 2019-03-13 Jakub Jelinek <jakub@redhat.com> ++ ++ PR middle-end/88588 ++ * c-c++-common/gomp/pr88588.c: New test. ++ ++ 2019-03-12 Jakub Jelinek <jakub@redhat.com> ++ ++ PR middle-end/89663 ++ * gcc.c-torture/compile/pr89663-1.c: New test. ++ * gcc.c-torture/compile/pr89663-2.c: New test. ++ ++ 2019-03-11 Jakub Jelinek <jakub@redhat.com> ++ ++ PR fortran/89651 ++ * gfortran.dg/gomp/pr89651.f90: New test. ++ ++ 2019-03-09 Jakub Jelinek <jakub@redhat.com> ++ ++ PR c/88568 ++ * g++.dg/other/pr88568.C: New test. ++ ++ 2019-03-08 Jakub Jelinek <jakub@redhat.com> ++ ++ PR c++/82075 ++ * g++.dg/cpp1z/decomp49.C: New test. ++ ++ 2019-03-06 Jakub Jelinek <jakub@redhat.com> ++ ++ PR c++/87148 ++ * g++.dg/ext/flexary34.C: New test. ++ ++ 2019-03-05 Jakub Jelinek <jakub@redhat.com> ++ ++ PR middle-end/89590 ++ * gcc.dg/pr89590.c: New test. ++ ++ 2019-02-28 Jakub Jelinek <jakub@redhat.com> ++ ++ PR c/89521 ++ * gcc.dg/pr89521-1.c: New test. ++ * gcc.dg/pr89521-2.c: New test. ++ ++ PR c/89520 ++ * gcc.dg/pr89520-1.c: New test. ++ * gcc.dg/pr89520-2.c: New test. ++ ++ 2019-02-20 Jakub Jelinek <jakub@redhat.com> ++ ++ PR c++/89403 ++ * g++.dg/cpp0x/pr89403.C: New test. ++ ++ PR c++/89405 ++ * g++.dg/cpp1z/inline-var5.C: New test. ++ ++ PR middle-end/89412 ++ * gcc.c-torture/compile/pr89412.c: New test. ++ ++ 2019-02-20 Jakub Jelinek <jakub@redhat.com> ++ David Malcolm <dmalcolm@redhat.com> ++ ++ PR middle-end/89091 ++ * gcc.dg/torture/pr89091.c: New test. ++ ++ 2019-02-20 Jakub Jelinek <jakub@redhat.com> ++ ++ PR middle-end/88074 ++ PR middle-end/89415 ++ * gcc.dg/pr88074-2.c: New test. ++ ++ 2019-02-19 Richard Biener <rguenther@suse.de> ++ ++ PR middle-end/88074 ++ * gcc.dg/pr88074.c: New testcase. ++ ++2019-04-30 Srinath Parvathaneni <srinath.parvathaneni@arm.com> ++ ++ PR target/90075 ++ * gcc.target/aarch64/pr90075.c: New test. ++ ++2019-04-29 Richard Sandiford <richard.sandiford@arm.com> ++ ++ Backport from mainline: ++ 2019-01-25 Richard Sandiford <richard.sandiford@arm.com> ++ ++ PR middle-end/89037 ++ * gcc.dg/pr89037.c: New test. ++ ++2019-04-26 Roman Zhuykov <zhroma@ispras.ru> ++ ++ Backport from mainline ++ 2019-04-23 Roman Zhuykov <zhroma@ispras.ru> ++ ++ PR rtl-optimization/87979 ++ * gcc.dg/pr87979.c: New test. ++ ++ PR rtl-optimization/84032 ++ * gcc.dg/pr84032.c: New test. ++ ++2019-04-24 Paul Thomas <pault@gcc.gnu.org> ++ ++ Backport from mainline ++ PR fortran/87127 ++ * gfortran.dg/external_procedures_4.f90: New test. ++ ++2019-04-17 Martin Jambor <mjambor@suse.cz> ++ ++ Backport from mainline ++ 2019-03-10 Martin Jambor <mjambor@suse.cz> ++ ++ * g++.dg/tree-ssa/pr87008.C: New test. ++ * gcc.dg/guality/pr54970.c: Xfail tests querying a[0] everywhere. ++ ++2019-04-17 Kelvin Nilsen <kelvin@gcc.gnu.org> ++ ++ Backport from mainline ++ 2019-03-15 Kelvin Nilsen <kelvin@gcc.gnu.org> ++ ++ PR target/87532 ++ * gcc.target/powerpc/pr87532.c: New test. ++ * gcc.target/powerpc/vec-extract-v16qiu-v2.h: New test. ++ * gcc.target/powerpc/vec-extract-v16qiu-v2a.c: New test. ++ * gcc.target/powerpc/vec-extract-v16qiu-v2b.c: New test. ++ * gcc.target/powerpc/vsx-builtin-10a.c: New test. ++ * gcc.target/powerpc/vsx-builtin-10b.c: New test. ++ * gcc.target/powerpc/vsx-builtin-11a.c: New test. ++ * gcc.target/powerpc/vsx-builtin-11b.c: New test. ++ * gcc.target/powerpc/vsx-builtin-12a.c: New test. ++ * gcc.target/powerpc/vsx-builtin-12b.c: New test. ++ * gcc.target/powerpc/vsx-builtin-13a.c: New test. ++ * gcc.target/powerpc/vsx-builtin-13b.c: New test. ++ * gcc.target/powerpc/vsx-builtin-14a.c: New test. ++ * gcc.target/powerpc/vsx-builtin-14b.c: New test. ++ * gcc.target/powerpc/vsx-builtin-15a.c: New test. ++ * gcc.target/powerpc/vsx-builtin-15b.c: New test. ++ * gcc.target/powerpc/vsx-builtin-16a.c: New test. ++ * gcc.target/powerpc/vsx-builtin-16b.c: New test. ++ * gcc.target/powerpc/vsx-builtin-17a.c: New test. ++ * gcc.target/powerpc/vsx-builtin-17b.c: New test. ++ * gcc.target/powerpc/vsx-builtin-18a.c: New test. ++ * gcc.target/powerpc/vsx-builtin-18b.c: New test. ++ * gcc.target/powerpc/vsx-builtin-19a.c: New test. ++ * gcc.target/powerpc/vsx-builtin-19b.c: New test. ++ * gcc.target/powerpc/vsx-builtin-20a.c: New test. ++ * gcc.target/powerpc/vsx-builtin-20b.c: New test. ++ * gcc.target/powerpc/vsx-builtin-9a.c: New test. ++ * gcc.target/powerpc/vsx-builtin-9b.c: New test. ++ ++ 2019-03-19 Kelvin Nilsen <kelvin@gcc.gnu.org> ++ ++ PR target/89736 ++ * gcc.target/powerpc/pr87532-mc.c: Modify dejagnu directives to ++ restrict this test to vsx targets. ++ ++2019-04-15 Martin Jambor <mjambor@suse.cz> ++ ++ Backport from mainline ++ 2019-04-15 Martin Jambor <mjambor@suse.cz> ++ ++ * g++.dg/ipa/pr89693.C: New test. ++ ++2019-04-15 Martin Liska <mliska@suse.cz> ++ ++ Backport from mainline ++ 2019-01-18 Martin Liska <mliska@suse.cz> ++ ++ PR middle-end/88587 ++ * g++.target/i386/pr88587.C: New test. ++ * gcc.target/i386/mvc13.c: New test. ++ ++2019-04-14 Thomas Koenig <tkoenig@gcc.gnu.org> ++ ++ Backport from trunk ++ PR fortran/87352 ++ * gfortran.dg/finalize_28.f90: Adjust count of __builtin_free. ++ * gfortran.dg/finalize_34.f90: New test. ++ ++2019-04-14 Thomas Koenig <tkoenig@gcc.gnu.org> ++ ++ Backport from trunk ++ PR fortran/89981 ++ * gfortran.dg/entry_22.f90: New test. ++ ++2019-04-11 Richard Biener <rguenther@suse.de> ++ ++ PR tree-optimization/90018 ++ * gcc.dg/vect/pr90018.c: New testcase. ++ ++2019-04-10 Harald Anlauf <anlauf@gmx.de> ++ ++ Backport from trunk ++ PR fortran/89904 ++ * gfortran.dg/pr85797.f90: Adjust testcase. ++ ++2019-04-10 Matthew Malcomson <matthew.malcomson@arm.com> ++ ++ PR target/90024 ++ * gcc.dg/torture/neon-immediate-timode.c: New test. ++ ++019-04-07 Uroš Bizjak <ubizjak@gmail.com> ++ ++ PR target/89945 ++ * gcc.target/i386/pr89945.c: New test. ++ ++2019-04-04 Martin Sebor <msebor@redhat.com> ++ ++ PR middle-end/89934 ++ * gcc.dg/Wrestrict-19.c: New test. ++ * gcc.dg/Wrestrict-5.c: Add comment. Remove unused code. ++ ++2019-04-02 Uroš Bizjak <ubizjak@gmail.com> ++ ++ PR target/89902 ++ PR target/89903 ++ * gcc.target/i386/pr70799-4.c: Remove. ++ * gcc.target/i386/pr70799-5.c: Remove. ++ * gcc.target/i386/pr89902.c: New test. ++ * gcc.target/i386/pr89903.c: Ditto. ++ ++2019-03-31 Harald Anlauf <anlauf@gmx.de> ++ ++ PR fortran/83515 ++ PR fortran/85797 ++ * gfortran.dg/pr85797.f90: New test. ++ ++2019-03-30 Thomas Koenig <tkoenig@gcc.gnu.org> ++ ++ PR fortran/89866 ++ Backport from trunk ++ * gfortran.dg/pointer_intent_8.f90: New test. ++ ++2019-03-30 Thomas Koenig <tkoenig@gcc.gnu.org> ++ ++ PR fortran/78865 ++ Backport from trunk ++ * gfortran.dg/altreturn_10.f90: New test. ++ * gfortran.dg/whole_file_3.f90: Change dg-warning to dg-error. ++ ++2019-03-28 Uroš Bizjak <ubizjak@gmail.com> ++ ++ PR target/89848 ++ * gcc.target/i386/pr89848.c: New test. ++ ++2019-03-26 Uroš Bizjak <ubizjak@gmail.com> ++ ++ PR target/89827 ++ * gcc.target/i386/pr89827.c: New test. ++ ++2019-03-25 Andreas Krebbel <krebbel@linux.ibm.com> ++ ++ Backport from mainline ++ 2019-03-20 Jakub Jelinek <jakub@redhat.com> ++ ++ PR target/89775 ++ * gcc.target/s390/pr89775-1.c: New test. ++ * gcc.target/s390/pr89775-2.c: New test. ++ ++2019-03-24 Janus Weil <janus@gcc.gnu.org> ++ ++ PR fortran/71861 ++ Backport from trunk ++ * gfortran.dg/interface_abstract_5.f90: New test case. ++ ++2019-03-22 Backport from mainline ++ ++ 2019-03-22 Bill Schmidt <wschmidt@linux.ibm.com> ++ ++ * gcc.target/powerpc/mmx-psubd-2.c: Test _m_psubd. ++ ++2019-03-21 Thomas Schwinge <thomas@codesourcery.com> ++ ++ PR fortran/56408 ++ * gcc.target/powerpc/ppc-fortran/ppc-fortran.exp ++ (dg-compile-aux-modules): Fix diagnostic. ++ * gfortran.dg/coarray/caf.exp (dg-compile-aux-modules): Likewise. ++ * gfortran.dg/dg.exp (dg-compile-aux-modules): Likewise. ++ ++ PR fortran/56408 ++ * gfortran.dg/coarray/caf.exp (dg-compile-aux-modules): Workaround ++ missing nexted dg-test call support in dejaGNU 1.4.4. ++ ++ PR fortran/29383 ++ * gfortran.dg/ieee/ieee.exp (DEFAULT_FFLAGS): Set the same as in ++ other '*.exp' files. ++ ++2019-03-19 Eric Botcazou <ebotcazou@adacore.com> ++ ++ * c-c++-common/unroll-7.c: New test. ++ ++2019-03-18 Martin Sebor <msebor@redhat.com> ++ ++ PR middle-end/88273 ++ * gcc.dg/Warray-bounds-38.c: New test. ++ ++2019-03-18 Martin Jambor <mjambor@suse.cz> ++ ++ Backport from mainline ++ 2019-03-18 Martin Jambor <mjambor@suse.cz> ++ ++ PR tree-optimization/89546 ++ * gcc.dg/tree-ssa/pr89546.c: New test. ++ ++2019-03-17 Thomas Koenig <tkoenig@gcc.gnu.org> ++ ++ PR fortran/84394 ++ Backport from trunk ++ * gfortran.dg/blockdata_11.f90: New test. ++ ++2019-03-17 H.J. Lu <hongjiu.lu@intel.com> ++ ++ Backport from mainline ++ 2019-03-14 H.J. Lu <hongjiu.lu@intel.com> ++ ++ PR target/89523 ++ * gcc.target/i386/pr89523-1a.c: New test. ++ * gcc.target/i386/pr89523-1b.c: Likewise. ++ * gcc.target/i386/pr89523-2.c: Likewise. ++ * gcc.target/i386/pr89523-3.c: Likewise. ++ * gcc.target/i386/pr89523-4.c: Likewise. ++ * gcc.target/i386/pr89523-5.c: Likewise. ++ * gcc.target/i386/pr89523-6.c: Likewise. ++ * gcc.target/i386/pr89523-7.c: Likewise. ++ * gcc.target/i386/pr89523-8.c: Likewise. ++ * gcc.target/i386/pr89523-9.c: Likewise. ++ ++2019-03-16 Thomas Koenig <tkoenig@gcc.gnu.org> ++ ++ PR fortran/66089 ++ Backport from trunk ++ * gfortran.dg/dependency_53.f90: New test. ++ * gfortran.dg/assumed_type_2.f90: Adapted tree dumps. ++ * gfortran.dg/no_arg_check_2.f90: Likewise. ++ ++2019-03-16 Thomas Koenig <tkoenig@gcc.gnu.org> ++ ++ PR fortran/66695 ++ PR fortran/77746 ++ PR fortran/79485 ++ Backport from trunk ++ * gfortran.dg/binding_label_tests_30.f90: New test. ++ * gfortran.dg/binding_label_tests_31.f90: New test. ++ * gfortran.dg/binding_label_tests_32.f90: New test. ++ * gfortran.dg/binding_label_tests_33.f90: New test. ++ ++2019-03-15 Richard Biener <rguenther@suse.de> ++ ++ Backport from mainline ++ 2019-03-06 Richard Biener <rguenther@suse.de> ++ ++ PR testsuite/89551 ++ * gcc.dg/uninit-pred-8_b.c: Force logical-op-non-short-circuit ++ the way that makes the testcase PASS. ++ ++2019-03-14 Martin Jambor <mjambor@suse.cz> ++ ++ Backport from mainline ++ 2019-03-07 Martin Jambor <mjambor@suse.cz> ++ ++ PR lto/87525 ++ * gcc.dg/ipa/ipcp-5.c: New test. ++ ++2019-03-14 Richard Biener <rguenther@suse.de> ++ ++ PR middle-end/89572 ++ * gcc.dg/torture/pr89572.c: New testcase. ++ ++2019-03-13 Thomas Koenig <tkoenig@gcc.gnu.org> ++ ++ PR fortran/87673 ++ Backport from trunk ++ * gfortran.dg/charlen_17.f90: New test. ++ ++2019-03-13 Vladimir Makarov <vmakarov@redhat.com> ++ ++ PR target/85860 ++ * gcc.target/i386/pr85860.c: New. ++ ++2019-03-14 Richard Biener <rguenther@suse.de> ++ ++ Backport from mainline ++ 2019-03-13 Richard Biener <rguenther@suse.de> ++ ++ PR middle-end/89677 ++ * gcc.dg/torture/pr89677.c: New testcase. ++ ++ 2019-03-01 Richard Biener <rguenther@suse.de> ++ ++ PR middle-end/89497 ++ * gcc.dg/tree-ssa/reassoc-43.c: Avoid false match in regex. ++ * g++.dg/tree-prof/devirt.C: Scan tracer dump for foldings ++ that happen now earlier. ++ ++ 2019-02-18 Richard Biener <rguenther@suse.de> ++ ++ PR tree-optimization/89296 ++ * gcc.dg/uninit-pr89296.c: New testcase. ++ ++2019-03-13 Andreas Krebbel <krebbel@linux.ibm.com> ++ ++ Backport from mainline ++ 2019-03-11 Andreas Krebbel <krebbel@linux.ibm.com> ++ ++ * gcc.target/s390/zvector/vec-addc-u128.c: New test. ++ ++2019-03-13 Andreas Krebbel <krebbel@linux.ibm.com> ++ ++ Backport from mainline ++ 2019-02-07 Andreas Krebbel <krebbel@linux.ibm.com> ++ ++ * gcc.target/s390/zvector/xl-xst-align-1.c: New test. ++ * gcc.target/s390/zvector/xl-xst-align-2.c: New test. ++ ++2019-03-12 Richard Biener <rguenther@suse.de> ++ ++ PR tree-optimization/89664 ++ * gfortran.dg/pr89664.f90: New testcase. ++ ++2019-03-12 Andre Vieira <andre.simoesdiasvieira@arm.com> ++ ++ Backport from mainline ++ 2019-03-08 Andre Vieira <andre.simoesdiasvieira@arm.com> ++ ++ * gcc.target/arm/f16_f64_conv_no_dp.c: New test. ++ ++ Backport from mainline ++ 2019-03-11 Christophe Lyon <christophe.lyon@linaro.org> ++ ++ * gcc.target/arm/f16_f64_conv_no_dp.c: Add arm_fp16_ok effective ++ target. ++ ++2019-03-11 Eric Botcazou <ebotcazou@adacore.com> ++ ++ * c-c++-common/unroll-6.c: New test. ++ ++2019-03-11 Martin Liska <mliska@suse.cz> ++ ++ Backport from mainline ++ 2019-03-10 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> ++ ++ * gcc.target/i386/indirect-thunk-extern-7.c: Add -fjump-tables to ++ dg-options. ++ ++2019-03-11 Martin Liska <mliska@suse.cz> ++ ++ Backport from mainline ++ 2019-03-08 Martin Liska <mliska@suse.cz> ++ ++ PR target/86952 ++ * gcc.target/i386/indirect-thunk-7.c: Use jump tables to match ++ scanned pattern. ++ * gcc.target/i386/indirect-thunk-inline-7.c: Likewise. ++ ++2019-03-10 Thomas Koenig <tkoenig@gcc.gnu.org> ++ ++ PR fortran/71544 ++ Backport from trunk ++ * gfortran.dg/c_ptr_tests_19.f90: New test. ++ ++2019-03-10 Thomas Koenig <tkoenig@gcc.gnu.org> ++ ++ PR fortran/87734 ++ Backport from trunk ++ * gfortran.dg/public_private_module_10.f90: New test. ++ ++2019-03-08 Martin Jambor <mjambor@suse.cz> ++ ++ Backport from mainline ++ 2019-03-07 Martin Jambor <mjambor@suse.cz> ++ ++ * g++.dg/ipa/pr88235.C: New test. ++ ++2019-03-07 Jakub Jelinek <jakub@redhat.com> ++ ++ PR c++/89585 ++ * g++.dg/asm-qual-3.C: Adjust expected diagnostics. ++ ++2019-03-06 Harald Anlauf <anlauf@gmx.de> ++ ++ Backport from trunk ++ PR fortran/71203 ++ * gfortran.dg/substr_8.f90: New test. ++ ++2019-03-06 Thomas Koenig <tkoenig@gcc.gnu.org> ++ ++ PR fortran/72714 ++ Backport from trunk ++ * gfortran.dg/coarray_allocate_11.f90: New test. ++ ++2019-03-06 Tamar Christina <tamar.christina@arm.com> ++ ++ Backport from trunk. ++ 2019-02-25 Tamar Christina <tamar.christina@arm.com> ++ ++ PR target/88530 ++ * common/config/aarch64/aarch64-common.c ++ (struct aarch64_option_extension): Add is_synthetic. ++ (all_extensions): Use it. ++ (TARGET_OPTION_INIT_STRUCT): Define hook. ++ (struct gcc_targetm_common): Moved to end. ++ (all_extensions_by_on): New. ++ (opt_ext_cmp, typedef opt_ext): New. ++ (aarch64_option_init_struct): New. ++ (aarch64_contains_opt): New. ++ (aarch64_get_extension_string_for_isa_flags): Output smallest set. ++ * config/aarch64/aarch64-option-extensions.def ++ (AARCH64_OPT_EXTENSION): Explicitly include AES and SHA2 in crypto. ++ (fp, simd, crc, lse, fp16, rcpc, rdma, dotprod, aes, sha2, sha3, ++ sm4, fp16fml, sve): ++ Set is_synthetic to false. ++ (crypto): Set is_synthetic to true. ++ * config/aarch64/driver-aarch64.c (AARCH64_OPT_EXTENSION): Add ++ SYNTHETIC. ++ ++2019-03-06 Tamar Christina <tamar.christina@arm.com> ++ ++ Backport from trunk. ++ 2019-02-28 Tamar Christina <tamar.christina@arm.com> ++ ++ PR target/88530 ++ * gcc.target/aarch64/options_set_10.c: New test. ++ ++2019-03-06 Xiong Hu Luo <luoxhu@linux.ibm.com> ++ ++ Backport of r268834 from mainline to gcc-8-branch. ++ 2019-01-23 Xiong Hu Luo <luoxhu@linux.vnet.ibm.com> ++ ++ * gcc.target/powerpc/crypto-builtin-1.c ++ (crypto1_be, crypto2_be, crypto3_be, crypto4_be, crypto5_be): ++ New testcases. ++ ++2019-03-05 Richard Biener <rguenther@suse.de> ++ ++ Backport from mainline ++ 2019-02-26 Richard Biener <rguenther@suse.de> ++ ++ PR tree-optimization/89505 ++ * gcc.dg/torture/pr89505.c: New testcase. ++ ++2019-03-03 Harald Anlauf <anlauf@gmx.de> ++ ++ Backport from trunk ++ PR fortran/89077 ++ * gfortran.dg/transfer_simplify_12.f90: New test. ++ * gfortran.dg/substr_simplify.f90: New test. ++ ++2019-03-03 Harald Anlauf <anlauf@gmx.de> ++ ++ Backport from trunk ++ PR fortran/77583 ++ * gfortran.dg/pr77583.f90: New test. ++ ++2019-03-03 Thomas Koenig <tkoenig@gcc.gnu.org> ++ ++ PR fortran/89174 ++ Backport from trunk ++ * gfortran.dg/allocate_with_mold_3.f90: New test. ++ ++2019-03-03 Thomas Koenig <tkoenig@gcc.gnu.org> ++ ++ PR fortran/87689 ++ Backport from trunk ++ * gfortran.dg/lto/20091028-1_0.f90: Add -Wno-lto-type-mismatch to ++ options. ++ * gfortran.dg/lto/20091028-2_0.f90: Likewise. ++ * gfortran.dg/lto/pr87689_0.f: New file. ++ * gfortran.dg/lto/pr87689_1.f: New file. ++ * gfortran.dg/altreturn_9_0.f90: New file. ++ * gfortran.dg/altreturn_9_1.f90: New file. ++ ++2019-03-02 Jerry DeLisle <jvdelisle@gcc.gnu.org> ++ ++ Backport from trunk ++ PR fortran/84387 ++ * gfortran.dg/dtio_34.f90: New test. ++ ++2019-03-02 Harald Anlauf <anlauf@gmx.de> ++ ++ Backport from trunk ++ PR fortran/89516 ++ * gfortran.dg/pr89492.f90: Adjust testcase. ++ * gfortran.dg/transfer_check_5.f90: New test. ++ ++ PR fortran/89492 ++ * gfortran.dg/pr89492.f90: New test. ++ ++ PR fortran/89266 ++ PR fortran/88326 ++ * gfortran.dg/pr89266.f90: New test. ++ * gfortran.dg/pr88326.f90: New test. ++ ++2019-02-28 Eric Botcazou <ebotcazou@adacore.com> ++ ++ * gcc.c-torture/execute/20190228-1.c: New test. ++ ++2019-02-28 Li Jia He <helijia@linux.ibm.com> ++ ++ Backport from trunk ++ 2019-02-20 Li Jia He <helijia@linux.ibm.com> ++ ++ PR target/88100 ++ * gcc/testsuite/gcc.target/powerpc/pr88100.c: New testcase. ++ ++2019-02-26 Eric Botcazou <ebotcazou@adacore.com> ++ ++ * gnat.dg/opt77.adb: New test. ++ * gnat.dg/opt77_pkg.ad[sb]: New helper. ++ ++2019-02-23 Thomas Koenig <tkoenig@gcc.gnu.org> ++ ++ PR fortran/86119 ++ Backport from trunk ++ * gfortran.dg/warn_conversion_11.f90: New test. ++ ++2019-02-23 Paul Thomas <pault@gcc.gnu.org> ++ ++ Backport from trunk ++ PR fortran/88117 ++ * gfortran.dg/deferred_character_32.f90: New test ++ ++2019-02-12 Thomas Koenig <tkoenig@gcc.gnu.org> ++ ++ PR fortran/71066 ++ Backport from trunk ++ * gfortran.dg/coarray_data_1.f90: New test. ++ + 2019-02-22 Release Manager + + * GCC 8.3.0 released. +Index: gcc/testsuite/objc-obj-c++-shared/F-NSObject.h +=================================================================== +--- a/src/gcc/testsuite/objc-obj-c++-shared/F-NSObject.h (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/objc-obj-c++-shared/F-NSObject.h (.../branches/gcc-8-branch) +@@ -0,0 +1,33 @@ ++/* Copyright (C) 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. ++ ++You should have received a copy of the GNU General Public License ++along with GCC; see the file COPYING3. If not see ++<http://www.gnu.org/licenses/>. */ ++ ++#ifndef _OBJC_F_NSOBJECT_H_ ++#define _OBJC_F_NSOBJECT_H_ ++ ++/* This is a workaround to PR90709 for the NeXT runtime. ++ If we're on a system version that has headers with items we can't ++ consume, then use the GNUStep header instead. ++*/ ++ ++#if __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ >= 1090 ++# import "GNUStep/Foundation/NSObject.h" ++#else ++# import <Foundation/NSObject.h> ++#endif ++ ++#endif /* _OBJC_F_NSOBJECT_H_ */ +Index: gcc/testsuite/objc-obj-c++-shared/F-NSString.h +=================================================================== +--- a/src/gcc/testsuite/objc-obj-c++-shared/F-NSString.h (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/objc-obj-c++-shared/F-NSString.h (.../branches/gcc-8-branch) +@@ -0,0 +1,33 @@ ++/* Copyright (C) 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. ++ ++You should have received a copy of the GNU General Public License ++along with GCC; see the file COPYING3. If not see ++<http://www.gnu.org/licenses/>. */ ++ ++#ifndef _OBJC_F_NSSTRING_H_ ++#define _OBJC_F_NSSTRING_H_ ++ ++/* This is a workaround to PR90709 for the NeXT runtime. ++ If we're on a system version that has headers with items we can't ++ consume, then use the GNUStep header instead. ++*/ ++ ++#if __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ >= 1090 ++# import "GNUStep/Foundation/NSString.h" ++#else ++# import <Foundation/NSString.h> ++#endif ++ ++#endif /* _OBJC_F_NSSTRING_H_ */ +Index: gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFDictionary.h +=================================================================== +--- a/src/gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFDictionary.h (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFDictionary.h (.../branches/gcc-8-branch) +@@ -0,0 +1,174 @@ ++/* CFDictionary.h ++ ++ Copyright (C) 2010 Free Software Foundation, Inc. ++ ++ Written by: Stefan Bidigaray ++ Date: January, 2010 ++ ++ This file is part of the GNUstep CoreBase Library. ++ ++ 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. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with this library; see the file COPYING.LIB. ++ If not, see <http://www.gnu.org/licenses/> or write to the ++ Free Software Foundation, 51 Franklin Street, Fifth Floor, ++ Boston, MA 02110-1301, USA. ++*/ ++ ++#ifndef __COREFOUNDATION_CFDICTIONARY_H__ ++#define __COREFOUNDATION_CFDICTIONARY_H__ 1 ++ ++#include "CFBase.h" ++ ++CF_EXTERN_C_BEGIN ++/** \ingroup CFDictionaryRef */ ++typedef const struct __CFDictionary *CFDictionaryRef; ++/** \ingroup CFMutableDictionaryRef */ ++typedef struct __CFDictionary *CFMutableDictionaryRef; ++ ++/** \defgroup CFDictionaryRef CFDictionary Reference ++ \{ ++ */ ++typedef void (*CFDictionaryApplierFunction) (const void *key, ++ const void *value, void *context); ++ ++typedef CFStringRef (*CFDictionaryCopyDescriptionCallBack) (const void *value); ++typedef Boolean (*CFDictionaryEqualCallBack) (const void *value1, ++ const void *value2); ++typedef CFHashCode (*CFDictionaryHashCallBack) (const void *value); ++typedef void (*CFDictionaryReleaseCallBack) (CFAllocatorRef allocator, ++ const void *value); ++typedef const void *(*CFDictionaryRetainCallBack) (CFAllocatorRef allocator, ++ const void *value); ++ ++typedef struct _CFDictionaryKeyCallBacks CFDictionaryKeyCallBacks; ++struct _CFDictionaryKeyCallBacks ++{ ++ CFIndex version; ++ CFDictionaryRetainCallBack retain; ++ CFDictionaryReleaseCallBack release; ++ CFDictionaryCopyDescriptionCallBack copyDescription; ++ CFDictionaryEqualCallBack equal; ++ CFDictionaryHashCallBack hash; ++}; ++ ++typedef struct _CFDictionaryValueCallBacks CFDictionaryValueCallBacks; ++struct _CFDictionaryValueCallBacks ++{ ++ CFIndex version; ++ CFDictionaryRetainCallBack retain; ++ CFDictionaryReleaseCallBack release; ++ CFDictionaryCopyDescriptionCallBack copyDescription; ++ CFDictionaryEqualCallBack equal; ++}; ++ ++CF_EXPORT const CFDictionaryKeyCallBacks kCFCopyStringDictionaryKeyCallBacks; ++CF_EXPORT const CFDictionaryKeyCallBacks kCFTypeDictionaryKeyCallBacks; ++CF_EXPORT const CFDictionaryValueCallBacks kCFTypeDictionaryValueCallBacks; ++ ++/** \name Creating a dictionary ++ \{ ++ */ ++CF_EXPORT CFDictionaryRef ++CFDictionaryCreate (CFAllocatorRef allocator, const void **keys, ++ const void **values, CFIndex numValues, ++ const CFDictionaryKeyCallBacks * keyCallBacks, ++ const CFDictionaryValueCallBacks * valueCallBacks); ++ ++CF_EXPORT CFDictionaryRef ++CFDictionaryCreateCopy (CFAllocatorRef allocator, CFDictionaryRef theDict); ++/** \} */ ++ ++/** \name Examining a dictionary ++ \{ ++ */ ++CF_EXPORT Boolean ++CFDictionaryContainsKey (CFDictionaryRef theDict, const void *key); ++ ++CF_EXPORT Boolean ++CFDictionaryContainsValue (CFDictionaryRef theDict, const void *value); ++ ++CF_EXPORT CFIndex CFDictionaryGetCount (CFDictionaryRef theDict); ++ ++CF_EXPORT CFIndex ++CFDictionaryGetCountOfKey (CFDictionaryRef theDict, const void *key); ++ ++CF_EXPORT CFIndex ++CFDictionaryGetCountOfValue (CFDictionaryRef theDict, const void *value); ++ ++CF_EXPORT void ++CFDictionaryGetKeysAndValues (CFDictionaryRef theDict, const void **keys, ++ const void **values); ++ ++CF_EXPORT const void *CFDictionaryGetValue (CFDictionaryRef theDict, ++ const void *key); ++ ++CF_EXPORT Boolean ++CFDictionaryGetValueIfPresent (CFDictionaryRef theDict, const void *key, ++ const void **value); ++/** \} */ ++ ++/** \name Applying a funcation to a dictionary ++ \{ ++ */ ++CF_EXPORT void ++CFDictionaryApplyFunction (CFDictionaryRef theDict, ++ CFDictionaryApplierFunction applier, void *context); ++/** \} */ ++ ++/** \name Getting the CFDictionary type ID ++ \{ ++ */ ++CF_EXPORT CFTypeID CFDictionaryGetTypeID (void); ++/** \} */ ++/** \} */ ++ ++/** \defgroup CFMutableDictionaryRef CFMutableDictionary Reference ++ \{ ++ */ ++/** \name Creating a Mutable Dictionary ++ \{ ++ */ ++CF_EXPORT CFMutableDictionaryRef ++CFDictionaryCreateMutable (CFAllocatorRef allocator, CFIndex capacity, ++ const CFDictionaryKeyCallBacks * keyCallBacks, ++ const CFDictionaryValueCallBacks * valueCallBacks); ++ ++CF_EXPORT CFMutableDictionaryRef ++CFDictionaryCreateMutableCopy (CFAllocatorRef allocator, CFIndex capacity, ++ CFDictionaryRef theDict); ++/** \} */ ++ ++/** \name Modifying a Dictionary ++ \{ ++ */ ++CF_EXPORT void ++CFDictionaryAddValue (CFMutableDictionaryRef theDict, const void *key, ++ const void *value); ++ ++CF_EXPORT void CFDictionaryRemoveAllValues (CFMutableDictionaryRef theDict); ++ ++CF_EXPORT void ++CFDictionaryRemoveValue (CFMutableDictionaryRef theDict, const void *key); ++ ++CF_EXPORT void ++CFDictionaryReplaceValue (CFMutableDictionaryRef theDict, const void *key, ++ const void *value); ++ ++CF_EXPORT void ++CFDictionarySetValue (CFMutableDictionaryRef theDict, const void *key, ++ const void *value); ++/** \} */ ++/** \} */ ++ ++CF_EXTERN_C_END ++#endif /* __COREFOUNDATION_CFDICTIONARY_H__ */ +Index: gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFString.h +=================================================================== +--- a/src/gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFString.h (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFString.h (.../branches/gcc-8-branch) +@@ -0,0 +1,593 @@ ++/* CFString.h ++ ++ Copyright (C) 2010 Free Software Foundation, Inc. ++ ++ Written by: Stefan Bidigaray ++ Date: January, 2010 ++ ++ This file is part of CoreBase. ++ ++ 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. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with this library; see the file COPYING.LIB. ++ If not, see <http://www.gnu.org/licenses/> or write to the ++ Free Software Foundation, 51 Franklin Street, Fifth Floor, ++ Boston, MA 02110-1301, USA. ++*/ ++ ++#ifndef __COREFOUNDATION_CFSTRING_H__ ++#define __COREFOUNDATION_CFSTRING_H__ ++ ++#include "CFBase.h" ++#include "CFArray.h" ++#include "CFCharacterSet.h" ++#include "CFData.h" ++#include "CFDictionary.h" ++#include "CFLocale.h" ++ ++#include <stdarg.h> ++ ++CF_EXTERN_C_BEGIN ++ ++/** \defgroup CFStringRef CFString Reference ++ \brief The CFString type defines opaque objects representing strings. ++ ++ CFString is "toll-free bridged" to NSString. ++ ++ \{ ++ */ ++ ++/* ++ * Data Types ++ */ ++typedef UInt32 CFStringEncoding; ++ ++/* ++ * Constants ++ */ ++typedef enum ++{ ++ kCFCompareCaseInsensitive = 1, ++ kCFCompareBackwards = 4, ++ kCFCompareAnchored = 8, ++ kCFCompareNonliteral = 16, ++ kCFCompareLocalized = 32, ++ kCFCompareNumerically = 64, ++#if OS_API_VERSION(MAC_OS_X_VERSION_10_5, GS_API_LATEST) ++ kCFCompareDiacriticInsensitive = 128, ++ kCFCompareWidthInsensitive = 256, ++ kCFCompareForcedOrdering = 512 ++#endif ++} CFStringCompareFlags; ++ ++enum CFStringBuiltInEncodings ++{ ++ kCFStringEncodingMacRoman = 0, ++ kCFStringEncodingWindowsLatin1 = 0x0500, ++ kCFStringEncodingISOLatin1 = 0x0201, ++ kCFStringEncodingNextStepLatin = 0x0B01, ++ kCFStringEncodingASCII = 0x0600, ++ kCFStringEncodingUnicode = 0x0100, ++ kCFStringEncodingUTF8 = 0x08000100, ++ kCFStringEncodingNonLossyASCII = 0x0BFF, ++#if OS_API_VERSION(MAC_OS_X_VERSION_10_4, GS_API_LATEST) ++ kCFStringEncodingUTF16 = 0x0100, ++ kCFStringEncodingUTF16BE = 0x10000100, ++ kCFStringEncodingUTF16LE = 0x14000100, ++ kCFStringEncodingUTF32 = 0x0c000100, ++ kCFStringEncodingUTF32BE = 0x18000100, ++ kCFStringEncodingUTF32LE = 0x1c000100 ++#endif ++}; ++ ++#if OS_API_VERSION(MAC_OS_X_VERSION_10_2, GS_API_LATEST) ++# define kCFStringEncodingInvalidId (0xffffffffU) ++#endif ++ ++/** \def CFSTR(x) ++ \brief Creates a constant string object. ++ ++ \note This macro will create the constant string at runtime. ++ */ ++/* The 'pure' attribute tells the compiler that this function will always ++ return the same result with the same input. If it has any skill, then ++ constant propagation passes will magically make sure that this function is ++ called as few times as possible. */ ++CF_EXPORT CFStringRef ++__CFStringMakeConstantString (const char *str) GS_PURE_FUNCTION; ++//#define CFSTR(x) __CFStringMakeConstantString("" x "") ++ ++#ifdef __CONSTANT_CFSTRINGS__ ++#define CFSTR(x) ((CFStringRef) __builtin___CFStringMakeConstantString ("" x "")) ++#else ++#define CFSTR(x) __CFStringMakeConstantString("" x "") ++#endif ++ ++/** \name Creating a CFString ++ \{ ++ */ ++CF_EXPORT CFArrayRef ++CFStringCreateArrayBySeparatingStrings (CFAllocatorRef alloc, ++ CFStringRef theString, CFStringRef separatorString); ++ ++CF_EXPORT CFStringRef ++CFStringCreateByCombiningStrings (CFAllocatorRef alloc, CFArrayRef theArray, ++ CFStringRef separatorString); ++ ++CF_EXPORT CFStringRef ++CFStringCreateCopy (CFAllocatorRef alloc, CFStringRef theString); ++ ++CF_EXPORT CFStringRef ++CFStringCreateFromExternalRepresentation (CFAllocatorRef alloc, CFDataRef data, ++ CFStringEncoding encoding); ++ ++CF_EXPORT CFStringRef ++CFStringCreateWithBytes (CFAllocatorRef alloc, const UInt8 *bytes, ++ CFIndex numBytes, CFStringEncoding encoding, Boolean isExternalRepresentation); ++ ++CF_EXPORT CFStringRef ++CFStringCreateWithCharacters (CFAllocatorRef alloc, const UniChar *chars, ++ CFIndex numChars); ++ ++CF_EXPORT CFStringRef ++CFStringCreateWithCharactersNoCopy (CFAllocatorRef alloc, const UniChar *chars, ++ CFIndex numChars, CFAllocatorRef contentsDeallocator); ++ ++CF_EXPORT CFStringRef ++CFStringCreateWithCString (CFAllocatorRef alloc, const char *cStr, ++ CFStringEncoding encoding); ++ ++CF_EXPORT CFStringRef ++CFStringCreateWithCStringNoCopy (CFAllocatorRef alloc, const char *cStr, ++ CFStringEncoding encoding, CFAllocatorRef contentsDeallocator); ++ ++CF_EXPORT CFStringRef ++CFStringCreateWithFormat (CFAllocatorRef alloc, CFDictionaryRef formatOptions, ++ CFStringRef format, ...); ++ ++CF_EXPORT CFStringRef ++CFStringCreateWithFormatAndArguments (CFAllocatorRef alloc, ++ CFDictionaryRef formatOptions, CFStringRef format, va_list arguments); ++ ++CF_EXPORT CFStringRef ++CFStringCreateWithSubstring (CFAllocatorRef alloc, CFStringRef str, ++ CFRange range); ++ ++#if OS_API_VERSION(MAC_OS_X_VERSION_10_4, GS_API_LATEST) ++CF_EXPORT CFStringRef ++CFStringCreateWithFileSystemRepresentation (CFAllocatorRef alloc, ++ const char *buffer); ++#endif ++ ++#if OS_API_VERSION(MAC_OS_X_VERSION_10_5, GS_API_LATEST) ++CF_EXPORT CFStringRef ++CFStringCreateWithBytesNoCopy (CFAllocatorRef alloc, const UInt8 *bytes, ++ CFIndex numBytes, CFStringEncoding encoding, Boolean isExternalReprentation, ++ CFAllocatorRef contentsDeallocator); ++#endif ++/** \} */ ++ ++/** \name Searching CFStrings ++ \{ ++ */ ++CF_EXPORT CFArrayRef ++CFStringCreateArrayWithFindResults (CFAllocatorRef alloc, CFStringRef theString, ++ CFStringRef stringToFind, CFRange rangeToSearch, ++ CFStringCompareFlags compareOptions); ++ ++CF_EXPORT CFRange ++CFStringFind (CFStringRef theString, CFStringRef stringToFind, ++ CFStringCompareFlags compareOptions); ++ ++CF_EXPORT Boolean ++CFStringFindWithOptions (CFStringRef theString, CFStringRef stringToFind, ++ CFRange rangeToSearch, CFStringCompareFlags searchOptions, CFRange *result); ++ ++CF_EXPORT Boolean ++CFStringFindWithOptionsAndLocale (CFStringRef theString,CFStringRef stringToFind, ++ CFRange rangeToSearch, CFStringCompareFlags searchOptions, ++ CFLocaleRef locale, CFRange *result); ++ ++CF_EXPORT void ++CFStringGetLineBounds (CFStringRef theString, CFRange range, ++ CFIndex *lineBeginIndex, CFIndex *lineEndIndex, CFIndex *contentsEndIndex); ++ ++#if OS_API_VERSION(MAC_OS_X_VERSION_10_2, GS_API_LATEST) ++CF_EXPORT Boolean ++CFStringFindCharacterFromSet (CFStringRef theString, CFCharacterSetRef theSet, ++ CFRange rangeToSearch, CFStringCompareFlags searchOptions, CFRange *result); ++#endif ++ ++#if OS_API_VERSION(MAC_OS_X_VERSION_10_5, GS_API_LATEST) ++CF_EXPORT void ++CFStringGetParagraphBounds (CFStringRef string, CFRange range, ++ CFIndex *parBeginIndex, CFIndex *parEndIndex, CFIndex *contentsEndIndex); ++#endif ++/** \} */ ++ ++/** \name Comparing String ++ \{ ++ */ ++CF_EXPORT CFComparisonResult ++CFStringCompare (CFStringRef theString1, CFStringRef theString2, ++ CFStringCompareFlags compareOptions); ++ ++CF_EXPORT CFComparisonResult ++CFStringCompareWithOptions (CFStringRef theString1, CFStringRef theString2, ++ CFRange rangeToCOmpare, CFStringCompareFlags compareOptions); ++ ++CF_EXPORT Boolean ++CFStringHasPrefix (CFStringRef theString, CFStringRef prefix); ++ ++CF_EXPORT Boolean ++CFStringHasSuffix (CFStringRef theString, CFStringRef suffix); ++ ++#if OS_API_VERSION(MAC_OS_X_VERSION_10_5, GS_API_LATEST) ++CF_EXPORT CFComparisonResult ++CFStringCompareWithOptionsAndLocale (CFStringRef theString1, ++ CFStringRef theString2, CFRange rangeToCOmpare, ++ CFStringCompareFlags compareOptions, CFLocaleRef locale); ++#endif ++/** \} */ ++ ++/** \name Accessing Characters ++ \{ ++ */ ++CF_EXPORT CFDataRef ++CFStringCreateExternalRepresentation (CFAllocatorRef alloc, ++ CFStringRef theString, CFStringEncoding encoding, UInt8 lossByte); ++ ++CF_EXPORT CFIndex ++CFStringGetBytes (CFStringRef theString, CFRange range, ++ CFStringEncoding encoding, UInt8 lossByte, Boolean isExternalRepresentation, ++ UInt8 *buffer, CFIndex maxBufLen, CFIndex *usedBufLen); ++ ++CF_EXPORT UniChar ++CFStringGetCharacterAtIndex (CFStringRef theString, CFIndex idx); ++ ++CF_EXPORT void ++CFStringGetCharacters (CFStringRef theString, CFRange range, UniChar *buffer); ++ ++CF_EXPORT const UniChar * ++CFStringGetCharactersPtr (CFStringRef theString); ++ ++CF_EXPORT Boolean ++CFStringGetCString (CFStringRef theString, char *buffer, CFIndex bufferSize, ++ CFStringEncoding encoding); ++ ++CF_EXPORT const char * ++CFStringGetCStringPtr (CFStringRef theString, CFStringEncoding encoding); ++ ++CF_EXPORT CFIndex ++CFStringGetLength (CFStringRef str); ++ ++CF_EXPORT CFRange ++CFStringGetRangeOfComposedCharactersAtIndex (CFStringRef theString, ++ CFIndex theIndex); ++ ++#if OS_API_VERSION(MAC_OS_X_VERSION_10_6, GS_API_LATEST) ++CF_EXPORT UTF32Char ++CFStringGetLongCharacterForSurrogatePair (UniChar surrogateHigh, ++ UniChar surrogateLow); ++ ++CF_EXPORT Boolean ++CFStringGetSurrogatePairForLongCharacter (UTF32Char character, ++ UniChar *surrogates); ++ ++CF_EXPORT Boolean ++CFStringIsSurrogateHighCharacter (UniChar character); ++ ++CF_EXPORT Boolean ++CFStringIsSurrogateLowCharacter (UniChar character); ++#endif ++/** \} */ ++ ++/** \name Working with Encodings ++ \{ ++ */ ++CF_EXPORT CFStringRef ++CFStringConvertEncodingToIANACharSetName (CFStringEncoding encoding); ++ ++CF_EXPORT unsigned long ++CFStringConvertEncodingToNSStringEncoding (CFStringEncoding encoding); ++ ++UInt32 ++CFStringConvertEncodingToWindowsCodepage (CFStringEncoding encoding); ++ ++CF_EXPORT CFStringEncoding ++CFStringConvertIANACharSetNameToEncoding (CFStringRef theString); ++ ++CF_EXPORT CFStringEncoding ++CFStringConvertNSStringEncodingToEncoding (unsigned long encoding); ++ ++CF_EXPORT CFStringEncoding ++CFStringConvertWindowsCodepageToEncoding (UInt32 codepage); ++ ++CF_EXPORT CFStringEncoding ++CFStringGetFastestEncoding (CFStringRef theString); ++ ++CF_EXPORT const CFStringEncoding * ++CFStringGetListOfAvailableEncodings (void); ++ ++CF_EXPORT CFIndex ++CFStringGetMaximumSizeForEncoding (CFIndex length, CFStringEncoding encoding); ++ ++CF_EXPORT CFStringEncoding ++CFStringGetMostCompatibleMacStringEncoding (CFStringEncoding encoding); ++ ++CF_EXPORT CFStringRef ++CFStringGetNameOfEncoding (CFStringEncoding encoding); ++ ++CF_EXPORT CFStringEncoding ++CFStringGetSmallestEncoding (CFStringRef theString); ++ ++CF_EXPORT CFStringEncoding ++CFStringGetSystemEncoding (void); ++ ++CF_EXPORT Boolean ++CFStringIsEncodingAvailable (CFStringEncoding encoding); ++ ++#if OS_API_VERSION(MAC_OS_X_VERSION_10_4, GS_API_LATEST) ++CF_EXPORT Boolean ++CFStringGetFileSystemRepresentation (CFStringRef string, char *buffer, ++ CFIndex maxBufLen); ++ ++CF_EXPORT CFIndex ++CFStringGetMaximumSizeOfFileSystemRepresentation (CFStringRef string); ++#endif ++/** \} */ ++ ++/** \name Getting Numeric Values ++ \{ ++ */ ++CF_EXPORT double ++CFStringGetDoubleValue (CFStringRef str); ++ ++CF_EXPORT SInt32 ++CFStringGetIntValue (CFStringRef str); ++/** \} */ ++ ++/** \name Getting String Properties ++ \{ ++ */ ++CF_EXPORT void ++CFShow (CFTypeRef obj); ++ ++CF_EXPORT void ++CFShowStr (CFStringRef str); ++ ++CF_EXPORT CFTypeID ++CFStringGetTypeID (void); ++/** \} */ ++ ++ ++ ++/** \name Pascal Strings ++ \{ ++ */ ++CF_EXPORT CFStringRef ++CFStringCreateWithPascalString (CFAllocatorRef alloc, ConstStr255Param pStr, ++ CFStringEncoding encoding); ++ ++CF_EXPORT CFStringRef ++CFStringCreateWithPascalStringNoCopy (CFAllocatorRef alloc, ++ ConstStr255Param pStr, CFStringEncoding encoding, ++ CFAllocatorRef contentsDeallocate); ++ ++CF_EXPORT Boolean ++CFStringGetPascalString (CFStringRef theString, StringPtr buffer, ++ CFIndex bufferSize, CFStringEncoding encoding); ++ ++CF_EXPORT ConstStringPtr ++CFStringGetPascalStringPtr (CFStringRef theString, CFStringEncoding encoding); ++/** \} */ ++/** \} */ ++ ++ ++ ++/** \defgroup CFMutableStringRef CFMutableString Reference ++ * \{ ++ */ ++#if OS_API_VERSION(MAC_OS_X_VERSION_10_2, GS_API_LATEST) ++typedef enum ++{ ++ kCFStringNormalizationFormD = 0, ++ kCFStringNormalizationFormKD = 1, ++ kCFStringNormalizationFormC = 2, ++ kCFStringNormalizationFormKC = 3 ++} CFStringNormalizationForm; ++#endif ++ ++#if OS_API_VERSION(MAC_OS_X_VERSION_10_4, GS_API_LATEST) ++CF_EXPORT const CFStringRef kCFStringTransformStripCombiningMarks; ++CF_EXPORT const CFStringRef kCFStringTransformToLatin; ++CF_EXPORT const CFStringRef kCFStringTransformFullwidthHalfwidth; ++CF_EXPORT const CFStringRef kCFStringTransformLatinKatakana; ++CF_EXPORT const CFStringRef kCFStringTransformLatinHiragana; ++CF_EXPORT const CFStringRef kCFStringTransformHiraganaKatakana; ++CF_EXPORT const CFStringRef kCFStringTransformMandarinLatin; ++CF_EXPORT const CFStringRef kCFStringTransformLatinHangul; ++CF_EXPORT const CFStringRef kCFStringTransformLatinArabic; ++CF_EXPORT const CFStringRef kCFStringTransformLatinHebrew; ++CF_EXPORT const CFStringRef kCFStringTransformLatinThai; ++CF_EXPORT const CFStringRef kCFStringTransformLatinCyrillic; ++CF_EXPORT const CFStringRef kCFStringTransformLatinGreek; ++CF_EXPORT const CFStringRef kCFStringTransformToXMLHex; ++CF_EXPORT const CFStringRef kCFStringTransformToUnicodeName; ++#endif ++#if OS_API_VERSION(MAC_OS_X_VERSION_10_5, GS_API_LATEST) ++CF_EXPORT const CFStringRef kCFStringTransformStripDiacritics; ++#endif ++ ++CF_EXPORT void ++CFStringAppend (CFMutableStringRef theString, CFStringRef appendedString); ++ ++CF_EXPORT void ++CFStringAppendCharacters (CFMutableStringRef theString, ++ const UniChar *chars, CFIndex numChars); ++ ++CF_EXPORT void ++CFStringAppendCString (CFMutableStringRef theString, const char *cStr, ++ CFStringEncoding encoding); ++ ++CF_EXPORT void ++CFStringAppendFormat (CFMutableStringRef theString, ++ CFDictionaryRef formatOptions, CFStringRef format, ...); ++ ++CF_EXPORT void ++CFStringAppendFormatAndArguments (CFMutableStringRef theString, ++ CFDictionaryRef formatOptions, CFStringRef format, va_list arguments); ++ ++CF_EXPORT void ++CFStringAppendPascalString (CFMutableStringRef theString, ++ ConstStr255Param pStr, CFStringEncoding encoding); ++ ++CF_EXPORT void ++CFStringCapitalize (CFMutableStringRef theString, CFLocaleRef locale); ++ ++CF_EXPORT CFMutableStringRef ++CFStringCreateMutable (CFAllocatorRef alloc, CFIndex maxLength); ++ ++CF_EXPORT CFMutableStringRef ++CFStringCreateMutableCopy (CFAllocatorRef alloc, CFIndex maxLength, ++ CFStringRef theString); ++ ++CF_EXPORT CFMutableStringRef ++CFStringCreateMutableWithExternalCharactersNoCopy (CFAllocatorRef alloc, ++ UniChar *chars, CFIndex numChars, CFIndex capacity, ++ CFAllocatorRef externalCharactersAllocator); ++ ++CF_EXPORT void ++CFStringDelete (CFMutableStringRef theString, CFRange range); ++ ++CF_EXPORT void ++CFStringInsert (CFMutableStringRef str, CFIndex idx, CFStringRef insertedStr); ++ ++CF_EXPORT void ++CFStringLowercase (CFMutableStringRef theString, CFLocaleRef locale); ++ ++CF_EXPORT void ++CFStringPad (CFMutableStringRef theString, CFStringRef padString, ++ CFIndex length, CFIndex indexIntoPad); ++ ++CF_EXPORT void ++CFStringReplace (CFMutableStringRef theString, CFRange range, ++ CFStringRef replacement); ++ ++CF_EXPORT void ++CFStringReplaceAll (CFMutableStringRef theString, CFStringRef replacement); ++ ++CF_EXPORT void ++CFStringSetExternalCharactersNoCopy (CFMutableStringRef theString, ++ UniChar *chars, CFIndex length, CFIndex capacity); ++ ++CF_EXPORT void ++CFStringTrim (CFMutableStringRef theString, CFStringRef trimString); ++ ++CF_EXPORT void ++CFStringTrimWhitespace (CFMutableStringRef theString); ++ ++CF_EXPORT void ++CFStringUppercase (CFMutableStringRef theString, CFLocaleRef locale); ++ ++#if OS_API_VERSION(MAC_OS_X_VERSION_10_2, GS_API_LATEST) ++CF_EXPORT CFIndex ++CFStringFindAndReplace (CFMutableStringRef theString, ++ CFStringRef stringToFind, CFStringRef replacementString, ++ CFRange rangeToSearch, CFOptionFlags compareOptions); ++ ++CF_EXPORT void ++CFStringNormalize (CFMutableStringRef theString, ++ CFStringNormalizationForm theForm); ++#endif ++ ++#if OS_API_VERSION(MAC_OS_X_VERSION_10_4, GS_API_LATEST) ++CF_EXPORT Boolean ++CFStringTransform (CFMutableStringRef string, CFRange *range, ++ CFStringRef transform, Boolean reverse); ++#endif ++ ++#if OS_API_VERSION(MAC_OS_X_VERSION_10_5, GS_API_LATEST) ++CF_EXPORT void ++CFStringFold (CFMutableStringRef theString, CFOptionFlags theFlags, ++ CFLocaleRef theLocale); ++#endif ++/** \} */ ++ ++ ++ ++/** \ingroup CFStringRef ++ \name CFStringInlineBuffer ++ \{ ++ */ ++#define __kCFStringInlineBufferLength 64 ++struct CFStringInlineBuffer ++{ ++ UniChar buffer[__kCFStringInlineBufferLength]; ++ CFStringRef theString; ++ const UniChar *directBuffer; ++ CFRange rangeToBuffer; ++ CFIndex bufferedRangeStart; ++ CFIndex bufferedRangeEnd; ++}; ++typedef struct CFStringInlineBuffer CFStringInlineBuffer; ++ ++CF_INLINE void ++CFStringInitInlineBuffer (CFStringRef str, CFStringInlineBuffer *buf, ++ CFRange range) ++{ ++ buf->theString = str; ++ buf->rangeToBuffer = range; ++ buf->directBuffer = CFStringGetCharactersPtr (str); ++ buf->bufferedRangeStart = 0; ++ buf->bufferedRangeEnd = 0; ++} ++ ++CF_INLINE UniChar ++CFStringGetCharacterFromInlineBuffer (CFStringInlineBuffer *buf, CFIndex idx) ++{ ++ if (buf->directBuffer) ++ { ++ if (idx < 0 || idx >= buf->rangeToBuffer.length) ++ return 0; ++ return buf->directBuffer[idx + buf->rangeToBuffer.location]; ++ } ++ else if (idx >= buf->bufferedRangeEnd || idx < buf->bufferedRangeStart) ++ { ++ CFRange range; ++ ++ if (idx < 0 || idx >= buf->rangeToBuffer.length) ++ return 0; ++ ++ /* Use 16 here so it's efficient to go backwards, too */ ++ buf->bufferedRangeStart = idx - 16; ++ if (buf->bufferedRangeStart < 0) ++ buf->bufferedRangeStart = 0; ++ buf->bufferedRangeEnd = ++ buf->bufferedRangeStart + __kCFStringInlineBufferLength; ++ if (buf->bufferedRangeEnd > buf->rangeToBuffer.length) ++ buf->bufferedRangeEnd = buf->rangeToBuffer.length; ++ ++ range = CFRangeMake (buf->rangeToBuffer.location + buf->bufferedRangeStart, ++ buf->bufferedRangeEnd - buf->bufferedRangeStart); ++ ++ CFStringGetCharacters (buf->theString, range, buf->buffer); ++ } ++ ++ return buf->buffer[(idx - buf->bufferedRangeStart)]; ++} ++/** \} */ ++ ++CF_EXTERN_C_END ++ ++#endif /* __COREFOUNDATION_CFSTRING_H__ */ ++ +Index: gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFCharacterSet.h +=================================================================== +--- a/src/gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFCharacterSet.h (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFCharacterSet.h (.../branches/gcc-8-branch) +@@ -0,0 +1,173 @@ ++/* CFCharacterSet.h ++ ++ Copyright (C) 2012 Free Software Foundation, Inc. ++ ++ Written by: Stefan Bidigaray ++ Date: January, 2012 ++ ++ This file is part of the GNUstep CoreBase Library. ++ ++ 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. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with this library; see the file COPYING.LIB. ++ If not, see <http://www.gnu.org/licenses/> or write to the ++ Free Software Foundation, 51 Franklin Street, Fifth Floor, ++ Boston, MA 02110-1301, USA. ++*/ ++ ++#ifndef __COREFOUNDATION_CFCHARACTERSET_H__ ++#define __COREFOUNDATION_CFCHARACTERSET_H__ ++ ++#include "CFBase.h" ++#include "CFData.h" ++ ++CF_EXTERN_C_BEGIN ++ ++/** \ingroup CFCharacterSetRef */ ++typedef const struct __CFCharacterSet * CFCharacterSetRef; ++/** \ingroup CFMutableCharacterSetRef */ ++typedef struct __CFCharacterSet * CFMutableCharacterSetRef; ++ ++/** \defgroup CFCharacterSetRef CFCharacterSet Reference ++ \{ ++ */ ++typedef enum ++{ ++ kCFCharacterSetControl = 1, ++ kCFCharacterSetWhitespace, ++ kCFCharacterSetWhitespaceAndNewline, ++ kCFCharacterSetDecimalDigit, ++ kCFCharacterSetLetter, ++ kCFCharacterSetLowercaseLetter, ++ kCFCharacterSetUppercaseLetter, ++ kCFCharacterSetNonBase, ++ kCFCharacterSetDecomposable, ++ kCFCharacterSetAlphaNumeric, ++ kCFCharacterSetPunctuation, ++#if OS_API_VERSION(MAC_OS_X_VERSION_10_2, GS_API_LATEST) ++ kCFCharacterSetCapitalizedLetter = 13, ++#endif ++#if OS_API_VERSION(MAC_OS_X_VERSION_10_3, GS_API_LATEST) ++ kCFCharacterSetSymbol = 14, ++#endif ++#if OS_API_VERSION(MAC_OS_X_VERSION_10_5, GS_API_LATEST) ++ kCFCharacterSetNewline = 15, ++#endif ++ kCFCharacterSetIllegal = 12 ++} CFCharacterSetPredefinedSet; ++ ++ ++ ++/** \name Creating Character Sets ++ \{ ++ */ ++#if OS_API_VERSION(MAC_OS_X_VERSION_10_3, GS_API_LATEST) ++CF_EXPORT CFCharacterSetRef ++CFCharacterSetCreateCopy (CFAllocatorRef alloc, CFCharacterSetRef set); ++#endif ++ ++#if OS_API_VERSION(MAC_OS_X_VERSION_10_2, GS_API_LATEST) ++CF_EXPORT CFCharacterSetRef ++CFCharacterSetCreateInvertedSet (CFAllocatorRef alloc, CFCharacterSetRef set); ++#endif ++ ++CF_EXPORT CFCharacterSetRef ++CFCharacterSetCreateWithCharactersInRange (CFAllocatorRef alloc, ++ CFRange range); ++ ++CF_EXPORT CFCharacterSetRef ++CFCharacterSetCreateWithCharactersInString (CFAllocatorRef alloc, ++ CFStringRef string); ++ ++CF_EXPORT CFCharacterSetRef ++CFCharacterSetCreateWithBitmapRepresentation (CFAllocatorRef alloc, ++ CFDataRef data); ++/** \} */ ++ ++/** \name Getting Predefined Character Sets ++ \{ ++ */ ++CF_EXPORT CFCharacterSetRef ++CFCharacterSetGetPredefined (CFCharacterSetPredefinedSet setIdentifier); ++/** \} */ ++ ++/** \name Querying Character Sets ++ \{ ++ */ ++CF_EXPORT CFDataRef ++CFCharacterSetCreateBitmapRepresentation (CFAllocatorRef alloc, ++ CFCharacterSetRef set); ++ ++CF_EXPORT Boolean ++CFCharacterSetIsCharacterMember (CFCharacterSetRef set, UniChar c); ++ ++#if OS_API_VERSION(MAC_OS_X_VERSION_10_2, GS_API_LATEST) ++CF_EXPORT Boolean ++CFCharacterSetHasMemberInPlane (CFCharacterSetRef set, CFIndex plane); ++ ++CF_EXPORT Boolean ++CFCharacterSetIsLongCharacterMember (CFCharacterSetRef set, UTF32Char c); ++ ++CF_EXPORT Boolean ++CFCharacterSetIsSupersetOfSet (CFCharacterSetRef set, ++ CFCharacterSetRef otherSet); ++#endif ++/** \} */ ++ ++/** \name Getting the Character Set Type Identifier ++ \{ ++ */ ++CF_EXPORT CFTypeID ++CFCharacterSetGetTypeID (void); ++/** \} */ ++/** \} */ ++ ++/** \defgroup CFMutableCharacterSetRef CFMutableCharacterSet Reference ++ \{ ++ */ ++CF_EXPORT CFMutableCharacterSetRef ++CFCharacterSetCreateMutable (CFAllocatorRef alloc); ++ ++CF_EXPORT CFMutableCharacterSetRef ++CFCharacterSetCreateMutableCopy (CFAllocatorRef alloc, CFCharacterSetRef set); ++ ++CF_EXPORT void ++CFCharacterSetAddCharactersInRange (CFMutableCharacterSetRef set, ++ CFRange range); ++ ++CF_EXPORT void ++CFCharacterSetAddCharactersInString (CFMutableCharacterSetRef set, ++ CFStringRef string); ++ ++CF_EXPORT void ++CFCharacterSetRemoveCharactersInRange (CFMutableCharacterSetRef set, ++ CFRange range); ++ ++CF_EXPORT void ++CFCharacterSetRemoveCharactersInString (CFMutableCharacterSetRef set, ++ CFStringRef string); ++ ++CF_EXPORT void ++CFCharacterSetIntersect (CFMutableCharacterSetRef set, ++ CFCharacterSetRef otherSet); ++ ++CF_EXPORT void ++CFCharacterSetInvert (CFMutableCharacterSetRef set); ++ ++CF_EXPORT void ++CFCharacterSetUnion (CFMutableCharacterSetRef set, CFCharacterSetRef otherSet); ++/** \} */ ++ ++CF_EXTERN_C_END ++ ++#endif /* __COREFOUNDATION_CFCHARACTERSET_H__ */ ++ +Index: gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFData.h +=================================================================== +--- a/src/gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFData.h (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFData.h (.../branches/gcc-8-branch) +@@ -0,0 +1,114 @@ ++/* CFData.h ++ ++ Copyright (C) 2010 Free Software Foundation, Inc. ++ ++ Written by: Stefan Bidigaray ++ Date: January, 2010 ++ ++ This file is part of CoreBase. ++ ++ 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. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with this library; see the file COPYING.LIB. ++ If not, see <http://www.gnu.org/licenses/> or write to the ++ Free Software Foundation, 51 Franklin Street, Fifth Floor, ++ Boston, MA 02110-1301, USA. ++*/ ++ ++#ifndef __COREFOUNDATION_CFDATA_H__ ++#define __COREFOUNDATION_CFDATA_H__ ++ ++#include "CFBase.h" ++ ++CF_EXTERN_C_BEGIN ++/** \ingroup CFDataRef */ ++typedef const struct __CFData *CFDataRef; ++/** \ingroup CFMutableDataRef */ ++typedef struct __CFData *CFMutableDataRef; ++ ++/** \defgroup CFDataRef CFData Reference ++ \{ ++ */ ++/** \name Creating a CFData Object ++ \{ ++ */ ++CF_EXPORT CFDataRef ++CFDataCreate (CFAllocatorRef allocator, const UInt8 * bytes, CFIndex length); ++ ++CF_EXPORT CFDataRef ++CFDataCreateCopy (CFAllocatorRef allocator, CFDataRef theData); ++ ++CF_EXPORT CFDataRef ++CFDataCreateWithBytesNoCopy (CFAllocatorRef allocator, const UInt8 * bytes, ++ CFIndex length, CFAllocatorRef bytesDeallocator); ++/** \} */ ++ ++/** \name Examining a CFData Object ++ \{ ++ */ ++CF_EXPORT const UInt8 *CFDataGetBytePtr (CFDataRef theData); ++ ++CF_EXPORT void ++CFDataGetBytes (CFDataRef theData, CFRange range, UInt8 * buffer); ++ ++CF_EXPORT CFIndex CFDataGetLength (CFDataRef theData); ++/** \} */ ++ ++/** \name Getting the CFData Type ID ++ \{ ++ */ ++CF_EXPORT CFTypeID CFDataGetTypeID (void); ++/** \} */ ++/** \} */ ++ ++/** \defgroup CFMutableDataRef CFMutableData Reference ++ \{ ++ */ ++/** \name Creating a Mutable Data Object ++ \{ ++ */ ++CF_EXPORT CFMutableDataRef ++CFDataCreateMutable (CFAllocatorRef allocator, CFIndex capacity); ++ ++CF_EXPORT CFMutableDataRef ++CFDataCreateMutableCopy (CFAllocatorRef allocator, CFIndex capacity, ++ CFDataRef theData); ++/** \} */ ++ ++/** \name Accessing Mutable Data ++ \{ ++ */ ++CF_EXPORT UInt8 *CFDataGetMutableBytePtr (CFMutableDataRef theData); ++/** \} */ ++ ++/** \name Modifying a Mutable Data Object ++ \{ ++ */ ++CF_EXPORT void ++CFDataAppendBytes (CFMutableDataRef theData, const UInt8 * bytes, ++ CFIndex length); ++ ++CF_EXPORT void CFDataDeleteBytes (CFMutableDataRef theData, CFRange range); ++ ++CF_EXPORT void ++CFDataReplaceBytes (CFMutableDataRef theData, CFRange range, ++ const UInt8 * newBytes, CFIndex newLength); ++ ++CF_EXPORT void ++CFDataIncreaseLength (CFMutableDataRef theData, CFIndex extraLength); ++ ++CF_EXPORT void CFDataSetLength (CFMutableDataRef theData, CFIndex length); ++/** \} */ ++/** \} */ ++ ++CF_EXTERN_C_END ++#endif /* __COREFOUNDATION_CFDATA_H__ */ +Index: gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFAvailability.h +=================================================================== +--- a/src/gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFAvailability.h (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFAvailability.h (.../branches/gcc-8-branch) +@@ -0,0 +1,52 @@ ++/* CFAvailability.h ++ ++ Copyright (C) 2017 Free Software Foundation, Inc. ++ ++ Written by: Stefan Bidigaray ++ Date: August, 2017 ++ ++ This file is part of the GNUstep CoreBase Library. ++ ++ 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. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with this library; see the file COPYING.LIB. ++ If not, see <http://www.gnu.org/licenses/> or write to the ++ Free Software Foundation, 51 Franklin Street, Fifth Floor, ++ Boston, MA 02110-1301, USA. ++*/ ++ ++ ++#ifndef __COREFOUNDATION_CFAVAILABILITY_H__ ++#define __COREFOUNDATION_CFAVAILABILITY_H__ ++ ++/* Compiler features */ ++#ifndef __has_feature ++#define __has_feature(x) 0 ++#endif ++#ifndef __has_attribute ++#define __has_attribute(x) 0 ++#endif ++#ifndef __has_extension ++#define __has_extension(x) __has_feature ++#endif ++ ++/* CFEnum macro for type definitions */ ++#if (__cplusplus && __cplusplus >= 201103L) ++#define CF_ENUM(_type, _name) _type _name; enum : _type ++#define CF_OPTIONS(_type, _name) _type _name; enum : _type ++#else ++#define CF_ENUM(_type, _name) _type _name; enum ++#define CF_OPTIONS(_type, _name) _type _name; enum ++#endif ++ ++#endif /* __COREFOUNDATION_CFAVAILABILITY_H__ */ ++ +Index: gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFBase.h +=================================================================== +--- a/src/gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFBase.h (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFBase.h (.../branches/gcc-8-branch) +@@ -0,0 +1,464 @@ ++/* CFBase.h ++ ++ Copyright (C) 2010 Free Software Foundation, Inc. ++ ++ Written by: Stefan Bidigaray ++ Date: January, 2010 ++ ++ This file is part of the GNUstep CoreBase Library. ++ ++ 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. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with this library; see the file COPYING.LIB. ++ If not, see <http://www.gnu.org/licenses/> or write to the ++ Free Software Foundation, 51 Franklin Street, Fifth Floor, ++ Boston, MA 02110-1301, USA. ++*/ ++ ++ ++#ifndef __COREFOUNDATION_CFBASE_H__ ++#define __COREFOUNDATION_CFBASE_H__ ++ ++/* CoreFoundation defines __LITTLE_ENDIAN__ or __BIG_ENDIAN__ so we'll ++ * do the same here for compatibility. ++ */ ++#if !defined(__LITTLE_ENDIAN__) && !defined(__BIG_ENDIAN__) ++#define __LITTLE_ENDIAN__ 1 ++#endif ++ ++#include "CFAvailability.h" ++#include "../GNUstepBase/GSVersionMacros.h" ++ ++/* ++ * CoreFoundation types ++ */ ++typedef unsigned char Boolean; ++typedef unsigned char UInt8; ++typedef signed char SInt8; ++typedef unsigned short UInt16; ++typedef signed short SInt16; ++typedef unsigned int UInt32; ++typedef signed int SInt32; ++typedef unsigned long long UInt64; ++typedef signed long long SInt64; ++typedef SInt32 OSStatus; ++ ++typedef float Float32; ++typedef double Float64; ++typedef UInt16 UniChar; ++typedef UInt8 *StringPtr; ++typedef const StringPtr *ConstStringPtr; ++typedef UInt8 Str255[256]; ++typedef const Str255 *ConstStr255Param; ++typedef SInt16 OSErr; ++typedef SInt16 RegionCode; ++typedef SInt16 LangCode; ++typedef SInt16 ScriptCode; ++typedef UInt32 FourCharCode; ++#ifndef OSTYPE_DECLARED ++typedef FourCharCode OSType; ++#define OSTYPE_DECLARED ++#endif ++typedef UInt8 Byte; ++typedef SInt8 SignedByte; ++ ++#ifndef UTF32Char /* UTF32Char is also defined in GSConfig.h */ ++typedef UInt32 UTF32Char; ++#endif ++typedef UInt16 UTF16Char; ++typedef UInt8 UTF8Char; ++ ++#if !defined(CF_EXTERN_C_BEGIN) ++#if defined(__cplusplus) ++#define CF_EXTERN_C_BEGIN extern "C" { ++#define CF_EXTERN_C_END } ++#else ++#define CF_EXTERN_C_BEGIN ++#define CF_EXTERN_C_END ++#endif ++#endif ++ ++#if defined(_WIN32) ++#if defined(BUILDING_SELF) ++#if defined(__cplusplus) ++#define CF_EXPORT extern "C" __declspec(dllexport) ++#else ++#define CF_EXPORT extern __declspec(dllexport) ++#endif ++#else ++#if defined(__cplusplus) ++#define CF_EXPORT extern "C" __declspec(dllimport) ++#else ++#define CF_EXPORT extern __declspec(dllimport) ++#endif ++#endif ++#else ++#if defined(__cplusplus) ++#define CF_EXPORT extern "C" ++#else ++#define CF_EXPORT extern ++#endif ++#endif ++ ++#if !defined(__bool_true_false_are_defined) ++#define true 1 ++#define false 0 ++#endif ++ ++#ifndef TRUE ++#define TRUE 1 ++#endif ++#ifndef FALSE ++#define FALSE 0 ++#endif ++ ++#if !defined(CF_INLINE) ++#if defined(__GNUC__) && (__GNUC__ >= 4) ++#define CF_INLINE static __inline__ __attribute__((always_inline)) ++#elif defined(__GNUC__) ++#define CF_INLINE static __inline__ ++#elif defined(__MWERKS__) || defined(__cplusplus) ++#define CF_INLINE static inline ++#elif defined(_MSC_VER) ++#define CF_INLINE static __inline ++#elif _WIN32 ++#define CF_INLINE static __inline__ ++#else ++#define CF_INLINE static inline ++#endif ++#endif ++ ++#if defined(__GNUC__) || defined(__llvm__) ++#define GS_PURE_FUNCTION __attribute__((pure)) ++#else ++#define GS_PURE_FUNCTION ++#endif ++ ++CF_EXTERN_C_BEGIN ++/** \defgroup CFTypeRef CFType Reference ++ \{ ++ */ ++typedef unsigned long CFTypeID; ++typedef const void *CFTypeRef; ++/** @} ++ */ ++ ++/** \defgroup BaseUtils Base Utilities ++ \{ ++ */ ++/** An integer value to store a hash code. */ ++typedef unsigned long CFHashCode; ++/** A bitfield for passing information to functions. Can hold as many bits ++ as a word. ++ */ ++typedef unsigned long CFOptionFlags; ++/** A signed integer representing an index, size, length or count. */ ++typedef signed long CFIndex; ++ ++/** A structure that represents a range of items in a container, such as ++ an array. ++ */ ++typedef struct CFRange CFRange; ++struct CFRange ++{ ++ CFIndex location; ++ /**< An integer representing the start location of the range, inclusive. */ ++ CFIndex length; ++ /**< An integer representing the total number of items in the range */ ++}; ++ ++/** Creates a CFRange structure. ++ \param location The starting location. ++ \param length The length. ++ \return An initialized CFRange structure. ++ */ ++CF_INLINE CFRange ++CFRangeMake (CFIndex location, CFIndex length) ++{ ++ CFRange range; ++ ++ range.location = location; ++ range.length = length; ++ return range; ++} ++ ++/* Returned by comparison functions */ ++typedef enum ++{ ++ kCFCompareLessThan = -1, ++ kCFCompareEqualTo = 0, ++ kCFCompareGreaterThan = 1 ++} CFComparisonResult; ++ ++/* Return when a value is not found */ ++enum ++{ ++ kCFNotFound = -1 ++}; ++ ++/* Definition for standard comparison function callback. */ ++typedef CFComparisonResult (*CFComparatorFunction) (const void *val1, ++ const void *val2, ++ void *context); ++ ++/* CoreFoundation version numbers */ ++/** \name Library Version Numbers ++ \{ ++ */ ++CF_EXPORT const double kCFCoreFoundationVersionNumber; ++#define kCFCoreFoundationVersionNumber10_0 196.40 ++#define kCFCoreFoundationVersionNumber10_0_3 196.50 ++#define kCFCoreFoundationVersionNumber10_1 226.00 ++#define kCFCoreFoundationVersionNumber10_1_1 226.00 ++#define kCFCoreFoundationVersionNumber10_1_2 227.20 ++#define kCFCoreFoundationVersionNumber10_1_3 227.20 ++#define kCFCoreFoundationVersionNumber10_1_4 227.30 ++#define kCFCoreFoundationVersionNumber10_2 263.00 ++#define kCFCoreFoundationVersionNumber10_2_1 263.10 ++#define kCFCoreFoundationVersionNumber10_2_2 263.10 ++#define kCFCoreFoundationVersionNumber10_2_3 263.30 ++#define kCFCoreFoundationVersionNumber10_2_4 263.30 ++#define kCFCoreFoundationVersionNumber10_2_5 263.50 ++#define kCFCoreFoundationVersionNumber10_2_6 263.50 ++#define kCFCoreFoundationVersionNumber10_2_7 263.50 ++#define kCFCoreFoundationVersionNumber10_2_8 263.50 ++#define kCFCoreFoundationVersionNumber10_3 299.00 ++#define kCFCoreFoundationVersionNumber10_3_1 299.00 ++#define kCFCoreFoundationVersionNumber10_3_2 299.00 ++#define kCFCoreFoundationVersionNumber10_3_3 299.30 ++#define kCFCoreFoundationVersionNumber10_3_4 299.31 ++#define kCFCoreFoundationVersionNumber10_3_5 299.31 ++#define kCFCoreFoundationVersionNumber10_3_6 299.32 ++#define kCFCoreFoundationVersionNumber10_3_7 299.33 ++#define kCFCoreFoundationVersionNumber10_3_8 299.33 ++#define kCFCoreFoundationVersionNumber10_3_9 299.35 ++#define kCFCoreFoundationVersionNumber10_4 368.00 ++#define kCFCoreFoundationVersionNumber10_4_1 368.10 ++#define kCFCoreFoundationVersionNumber10_4_2 368.11 ++#define kCFCoreFoundationVersionNumber10_4_3 368.18 ++#define kCFCoreFoundationVersionNumber10_4_4_Intel 368.26 ++#define kCFCoreFoundationVersionNumber10_4_4_PowerPC 368.25 ++#define kCFCoreFoundationVersionNumber10_4_5_Intel 368.26 ++#define kCFCoreFoundationVersionNumber10_4_5_PowerPC 368.25 ++#define kCFCoreFoundationVersionNumber10_4_6_Intel 368.26 ++#define kCFCoreFoundationVersionNumber10_4_6_PowerPC 368.25 ++#define kCFCoreFoundationVersionNumber10_4_7 368.27 ++#define kCFCoreFoundationVersionNumber10_4_8 368.27 ++#define kCFCoreFoundationVersionNumber10_4_9 368.28 ++#define kCFCoreFoundationVersionNumber10_4_10 368.28 ++#define kCFCoreFoundationVersionNumber10_4_11 368.31 ++#define kCFCoreFoundationVersionNumber10_5 476.00 ++#define kCFCoreFoundationVersionNumber10_5_1 476.00 ++#define kCFCoreFoundationVersionNumber10_5_2 476.10 ++#define kCFCoreFoundationVersionNumber10_5_3 476.13 ++#define kCFCoreFoundationVersionNumber10_5_4 476.14 ++#define kCFCoreFoundationVersionNumber10_5_5 476.15 ++#define kCFCoreFoundationVersionNumber10_5_6 476.17 ++/** \} */ ++/** \} */ ++ ++#if __has_feature(attribute_cf_returns_retained) ++#define CF_RETURNS_RETAINED __attribute__((cf_returns_retained)) ++#else ++#define CF_RETURNS_RETAINED ++#endif ++ ++#if __has_feature(attribute_cf_returns_not_retained) ++#define CF_RETURNS_NOT_RETAINED __attribute__((cf_returns_not_retained)) ++#else ++#define CF_RETURNS_NOT_RETAINED ++#endif ++ ++/** \ingroup CFPropertyListRef ++ */ ++typedef CFTypeRef CFPropertyListRef; ++ ++/** \ingroup CFStringRef ++ */ ++typedef const struct __CFString *CFStringRef; ++/** \ingroup CFMutableStringRef ++ */ ++typedef struct __CFString *CFMutableStringRef; ++ ++ ++ ++/** \defgroup CFAllocatorRef CFAllocator Reference ++ \brief CFAllocator is an opaque type used to allocate and deallocate ++ memory. ++ \{ ++ */ ++/** \brief A reference to a CFAllocator object. ++ */ ++typedef const struct __CFAllocator *CFAllocatorRef; ++ ++typedef void *(*CFAllocatorAllocateCallBack) (CFIndex allocSize, ++ CFOptionFlags hint, void *info); ++typedef void (*CFAllocatorDeallocateCallBack) (void *ptr, void *info); ++typedef void *(*CFAllocatorReallocateCallBack) (void *ptr, ++ CFIndex newsize, ++ CFOptionFlags hint, void *info); ++typedef CFIndex (*CFAllocatorPreferredSizeCallBack) (CFIndex size, ++ CFOptionFlags hint, ++ void *info); ++typedef const void *(*CFAllocatorRetainCallBack) (const void *info); ++typedef void (*CFAllocatorReleaseCallBack) (const void *info); ++typedef CFStringRef (*CFAllocatorCopyDescriptionCallBack) (const void *info); ++ ++struct _CFAllocatorContext ++{ ++ CFIndex version; ++ void *info; ++ CFAllocatorRetainCallBack retain; ++ CFAllocatorReleaseCallBack release; ++ CFAllocatorCopyDescriptionCallBack copyDescription; ++ CFAllocatorAllocateCallBack allocate; ++ CFAllocatorReallocateCallBack reallocate; ++ CFAllocatorDeallocateCallBack deallocate; ++ CFAllocatorPreferredSizeCallBack preferredSize; ++}; ++typedef struct _CFAllocatorContext CFAllocatorContext; ++ ++/** The default allocator and is equivalent to NULL. ++ \see CFAllocatorGetDefault() ++ \see CFAllocatorSetDefault() ++ */ ++CF_EXPORT CFAllocatorRef kCFAllocatorDefault; ++/** The default system allocator is used internally by GNUstep and is the ++ default allocator if none is been defined. ++ \see CFAllocatorSetDefault() ++ */ ++CF_EXPORT CFAllocatorRef kCFAllocatorSystemDefault; ++/** An allocator that uses the system's malloc, realloc and free functions. ++ */ ++CF_EXPORT CFAllocatorRef kCFAllocatorMalloc; ++#if OS_API_VERSION(MAC_OS_X_VERSION_10_4, GS_API_LATEST) ++/** Equivalent to kCFAllocatorSystemDefault ++ */ ++CF_EXPORT CFAllocatorRef kCFAllocatorMallocZone; ++#endif ++/** The NULL allocator does perform any operations. Can be passed as ++ a deallocator if you do not want GNUstep to deallocate the data. ++ */ ++CF_EXPORT CFAllocatorRef kCFAllocatorNull; ++/** This is a special case allocator directing CFAllocatorCreate() to use ++ the given CFAllocatorContext structure to allocate the new allocator. ++ */ ++CF_EXPORT CFAllocatorRef kCFAllocatorUseContext; ++ ++/** Create a new CFAllocator. ++ \param allocator The allocator used to create this allocator or ++ kCFAllocatorUseContext to use the functions in \b context. ++ \param context The new allocator's context functions. ++ \return A new CFAllocator or NULL in case of failure. ++ \see CFAllocatorContext ++ */ ++CF_EXPORT CFAllocatorRef ++CFAllocatorCreate (CFAllocatorRef allocator, CFAllocatorContext * context); ++ ++/** Allocate new memory. ++ \param allocator The CFAllocator to use. ++ \param size The number of bytes to allocate. ++ \param hint Option flags. Currently unused and should be 0. ++ \return Newly allocated memory of NULL in case of failure. ++ \see CFAllocatorDeallocate() ++ */ ++CF_EXPORT void *CFAllocatorAllocate (CFAllocatorRef allocator, CFIndex size, ++ CFOptionFlags hint); ++ ++/** Deallocate the memory pointed to by \b ptr. ++ \param allocator The CFAllocator to use. ++ \param ptr A pointer previously allocated by CFAllocatorAllocate(). ++ \see CFAllocatorAllocate() ++ */ ++CF_EXPORT void CFAllocatorDeallocate (CFAllocatorRef allocator, void *ptr); ++ ++CF_EXPORT CFIndex ++CFAllocatorGetPreferredSizeForSize (CFAllocatorRef allocator, CFIndex size, ++ CFOptionFlags hint); ++ ++CF_EXPORT void *CFAllocatorReallocate (CFAllocatorRef allocator, void *ptr, ++ CFIndex newsize, CFOptionFlags hint); ++ ++CF_EXPORT CFAllocatorRef CFAllocatorGetDefault (void); ++ ++CF_EXPORT void CFAllocatorSetDefault (CFAllocatorRef allocator); ++ ++CF_EXPORT void ++CFAllocatorGetContext (CFAllocatorRef allocator, CFAllocatorContext * context); ++ ++CF_EXPORT CFTypeID CFAllocatorGetTypeID (void); ++/** \} */ ++ ++ ++ ++/** \ingroup CFTypeRef ++ \{ ++ */ ++/* These function will be implemented in CFRuntime.c since they ++ require runtime support. */ ++CF_EXPORT CFStringRef CFCopyDescription (CFTypeRef cf); ++ ++CF_EXPORT CFStringRef CFCopyTypeIDDescription (CFTypeID typeID); ++ ++CF_EXPORT Boolean CFEqual (CFTypeRef cf1, CFTypeRef cf2); ++ ++CF_EXPORT CFAllocatorRef CFGetAllocator (CFTypeRef cf); ++ ++CF_EXPORT CFIndex CFGetRetainCount (CFTypeRef cf); ++ ++CF_EXPORT CFTypeID CFGetTypeID (CFTypeRef cf); ++ ++CF_EXPORT CFHashCode CFHash (CFTypeRef cf); ++ ++#if OS_API_VERSION(MAC_OS_X_VERSION_10_4, GS_API_LATEST) ++CF_EXPORT CFTypeRef CFMakeCollectable (CFTypeRef cf); ++#endif ++ ++CF_EXPORT void CFRelease (CFTypeRef cf); ++ ++CF_EXPORT CFTypeRef CFRetain (CFTypeRef cf); ++ ++CF_EXPORT CFTypeRef CFAutorelease(CFTypeRef arg); ++ ++#if OS_API_VERSION(MAC_OS_X_VERSION_10_7, GS_API_LATEST) ++CF_EXPORT void *_CFBridgingRelease (CFTypeRef cf); ++CF_EXPORT CFTypeRef _CFBridgingRetain (void *obj); ++ ++#if __has_feature(objc_arc) ++#define CFBridgingRetain(x) (__bridge_retained CFTypeRef)(x) ++#define CFBridgingRelease(x) (__bridge_transfer id)(x) ++#elif __OBJC__ ++#define CFBridgingRetain(x) _CFBridgingRetain((void *)(x)) ++#define CFBridgingRelease(x) (id)_CFBridgingRelease((x)) ++#else ++#define CFBridgingRetain(x) _CFBridgingRetain((void *)(x)) ++#define CFBridgingRelease(x) _CFBridgingRelease((x)) ++#endif ++#endif ++/** \} */ ++ ++ ++ ++/** \defgroup CFNullRef CFNull Reference ++ \{ ++ */ ++#if OS_API_VERSION(MAC_OS_X_VERSION_10_2, GS_API_LATEST) ++typedef struct __CFNull *CFNullRef; ++ ++CF_EXPORT CFNullRef kCFNull; ++ ++CFTypeID CFNullGetTypeID (void); ++#endif ++/** \} */ ++ ++CF_EXTERN_C_END ++#endif /* __COREFOUNDATION_CFBASE_H__ */ +Index: gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFArray.h +=================================================================== +--- a/src/gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFArray.h (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFArray.h (.../branches/gcc-8-branch) +@@ -0,0 +1,191 @@ ++/* CFArray.h ++ ++ Copyright (C) 2010 Free Software Foundation, Inc. ++ ++ Written by: Stefan Bidigaray ++ Date: January, 2010 ++ ++ This file is part of CoreBase. ++ ++ 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. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with this library; see the file COPYING.LIB. ++ If not, see <http://www.gnu.org/licenses/> or write to the ++ Free Software Foundation, 51 Franklin Street, Fifth Floor, ++ Boston, MA 02110-1301, USA. ++*/ ++ ++ ++#ifndef __COREFOUNDATION_CFARRAY_H__ ++#define __COREFOUNDATION_CFARRAY_H__ ++ ++#include "CFBase.h" ++ ++CF_EXTERN_C_BEGIN ++/** \ingroup CFArrayRef ++ \brief Reference to an immutable array object. ++ */ ++typedef const struct __CFArray *CFArrayRef; ++/** ++ \ingroup CFMutableArrayRef ++ \brief Reference to a mutable array object. ++ */ ++typedef struct __CFArray *CFMutableArrayRef; ++ ++/** \defgroup CFArrayRef CFArray Reference ++ \brief A CFArray and its mutable type, \ref CFMutableArrayRef ++ "CFMutableArray", are simple, low overhead, ordered containers for ++ objects. ++ \details ++ <code>\#include <CoreFoundation/CFArray.h></code> ++ \{ ++ */ ++ ++/** \name Callbacks ++ \{ ++ */ ++typedef void (*CFArrayApplierFunction) (const void *value, void *context); ++typedef CFStringRef (*CFArrayCopyDescriptionCallBack) (const void *value); ++typedef void (*CFArrayReleaseCallBack) (CFAllocatorRef allocator, ++ const void *value); ++typedef const void *(*CFArrayRetainCallBack) (CFAllocatorRef allocator, ++ const void *value); ++typedef Boolean (*CFArrayEqualCallBack) (const void *value1, ++ const void *value2); ++/** \} */ ++ ++/** \brief Structure with CFArray callbacks. ++ */ ++typedef struct _CFArrayCallBacks CFArrayCallBacks; ++struct _CFArrayCallBacks ++{ ++ CFIndex version; /**< Structure's version number. Current version is 0. */ ++ CFArrayRetainCallBack retain; ++ /**< The callback used to retain values added to the array. If NULL, ++ values are not retained. */ ++ CFArrayReleaseCallBack release; ++ CFArrayCopyDescriptionCallBack copyDescription; ++ CFArrayEqualCallBack equal; ++}; ++ ++/** \name Predefined Callback Structures ++ \{ ++ */ ++CF_EXPORT const CFArrayCallBacks kCFTypeArrayCallBacks; ++/** \} */ ++ ++ ++ ++/** \name Creating an Array ++ \{ ++ */ ++CF_EXPORT CFArrayRef ++CFArrayCreate (CFAllocatorRef allocator, const void **values, ++ CFIndex numValues, const CFArrayCallBacks * callBacks); ++ ++CF_EXPORT CFArrayRef ++CFArrayCreateCopy (CFAllocatorRef allocator, CFArrayRef theArray); ++/** \} */ ++ ++/** \name Examining an Array ++ \{ ++ */ ++CF_EXPORT CFIndex ++CFArrayBSearchValues (CFArrayRef theArray, CFRange range, const void *value, ++ CFComparatorFunction comparator, void *context); ++ ++CF_EXPORT Boolean ++CFArrayContainsValue (CFArrayRef theArray, CFRange range, const void *value); ++ ++CF_EXPORT CFIndex CFArrayGetCount (CFArrayRef theArray); ++ ++CF_EXPORT CFIndex ++CFArrayGetCountOfValue (CFArrayRef theArray, CFRange range, const void *value); ++ ++CF_EXPORT CFIndex ++CFArrayGetFirstIndexOfValue (CFArrayRef theArray, CFRange range, ++ const void *value); ++ ++CF_EXPORT CFIndex ++CFArrayGetLastIndexOfValue (CFArrayRef theArray, CFRange range, ++ const void *value); ++ ++CF_EXPORT void ++CFArrayGetValues (CFArrayRef theArray, CFRange range, const void **values); ++ ++CF_EXPORT const void *CFArrayGetValueAtIndex (CFArrayRef theArray, CFIndex idx); ++/** \} */ ++ ++/** \name Applying a Function to Elements ++ \{ ++ */ ++CF_EXPORT void ++CFArrayApplyFunction (CFArrayRef theArray, CFRange range, ++ CFArrayApplierFunction applier, void *context); ++/** \} */ ++ ++/** \name Getting the CFArray Type ID ++ \{ ++ */ ++CF_EXPORT CFTypeID CFArrayGetTypeID (void); ++/** \} */ ++ ++/** \} */ ++ ++/** \defgroup CFMutableArrayRef CFMutableArray Reference ++ \details <code>\#include <CoreFoundation/CFArray.h></code> ++ \{ ++ */ ++CF_EXPORT void ++CFArrayAppendArray (CFMutableArrayRef theArray, CFArrayRef otherArray, ++ CFRange otherRange); ++ ++CF_EXPORT void ++CFArrayAppendValue (CFMutableArrayRef theArray, const void *value); ++ ++CF_EXPORT CFMutableArrayRef ++CFArrayCreateMutable (CFAllocatorRef allocator, CFIndex capacity, ++ const CFArrayCallBacks * callBacks); ++ ++CF_EXPORT CFMutableArrayRef ++CFArrayCreateMutableCopy (CFAllocatorRef allocator, CFIndex capacity, ++ CFArrayRef theArray); ++ ++CF_EXPORT void ++CFArrayExchangeValuesAtIndices (CFMutableArrayRef theArray, CFIndex idx1, ++ CFIndex idx2); ++ ++CF_EXPORT void ++CFArrayInsertValueAtIndex (CFMutableArrayRef theArray, CFIndex idx, ++ const void *value); ++ ++CF_EXPORT void CFArrayRemoveAllValues (CFMutableArrayRef theArray); ++ ++CF_EXPORT void ++CFArrayRemoveValueAtIndex (CFMutableArrayRef theArray, CFIndex idx); ++ ++CF_EXPORT void ++CFArrayReplaceValues (CFMutableArrayRef theArray, CFRange range, ++ const void **newValues, CFIndex newCount); ++ ++CF_EXPORT void ++CFArraySetValueAtIndex (CFMutableArrayRef theArray, CFIndex idx, ++ const void *value); ++ ++CF_EXPORT void ++CFArraySortValues (CFMutableArrayRef theArray, CFRange range, ++ CFComparatorFunction comparator, void *context); ++ ++/** \} */ ++ ++CF_EXTERN_C_END ++#endif /* __COREFOUNDATION_CFARRAY_H__ */ +Index: gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFLocale.h +=================================================================== +--- a/src/gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFLocale.h (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFLocale.h (.../branches/gcc-8-branch) +@@ -0,0 +1,249 @@ ++/* CFLocale.h ++ ++ Copyright (C) 2010 Free Software Foundation, Inc. ++ ++ Written by: Stefan Bidigaray ++ Date: March, 2011 ++ ++ This file is part of the GNUstep CoreBase Library. ++ ++ 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. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with this library; see the file COPYING.LIB. ++ If not, see <http://www.gnu.org/licenses/> or write to the ++ Free Software Foundation, 51 Franklin Street, Fifth Floor, ++ Boston, MA 02110-1301, USA. ++*/ ++ ++#ifndef __COREFOUNDATION_CFLOCALE__ ++#define __COREFOUNDATION_CFLOCALE__ 1 ++ ++#include "CFBase.h" ++ ++#include "CFArray.h" ++#include "CFDictionary.h" ++ ++#if OS_API_VERSION(MAC_OS_X_VERSION_10_3, GS_API_LATEST) ++ ++CF_EXTERN_C_BEGIN ++ ++/** \defgroup CFLocaleRef CFLocale Reference ++ \brief CFLocale provides basic functionality for language and/or region ++ specific operations. ++ ++ Locale-sensitive operations, such as collation, calendars and ++ capitalization, may use CFLocale objects to provide language and/or region ++ specific functionality. ++ ++ CFLocale is "toll-free bridged" to NSLocale. ++ ++ \{ ++ */ ++typedef const struct __CFLocale *CFLocaleRef; ++ ++/** ++ */ ++enum ++{ ++ kCFLocaleLanguageDirectionUnknown = 0, ++ kCFLocaleLanguageDirectionLeftToRight = 1, ++ kCFLocaleLanguageDirectionRightToLeft = 2, ++ kCFLocaleLanguageDirectionTopToBottom = 3, ++ kCFLocaleLanguageDirectionBottomToTop = 4 ++}; ++typedef CFIndex CFLocaleLanguageDirection; ++ ++/** \name CFLocale Property Keys ++ \{ ++ */ ++CF_EXPORT const CFStringRef kCFLocaleMeasurementSystem; /* CFString */ ++CF_EXPORT const CFStringRef kCFLocaleDecimalSeparator; /* CFString */ ++CF_EXPORT const CFStringRef kCFLocaleGroupingSeparator; /* CFString */ ++CF_EXPORT const CFStringRef kCFLocaleCurrencySymbol; /* CFString */ ++CF_EXPORT const CFStringRef kCFLocaleCurrencyCode; /* CFString */ ++#if OS_API_VERSION(MAC_OS_X_VERSION_10_4, GS_API_LATEST) ++CF_EXPORT const CFStringRef kCFLocaleIdentifier; /* CFString */ ++CF_EXPORT const CFStringRef kCFLocaleLanguageCode; /* CFString */ ++CF_EXPORT const CFStringRef kCFLocaleCountryCode; /* CFString */ ++CF_EXPORT const CFStringRef kCFLocaleScriptCode; /* CFString */ ++CF_EXPORT const CFStringRef kCFLocaleVariantCode; /* CFString */ ++CF_EXPORT const CFStringRef kCFLocaleExemplarCharacterSet; /* CFCharacterSet */ ++CF_EXPORT const CFStringRef kCFLocaleCalendarIdentifier; /* CFString */ ++CF_EXPORT const CFStringRef kCFLocaleCalendar; /* CFCalendar */ ++CF_EXPORT const CFStringRef kCFLocaleCollationIdentifier; /* CFString */ ++CF_EXPORT const CFStringRef kCFLocaleUsesMetricSystem; /* CFBoolean */ ++#endif ++#if OS_API_VERSION(MAC_OS_X_VERSION_10_6, GS_API_LATEST) ++CF_EXPORT const CFStringRef kCFLocaleCollatorIdentifier; /* CFString */ ++CF_EXPORT const CFStringRef kCFLocaleQuotationBeginDelimiterKey; /* CFString */ ++CF_EXPORT const CFStringRef kCFLocaleQuotationEndDelimiterKey; /* CFString */ ++CF_EXPORT const CFStringRef kCFLocaleAlternateQuotationBeginDelimiterKey; /* CFString */ ++CF_EXPORT const CFStringRef kCFLocaleAlternateQuotationEndDelimiterKey; /* CFString */ ++#endif ++/** \} */ ++ ++/** \name CFCalendar Identifiers ++ \{ ++ */ ++CF_EXPORT const CFStringRef kCFGregorianCalendar; ++#if OS_API_VERSION(MAC_OS_X_VERSION_10_4, GS_API_LATEST) ++CF_EXPORT const CFStringRef kCFBuddhistCalendar; ++CF_EXPORT const CFStringRef kCFChineseCalendar; ++CF_EXPORT const CFStringRef kCFHebrewCalendar; ++CF_EXPORT const CFStringRef kCFIslamicCalendar; ++CF_EXPORT const CFStringRef kCFIslamicCivilCalendar; ++CF_EXPORT const CFStringRef kCFJapaneseCalendar; ++#endif ++#if OS_API_VERSION(MAC_OS_X_VERSION_10_6, GS_API_LATEST) ++CF_EXPORT const CFStringRef kCFRepublicOfChinaCalendar; ++CF_EXPORT const CFStringRef kCFPersianCalendar; ++CF_EXPORT const CFStringRef kCFIndianCalendar; ++CF_EXPORT const CFStringRef kCFISO8601Calendar; ++#endif ++/** \} */ ++ ++/** CFLocale Change Notification ++ */ ++CF_EXPORT const CFStringRef kCFLocaleCurrentLocaleDidChangeNotification; ++ ++ ++ ++/** \name Creating a Locale ++ \{ ++ */ ++CF_EXPORT CFLocaleRef ++CFLocaleCopyCurrent (void); ++ ++CF_EXPORT CFLocaleRef ++CFLocaleCreate (CFAllocatorRef allocator, ++ CFStringRef localeIdent); ++ ++CF_EXPORT CFLocaleRef ++CFLocaleCreateCopy (CFAllocatorRef allocator, ++ CFLocaleRef locale); ++ ++CF_EXPORT CFLocaleRef ++CFLocaleGetSystem (void); ++/** \} */ ++ ++/** \name Getting System Locale Information ++ \{ ++ */ ++#if OS_API_VERSION(MAC_OS_X_VERSION_10_4, GS_API_LATEST) ++CF_EXPORT CFArrayRef ++CFLocaleCopyAvailableLocaleIdentifiers (void); ++#endif ++/** \} */ ++ ++/** \name Getting ISO Information ++ \{ ++ */ ++#if OS_API_VERSION(MAC_OS_X_VERSION_10_4, GS_API_LATEST) ++CF_EXPORT CFArrayRef ++CFLocaleCopyISOCountryCodes (void); ++ ++CF_EXPORT CFArrayRef ++CFLocaleCopyISOLanguageCodes (void); ++ ++CF_EXPORT CFArrayRef ++CFLocaleCopyISOCurrencyCodes (void); ++#endif ++ ++#if OS_API_VERSION(MAC_OS_X_VERSION_10_5, GS_API_LATEST) ++CF_EXPORT CFArrayRef ++CFLocaleCopyCommonISOCurrencyCodes (void); ++#endif ++/** \{ */ ++ ++/** \name Accessing Language Information ++ \{ ++ */ ++#if OS_API_VERSION(MAC_OS_X_VERSION_10_5, GS_API_LATEST) ++CF_EXPORT CFArrayRef ++CFLocaleCopyPreferredLanguages (void); ++#endif ++ ++#if OS_API_VERSION(MAC_OS_X_VERSION_10_6, GS_API_LATEST) ++CF_EXPORT CFLocaleLanguageDirection ++CFLocaleGetLanguageCharacterDirection (CFStringRef isoLangCode); ++ ++CF_EXPORT CFLocaleLanguageDirection ++CFLocaleGetLanguageLineDirection (CFStringRef isoLangCode); ++#endif ++/** \} */ ++ ++/** \name Getting Information About a Locale ++ \{ ++ */ ++CF_EXPORT CFStringRef ++CFLocaleCopyDisplayNameForPropertyValue (CFLocaleRef displayLocale, ++ CFStringRef key, ++ CFStringRef value); ++ ++CF_EXPORT CFTypeRef ++CFLocaleGetValue (CFLocaleRef locale, ++ CFStringRef key); ++ ++CF_EXPORT CFStringRef ++CFLocaleGetIdentifier (CFLocaleRef locale); ++/** \} */ ++ ++/** \name Getting and Creating Locale Identifiers ++ \{ ++ */ ++CF_EXPORT CFStringRef ++CFLocaleCreateCanonicalLocaleIdentifierFromString (CFAllocatorRef allocator, ++ CFStringRef localeIdent); ++ ++#if OS_API_VERSION(MAC_OS_X_VERSION_10_4, GS_API_LATEST) ++CF_EXPORT CFStringRef ++CFLocaleCreateCanonicalLanguageIdentifierFromString (CFAllocatorRef allocator, ++ CFStringRef localeIdent); ++ ++CF_EXPORT CFDictionaryRef ++CFLocaleCreateComponentsFromLocaleIdentifier (CFAllocatorRef allocator, ++ CFStringRef localeIdent); ++ ++CF_EXPORT CFStringRef ++CFLocaleCreateLocaleIdentifierFromComponents (CFAllocatorRef allocator, ++ CFDictionaryRef dictionary); ++#endif ++/** \} */ ++ ++/** \name Windows Locale Codes ++ \{ ++ */ ++#if OS_API_VERSION(MAC_OS_X_VERSION_10_6, GS_API_LATEST) ++CF_EXPORT CFStringRef ++CFLocaleCreateLocaleIdentifierFromWindowsLocaleCode (CFAllocatorRef allocator, ++ UInt32 lcid); ++ ++CF_EXPORT UInt32 ++CFLocaleGetWindowsLocaleCodeFromLocaleIdentifier (CFStringRef localeIdent); ++#endif ++/** \} */ ++ ++/** \name Getting the CFLocale Type ID ++ \{ ++ */ ++CF_EXPORT CFTypeID ++CFLocaleGetTypeID (void); ++/** \} */ ++ ++/** \} */ ++ ++CF_EXTERN_C_END ++ ++#endif /* OS_API_VERSION >= MAC_OS_X_VERSION_10_3 */ ++ ++#endif /* __COREFOUNDATION_CFLOCALE__ */ ++ +Index: gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/GSObjCRuntime.h +=================================================================== +--- a/src/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/GSObjCRuntime.h (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/GSObjCRuntime.h (.../branches/gcc-8-branch) +@@ -0,0 +1,631 @@ ++/** Interface to ObjC runtime for GNUStep ++ Copyright (C) 1995, 1997, 2000, 2002, 2003 Free Software Foundation, Inc. ++ ++ Written by: Andrew Kachites McCallum <mccallum@gnu.ai.mit.edu> ++ Date: 1995 ++ Written by: Richard Frith-Macdonald <rfm@gnu.org> ++ Date: 2002 ++ ++ This file is part of the GNUstep Base Library. ++ ++ 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 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. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with this library; if not, write to the Free ++ Software Foundation, Inc., 51 Franklin Street, Fifth Floor, ++ Boston, MA 02111 USA. ++ ++ AutogsdocSource: Additions/GSObjCRuntime.m ++ ++ */ ++ ++#ifndef __GSObjCRuntime_h_GNUSTEP_BASE_INCLUDE ++#define __GSObjCRuntime_h_GNUSTEP_BASE_INCLUDE ++ ++#import "GSVersionMacros.h" ++#import "GSConfig.h" ++ ++#include <stdio.h> ++ ++#if 1 || NeXT_RUNTIME ++ #include <objc/objc.h> ++ #include <objc/objc-class.h> ++ #include <objc/objc-runtime.h> ++ #ifndef _C_ATOM ++ #define _C_ATOM '%' ++ #endif ++ #define _F_CONST 0x01 ++ #define _F_IN 0x01 ++ #define _F_OUT 0x02 ++ #define _F_INOUT 0x03 ++ #define _F_BYCOPY 0x04 ++ #define _F_ONEWAY 0x08 ++ #define _C_CONST 'r' ++ #define _C_IN 'n' ++ #define _C_INOUT 'N' ++ #define _C_OUT 'o' ++ #define _C_BYCOPY 'O' ++ #define _C_ONEWAY 'V' ++#else /* GNU Objective C Runtime */ ++ #include <objc/objc.h> ++ #if defined (__GNU_LIBOBJC__) ++ #include <objc/runtime.h> ++ #else ++ #include <objc/objc-api.h> ++ #include <objc/encoding.h> ++ #endif ++#endif ++ ++/* ++ * Hack for older compiler versions that don't have all defines ++ * needed in objc-api.h ++ */ ++#ifndef _C_LNG_LNG ++#define _C_LNG_LNG 'q' ++#endif ++#ifndef _C_ULNG_LNG ++#define _C_ULNG_LNG 'Q' ++#endif ++ ++#if OBJC2RUNTIME ++/* We have a real ObjC2 runtime. ++ */ ++#include <objc/runtime.h> ++#else ++/* We emulate an ObjC2 runtime. ++ */ ++#include <ObjectiveC2/objc/runtime.h> ++#endif ++ ++#ifdef __cplusplus ++extern "C" { ++#endif ++ ++@class NSArray; ++@class NSDictionary; ++@class NSObject; ++@class NSString; ++@class NSValue; ++ ++#ifndef YES ++#define YES 1 ++#endif ++#ifndef NO ++#define NO 0 ++#endif ++#ifndef nil ++#define nil 0 ++#endif ++ ++#if !defined(_C_CONST) ++#define _C_CONST 'r' ++#endif ++#if !defined(_C_IN) ++#define _C_IN 'n' ++#endif ++#if !defined(_C_INOUT) ++#define _C_INOUT 'N' ++#endif ++#if !defined(_C_OUT) ++#define _C_OUT 'o' ++#endif ++#if !defined(_C_BYCOPY) ++#define _C_BYCOPY 'O' ++#endif ++#if !defined(_C_BYREF) ++#define _C_BYREF 'R' ++#endif ++#if !defined(_C_ONEWAY) ++#define _C_ONEWAY 'V' ++#endif ++#if !defined(_C_GCINVISIBLE) ++#define _C_GCINVISIBLE '!' ++#endif ++ ++/* ++ * Functions for accessing instance variables directly - ++ * We can copy an ivar into arbitrary data, ++ * Get the type encoding for a named ivar, ++ * and copy a value into an ivar. ++ */ ++GS_EXPORT BOOL ++GSObjCFindVariable(id obj, const char *name, ++ const char **type, unsigned int *size, int *offset); ++ ++GS_EXPORT void ++GSObjCGetVariable(id obj, int offset, unsigned int size, void *data); ++ ++GS_EXPORT void ++GSObjCSetVariable(id obj, int offset, unsigned int size, const void *data); ++ ++GS_EXPORT NSArray * ++GSObjCMethodNames(id obj, BOOL recurse); ++ ++GS_EXPORT NSArray * ++GSObjCVariableNames(id obj, BOOL recurse); ++ ++/** ++ * <p>A Behavior can be seen as a "Protocol with an implementation" or a ++ * "Class without any instance variables". A key feature of behaviors ++ * is that they give a degree of multiple inheritance. ++ * </p> ++ * <p>Behavior methods, when added to a class, override the class's ++ * superclass methods, but not the class's methods. ++ * </p> ++ * <p>Whan a behavior class is added to a receiver class, not only are the ++ * methods defined in the behavior class added, but the methods from the ++ * behavior's class hierarchy are also added (unless already present). ++ * </p> ++ * <p>It's not the case that a class adding behaviors from another class ++ * must have "no instance vars". The receiver class just has to have the ++ * same layout as the behavior class (optionally with some additional ++ * ivars after those of the behavior class). ++ * </p> ++ * <p>This function provides Behaviors without adding any new syntax to ++ * the Objective C language. Simply define a class with the methods you ++ * want to add, then call this function with that class as the behavior ++ * argument. ++ * </p> ++ * <p>This function should be called in the +initialize method of the receiver. ++ * </p> ++ * <p>If you add several behaviors to a class, be aware that the order of ++ * the additions is significant. ++ * </p> ++ */ ++GS_EXPORT void ++GSObjCAddClassBehavior(Class receiver, Class behavior); ++ ++/** ++ * <p>An Override can be seen as a "category implemented as a separate class ++ * and manually added to the receiver class under program control, rather ++ * than automatically added by the compiler/runtime. ++ * </p> ++ * <p>Override methods, when added to a receiver class, replace the class's ++ * class's methods of the same name (or are added if the class did not define ++ * methods with that name). ++ * </p> ++ * <p>It's not the case that a class adding overrides from another class ++ * must have "no instance vars". The receiver class just has to have the ++ * same layout as the override class (optionally with some additional ++ * ivars after those of the override class). ++ * </p> ++ * <p>This function provides overrides without adding any new syntax to ++ * the Objective C language. Simply define a class with the methods you ++ * want to add, then call this function with that class as the override ++ * argument. ++ * </p> ++ * <p>This function should usually be called in the +initialize method ++ * of the receiver. ++ * </p> ++ * <p>If you add several overrides to a class, be aware that the order of ++ * the additions is significant. ++ * </p> ++ */ ++GS_EXPORT void ++GSObjCAddClassOverride(Class receiver, Class override); ++ ++/** Turn on (YES), off (NO) or test (-1) behavior debugging. ++ */ ++GS_EXPORT BOOL GSObjCBehaviorDebug(int setget); ++ ++GS_EXPORT NSValue * ++GSObjCMakeClass(NSString *name, NSString *superName, NSDictionary *iVars); ++ ++GS_EXPORT void ++GSObjCAddClasses(NSArray *classes); ++ ++/** ++ * Given a NULL terminated list of methods, add them to the class.<br /> ++ * If the method already exists in a superclass, the new version overrides ++ * that one, but if the method already exists in the class itsself, the ++ * new one is quietly ignored (replace==NO) or replaced with the new ++ * version (if replace==YES).<br /> ++ * To add class methods, cls should be the metaclass of the class to ++ * which the methods are being added. ++ */ ++GS_EXPORT void ++GSObjCAddMethods(Class cls, Method *list, BOOL replace); ++ ++/* ++ * Functions for key-value encoding ... they access values in an object ++ * either by selector or directly, but do so using NSNumber for the ++ * scalar types of data. ++ */ ++GS_EXPORT id ++GSObjCGetVal(NSObject *self, const char *key, SEL sel, ++ const char *type, unsigned size, int offset); ++ ++GS_EXPORT void ++GSObjCSetVal(NSObject *self, const char *key, id val, SEL sel, ++ const char *type, unsigned size, int offset); ++ ++/* ++ * This section includes runtime functions ++ * to query and manipulate the ObjC runtime structures. ++ * These functions take care to not use ObjC code so ++ * that they can safely be used in +(void)load implementations ++ * where applicable. ++ */ ++ ++/** ++ * Deprecated ... use objc_getClassList() ++ */ ++GS_EXPORT unsigned int ++GSClassList(Class *buffer, unsigned int max, BOOL clearCache); ++ ++/** ++ * GSObjCClass() is deprecated ... use object_getClass() ++ */ ++GS_EXPORT Class GSObjCClass(id obj); ++ ++/** ++ * GSObjCSuper() is deprecated ... use class_getSuperclass() ++ */ ++GS_EXPORT Class GSObjCSuper(Class cls); ++ ++/** ++ * GSObjCIsInstance() is deprecated ... use object_getClass() ++ * in conjunction with class_isMetaClass() ++ */ ++GS_EXPORT BOOL GSObjCIsInstance(id obj); ++ ++/** ++ * GSObjCIsClass() is deprecated ... use object_getClass() ++ * in conjunction with class_isMetaClass() ++ */ ++GS_EXPORT BOOL GSObjCIsClass(Class cls); ++ ++/** ++ * Test to see if class inherits from another class ++ * The argument to this function must NOT be nil. ++ */ ++GS_EXPORT BOOL GSObjCIsKindOf(Class cls, Class other); ++ ++/** ++ * GSClassFromName() is deprecated ... use objc_lookUpClass() ++ */ ++GS_EXPORT Class GSClassFromName(const char *name); ++ ++/** ++ * GSNameFromClass() is deprecated ... use class_getName() ++ */ ++GS_EXPORT const char *GSNameFromClass(Class cls); ++ ++/** ++ * GSClassNameFromObject() is deprecated ... use object_getClass() ++ * in conjunction with class_getName() ++ */ ++GS_EXPORT const char *GSClassNameFromObject(id obj); ++ ++/** ++ * GSNameFromSelector() is deprecated ... use sel_getName() ++ */ ++GS_EXPORT const char *GSNameFromSelector(SEL sel); ++ ++/** ++ * GSSelectorFromName() is deprecated ... use sel_getUid() ++ */ ++GS_EXPORT SEL ++GSSelectorFromName(const char *name); ++ ++/** ++ * Return the selector for the specified name and types.<br /> ++ * Returns a nul pointer if the name is nul.<br /> ++ * Creates a new selector if necessary.<br /> ++ * Code must NOT rely on this providing a selector with type information. ++ */ ++GS_EXPORT SEL ++GSSelectorFromNameAndTypes(const char *name, const char *types); ++ ++/** ++ * Return the type information from the specified selector.<br /> ++ * May return a nul pointer if the selector was a nul pointer or if it ++ * was not typed (or if the runtime does not support typed selectors).<br /> ++ * Code must NOT rely on this providing any type information. ++ */ ++GS_EXPORT const char * ++GSTypesFromSelector(SEL sel); ++ ++/** ++ * Compare only the type information ignoring qualifiers, the frame layout ++ * and register markers. Unlike sel_types_match, this function also ++ * handles comparisons of types with and without any layout information. ++ */ ++GS_EXPORT BOOL ++GSSelectorTypesMatch(const char *types1, const char *types2); ++ ++/** Takes full type information and skips forward to the actual type ++ * as specified in the _C_... constants. ++ */ ++GS_EXPORT const char * ++GSSkipTypeQualifierAndLayoutInfo(const char *types); ++ ++/** ++ * Returns a protocol object with the corresponding name. ++ * This function searches the registered classes for any protocol ++ * with the supplied name. If one is found, it is cached in ++ * for future requests. If efficiency is a factor then use ++ * GSRegisterProtocol() to insert a protocol explicitly into the cache ++ * used by this function. If no protocol is found this function returns ++ * nil. ++ */ ++GS_EXPORT Protocol * ++GSProtocolFromName(const char *name); ++ ++/** ++ * Registers proto in the cache used by GSProtocolFromName(). ++ */ ++GS_EXPORT void ++GSRegisterProtocol(Protocol *proto); ++ ++/** ++ * A variant of protocol_getMethodDescription which recursively searches ++ * parent protocols if the requested selector isn't found in the given ++ * protocol. ++ * ++ * Returns a {NULL, NULL} structure if the requested selector couldn't be ++ * found. ++ */ ++GS_EXPORT struct objc_method_description ++GSProtocolGetMethodDescriptionRecursive(Protocol *aProtocol, SEL aSel, BOOL isRequired, BOOL isInstance); ++ ++/* ++ * Unfortunately the definition of the symbols ++ * 'Method(_t)', 'MethodList(_t)' and 'IVar(_t)' ++ * are incompatible between the GNU and NeXT/Apple runtimes. ++ * We introduce GSMethod, GSMethodList and GSIVar to allow portability. ++ */ ++typedef Method GSMethod; ++typedef Ivar GSIVar; ++ ++/** ++ * Returns the pointer to the method structure ++ * for the selector in the specified class. ++ * Depending on searchInstanceMethods, this function searches ++ * either instance or class methods. ++ * Depending on searchSuperClassesm this function searches ++ * either the specified class only or also its superclasses.<br/> ++ * To obtain the implementation pointer IMP use returnValue->method_imp ++ * which should be safe across all runtimes.<br/> ++ * It should be safe to use this function in +load implementations.<br/> ++ * This function should currently (June 2004) be considered WIP. ++ * Please follow potential changes (Name, parameters, ...) closely until ++ * it stabilizes. ++ */ ++GS_EXPORT GSMethod ++GSGetMethod(Class cls, SEL sel, ++ BOOL searchInstanceMethods, ++ BOOL searchSuperClasses); ++ ++/** ++ * Deprecated .. does nothing. ++ */ ++GS_EXPORT void ++GSFlushMethodCacheForClass (Class cls); ++ ++/** ++ * Deprecated .. use class_getInstanceVariable() ++ */ ++GS_EXPORT GSIVar ++GSCGetInstanceVariableDefinition(Class cls, const char *name); ++ ++/** ++ * Deprecated .. use class_getInstanceVariable() ++ */ ++GS_EXPORT GSIVar ++GSObjCGetInstanceVariableDefinition(Class cls, NSString *name); ++ ++/** ++ * GSObjCVersion() is deprecated ... use class_getVersion() ++ */ ++GS_EXPORT int GSObjCVersion(Class cls); ++ ++/** ++ * Quickly return autoreleased data storage area. ++ */ ++GS_EXPORT void * ++GSAutoreleasedBuffer(unsigned size); ++ ++/** ++ * <p>Prints a message to fptr using the format string provided and any ++ * additional arguments. The format string is interpreted as by ++ * the NSString formatted initialisers, and understands the '%@' syntax ++ * for printing an object. ++ * </p> ++ * <p>The data is written to the file pointer in the default CString ++ * encoding if possible, as a UTF8 string otherwise. ++ * </p> ++ * <p>This function is recommended for printing general log messages. ++ * For debug messages use NSDebugLog() and friends. For error logging ++ * use NSLog(), and for warnings you might consider NSWarnLog(). ++ * </p> ++ */ ++GS_EXPORT BOOL ++GSPrintf (FILE *fptr, NSString *format, ...); ++ ++ ++ ++GS_EXPORT NSArray * ++GSObjCAllSubclassesOfClass(Class cls); ++ ++GS_EXPORT NSArray * ++GSObjCDirectSubclassesOfClass(Class cls); ++ ++/** Function to change the class of the specified instance to newClass. ++ * This handles memory debugging issues in GNUstep-base and also ++ * deals with class finalisation issues in a garbage collecting ++ * environment, so you should use this function rather than attempting ++ * to swizzle class pointers directly. ++ */ ++GS_EXPORT void ++GSClassSwizzle(id instance, Class newClass); ++ ++#if !defined(GS_GNUSTEP_V) || (GS_GNUSTEP_V >= GS_API_ANY && GS_GNUSTEP_V < 011500) ++//GS_API_VERSION(GS_API_ANY,011500) ++ ++GS_EXPORT const char * ++GSLastErrorStr(long error_id) GS_DEPRECATED_FUNC; ++ ++#endif ++ ++ ++ ++#ifndef GS_MAX_OBJECTS_FROM_STACK ++/** ++ * The number of objects to try to get from varargs into an array on ++ * the stack ... if there are more than this, use the heap. ++ * NB. This MUST be a multiple of 2 ++ */ ++#define GS_MAX_OBJECTS_FROM_STACK 128 ++#endif ++ ++/** ++ * <p>This is a macro designed to minimise the use of memory allocation and ++ * deallocation when you need to work with a vararg list of objects.<br /> ++ * The objects are unpacked from the vararg list into two 'C' arrays and ++ * then a code fragment you specify is able to make use of them before ++ * that 'C' array is destroyed. ++ * </p> ++ * <p>The firstObject argument is the name of the formal parameter in your ++ * method or function which precedes the ', ...' denoting variable args. ++ * </p> ++ * <p>The code argument is a piece of objective-c code to be executed to ++ * make use of the objects stored in the 'C' arrays.<br /> ++ * When this code is called the unsigned integer '__count' will contain the ++ * number of objects unpacked, the pointer '__objects' will point to ++ * the first object in each pair, and the pointer '__pairs' will point ++ * to an array containing the second halves of the pairs of objects ++ * whose first halves are in '__objects'.<br /> ++ * This lets you pack a list of the form 'key, value, key, value, ...' ++ * into an array of keys and an array of values. ++ * </p> ++ */ ++#define GS_USEIDPAIRLIST(firstObject, code...) ({\ ++ va_list __ap; \ ++ unsigned int __max = GS_MAX_OBJECTS_FROM_STACK; \ ++ unsigned int __count = 0; \ ++ id __buf[__max]; \ ++ id *__objects = __buf; \ ++ id *__pairs = &__objects[__max/2]; \ ++ id __obj = firstObject; \ ++ va_start(__ap, firstObject); \ ++ while (__obj != nil && __count < __max) \ ++ { \ ++ if ((__count % 2) == 0) \ ++ { \ ++ __objects[__count/2] = __obj; \ ++ } \ ++ else \ ++ { \ ++ __pairs[__count/2] = __obj; \ ++ } \ ++ __obj = va_arg(__ap, id); \ ++ if (++__count == __max) \ ++ { \ ++ while (__obj != nil) \ ++ { \ ++ __count++; \ ++ __obj = va_arg(__ap, id); \ ++ } \ ++ } \ ++ } \ ++ if ((__count % 2) == 1) \ ++ { \ ++ __pairs[__count/2] = nil; \ ++ __count++; \ ++ } \ ++ va_end(__ap); \ ++ if (__count > __max) \ ++ { \ ++ unsigned int __tmp; \ ++ __objects = (id*)malloc(__count*sizeof(id)); \ ++ __pairs = &__objects[__count/2]; \ ++ __objects[0] = firstObject; \ ++ va_start(__ap, firstObject); \ ++ for (__tmp = 1; __tmp < __count; __tmp++) \ ++ { \ ++ if ((__tmp % 2) == 0) \ ++ { \ ++ __objects[__tmp/2] = va_arg(__ap, id); \ ++ } \ ++ else \ ++ { \ ++ __pairs[__tmp/2] = va_arg(__ap, id); \ ++ } \ ++ } \ ++ va_end(__ap); \ ++ } \ ++ code; \ ++ if (__objects != __buf) free(__objects); \ ++}) ++ ++/** ++ * <p>This is a macro designed to minimise the use of memory allocation and ++ * deallocation when you need to work with a vararg list of objects.<br /> ++ * The objects are unpacked from the vararg list into a 'C' array and ++ * then a code fragment you specify is able to make use of them before ++ * that 'C' array is destroyed. ++ * </p> ++ * <p>The firstObject argument is the name of the formal parameter in your ++ * method or function which precedes the ', ...' denoting variable args. ++ * </p> ++ * <p>The code argument is a piece of objective-c code to be executed to ++ * make use of the objects stored in the 'C' array.<br /> ++ * When this code is called the unsigned integer '__count' will contain the ++ * number of objects unpacked, and the pointer '__objects' will point to ++ * the unpacked objects, ie. firstObject followed by the vararg arguments ++ * up to (but not including) the first nil. ++ * </p> ++ */ ++#define GS_USEIDLIST(firstObject, code...) ({\ ++ va_list __ap; \ ++ unsigned int __max = GS_MAX_OBJECTS_FROM_STACK; \ ++ unsigned int __count = 0; \ ++ id __buf[__max]; \ ++ id *__objects = __buf; \ ++ id __obj = firstObject; \ ++ va_start(__ap, firstObject); \ ++ while (__obj != nil && __count < __max) \ ++ { \ ++ __objects[__count] = __obj; \ ++ __obj = va_arg(__ap, id); \ ++ if (++__count == __max) \ ++ { \ ++ while (__obj != nil) \ ++ { \ ++ __count++; \ ++ __obj = va_arg(__ap, id); \ ++ } \ ++ } \ ++ } \ ++ va_end(__ap); \ ++ if (__count > __max) \ ++ { \ ++ unsigned int __tmp; \ ++ __objects = (id*)NSZoneMalloc(NSDefaultMallocZone(),__count*sizeof(id)); \ ++ va_start(__ap, firstObject); \ ++ __objects[0] = firstObject; \ ++ for (__tmp = 1; __tmp < __count; __tmp++) \ ++ { \ ++ __objects[__tmp] = va_arg(__ap, id); \ ++ } \ ++ va_end(__ap); \ ++ } \ ++ code; \ ++ if (__objects != __buf) NSZoneFree (NSDefaultMallocZone(),__objects); \ ++}) ++ ++ ++#ifdef __cplusplus ++} ++#endif ++ ++#endif /* __GSObjCRuntime_h_GNUSTEP_BASE_INCLUDE */ +Index: gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/NSArray+GNUstepBase.h +=================================================================== +--- a/src/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/NSArray+GNUstepBase.h (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/NSArray+GNUstepBase.h (.../branches/gcc-8-branch) +@@ -0,0 +1,78 @@ ++/** Declaration of extension methods for base additions ++ ++ Copyright (C) 2003-2010 Free Software Foundation, Inc. ++ ++ Written by: Richard Frith-Macdonald <rfm@gnu.org> ++ and: Adam Fedor <fedor@gnu.org> ++ ++ This file is part of the GNUstep Base Library. ++ ++ 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 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. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with this library; if not, write to the Free ++ Software Foundation, Inc., 51 Franklin Street, Fifth Floor, ++ Boston, MA 02111 USA. ++ ++*/ ++ ++#ifndef INCLUDED_NSArray_GNUstepBase_h ++#define INCLUDED_NSArray_GNUstepBase_h ++ ++#import "../GNUstepBase/GSVersionMacros.h" ++#import "../Foundation/NSArray.h" ++ ++#if defined(__cplusplus) ++extern "C" { ++#endif ++ ++#if OS_API_VERSION(GS_API_NONE,GS_API_LATEST) ++ ++@interface NSArray (GNUstepBase) ++ ++/** <p>Method for working with sorted arrays - use a binary chop ++ * to determine the insertion location for an object. If equal objects ++ * already exist in the array, they will be located immediately before ++ * the insertion position. ++ * </p> ++ * <p>The comparator function takes two items as arguments, the first is the ++ * item to be added, the second is the item already in the array. ++ * The function should return NSOrderedAscending if the item to be ++ * added is 'less than' the item in the array, NSOrderedDescending ++ * if it is greater, and NSOrderedSame if it is equal. ++ * </p> ++ */ ++- (NSUInteger) insertionPosition: (id)item ++ usingFunction: (NSComparisonResult (*)(id, id, void *))sorter ++ context: (void *)context; ++ ++/* <p>Method for working with sorted arrays - use a binary chop ++ * to determine the insertion location for an object. If equal objects ++ * already exist in the array, they will be located immediately before ++ * the insertion position. ++ * </p> ++ * <p>The selector identifies a method returning NSOrderedAscending if ++ * the receiver is 'less than' the argument, and NSOrderedDescending if ++ * it is greate. ++ * </p> ++ */ ++- (NSUInteger) insertionPosition: (id)item ++ usingSelector: (SEL)comp; ++@end ++ ++#endif /* OS_API_VERSION */ ++ ++#if defined(__cplusplus) ++} ++#endif ++ ++#endif /* INCLUDED_NSArray_GNUstepBase_h */ ++ +Index: gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/NSMutableString+GNUstepBase.h +=================================================================== +--- a/src/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/NSMutableString+GNUstepBase.h (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/NSMutableString+GNUstepBase.h (.../branches/gcc-8-branch) +@@ -0,0 +1,57 @@ ++/** Declaration of extension methods for base additions ++ ++ Copyright (C) 2003-2010 Free Software Foundation, Inc. ++ ++ Written by: Richard Frith-Macdonald <rfm@gnu.org> ++ and: Adam Fedor <fedor@gnu.org> ++ ++ This file is part of the GNUstep Base Library. ++ ++ 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 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. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with this library; if not, write to the Free ++ Software Foundation, Inc., 51 Franklin Street, Fifth Floor, ++ Boston, MA 02111 USA. ++ ++*/ ++ ++#ifndef INCLUDED_NSMutableString_GNUstepBase_h ++#define INCLUDED_NSMutableString_GNUstepBase_h ++ ++#import "GSVersionMacros.h" ++#import "../Foundation/NSString.h" ++ ++#if defined(__cplusplus) ++extern "C" { ++#endif ++ ++#if OS_API_VERSION(GS_API_NONE,GS_API_LATEST) ++ ++@interface NSMutableString (GNUstepBase) ++- (void) deleteSuffix: (NSString*)suffix; ++- (void) deletePrefix: (NSString*)prefix; ++- (NSString*) immutableProxy; ++- (void) replaceString: (NSString*)replace ++ withString: (NSString*)by; ++- (void) trimLeadSpaces; ++- (void) trimTailSpaces; ++- (void) trimSpaces; ++@end ++ ++#endif /* OS_API_VERSION */ ++ ++#if defined(__cplusplus) ++} ++#endif ++ ++#endif /* INCLUDED_NSMutableString_GNUstepBase_h */ ++ +Index: gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/GSConfig.h +=================================================================== +--- a/src/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/GSConfig.h (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/GSConfig.h (.../branches/gcc-8-branch) +@@ -0,0 +1,462 @@ ++/* Machine/OS specific configuration information for GNUstep ++ ++ Please NOTE - GSConfig.h is generated by the configure script from the ++ file GSConfig.h.in - changes/fixes need to be made to the original file, ++ not to the GSConfig.h generated from it. ++ ++ Copyright (C) 1998-2010 Free Software Foundation, Inc. ++ ++ Written by: Richard frith-Macdonald <richard@brainstorm.co.uk> ++ ++ This file is part of the GNUstep Base Library. ++ ++ 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 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. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with this library; if not, write to the Free ++ Software Foundation, Inc., 51 Franklin Street, Fifth Floor, ++ Boston, MA 02111 USA. ++ */ ++ ++#ifndef included_GSConfig_h ++#define included_GSConfig_h ++ ++/* Check the compiler to see if we are building on/for ms-windows. ++ * Whatever the compiler uses, we want a standard setting of _WIN64 ++ * to indicate 64bit AND _WIN32 to indicate ms-windows. ++ * These are defined by gcc, clang, and microsoft compilers anyway. ++ */ ++#if defined(__WIN32__) \ ++ || defined(__MS_WIN32__) \ ++ || defined(__MINGW32__) ++# if !defined(_WIN32) ++# define _WIN32 ++# endif ++#endif ++#if defined(__WIN64__) \ ++ || defined(__MS_WIN64__) \ ++ || defined(__MINGW64__) ++# if !defined(__WIN64__) ++# define __WIN64__ ++# endif ++# if !defined(_WIN32) ++# define _WIN32 ++# endif ++#endif ++ ++/* Check to see if this is a MINGW build (all we currently support) ++ */ ++#if defined(__MINGW32__) || defined(__MINGW64__) ++# if !defined(__MINGW__) ++# define __MINGW__ ++# endif ++#endif ++ ++// Make sure we expose the constants that we use in ObjC++ mode ++#ifndef __STDC_CONSTANT_MACROS ++#define __STDC_CONSTANT_MACROS 1 ++#endif ++#ifndef __STDC_LIMIT_MACROS ++#define __STDC_LIMIT_MACROS 1 ++#endif ++ ++#if !defined(NeXT_Foundation_LIBRARY) ++ ++/* An alternate to GS_FAKE_MAIN which forces the user to call the ++ NSProcessInfo initialization in 'main', GS_FAKE_MAIN must also ++ be undefined. */ ++#if 0 ++#define GS_PASS_ARGUMENTS 0 ++#endif ++ ++#define GS_FAKE_MAIN 0 ++#if GS_FAKE_MAIN ++ ++/* ++ * NOTE - if GS_FAKE_MAIN (above) is set to 1, this hack applies - and you ++ * must make sure that this file is included in any file that implements ++ * the 'main()' function and links with the GNUstep base libarary. ++ * You should NOT include this file in a program that does not link with ++ * the base library. ++ * This file is included automatically in NSObject.h and Foundation.h ++ * ++ * The Foundation classe NSProcessInfo need access to the argc, argv, ++ * and env variables of the main() function. The purpose of this (ugly hack) ++ * definition is to give the gstep-base library the opportunity to implement ++ * its own main function with private access to the global vars. The private ++ * main() implementation (in NSProcessInfo.m) will then call the user defined ++ * gnustep_base_user_main() function. ++ * ++ * The original hack was - ++ ** Written by: Georg Tuparev, EMBL & Academia Naturalis, ++ ** Heidelberg, Germany ++ ** Tuparev@EMBL-Heidelberg.de ++ ** ++ ** NOTE! This is very dirty and dangerous trick. I spend several hours ++ ** on thinking and man pages browsing, but couldn't find better solution. ++ ** I know that I will spend 666 years in the Computer Hell for writing ++ ** this hack, and the master devil (Bully Boy) will send me to write ++ ** Windowz software. ++ ** BTW, for writing this hack I got personal congratulations from Dennis ++ ** Ritchie and Bjarne Stroustrup sent me a bunch of flowers and asked me ++ ** to participate in the standardization committee for C-- v.6.0 as ++ ** responsible for the new Tab-Overriding-Operator and Scope-Sensitive- ++ ** Comments ... but this makes my situation even worse ;-) ++ ** - Georg ++ * ++ * On some systems, there are other relatively clean workarounds, if this ++ * applies to the system you are running on, your configuration script ++ * should have set GS_FAKE_MAIN to zero, so that this define hack will ++ * not be used. ++ */ ++ ++#define main gnustep_base_user_main ++ ++#endif /* GS_FAKE_MAIN */ ++#endif ++ ++/* ++ * Definition to specify if your processor stores words with the most ++ * significant byte first (like Motorola and SPARC, unlike Intel and VAX). ++ */ ++#define GS_WORDS_BIGENDIAN 0 ++ ++/* ++ * Size definitions for standard types ++ */ ++#define GS_SIZEOF_SHORT 2 ++#define GS_SIZEOF_INT 4 ++#define GS_SIZEOF_LONG 8 ++#define GS_SIZEOF_LONG_LONG 8 ++#define GS_SIZEOF_FLOAT 4 ++#define GS_SIZEOF_DOUBLE 8 ++#define GS_SIZEOF_VOIDP 8 ++ ++/* ++ * Size information to be places in bits 5 and 6 of type encoding bytes ++ * in archives (bits 0 to 4 are used for basic type info and bit 7 is ++ * used to mark cross-references to previously encoded objects). ++ */ ++#define _GSC_S_SHT _GSC_I16 ++#define _GSC_S_INT _GSC_I32 ++#define _GSC_S_LNG _GSC_I64 ++#define _GSC_S_LNG_LNG _GSC_I64 ++ ++/* ++ * Type definitions for types with known sizes. ++ */ ++typedef signed char gss8; ++typedef unsigned char gsu8; ++typedef signed short gss16; ++typedef unsigned short gsu16; ++typedef signed int gss32; ++typedef unsigned int gsu32; ++typedef signed long gss64; ++typedef unsigned long gsu64; ++typedef struct { gsu8 a[16]; } gss128; ++typedef struct { gsu8 a[16]; } gsu128; ++typedef float gsf32; ++typedef double gsf64; ++ ++/* ++ * Integer type with same size as a pointer ++ */ ++typedef unsigned long gsuaddr; ++typedef long gssaddr; ++typedef gsuaddr gsaddr; ++ ++/* ++ * Do we have real 64-bit and 128-bit integers or are we just pretending. ++ */ ++#define GS_HAVE_I64 1 ++#define GS_HAVE_I128 0 ++ ++/* ++ * Ensure some standard types are defined. ++ */ ++#include <inttypes.h> ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++/* ++ * PTR Limit information replacements for buggy headers ++ */ ++#if 0 ++#undef INTPTR_MAX ++#define INTPTR_MAX ++#undef INTPTR_MIN ++#define INTPTR_MIN ++#undef UINTPTR_MAX ++#define UINTPTR_MAX ++#endif ++ ++ ++/* ++ * Do we have zlib for file handle compression? ++ */ ++#define USE_ZLIB 1 ++ ++/* ++ * Do we have the GNU Multiple-precision library for NSDecimal? ++ */ ++//#define USE_GMP 1 ++#define USE_GMP 0 ++ ++#ifdef GS_WITH_GC ++#undef GS_WITH_GC ++#endif ++#define GS_WITH_GC 0 ++ ++/* ++ * Define to say if we use NXConstantString or NSConstantString ++ */ ++#define NXConstantString NSConstantString ++ ++ ++/* ++ * Wide unicode character type. ++ */ ++#ifndef UTF32Char ++#define UTF32Char uint32_t ++#endif ++ ++/* ++ * Native character type for use in systemcalls etc. ++ */ ++ ++#if defined(__MINGW__) ++# define GSNativeChar uint16_t ++#else ++# define GSNativeChar char ++#endif ++ ++/* ++ * Types used to avoid exposing pthread header in NSLock.h ++ * NB. These types should *never* be used except to provide enough space ++ * in a class layout for the type of data actually used by the pthread ++ * implementation of the current platform. ++ */ ++typedef struct { ++ uint8_t dummy[48]; ++} gs_cond_t __attribute__((aligned (8))); ++typedef struct { ++ uint8_t dummy[40]; ++} gs_mutex_t __attribute__((aligned (8))); ++ ++#define OBJC2RUNTIME 1 ++#define BASE_NATIVE_OBJC_EXCEPTIONS 1 ++#define GS_NONFRAGILE 0 ++#define GS_MIXEDABI 0 ++#define GS_USE_LIBXML 0 ++#define GS_USE_GNUTLS 0 ++#define GS_USE_AVAHI 0 ++#define GS_USE_MDNS 0 ++#define GS_USE_ICU 0 ++#define GS_USE_LIBDISPATCH 0 ++#define GS_USE_LIBDISPATCH_RUNLOOP 0 ++#define GS_HAVE_OBJC_ROOT_CLASS_ATTR 0 ++ ++#ifndef __has_include ++# define __has_include(x) 0 ++#endif ++#ifndef __has_feature ++# define __has_feature(x) 0 ++#endif ++#ifndef __has_builtin ++# define __has_builtin(x) 0 ++#endif ++ ++/* ++ * __has_extension has slightly different semantics from __has_feature. ++ * It evaluates to true if the feature is supported by by clang for the ++ * current compilation unit (language and -f switches), regardless of ++ * whether it is part of the language standard or just a (non-standard) ++ * extension. ++ */ ++#ifndef __has_extension ++# define __has_extension(x) __has_feature(x) ++#endif ++ ++#if defined(_WIN32) ++#define BOOL WinBOOL ++#define __OBJC_BOOL 1 ++#include <w32api.h> ++#ifndef _WIN32_WINNT ++#define _WIN32_WINNT Windows2000 ++#endif ++#if !defined(WINVER) ++#define WINVER Windows2000 ++#elif (WINVER < Windows2000) ++#undef WINVER ++#define WINVER Windows2000 ++#endif ++ ++#if defined(__WIN64__) ++#include <winsock2.h> ++#include <windows.h> ++#else ++#include <windows.h> ++#include <winsock2.h> ++#endif ++ ++#undef __OBJC_BOOL ++#undef BOOL ++#endif ++ ++/* Include the blocks runtime header if it's available (It shouldn't matter ++ * that this doesn't work on compilers that don't support __has_include(), ++ * because they also don't support blocks). ++ */ ++#if __has_include(<objc/block_runtime.h>) ++# include <objc/block_runtime.h> ++#endif ++ ++#ifndef _WIN32 ++#include <sys/param.h> /* Hack to get rid of warning in GNU libc 2.0.3. */ ++#endif ++ ++/* The following group of lines maintained by the gstep-base configure */ ++#define GNUSTEP_BASE_VERSION 1.26.0 ++#define GNUSTEP_BASE_MAJOR_VERSION 1 ++#define GNUSTEP_BASE_MINOR_VERSION 26 ++#define GNUSTEP_BASE_SUBMINOR_VERSION 0 ++#define GNUSTEP_BASE_GCC_VERSION 4.0.0 ++ ++/* Do not use the following macros! ++ */ ++#define OBJC_DEP(M) \ ++ ({ static BOOL beenHere = NO; if (beenHere == NO) {\ ++ beenHere = YES; fprintf(stderr, "%s:%d %s", __FILE__, __LINE__, (M));}}) ++ ++#define OBJC_MALLOC(VAR, TYPE, NUM) \ ++ (OBJC_DEP("OBJC_MALLOC is deprecated ... use malloc\n"),(VAR) = (TYPE *) malloc ((unsigned)(NUM)*sizeof(TYPE))) ++#define OBJC_VALLOC(VAR, TYPE, NUM) \ ++ (OBJC_DEP("OBJC_VALLOC is deprecated\n"),(VAR) = (TYPE *) valloc ((unsigned)(NUM)*sizeof(TYPE))) ++#define OBJC_ATOMIC_MALLOC(VAR, TYPE, NUM) \ ++ (OBJC_DEP("OBJC_ATOMIC_MALLOC is deprecated\n"),(VAR) = (TYPE *) malloc ((unsigned)(NUM)*sizeof(TYPE))) ++#define OBJC_REALLOC(VAR, TYPE, NUM) \ ++ (OBJC_DEP("OBJC_REALLOC is deprecated ... use realloc\n"),(VAR) = (TYPE *) realloc ((VAR), (unsigned)(NUM)*sizeof(TYPE))) ++#define OBJC_CALLOC(VAR, TYPE, NUM) \ ++ (OBJC_DEP("OBJC_CALLOC is deprecated ... use calloc\n"),(VAR) = (TYPE *) calloc ((unsigned)(NUM), sizeof(TYPE))) ++#define OBJC_FREE(PTR) (OBJC_DEP("OBJC_FREE is deprecated ... use free\n"), free (PTR)) ++ ++#ifndef MAX ++#define MAX(a,b) \ ++ ({__typeof__(a) _MAX_a = (a); __typeof__(b) _MAX_b = (b); \ ++ _MAX_a > _MAX_b ? _MAX_a : _MAX_b; }) ++#endif ++ ++#ifndef MIN ++#define MIN(a,b) \ ++ ({__typeof__(a) _MIN_a = (a); __typeof__(b) _MIN_b = (b); \ ++ _MIN_a < _MIN_b ? _MIN_a : _MIN_b; }) ++#endif ++ ++#ifndef ABS ++#define ABS(a) \ ++ ({__typeof__(a) _ABS_a = (a); \ ++ _ABS_a < 0 ? -_ABS_a : _ABS_a; }) ++#endif ++ ++#ifndef STRINGIFY ++#define STRINGIFY(s) XSTRINGIFY(s) ++#define XSTRINGIFY(s) #s ++#endif ++ ++#ifndef OBJC_STRINGIFY ++#define OBJC_STRINGIFY(s) OBJC_XSTRINGIFY(s) ++#define OBJC_XSTRINGIFY(s) @#s ++#endif ++ ++#ifndef PTR2LONG ++#define PTR2LONG(P) (((char*)(P))-(char*)0) ++#endif ++#ifndef LONG2PTR ++#define LONG2PTR(L) (((char*)0)+(L)) ++#endif ++ ++#if VSPRINTF_RETURNS_LENGTH ++#define VSPRINTF_LENGTH(VSPF_CALL) (VSPF_CALL) ++#else ++#define VSPRINTF_LENGTH(VSPF_CALL) strlen((VSPF_CALL)) ++#endif /* VSPRINTF_RETURNS_LENGTH */ ++ ++#if VASPRINTF_RETURNS_LENGTH ++#define VASPRINTF_LENGTH(VASPF_CALL) (VASPF_CALL) ++#else ++#define VASPRINTF_LENGTH(VASPF_CALL) strlen((VASPF_CALL)) ++#endif /* VSPRINTF_RETURNS_LENGTH */ ++ ++/* Evil hack to stop gcc-4.1 complaining about a dealloc method which ++ * does not call the superclass implementation. ++ */ ++#define GSNOSUPERDEALLOC if (0) [super dealloc] ++ ++#ifndef CF_EXCLUDE_CSTD_HEADERS ++#include <sys/types.h> ++#include <stdarg.h> ++#include <assert.h> ++#include <ctype.h> ++#include <errno.h> ++#include <float.h> ++#include <limits.h> ++#include <locale.h> ++#include <math.h> ++#include <setjmp.h> ++#include <signal.h> ++#include <stddef.h> ++#include <stdio.h> ++#include <stdlib.h> ++#include <string.h> ++#include <time.h> ++#include <stdbool.h> ++#endif ++ ++#if !__has_feature(objc_arc) ++// NetBSD > 6 defines __weak in cdefs_elf.h ++#ifdef __NetBSD__ ++#undef __weak ++#endif ++# if !defined(__weak) ++# define __weak ++# endif ++# if !defined(__strong) ++# define __strong ++# endif ++#endif ++ ++#ifndef __unsafe_unretained ++# if !__has_feature(objc_arc) ++# define __unsafe_unretained ++# endif ++#endif ++#ifndef __bridge ++# if !__has_feature(objc_arc) ++# define __bridge ++# endif ++#endif ++ ++#if __has_builtin(__builtin_unreachable) ++# define GS_UNREACHABLE() __builtin_unreachable() ++#else ++# define GS_UNREACHABLE() abort() ++#endif ++ ++#endif /* included_GSConfig_h */ ++ +Index: gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/NSObject+GNUstepBase.h +=================================================================== +--- a/src/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/NSObject+GNUstepBase.h (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/NSObject+GNUstepBase.h (.../branches/gcc-8-branch) +@@ -0,0 +1,242 @@ ++/** Declaration of extension methods for base additions ++ ++ Copyright (C) 2003-2010 Free Software Foundation, Inc. ++ ++ Written by: Richard Frith-Macdonald <rfm@gnu.org> ++ and: Adam Fedor <fedor@gnu.org> ++ ++ This file is part of the GNUstep Base Library. ++ ++ 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 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. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with this library; if not, write to the Free ++ Software Foundation, Inc., 51 Franklin Street, Fifth Floor, ++ Boston, MA 02111 USA. ++ ++*/ ++ ++#ifndef INCLUDED_NSObject_GNUstepBase_h ++#define INCLUDED_NSObject_GNUstepBase_h ++ ++#import "GSVersionMacros.h" ++#import "../Foundation/NSObject.h" ++ ++#if defined(__cplusplus) ++extern "C" { ++#endif ++ ++#if OS_API_VERSION(GS_API_NONE,GS_API_LATEST) ++ ++@class NSHashTable; ++ ++@interface NSObject (GNUstepBase) ++ ++/** ++ WARNING: The -compare: method for NSObject is deprecated ++ due to subclasses declaring the same selector with ++ conflicting signatures. ++ Comparision of arbitrary objects is not just meaningless ++ but also dangerous as most concrete implementations ++ expect comparable objects as arguments often accessing ++ instance variables directly. ++ This method will be removed in a future release. ++*/ ++- (NSComparisonResult) compare: (id)anObject; ++ ++/** For backward compatibility only ... use class_isMetaClass() on the ++ * class of the receiver instead. ++ */ ++- (BOOL) isInstance; ++ ++/** DEPRECATED ... do not use. ++ * Transmutes the receiver into an immutable version of the same object ++ * and returns the result.<br /> ++ * If the receiver is not a mutable object or cannot be simply transmuted, ++ * then this method either returns the receiver unchanged or, ++ * if the force flag is set to YES, returns an autoreleased copy of the ++ * receiver.<br /> ++ * Mutable classes should override this default implementation.<br /> ++ * This method is used in methods which are declared to return immutable ++ * objects (eg. an NSArray), but which create and build mutable ones ++ * internally. ++ */ ++- (id) makeImmutableCopyOnFail: (BOOL)force; ++ ++/** Transmutes the receiver into an immutable version of the same object. ++ * Returns YES if the receiver has become immutable, NO otherwise.<br /> ++ * The default implementation returns NO.<br /> ++ * Mutable classes which have an immutable counterpart they can efficiently ++ * change into, should override to transmute themselves and return YES.<br /> ++ * Immutable classes should override this to simply return YES with no ++ * further action.<br /> ++ * This method is used in methods which are declared to return immutable ++ * objects (eg. an NSArray), but which create and build mutable ones ++ * internally. ++ */ ++- (BOOL) makeImmutable; ++ ++/** ++ * Message sent when an implementation wants to explicitly exclude a method ++ * (but cannot due to compiler constraint), and wants to make sure it is not ++ * called by mistake. Default implementation raises an exception at runtime. ++ */ ++- (id) notImplemented: (SEL)aSel GS_NORETURN_METHOD; ++ ++/** ++ * Message sent when an implementation wants to explicitly require a subclass ++ * to implement a method (but cannot at compile time since there is no ++ * <code>abstract</code> keyword in Objective-C). Default implementation ++ * raises an exception at runtime to alert developer that he/she forgot to ++ * override a method. ++ */ ++- (id) subclassResponsibility: (SEL)aSel GS_NORETURN_METHOD; ++ ++/** ++ * Message sent when an implementation wants to explicitly exclude a method ++ * (but cannot due to compiler constraint) and forbid that subclasses ++ * implement it. Default implementation raises an exception at runtime. If a ++ * subclass <em>does</em> implement this method, however, the superclass's ++ * implementation will not be called, so this is not a perfect mechanism. ++ */ ++- (id) shouldNotImplement: (SEL)aSel GS_NORETURN_METHOD; ++ ++@end ++ ++/** This is an informal protocol ... classes may implement the method to ++ * report how much memory is used by the instance and any objects it acts ++ * as a container for. ++ */ ++@interface NSObject(MemoryFootprint) ++/* This method returns the memory usage of the receiver, excluding any ++ * objects already present in the exclude table.<br /> ++ * The argument is a hash table configured to hold non-retained pointer ++ * objects and is used to inform the receiver that its size should not ++ * be counted again if it's already in the table.<br /> ++ * The NSObject implementation returns zero if the receiver is in the ++ * table, but otherwise adds itself to the table and returns its memory ++ * footprint (the sum of all of its instance variables, but not any ++ * memory pointed to by those variables).<br /> ++ * Subclasses should override this method by calling the superclass ++ * implementation, and either return the result (if it was zero) or ++ * return that value plus the sizes of any memory owned by the receiver ++ * (eg found by calling the same method on objects pointed to by the ++ * receiver's instance variables). ++ */ ++- (NSUInteger) sizeInBytesExcluding: (NSHashTable*)exclude; ++@end ++ ++/** This is an informal protocol ... classes may implement the method and ++ * register themselves to have it called on process exit. ++ */ ++@interface NSObject(GSAtExit) ++/** This method is called on exit for any class which implements it and which ++ * has called +registerAtExit to register it to be called.<br /> ++ * The order in which methods for different classes is called is the reverse ++ * of the order in which the classes were registered, but it's best to assume ++ * the method can not depend on any other class being in a usable state ++ * at the point when the method is called (rather like +load).<br /> ++ * Typical use would be to release memory occupied by class data structures ++ * so that memory usage analysis software will not think the memory has ++ * been leaked. ++ */ +++ (void) atExit; ++@end ++ ++/** Category for methods handling leaked memory cleanup on exit of process ++ * (for use when debugging memory leaks).<br /> ++ * You enable this by calling the +setShouldCleanUp: method (done implicitly ++ * by gnustep-base if the GNUSTEP_SHOULD_CLEAN_UP environment variable is ++ * set to YES).<br /> ++ * Your class then has two options for performing cleanup when the process ++ * ends: ++ * <p>1. Use the +leak: method to register objects which are simply to be ++ * retained until the process ends, and then either ignored or released ++ * depending on the cleanup setting in force. This mechanism is simple ++ * and should be sufficient for many classes. ++ * </p> ++ * <p>2. Implement a +atExit method to be run when the process ends and, ++ * within your +initialize implementation, call +shouldCleanUp to determine ++ * whether cleanup should be done, and if it returns YES then call ++ * +registerAtExit to have your +atExit method called when the process ++ * terminates. ++ * </p> ++ * <p>The order in which 'leaked' objects are released and +atExit methods ++ * are called on process exist is the reverse of the order in which they ++ * werse set up suing this API. ++ * </p> ++ */ ++@interface NSObject(GSCleanup) ++ ++ ++/** This method simply retains its argument so that it will never be ++ * deallocated during normal operation, but keeps track of it so that ++ * it is released during process exit if cleanup is enabled.<br /> ++ * Returns its argument. ++ */ +++ (id) NS_RETURNS_RETAINED leak: (id)anObject; ++ ++/** This method retains the object at *anAddress so that it will never be ++ * deallocated during normal operation, but keeps track of the address ++ * so that the object is released and the address is zeroed during process ++ * exit if cleanup is enabled.<br /> ++ * Returns the object at *anAddress. ++ */ +++ (id) NS_RETURNS_RETAINED leakAt: (id*)anAddress; ++ ++/** Sets the receiver to have its +atExit method called at the point when ++ * the process terminates.<br /> ++ * Returns YES on success and NO on failure (if the class does not implement ++ * the method or if it is already registered to call it).<br /> ++ * Implemented as a call to +registerAtExit: with the selector for the +atExit ++ * method as its argument. ++ */ +++ (BOOL) registerAtExit; ++ ++/** Sets the receiver to have the specified method called at the point when ++ * the process terminates.<br /> ++ * Returns YES on success and NO on failure (if the class does not implement ++ * the method ir if it is already registered to call it). ++ */ +++ (BOOL) registerAtExit: (SEL)aSelector; ++ ++/** Specifies the default cleanup behavior on process exit ... the value ++ * returned by the NSObject implementation of the +shouldClanUp method.<br /> ++ * Calling this method with a YES argument implicitly calls the +enableAtExit ++ * method as well.<br /> ++ * The GNUstep Base library calls this method with the value obtained from ++ * the GNUSTEP_SHOULD_CLEAN_UP environment variable when NSObject is ++ * initialised. ++ */ +++ (void) setShouldCleanUp: (BOOL)aFlag; ++ ++/** Returns a flag indicating whether the receiver should clean up ++ * its data structures etc at process exit.<br /> ++ * The NSObject implementation returns the value set by the +setShouldCleanUp: ++ * method but subclasses may override this. ++ */ +++ (BOOL) shouldCleanUp; ++ ++@end ++ ++/* Macro to take an autoreleased object and either make it immutable or ++ * create an autoreleased copy of the original. ++ */ ++#define GS_IMMUTABLE(O) ([O makeImmutable] == YES ? O : AUTORELEASE([O copy])) ++ ++#endif /* OS_API_VERSION */ ++ ++#if defined(__cplusplus) ++} ++#endif ++ ++#endif /* INCLUDED_NSObject_GNUstepBase_h */ ++ +Index: gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/NSString+GNUstepBase.h +=================================================================== +--- a/src/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/NSString+GNUstepBase.h (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/NSString+GNUstepBase.h (.../branches/gcc-8-branch) +@@ -0,0 +1,105 @@ ++/** Declaration of extension methods for base additions ++ ++ Copyright (C) 2003-2010 Free Software Foundation, Inc. ++ ++ Written by: Richard Frith-Macdonald <rfm@gnu.org> ++ and: Adam Fedor <fedor@gnu.org> ++ ++ This file is part of the GNUstep Base Library. ++ ++ 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 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. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with this library; if not, write to the Free ++ Software Foundation, Inc., 51 Franklin Street, Fifth Floor, ++ Boston, MA 02111 USA. ++ ++*/ ++ ++#ifndef INCLUDED_NSString_GNUstepBase_h ++#define INCLUDED_NSString_GNUstepBase_h ++ ++#import "GSVersionMacros.h" ++#import "../Foundation/NSString.h" ++ ++#if defined(__cplusplus) ++extern "C" { ++#endif ++ ++#if OS_API_VERSION(GS_API_NONE,GS_API_LATEST) ++ ++/** ++ * Provides some additional (non-standard) utility methods. ++ */ ++@interface NSString (GNUstepBase) ++ ++/** ++ * Alternate way to invoke <code>stringWithFormat</code> if you have or wish ++ * to build an explicit <code>va_list</code> structure. ++ */ +++ (id) stringWithFormat: (NSString*)format ++ arguments: (va_list)argList NS_FORMAT_FUNCTION(1,0); ++ ++/** ++ * Returns a string formed by removing the prefix string from the ++ * receiver. Raises an exception if the prefix is not present. ++ */ ++- (NSString*) stringByDeletingPrefix: (NSString*)prefix; ++ ++/** ++ * Returns a string formed by removing the suffix string from the ++ * receiver. Raises an exception if the suffix is not present. ++ */ ++- (NSString*) stringByDeletingSuffix: (NSString*)suffix; ++ ++/** ++ * Returns a string formed by removing leading white space from the ++ * receiver. ++ */ ++- (NSString*) stringByTrimmingLeadSpaces; ++ ++/** ++ * Returns a string formed by removing trailing white space from the ++ * receiver. ++ */ ++- (NSString*) stringByTrimmingTailSpaces; ++ ++/** ++ * Returns a string formed by removing both leading and trailing ++ * white space from the receiver. ++ */ ++- (NSString*) stringByTrimmingSpaces; ++ ++/** ++ * Returns a string in which any (and all) occurrences of ++ * replace in the receiver have been replaced with by. ++ * Returns the receiver if replace ++ * does not occur within the receiver. NB. an empty string is ++ * not considered to exist within the receiver. ++ */ ++- (NSString*) stringByReplacingString: (NSString*)replace ++ withString: (NSString*)by; ++ ++/** ++ * An obsolete name for -substringWithRange: ... deprecated. ++ */ ++- (NSString*) substringFromRange: (NSRange)aRange; ++ ++@end ++ ++#endif /* OS_API_VERSION */ ++ ++#if defined(__cplusplus) ++} ++#endif ++ ++#endif /* INCLUDED_NSString_GNUstepBase_h */ ++ +Index: gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/GSVersionMacros.h +=================================================================== +--- a/src/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/GSVersionMacros.h (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/GSVersionMacros.h (.../branches/gcc-8-branch) +@@ -0,0 +1,460 @@ ++/* GSVersionMacros.h - macros for managing API versioning and visibility ++ Copyright (C) 2006-2014 Free Software Foundation, Inc. ++ ++ Written by: Richard Frith-Macdonald <rfm@gnu.org> ++ Date: Oct, October 2006 ++ ++ This file is part of GNUstep. ++ ++ 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 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. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with this library; if not, write to the Free ++ Software Foundation, Inc., 51 Franklin Street, Fifth Floor, ++ Boston, MA 02110-1301, USA. ++*/ ++ ++#ifndef __GNUSTEP_GSVERSIONMACROS_H_INCLUDED_ ++#define __GNUSTEP_GSVERSIONMACROS_H_INCLUDED_ ++ ++/* By default we defined NO_GNUSTEP to 0 so that we will include extensions. ++ */ ++#if !defined(NO_GNUSTEP) ++# define NO_GNUSTEP 0 ++#endif ++ ++/* Check consistency of definitions for system compatibility. ++ */ ++#if defined(STRICT_OPENSTEP) ++# define GS_OPENSTEP_V 10000 ++# undef NO_GNUSTEP ++# define NO_GNUSTEP 1 ++#elif defined(STRICT_MACOS_X) ++# define GS_OPENSTEP_V 100600 ++# undef NO_GNUSTEP ++# define NO_GNUSTEP 1 ++#endif ++ ++/* Define the GS_OSX_ADJUST() macro to adjust OSX style version macros ++ * to GNUstep style version macros. ++ */ ++#define GS_OSX_ADJUST(V) ((V) >= 10000 ? (V) : ((V)/100*10000 + (V)%100*10)) ++ ++/* Define OSX compatibility version macros if necessary. ++ */ ++#if !defined(MAC_OS_X_VERSION_10_0) ++#define MAC_OS_X_VERSION_10_0 1000 ++#define MAC_OS_X_VERSION_10_1 1010 ++#define MAC_OS_X_VERSION_10_2 1020 ++#define MAC_OS_X_VERSION_10_3 1030 ++#define MAC_OS_X_VERSION_10_4 1040 ++#define MAC_OS_X_VERSION_10_5 1050 ++#define MAC_OS_X_VERSION_10_6 1060 ++#define MAC_OS_X_VERSION_10_7 1070 ++#define MAC_OS_X_VERSION_10_8 1080 ++#define MAC_OS_X_VERSION_10_9 1090 ++#define MAC_OS_X_VERSION_10_10 1100 ++#define MAC_OS_X_VERSION_10_11 1110 ++#define MAC_OS_X_VERSION_10_12 1120 ++#define MAC_OS_X_VERSION_10_13 1130 ++#define MAC_OS_X_VERSION_10_14 1140 ++#endif /* MAC_OS_X_VERSION_10_0 */ ++ ++/* Allow MAC_OS_X_VERSION_MAX_ALLOWED to be used in place of GS_OPENSTEP_V ++ * if GS_OPENSTEP_V is not defined. ++ */ ++#ifndef GS_OPENSTEP_V ++#ifdef MAC_OS_X_VERSION_MAX_ALLOWED ++#define GS_OPENSTEP_V GS_OSX_ADJUST(MAC_OS_X_VERSION_MAX_ALLOWED) ++#endif /* MAC_OS_X_VERSION_MAX_ALLOWED */ ++#endif /* GS_OPENSTEP_V */ ++ ++/* ++ * NB. The version values below must be integers ... by convention these are ++ * made up of two digits each for major, minor and subminor version numbers ++ * (ie each is in the range 00 to 99 though a leading zero in the major ++ * number is not permitted). ++ * So for a MacOS-X 10.3.9 release the version number would be 100309 ++ * ++ * You may define GS_GNUSTEP_V or GS_OPENSTEP_V to ensure that your ++ * program only 'sees' the specified varsion of the API. ++ */ ++ ++/** ++ * <p>Macro to check a defined GNUstep version number (GS_GNUSTEP_V) against ++ * the supplied arguments. Returns true if no GNUstep version is specified, ++ * or if ADD <= version < REM, where ADD is the version ++ * number at which a feature guarded by the macro was introduced and ++ * REM is the version number at which it was removed. ++ * </p> ++ * <p>The version number arguments are six digit integers where the first ++ * two digits are the major version number, the second two are the minor ++ * version number and the last two are the subminor number (all left padded ++ * with a zero where necessary). However, for convenience you can also ++ * use the predefined constants ... ++ * <ref type="macro" id="GS_API_NONE">GS_API_NONE</ref>, ++ * <ref type="macro" id="GS_API_LATEST">GS_API_LATEST</ref>, ++ * </p> ++ * <p>Also see <ref type="macro" id="OS_API_VERSION">OS_API_VERSION</ref> ++ * </p> ++ * <p>NB. If you are changing the API (eg adding a new feature) you need ++ * to control the visibility io the new header file code using<br /> ++ * <code>#if GS_API_VERSION(ADD,GS_API_LATEST)</code><br /> ++ * where <code>ADD</code> is the version number of the next minor ++ * release after the most recent one.<br /> ++ * As a general principle you should <em>not</em> change the API with ++ * changing subminor version numbers ... as that tends to confuse ++ * people (though Apple has sometimes done it). ++ * </p> ++ */ ++#define GS_API_VERSION(ADD,REM) \ ++ (!defined(GS_GNUSTEP_V) || (GS_GNUSTEP_V >= ADD && GS_GNUSTEP_V < REM)) ++ ++/** ++ * <p>Macro to check a defined OpenStep/OPENSTEP/MacOS-X version against the ++ * supplied arguments. Returns true if no version is specified, or if ++ * ADD <= version < REM, where ADD is the version ++ * number at which a feature guarded by the macro was introduced and ++ * REM is the version number at which it was removed. ++ * </p> ++ * <p>The version number arguments are six digit integers where the first ++ * two digits are the major version number, the second two are the minor ++ * version number and the last two are the subminor number (all left padded ++ * with a zero where necessary). However, for convenience you can also ++ * use any of several predefined constants ... ++ * <ref type="macro" id="GS_API_NONE">GS_API_NONE</ref>, ++ * <ref type="macro" id="GS_API_LATEST">GS_API_LATEST</ref>, ++ * <ref type="macro" id="GS_API_OSSPEC">GS_API_OSSPEC</ref>, ++ * <ref type="macro" id="GS_API_OPENSTEP">GS_API_OPENSTEP</ref>, ++ * <ref type="macro" id="GS_API_MACOSX">GS_API_MACOSX</ref> ++ * </p> ++ * <p>Also see <ref type="macro" id="GS_API_VERSION">GS_API_VERSION</ref> ++ * </p> ++ * <p>For OSX compatibility, this macro also supports the use of Apple's ++ * symbolic constants for version numbering. Their contants are currently ++ * four digit values (two digits for the major version, one for the minor, ++ * and one for the subminor). ++ * </p> ++ * <p>The Apple compatibility version macros are currently: ++ * <ref type="macro" id="MAC_OS_X_VERSION_10_0">MAC_OS_X_VERSION_10_0</ref>, ++ * <ref type="macro" id="MAC_OS_X_VERSION_10_1">MAC_OS_X_VERSION_10_1</ref>, ++ * <ref type="macro" id="MAC_OS_X_VERSION_10_2">MAC_OS_X_VERSION_10_2</ref>, ++ * <ref type="macro" id="MAC_OS_X_VERSION_10_3">MAC_OS_X_VERSION_10_3</ref>, ++ * <ref type="macro" id="MAC_OS_X_VERSION_10_4">MAC_OS_X_VERSION_10_4</ref>, ++ * <ref type="macro" id="MAC_OS_X_VERSION_10_5">MAC_OS_X_VERSION_10_5</ref>, ++ * <ref type="macro" id="MAC_OS_X_VERSION_10_6">MAC_OS_X_VERSION_10_6</ref>, ++ * <ref type="macro" id="MAC_OS_X_VERSION_10_7">MAC_OS_X_VERSION_10_7</ref>, ++ * <ref type="macro" id="MAC_OS_X_VERSION_10_8">MAC_OS_X_VERSION_10_8</ref> ++ * <ref type="macro" id="MAC_OS_X_VERSION_10_9">MAC_OS_X_VERSION_10_9</ref> ++ * </p> ++ */ ++#define OS_API_VERSION(ADD,REM) \ ++ (!defined(GS_OPENSTEP_V) \ ++ || (GS_OPENSTEP_V>=GS_OSX_ADJUST(ADD) && GS_OPENSTEP_V<GS_OSX_ADJUST(REM))) ++ ++/** ++ * A constant which is the lowest possible version number (0) so that ++ * when used as the removal version (second argument of the GS_API_VERSION ++ * or OS_API_VERSION macro) represents a feature which is not present in ++ * any version.<br /> ++ * eg.<br /> ++ * #if <ref type="macro" id="OS_API_VERSION">OS_API_VERSION</ref> ++ * (GS_API_NONE, GS_API_NONE)<br /> ++ * denotes code not present in OpenStep/OPENSTEP/MacOS-X ++ */ ++#define GS_API_NONE 0 ++ ++/** ++ * A constant to represent a feature which is still present in the latest ++ * version. This is the highest possible version number.<br /> ++ * eg.<br /> ++ * #if <ref type="macro" id="OS_API_VERSION">OS_API_VERSION</ref> ++ * (GS_API_MACOSX, GS_API_LATEST)<br /> ++ * denotes code present from the initial MacOS-X version onwards. ++ */ ++#define GS_API_LATEST 999999 ++ ++/** ++ * The version number of the initial OpenStep specification.<br /> ++ * eg.<br /> ++ * #if <ref type="macro" id="OS_API_VERSION">OS_API_VERSION</ref> ++ * (GS_API_OSSPEC, GS_API_LATEST)<br /> ++ * denotes code present from the OpenStep specification onwards. ++ */ ++#define GS_API_OSSPEC 10000 ++ ++/** ++ * The version number of the first OPENSTEP implementation.<br /> ++ * eg.<br /> ++ * #if <ref type="macro" id="OS_API_VERSION">OS_API_VERSION</ref> ++ * (GS_API_OPENSTEP, GS_API_LATEST)<br /> ++ * denotes code present from the initial OPENSTEP version onwards. ++ */ ++#define GS_API_OPENSTEP 40000 ++ ++/** ++ * The version number of the first MacOS-X implementation.<br /> ++ * eg.<br /> ++ * #if <ref type="macro" id="OS_API_VERSION">OS_API_VERSION</ref> ++ * (GS_API_MACOSX, GS_API_LATEST)<br /> ++ * denotes code present from the initial MacOS-X version onwards. ++ */ ++#define GS_API_MACOSX 100000 ++ ++/* Allow OSX code comparing MAC_OS_X_VERSION_MAX_ALLOWED with a specific ++ * version to see if that version is allowed, to always have it allowed ++ * on GNUstep. ++ */ ++#ifndef MAC_OS_X_VERSION_MAX_ALLOWED ++#define MAC_OS_X_VERSION_MAX_ALLOWED GS_API_LATEST ++#endif /* MAC_OS_X_VERSION_MAX_ALLOWED */ ++ ++ ++#if defined(GNUSTEP_BASE_INTERNAL) ++#include "GNUstepBase/GSConfig.h" ++#else ++#include "GSConfig.h" ++#endif ++ ++ ++#if defined(__GNUC__) && defined(__GNUC_MINOR__) && !defined(__clang__) ++# define GS_GCC_MINREQ(maj, min) \ ++ ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min)) ++#else ++# define GS_GCC_MINREQ(maj, min) 0 ++#endif ++ ++#if defined(__clang__) ++# define GS_CLANG_MINREQ(maj, min) \ ++ ((__clang_major__ << 16) + __clang_minor__ >= ((maj) << 16) + (min)) ++#else ++# define GS_CLANG_MINREQ(maj, min) 0 ++#endif ++ ++/* Attribute definitions for attributes which may or may not be supported ++ * depending on the compiler being used. ++ * NB we currently expect gcc to be version 4 or later. ++ * ++ * The definition should be of the form GS_XXX_CONTEXT where XXX is the ++ * name of the attribute and CONTEXT is one of FUNC, METH, or IVAR ++ * depending on where the attribute can be applied. ++ */ ++ ++#if defined(__clang__) || GS_GCC_MINREQ(3,1) ++# define GS_DEPRECATED_FUNC __attribute__ ((deprecated)) ++#else ++# define GS_DEPRECATED_FUNC ++#endif ++ ++#define GS_UNUSED_ARG __attribute__((unused)) ++ ++#define GS_UNUSED_FUNC __attribute__((unused)) ++ ++// FIXME ... what version of gcc? ++#if __clang__ ++# define GS_UNUSED_IVAR __attribute__((unused)) ++#else ++# define GS_UNUSED_IVAR ++#endif ++ ++ ++ ++#ifndef __has_feature ++#define __has_feature(x) 0 ++#endif ++ ++/* The following is for deciding whether private instance variables ++ * should be visible ... if we are building with a compiler which ++ * does not define __has_feature then we know we don't have non-fragile ++ * ivar support. ++ * In the header we bracket instance variable declarations in a ++ * '#if GS_EXPOSE(classname) ... #endif' sequence, so that the variables ++ * will not be visible to code which uses the library. ++ * In the source file we define EXPOSE_classname_IVARS to be 1 ++ * before including the header, so that the ivars are always available ++ * in the class source itsself ++ */ ++ ++#if GS_MIXEDABI ++# undef GS_NONFRAGILE ++# define GS_NONFRAGILE 0 /* Mixed is treated as fragile */ ++#else ++# if (__has_feature(objc_nonfragile_abi)) ++# if !GS_NONFRAGILE ++# if defined(GNUSTEP_BASE_INTERNAL) ++# error "You are building gnustep-base using the objc-nonfragile-abi but your gnustep-base was not configured to use it." ++# endif ++# endif ++# else ++# if GS_NONFRAGILE ++# error "Your gnustep-base was configured for the objc-nonfragile-abi but you are not using it now." ++# endif ++# endif ++#endif ++ ++#define GS_EXPOSE(X) (!GS_NONFRAGILE || defined(EXPOSE_##X##_IVARS)) ++ ++/* Static analyser macros: Provide annotations to help the analyser */ ++#ifdef __clang__ ++# define GS_NORETURN_METHOD __attribute__((__noreturn__)) ++#else ++# define GS_NORETURN_METHOD ++#endif ++ ++#ifndef NS_RETURNS_RETAINED ++# if __has_feature(attribute_ns_returns_retained) ++# define NS_RETURNS_RETAINED __attribute__((ns_returns_retained)) ++# else ++# define NS_RETURNS_RETAINED ++# endif ++#endif ++ ++#ifndef NS_RETURNS_NOT_RETAINED ++# if __has_feature(attribute_ns_returns_not_retained) ++# define NS_RETURNS_NOT_RETAINED __attribute__((ns_returns_not_retained)) ++# else ++# define NS_RETURNS_NOT_RETAINED ++# endif ++#endif ++ ++#ifndef NS_CONSUMED ++# if __has_feature(attribute_ns_consumed) ++# define NS_CONSUMED __attribute__((ns_consumed)) ++# else ++# define NS_CONSUMED ++# endif ++#endif ++ ++ ++#ifndef NS_CONSUMES_SELF ++# if __has_feature(attribute_ns_consumes_self) ++# define NS_CONSUMES_SELF __attribute__((ns_consumes_self)) ++# else ++# define NS_CONSUMES_SELF ++# endif ++#endif ++ ++#if defined(__clang__) && defined(__OBJC__) ++static inline void gs_consumed(id NS_CONSUMED o) GS_UNUSED_FUNC; ++static inline void gs_consumed(id NS_CONSUMED GS_UNUSED_ARG o) { return; } ++#define GS_CONSUMED(O) gs_consumed(O); ++#else ++#define GS_CONSUMED(O) ++#endif ++ ++/* Include the appropriate header for ObjC2 blocks support if it is in use. ++ * ++ * FIXME: "OBJC2RUNTIME" is set to "1" if the runtime supports the ObjC2 ++ * runtime API, which is unrelated to whether the compiler has blocks ++ * support or not. ++ */ ++#if __has_feature(blocks) ++# if OBJC2RUNTIME ++# if defined(__APPLE__) ++# include <Block.h> ++# else ++# include <objc/blocks_runtime.h> ++# endif ++# else ++# include <ObjectiveC2/blocks_runtime.h> ++# endif ++#endif ++ ++/* Attribute definition for root classes, annotates the interface declaration ++ * of the class. ++ */ ++#ifndef GS_ROOT_CLASS ++# if GS_HAVE_OBJC_ROOT_CLASS_ATTR || __has_feature(attribute_objc_root_class) ++# define GS_ROOT_CLASS __attribute__((objc_root_class)) ++# else ++# define GS_ROOT_CLASS ++# endif ++#endif ++ ++ ++ ++#if defined(GNUSTEP_WITH_DLL) ++ ++#if BUILD_libgnustep_base_DLL ++# ++# if defined(__MINGW__) ++ /* On Mingw, the compiler will export all symbols automatically, so ++ * __declspec(dllexport) is not needed. ++ */ ++# define GS_EXPORT extern ++# define GS_DECLARE ++# else ++# define GS_EXPORT __declspec(dllexport) ++# define GS_DECLARE __declspec(dllexport) ++# endif ++#else ++# define GS_EXPORT extern __declspec(dllimport) ++# define GS_DECLARE __declspec(dllimport) ++#endif ++ ++#else /* GNUSTEP_WITH[OUT]_DLL */ ++ ++# define GS_EXPORT extern ++# define GS_DECLARE ++ ++#endif ++ ++ ++/* Attribute macros compatible with Apple. ++ */ ++ ++#ifndef NS_FORMAT_ARGUMENT ++#if defined(__clang__) || GS_GCC_MINREQ(4,2) ++# define NS_FORMAT_ARGUMENT(A) __attribute__((format_arg(A))) ++#else ++# define NS_FORMAT_ARGUMENT(F,A) ++#endif ++#endif ++ ++// FIXME ... what version of gcc? ++#ifndef NS_FORMAT_FUNCTION ++#if __clang__ ++# define NS_FORMAT_FUNCTION(F,A) __attribute__((format(__NSString__, F, A))) ++#else ++# define NS_FORMAT_FUNCTION(F,A) ++#endif ++#endif ++ ++#ifndef NS_REQUIRES_NIL_TERMINATION ++#define NS_REQUIRES_NIL_TERMINATION __attribute__((sentinel)) ++#endif ++ ++// FIXME ... what exact version of clang and gcc? ++#ifndef UNAVAILABLE_ATTRIBUTE ++#if defined(__clang__) || GS_GCC_MINREQ(4,0) ++# define UNAVAILABLE_ATTRIBUTE __attribute__((unavailable)) ++#else ++# define UNAVAILABLE_ATTRIBUTE ++#endif ++#endif ++ ++/* Check if compiler supports @optional in protocols ++ */ ++#if defined(__clang__) || GS_GCC_MINREQ(4,6) ++# define GS_PROTOCOLS_HAVE_OPTIONAL 1 ++#else ++# define GS_PROTOCOLS_HAVE_OPTIONAL 0 ++#endif ++ ++/* Check if compiler supports declared properties ++ */ ++#if defined(__clang__) || GS_GCC_MINREQ(4,6) ++# define GS_HAS_DECLARED_PROPERTIES 1 ++#else ++# define GS_HAS_DECLARED_PROPERTIES 0 ++#endif ++ ++#endif /* __GNUSTEP_GSVERSIONMACROS_H_INCLUDED_ */ +Index: gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/GNUstep.h +=================================================================== +--- a/src/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/GNUstep.h (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/GNUstep.h (.../branches/gcc-8-branch) +@@ -0,0 +1,418 @@ ++/* GNUstep.h - macros to make easier to port gnustep apps to macos-x ++ Copyright (C) 2001 Free Software Foundation, Inc. ++ ++ Written by: Nicola Pero <n.pero@mi.flashnet.it> ++ Date: March, October 2001 ++ ++ This file is part of GNUstep. ++ ++ 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 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. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with this library; if not, write to the Free ++ Software Foundation, Inc., 51 Franklin Street, Fifth Floor, ++ Boston, MA 02110-1301, USA. ++*/ ++ ++#ifndef __GNUSTEP_GNUSTEP_H_INCLUDED_ ++#define __GNUSTEP_GNUSTEP_H_INCLUDED_ ++ ++/* The contents of this file are designed to be usable with either ++ * GNUstep-base or MacOS-X Foundation. ++ */ ++ ++#ifndef __has_feature ++# define __has_feature(x) 0 ++#endif ++ ++/* ++ * __has_extension has slightly different semantics from __has_feature. ++ * It evaluates to true if the feature is supported by by clang for the ++ * current compilation unit (language and -f switches), regardless of ++ * whether it is part of the language standard or just a (non-standard) ++ * extension. ++ */ ++#ifndef __has_extension ++# define __has_extension(x) __has_feature(x) ++#endif ++ ++/* ++ * __has_attribute is the equivalent to __has_feature and __has_extension ++ * for GNU-style attributes. ++ */ ++#ifndef __has_attribute ++# define __has_attribute(x) 0 ++#endif ++ ++#if __has_feature(objc_arc) ++ ++#ifndef RETAIN ++#define RETAIN(object) (object) ++#endif ++#ifndef RELEASE ++#define RELEASE(object) ++#endif ++#ifndef AUTORELEASE ++#define AUTORELEASE(object) (object) ++#endif ++ ++#ifndef TEST_RETAIN ++#define TEST_RETAIN(object) (object) ++#endif ++#ifndef TEST_RELEASE ++#define TEST_RELEASE(object) ++#endif ++#ifndef TEST_AUTORELEASE ++#define TEST_AUTORELEASE(object) (object) ++#endif ++ ++#ifndef ASSIGN ++#define ASSIGN(object,value) object = (value) ++#endif ++#ifndef ASSIGNCOPY ++#define ASSIGNCOPY(object,value) object = [(value) copy] ++#endif ++#ifndef DESTROY ++#define DESTROY(object) object = nil ++#endif ++ ++#define IF_NO_GC(X) ++ ++#ifndef ENTER_POOL ++#define ENTER_POOL @autoreleasepool{do{ ++#endif ++ ++#ifndef LEAVE_POOL ++#define LEAVE_POOL }while(0);} ++#endif ++ ++#ifndef DEALLOC ++#define DEALLOC ++#endif ++ ++#else ++ ++#ifndef RETAIN ++/** ++ * Basic retain operation ... calls [NSObject-retain]<br /> ++ * Deprecated ... pointless on modern processors. ++ * Simply call the -retain method. ++ */ ++#define RETAIN(object) [(object) retain] ++#endif ++ ++#ifndef RELEASE ++/** ++ * Basic release operation ... calls [NSObject-release]<br /> ++ * Deprecated ... pointless on modern processors. ++ * Simply call the -release method. ++ */ ++#define RELEASE(object) [(object) release] ++#endif ++ ++#ifndef AUTORELEASE ++/** ++ * Basic autorelease operation ... calls [NSObject-autorelease]<br /> ++ * Deprecated ... pointless on modern processors. ++ * Simply call the -autorelease method. ++ */ ++#define AUTORELEASE(object) [(object) autorelease] ++#endif ++ ++#ifndef TEST_RETAIN ++/** ++ * Tested retain - only invoke the ++ * objective-c method if the receiver is not nil.<br /> ++ * Deprecated ... pointless on modern processors. ++ * Simply call the -retain method. ++ */ ++#define TEST_RETAIN(object) ({\ ++id __object = (object); (__object != nil) ? [__object retain] : nil; }) ++#endif ++ ++#ifndef TEST_RELEASE ++/** ++ * Tested release - only invoke the ++ * objective-c method if the receiver is not nil.<br /> ++ * Deprecated ... pointless on modern processors. ++ * Simply call the -release method. ++ */ ++#define TEST_RELEASE(object) ({\ ++id __object = (object); if (__object != nil) [__object release]; }) ++#endif ++ ++#ifndef TEST_AUTORELEASE ++/** ++ * Tested autorelease - only invoke the ++ * objective-c method if the receiver is not nil.<br /> ++ * Deprecated ... pointless on modern processors. ++ * Simply call the -autorelease method. ++ */ ++#define TEST_AUTORELEASE(object) ({\ ++id __object = (object); (__object != nil) ? [__object autorelease] : nil; }) ++#endif ++ ++#ifndef ASSIGN ++/** ++ * ASSIGN(object,value) assigns the value to the object with ++ * appropriate retain and release operations.<br /> ++ * Use this to avoid retain/release errors. ++ */ ++#define ASSIGN(object,value) ({\ ++ id __object = object; \ ++ object = [(value) retain]; \ ++ [__object release]; \ ++}) ++#endif ++ ++#ifndef ASSIGNCOPY ++/** ++ * ASSIGNCOPY(object,value) assigns a copy of the value to the object ++ * with release of the original.<br /> ++ * Use this to avoid retain/release errors. ++ */ ++#define ASSIGNCOPY(object,value) ({\ ++ id __object = object; \ ++ object = [(value) copy];\ ++ [__object release]; \ ++}) ++#endif ++ ++#ifndef DESTROY ++/** ++ * DESTROY() is a release operation which also sets the variable to be ++ * a nil pointer for tidiness - we can't accidentally use a DESTROYED ++ * object later. It also makes sure to set the variable to nil before ++ * releasing the object - to avoid side-effects of the release trying ++ * to reference the object being released through the variable. ++ */ ++#define DESTROY(object) ({ \ ++ id __o = object; \ ++ object = nil; \ ++ [__o release]; \ ++}) ++#endif ++ ++#define IF_NO_GC(X) X ++ ++#ifndef ENTER_POOL ++/** ++ * ENTER_POOL creates an autorelease pool and places subsequent code ++ * in a do/while loop (executed only once) which can be broken out of ++ * to reach the point when the pool is drained.<br /> ++ * The block must be terminated with a corresponding LEAVE_POOL.<br /> ++ * You should not return from such a block of code (to do so could ++ * leak an autorelease pool and give objects a longer lifetime than ++ * they ought to have. If you wish to leave the block of code early, ++ * you may do so using a 'break' statement. ++ */ ++#define ENTER_POOL {NSAutoreleasePool *_lARP=[NSAutoreleasePool new];do{ ++#endif ++ ++#ifndef LEAVE_POOL ++/** ++ * LEAVE_POOL terminates a block of code started with ENTER_POOL. ++ */ ++#define LEAVE_POOL }while(0);[_lARP drain];} ++#endif ++ ++#ifndef DEALLOC ++/** ++ * DEALLOC calls the superclass implementation of dealloc, unless ++ * ARC is in use (in which case it does nothing). ++ */ ++#define DEALLOC [super dealloc]; ++#endif ++#endif ++ ++#ifndef CREATE_AUTORELEASE_POOL ++/** DEPRECATED ... use ENTER_POOL and LEAVE_POOL ++ */ ++#define CREATE_AUTORELEASE_POOL(X) \ ++ NSAutoreleasePool *X = [NSAutoreleasePool new] ++#endif ++ ++#ifndef RECREATE_AUTORELEASE_POOL ++/** DEPRECATED ... use ENTER_POOL and LEAVE_POOL ++ */ ++#define RECREATE_AUTORELEASE_POOL(X) \ ++ DESTROY(X);\ ++ X = [NSAutoreleasePool new] ++#endif ++ ++ ++/** ++ * <p> ++ * This function (macro) is a GNUstep extension. ++ * </p> ++ * <p> ++ * <code>_(@"My string to translate")</code> ++ * </p> ++ * <p> ++ * is basically equivalent to ++ * </p> ++ * <p> ++ * <code>NSLocalizedString(@"My string to translate", @"")</code> ++ * </p> ++ * <p> ++ * It is useful when you need to translate an application ++ * very quickly, as you just need to enclose all strings ++ * inside <code>_()</code>. But please note that when you ++ * use this macro, you are not taking advantage of comments ++ * for the translator, so consider using ++ * <code>NSLocalizedString</code> instead when you need a ++ * comment. ++ * </p> ++ * <p>You may define GS_LOCALISATION_BUNDLE_ID to the bundle identifier ++ * of the bundle which is to provide the localisation information.<br /> ++ * This can be used when compiling a single file by specifying something like ++ * '-D GS_LOCALISATION_BUNDLE_ID=$(FRAMEWORK_NAME)' in your make file.<br /> ++ * If this is not defined, the localisation is provided by your application's ++ * main bundle exactly like the NSLocalizedString function. ++ * </p> ++ * <p>Alternatively you may define GS_LOCALISATION_BUNDLE to be the bundle ++ * to be used to prvide the localisation information. ++ * </p> ++ */ ++# define _(X) \ ++ [GS_LOCALISATION_BUNDLE localizedStringForKey: (X) value: @"" table: nil] ++ ++#if !defined(GS_LOCALISATION_BUNDLE) ++# if defined(GS_LOCALISATION_BUNDLE_ID) ++# define GS_LOCALISATION_BUNDLE [NSBundle bundleWithIdentifier: \ ++ GS_LOCALISATION_BUNDLE_ID] ++# else ++# define GS_LOCALISATION_BUNDLE [NSBundle mainBundle] ++# endif ++#endif ++ ++ ++ ++/** ++ * <p> ++ * This function (macro) is a GNUstep extension. ++ * </p> ++ * <p> ++ * <code>__(@"My string to translate")</code> ++ * </p> ++ * <p> ++ * is exactly the same as ++ * </p> ++ * <p> ++ * <code>GSLocalizedStaticString(@"My string to translate", @"")</code> ++ * </p> ++ * <p> ++ * It is useful when you need to translate an application very ++ * quickly. You would use it as follows for static strings: ++ * </p> ++ * <p> ++ * <code> ++ * NSString *message = __(@"Hello there"); ++ * ... more code ... ++ * NSLog (_(messages)); ++ * </code> ++ * </p> ++ * <p> ++ * But please note that when you use this macro, you are not ++ * taking advantage of comments for the translator, so ++ * consider using <code>GSLocalizedStaticString</code> ++ * instead when you need a comment. ++ * </p> ++ */ ++#define __(X) X ++ ++/* The better way for a static string, with a comment - use as follows - ++ * ++ * static NSString *string = GSLocalizedStaticString (@"New Game", ++ * @"Menu Option"); ++ * ++ * NSLog (_(string)); ++ * ++ * If you need anything more complicated than this, please initialize ++ * the static strings manually. ++ */ ++ ++/** ++ * <p> ++ * This function (macro) is a GNUstep extensions, and it is used ++ * to localize static strings. Here is an example of a static ++ * string: ++ * </p> ++ * <p> ++ * <code> ++ * NSString *message = @"Hi there"; ++ * ... some code ... ++ * NSLog (message); ++ * </code> ++ * </p> ++ * <p> ++ * This string can not be localized using the standard ++ * openstep functions/macros. By using this gnustep extension, ++ * you can localize it as follows: ++ * </p> ++ * <p> ++ * <code> ++ * NSString *message = GSLocalizedStaticString (@"Hi there", ++ * @"Greeting"); ++ * ++ * ... some code ... ++ * ++ * NSLog (NSLocalizedString (message, @"")); ++ * </code> ++ * </p> ++ * <p> ++ * When the tools generate the ++ * <code>Localizable.strings</code> file from the source ++ * code, they will ignore the <code>NSLocalizedString</code> ++ * call while they will extract the string (and the comment) ++ * to localize from the <code>GSLocalizedStaticString</code> ++ * call. ++ * </p> ++ * <p> ++ * When the code is compiled, instead, the ++ * <code>GSLocalizedStaticString</code> call is ignored (discarded, ++ * it is a macro which simply expands to <code>key</code>), while ++ * the <code>NSLocalizedString</code> will actually look up the ++ * string for translation in the <code>Localizable.strings</code> ++ * file. ++ * </p> ++ * <p> ++ * Please note that there is currently no macro/function to ++ * localize static strings using different tables. If you ++ * need that functionality, you have either to prepare the ++ * localization tables by hand, or to rewrite your code in ++ * such a way as not to use static strings. ++ * </p> ++ */ ++#define GSLocalizedStaticString(key, comment) key ++ ++/** ++ * To be used inside a method for making sure that a range does not specify ++ * anything outside the size of an array/string. Raises exception if range ++ * extends beyond [0,size]. Size must be an unsigned integer (NSUInteger). ++ */ ++#define GS_RANGE_CHECK(RANGE, SIZE) \ ++ if (RANGE.location > (NSUInteger)SIZE \ ++ || RANGE.length > ((NSUInteger)SIZE - RANGE.location)) \ ++ [NSException raise: NSRangeException format: @"in %s, range { %"\ ++ PRIuPTR ", %" PRIuPTR " } extends beyond size (%" PRIuPTR ")", \ ++ GSNameFromSelector(_cmd), RANGE.location, RANGE.length, (NSUInteger)SIZE] ++ ++/** Checks whether INDEX is strictly less than OVER (within C array space). ++ * INDEX and OVER must be unsigned integers (NSUInteger). ++ */ ++#define CHECK_INDEX_RANGE_ERROR(INDEX, OVER) \ ++if ((NSUInteger)INDEX >= (NSUInteger)OVER) \ ++ [NSException raise: NSRangeException \ ++ format: @"in %s, index %" PRIuPTR " is out of range", \ ++ GSNameFromSelector(_cmd), (NSUInteger)INDEX] ++ ++#endif /* __GNUSTEP_GNUSTEP_H_INCLUDED_ */ +Index: gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/NSNumber+GNUstepBase.h +=================================================================== +--- a/src/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/NSNumber+GNUstepBase.h (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/NSNumber+GNUstepBase.h (.../branches/gcc-8-branch) +@@ -0,0 +1,56 @@ ++/** Declaration of extension methods for base additions ++ ++ Copyright (C) 2003-2010 Free Software Foundation, Inc. ++ ++ Written by: Richard Frith-Macdonald <rfm@gnu.org> ++ and: Adam Fedor <fedor@gnu.org> ++ ++ This file is part of the GNUstep Base Library. ++ ++ 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 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. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with this library; if not, write to the Free ++ Software Foundation, Inc., 51 Franklin Street, Fifth Floor, ++ Boston, MA 02111 USA. ++ ++*/ ++ ++#ifndef INCLUDED_NSNumber_GNUstepBase_h ++#define INCLUDED_NSNumber_GNUstepBase_h ++ ++#import "GSVersionMacros.h" ++#import "../Foundation/NSValue.h" ++ ++#if defined(__cplusplus) ++extern "C" { ++#endif ++ ++#if OS_API_VERSION(GS_API_NONE,GS_API_LATEST) ++ ++@interface NSNumber(GNUstepBase) ++/** ++ * Parses string as a <code>double</code>, <code>int</code>, or <code>unsigned ++ * int</code> depending on what characters are present. Uses ++ * <code>atof</code> and <code>atoi</code> which don't report errors, so be ++ * careful if the string might contain an invalid value. ++ */ +++ (NSValue*) valueFromString: (NSString *)string; ++@end ++ ++#endif /* OS_API_VERSION */ ++ ++#if defined(__cplusplus) ++} ++#endif ++ ++#endif /* INCLUDED_NSNumber_GNUstepBase_h */ ++ +Index: gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/GSBlocks.h +=================================================================== +--- a/src/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/GSBlocks.h (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/GSBlocks.h (.../branches/gcc-8-branch) +@@ -0,0 +1,145 @@ ++/** Definitions for block support for GNUStep ++ Copyright (C) 2011 Free Software Foundation, Inc. ++ ++ This file is part of the GNUstep Base Library. ++ ++ 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 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. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with this library; if not, write to the Free ++ Software Foundation, Inc., 51 Franklin Street, Fifth Floor, ++ Boston, MA 02111 USA. ++ ++ */ ++ ++#ifndef __GSBlocks_h_GNUSTEP_BASE_INCLUDE ++#define __GSBlocks_h_GNUSTEP_BASE_INCLUDE ++ ++/* Define the has_feature pseudo-macro for GCC. */ ++#ifndef __has_feature ++#define __has_feature(x) 0 ++#endif ++ ++#ifndef GCC_VERSION ++#define GCC_VERSION (__GNUC__ * 1000 + __GNUC_MINOR__) ++#endif ++ ++#if __has_feature(blocks) ++ ++#define BLOCK_SCOPE __block ++/** ++ * Defines a block type. Will work whether or not the compiler natively ++ * supports blocks. ++ */ ++#define DEFINE_BLOCK_TYPE(name, retTy, argTys, ...) \ ++typedef retTy(^name)(argTys, ## __VA_ARGS__) ++ ++#define DEFINE_BLOCK_TYPE_NO_ARGS(name, retTy) \ ++typedef retTy(^name)() ++ ++/** ++ * Calls a block. Works irrespective of whether the compiler supports blocks. ++ */ ++#define CALL_BLOCK(block, args, ...) block(args, ## __VA_ARGS__) ++ ++/** ++ * Calls a block without arguments. ++ */ ++#define CALL_BLOCK_NO_ARGS(block) block() ++#else ++ ++/* Fall-back versions for when the compiler doesn't have native blocks support. ++ */ ++#if (GCC_VERSION >= 3000) ++ ++#define DEFINE_BLOCK_TYPE(name, retTy, argTys, ...) \ ++ typedef struct {\ ++ void *isa;\ ++ int flags;\ ++ int reserved;\ ++ retTy (*invoke)(void*, argTys, ## __VA_ARGS__);\ ++ } *name ++ ++#define DEFINE_BLOCK_TYPE_NO_ARGS(name, retTy) \ ++ typedef struct {\ ++ void *isa;\ ++ int flags;\ ++ int reserved;\ ++ retTy (*invoke)(void*);\ ++ } *name ++ ++#define CALL_BLOCK(block, args, ...) block->invoke(block, args, ## __VA_ARGS__) ++ ++#define CALL_BLOCK_NO_ARGS(block) block->invoke(block) ++#define BLOCK_SCOPE ++ ++#else /* GCC_VERSION >= 3000 */ ++ ++#define DEFINE_BLOCK_TYPE(name, retTy, argTys...) \ ++ typedef struct {\ ++ void *isa;\ ++ int flags;\ ++ int reserved;\ ++ retTy (*invoke)(void*, argTys);\ ++ } *name ++ ++#define DEFINE_BLOCK_TYPE_NO_ARGS(name, retTy) \ ++ typedef struct {\ ++ void *isa;\ ++ int flags;\ ++ int reserved;\ ++ retTy (*invoke)(void*);\ ++ } *name ++ ++ ++#define CALL_BLOCK(block, args...) block->invoke(block, args) ++#define CALL_BLOCK_NO_ARGS(block) block->invoke(block) ++#define BLOCK_SCOPE ++#endif /* GCC_VERSION >= 3000 */ ++ ++#endif /* __has_feature(blocks) */ ++ ++#if __has_include(<objc/blocks_runtime.h>) ++# include <objc/blocks_runtime.h> ++#else ++ ++#ifdef __cplusplus ++extern "C" { ++#endif ++ ++/** ++ * _Block_copy and _Block_release are weakly imported, but can be assumed ++ * to be available whenever a feature using blocks is accessed ++ * by an application. ++ */ ++ ++/* weak attributed supported only with ELF, MINGW is COFF */ ++#ifndef __MINGW32__ ++ ++void *_Block_copy(const void *) __attribute__((weak)); ++void _Block_release(const void *) __attribute__((weak)); ++ ++#endif /* __MINGW32__ */ ++ ++#ifdef __cplusplus ++} ++#endif ++ ++#ifndef Block_copy ++# define Block_copy(x) ((__typeof(x))_Block_copy((const void *)(x))) ++#endif ++#ifndef Block_release ++# define Block_release(x) _Block_release((const void *)(x)) ++#endif ++ ++#endif /* __has_include(<objc/blocks_runtime.h>) */ ++#endif /* __GSBlocks_h_GNUSTEP_BASE_INCLUDE */ ++ +Index: gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSGeometry.h +=================================================================== +--- a/src/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSGeometry.h (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSGeometry.h (.../branches/gcc-8-branch) +@@ -0,0 +1,609 @@ ++/* Interface for NSGeometry routines for GNUStep ++ * Copyright (C) 1995 Free Software Foundation, Inc. ++ * ++ * Written by: Adam Fedor <fedor@boulder.colorado.edu> ++ * Date: 1995,199 ++ * ++ * This file is part of the GNUstep Base Library. ++ * ++ * 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 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. ++ * ++ * You should have received a copy of the GNU Lesser General Public ++ * License along with this library; if not, write to the Free ++ * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, ++ * Boston, MA 02111 USA. ++ */ ++ ++#ifndef __NSGeometry_h_GNUSTEP_BASE_INCLUDE ++#define __NSGeometry_h_GNUSTEP_BASE_INCLUDE ++#import "../GNUstepBase/GSVersionMacros.h" ++ ++#import <objc/objc.h> ++ ++#import "NSString.h" ++ ++#if defined(__cplusplus) ++extern "C" { ++#endif ++ ++/**** Type, Constant, and Macro Definitions **********************************/ ++ ++#ifndef MAX ++#define MAX(a,b) \ ++ ({__typeof__(a) _MAX_a = (a); __typeof__(b) _MAX_b = (b); \ ++ _MAX_a > _MAX_b ? _MAX_a : _MAX_b; }) ++#define GS_DEFINED_MAX ++#endif ++ ++#ifndef MIN ++#define MIN(a,b) \ ++ ({__typeof__(a) _MIN_a = (a); __typeof__(b) _MIN_b = (b); \ ++ _MIN_a < _MIN_b ? _MIN_a : _MIN_b; }) ++#define GS_DEFINED_MIN ++#endif ++ ++/** ++<example>{ ++ CGFloat x; ++ CGFloat y; ++}</example> ++ <p>Represents a 2-d cartesian position.</p> */ ++typedef struct _NSPoint NSPoint; ++struct _NSPoint ++{ ++ CGFloat x; ++ CGFloat y; ++}; ++ ++#if OS_API_VERSION(GS_API_MACOSX, GS_API_LATEST) ++/** Array of NSPoint structs. */ ++typedef NSPoint *NSPointArray; ++/** Pointer to NSPoint struct. */ ++typedef NSPoint *NSPointPointer; ++#endif ++ ++/** ++<example>{ ++ CGFloat width; ++ CGFloat height; ++}</example> ++ <p>Floating point rectangle size.</p> */ ++typedef struct _NSSize NSSize; ++struct _NSSize ++{ ++ CGFloat width; ++ CGFloat height; ++}; ++ ++#if OS_API_VERSION(GS_API_MACOSX, GS_API_LATEST) ++/** Array of NSSize structs. */ ++typedef NSSize *NSSizeArray; ++/** Pointer to NSSize struct. */ ++typedef NSSize *NSSizePointer; ++#endif ++ ++/** ++<example>{ ++ NSPoint origin; ++ NSSize size; ++}</example> ++ ++ <p>Rectangle.</p> */ ++typedef struct _NSRect NSRect; ++struct _NSRect ++{ ++ NSPoint origin; ++ NSSize size; ++}; ++ ++#if OS_API_VERSION(GS_API_MACOSX, GS_API_LATEST) ++/** Array of NSRect structs. */ ++typedef NSRect *NSRectArray; ++/** Pointer to NSRect struct. */ ++typedef NSRect *NSRectPointer; ++#endif ++ ++enum ++{ ++ NSMinXEdge = 0, ++ NSMinYEdge = 1, ++ NSMaxXEdge = 2, ++ NSMaxYEdge = 3 ++}; ++/** Sides of a rectangle. ++<example> ++{ ++ NSMinXEdge, ++ NSMinYEdge, ++ NSMaxXEdge, ++ NSMaxYEdge ++} ++</example> ++ */ ++typedef NSUInteger NSRectEdge; ++ ++/** ++<example>{ ++ CGFloat top; ++ CGFloat left; ++ CGFloat bottom; ++ CGFloat right; ++}</example> ++ ++ <p>A description of the distance between the edges of two rectangles.</p> */ ++#if OS_API_VERSION(MAC_OS_X_VERSION_10_7, GS_API_LATEST) ++typedef struct NSEdgeInsets { ++ CGFloat top; ++ CGFloat left; ++ CGFloat bottom; ++ CGFloat right; ++} NSEdgeInsets; ++#endif ++ ++/** Point at 0,0 */ ++static const NSPoint NSZeroPoint __attribute__((unused)) = {0.0,0.0}; ++/** Zero-size rectangle at 0,0 */ ++static const NSRect NSZeroRect __attribute__((unused)) = {{0.0,0.0},{0.0,0.0}}; ++/** Zero size */ ++static const NSSize NSZeroSize __attribute__((unused)) = {0.0,0.0}; ++ ++#if OS_API_VERSION(MAC_OS_X_VERSION_10_7, GS_API_LATEST) ++/** Zero edge insets **/ ++static const NSEdgeInsets NSEdgeInsetsZero __attribute__((unused)) = {0.0,0.0,0.0,0.0}; ++#endif ++ ++/**** Function Prototypes ****************************************************/ ++ ++/* ++ * All but the most complex functions are declared static inline in this ++ * header file so that they are maximally efficient. In order to provide ++ * true functions (for code modules that don't have this header) this ++ * header is included in NSGeometry.m where the functions are no longer ++ * declared inline. ++ */ ++#ifdef IN_NSGEOMETRY_M ++#define GS_GEOM_SCOPE extern ++#define GS_GEOM_ATTR ++#else ++#define GS_GEOM_SCOPE static inline ++#define GS_GEOM_ATTR __attribute__((unused)) ++#endif ++ ++/** Create Basic Structures... **/ ++ ++GS_GEOM_SCOPE NSPoint ++NSMakePoint(CGFloat x, CGFloat y) GS_GEOM_ATTR; ++ ++/** Returns an NSPoint having x-coordinate X and y-coordinate Y. */ ++GS_GEOM_SCOPE NSPoint ++NSMakePoint(CGFloat x, CGFloat y) ++{ ++ NSPoint point; ++ ++ point.x = x; ++ point.y = y; ++ return point; ++} ++ ++GS_GEOM_SCOPE NSSize ++NSMakeSize(CGFloat w, CGFloat h) GS_GEOM_ATTR; ++ ++/** Returns an NSSize having width w and height h. */ ++GS_GEOM_SCOPE NSSize ++NSMakeSize(CGFloat w, CGFloat h) ++{ ++ NSSize size; ++ ++ size.width = w; ++ size.height = h; ++ return size; ++} ++ ++GS_GEOM_SCOPE NSRect ++NSMakeRect(CGFloat x, CGFloat y, CGFloat w, CGFloat h) GS_GEOM_ATTR; ++ ++/** Returns an NSRect having point of origin (x, y) and size {w, h}. */ ++GS_GEOM_SCOPE NSRect ++NSMakeRect(CGFloat x, CGFloat y, CGFloat w, CGFloat h) ++{ ++ NSRect rect; ++ ++ rect.origin.x = x; ++ rect.origin.y = y; ++ rect.size.width = w; ++ rect.size.height = h; ++ return rect; ++} ++ ++/** Constructs NSEdgeInsets. **/ ++#if OS_API_VERSION(MAC_OS_X_VERSION_10_7, GS_API_LATEST) ++GS_GEOM_SCOPE NSEdgeInsets ++NSEdgeInsetsMake(CGFloat top, CGFloat left, ++ CGFloat bottom, CGFloat right) GS_GEOM_ATTR; ++ ++GS_GEOM_SCOPE NSEdgeInsets ++NSEdgeInsetsMake(CGFloat top, CGFloat left, CGFloat bottom, CGFloat right) ++{ ++ NSEdgeInsets edgeInsets; ++ ++ edgeInsets.top = top; ++ edgeInsets.left = left; ++ edgeInsets.bottom = bottom; ++ edgeInsets.right = right; ++ ++ return edgeInsets; ++} ++ ++#if OS_API_VERSION(MAC_OS_X_VERSION_10_10, GS_API_LATEST) ++/** Compares two edge insets for equality. **/ ++GS_EXPORT BOOL ++NSEdgeInsetsEqual(NSEdgeInsets e1, NSEdgeInsets e2); ++#endif ++ ++#endif ++ ++/** Get a Rectangle's Coordinates... **/ ++ ++GS_GEOM_SCOPE CGFloat ++NSMaxX(NSRect aRect) GS_GEOM_ATTR; ++ ++/** Returns the greatest x-coordinate value still inside aRect. */ ++GS_GEOM_SCOPE CGFloat ++NSMaxX(NSRect aRect) ++{ ++ return aRect.origin.x + aRect.size.width; ++} ++ ++GS_GEOM_SCOPE CGFloat ++NSMaxY(NSRect aRect) GS_GEOM_ATTR; ++ ++/** Returns the greatest y-coordinate value still inside aRect. */ ++GS_GEOM_SCOPE CGFloat ++NSMaxY(NSRect aRect) ++{ ++ return aRect.origin.y + aRect.size.height; ++} ++ ++GS_GEOM_SCOPE CGFloat ++NSMidX(NSRect aRect) GS_GEOM_ATTR; ++ ++/** Returns the x-coordinate of aRect's middle point. */ ++GS_GEOM_SCOPE CGFloat ++NSMidX(NSRect aRect) ++{ ++ return aRect.origin.x + (aRect.size.width / 2.0); ++} ++ ++GS_GEOM_SCOPE CGFloat ++NSMidY(NSRect aRect) GS_GEOM_ATTR; ++ ++/** Returns the y-coordinate of aRect's middle point. */ ++GS_GEOM_SCOPE CGFloat ++NSMidY(NSRect aRect) ++{ ++ return aRect.origin.y + (aRect.size.height / 2.0); ++} ++ ++GS_GEOM_SCOPE CGFloat ++NSMinX(NSRect aRect) GS_GEOM_ATTR; ++ ++/** Returns the least x-coordinate value still inside aRect. */ ++GS_GEOM_SCOPE CGFloat ++NSMinX(NSRect aRect) ++{ ++ return aRect.origin.x; ++} ++ ++GS_GEOM_SCOPE CGFloat ++NSMinY(NSRect aRect) GS_GEOM_ATTR; ++ ++/** Returns the least y-coordinate value still inside aRect. */ ++GS_GEOM_SCOPE CGFloat ++NSMinY(NSRect aRect) ++{ ++ return aRect.origin.y; ++} ++ ++GS_GEOM_SCOPE CGFloat ++NSWidth(NSRect aRect) GS_GEOM_ATTR; ++ ++/** Returns aRect's width. */ ++GS_GEOM_SCOPE CGFloat ++NSWidth(NSRect aRect) ++{ ++ return aRect.size.width; ++} ++ ++GS_GEOM_SCOPE CGFloat ++NSHeight(NSRect aRect) GS_GEOM_ATTR; ++ ++/** Returns aRect's height. */ ++GS_GEOM_SCOPE CGFloat ++NSHeight(NSRect aRect) ++{ ++ return aRect.size.height; ++} ++ ++GS_GEOM_SCOPE BOOL ++NSIsEmptyRect(NSRect aRect) GS_GEOM_ATTR; ++ ++/** Returns 'YES' iff the area of aRect is zero (i.e., iff either ++ * of aRect's width or height is negative or zero). */ ++GS_GEOM_SCOPE BOOL ++NSIsEmptyRect(NSRect aRect) ++{ ++ return ((NSWidth(aRect) > 0) && (NSHeight(aRect) > 0)) ? NO : YES; ++} ++ ++/** Modify a Copy of a Rectangle... **/ ++ ++GS_GEOM_SCOPE NSRect ++NSOffsetRect(NSRect aRect, CGFloat dx, CGFloat dy) GS_GEOM_ATTR; ++ ++/** Returns the rectangle obtained by translating aRect ++ * horizontally by dx and vertically by dy. */ ++GS_GEOM_SCOPE NSRect ++NSOffsetRect(NSRect aRect, CGFloat dx, CGFloat dy) ++{ ++ NSRect rect = aRect; ++ ++ rect.origin.x += dx; ++ rect.origin.y += dy; ++ return rect; ++} ++ ++GS_GEOM_SCOPE NSRect ++NSInsetRect(NSRect aRect, CGFloat dX, CGFloat dY) GS_GEOM_ATTR; ++ ++/** Returns the rectangle obtained by moving each of aRect's ++ * horizontal sides inward by dy and each of aRect's vertical ++ * sides inward by dx.<br /> ++ * NB. For MacOS-X compatability, this is permitted to return ++ * a rectanglew with nagative width or height, strange as that seems. ++ */ ++GS_GEOM_SCOPE NSRect ++NSInsetRect(NSRect aRect, CGFloat dX, CGFloat dY) ++{ ++ NSRect rect; ++ ++ rect = NSOffsetRect(aRect, dX, dY); ++ rect.size.width -= (2 * dX); ++ rect.size.height -= (2 * dY); ++ return rect; ++} ++ ++/** Divides aRect into two rectangles (namely slice and remainder) by ++ * "cutting" aRect---parallel to, and a distance amount from the given edge ++ * of aRect. You may pass 0 in as either of slice or ++ * remainder to avoid obtaining either of the created rectangles. */ ++GS_EXPORT void ++NSDivideRect(NSRect aRect, ++ NSRect *slice, ++ NSRect *remainder, ++ CGFloat amount, ++ NSRectEdge edge); ++ ++/** Returns a rectangle obtained by expanding aRect minimally ++ * so that all four of its defining components are integers. */ ++GS_EXPORT NSRect ++NSIntegralRect(NSRect aRect); ++ ++/** Compute a Third Rectangle from Two Rectangles... **/ ++ ++GS_GEOM_SCOPE NSRect ++NSUnionRect(NSRect aRect, NSRect bRect) GS_GEOM_ATTR; ++ ++/** Returns the smallest rectangle which contains both aRect ++ * and bRect (modulo a set of measure zero). If either of aRect ++ * or bRect is an empty rectangle, then the other rectangle is ++ * returned. If both are empty, then the empty rectangle is returned. */ ++GS_GEOM_SCOPE NSRect ++NSUnionRect(NSRect aRect, NSRect bRect) ++{ ++ NSRect rect; ++ ++ if (NSIsEmptyRect(aRect) && NSIsEmptyRect(bRect)) ++ return NSMakeRect(0.0,0.0,0.0,0.0); ++ else if (NSIsEmptyRect(aRect)) ++ return bRect; ++ else if (NSIsEmptyRect(bRect)) ++ return aRect; ++ ++ rect = NSMakeRect(MIN(NSMinX(aRect), NSMinX(bRect)), ++ MIN(NSMinY(aRect), NSMinY(bRect)), 0.0, 0.0); ++ ++ rect = NSMakeRect(NSMinX(rect), ++ NSMinY(rect), ++ MAX(NSMaxX(aRect), NSMaxX(bRect)) - NSMinX(rect), ++ MAX(NSMaxY(aRect), NSMaxY(bRect)) - NSMinY(rect)); ++ ++ return rect; ++} ++ ++GS_GEOM_SCOPE NSRect ++NSIntersectionRect(NSRect aRect, NSRect bRect) GS_GEOM_ATTR; ++ ++/** Returns the largest rectangle which lies in both aRect and ++ * bRect. If aRect and bRect have empty intersection (or, rather, ++ * intersection of measure zero, since this includes having their ++ * intersection be only a point or a line), then the empty ++ * rectangle is returned. */ ++GS_GEOM_SCOPE NSRect ++NSIntersectionRect (NSRect aRect, NSRect bRect) ++{ ++ if (NSMaxX(aRect) <= NSMinX(bRect) || NSMaxX(bRect) <= NSMinX(aRect) ++ || NSMaxY(aRect) <= NSMinY(bRect) || NSMaxY(bRect) <= NSMinY(aRect)) ++ { ++ return NSMakeRect(0.0, 0.0, 0.0, 0.0); ++ } ++ else ++ { ++ NSRect rect; ++ ++ if (NSMinX(aRect) <= NSMinX(bRect)) ++ rect.origin.x = bRect.origin.x; ++ else ++ rect.origin.x = aRect.origin.x; ++ ++ if (NSMinY(aRect) <= NSMinY(bRect)) ++ rect.origin.y = bRect.origin.y; ++ else ++ rect.origin.y = aRect.origin.y; ++ ++ if (NSMaxX(aRect) >= NSMaxX(bRect)) ++ rect.size.width = NSMaxX(bRect) - rect.origin.x; ++ else ++ rect.size.width = NSMaxX(aRect) - rect.origin.x; ++ ++ if (NSMaxY(aRect) >= NSMaxY(bRect)) ++ rect.size.height = NSMaxY(bRect) - rect.origin.y; ++ else ++ rect.size.height = NSMaxY(aRect) - rect.origin.y; ++ ++ return rect; ++ } ++} ++ ++/** Test geometric relationships... **/ ++ ++/** Returns 'YES' iff aRect's and bRect's origin and size are the same. */ ++GS_EXPORT BOOL ++NSEqualRects(NSRect aRect, NSRect bRect) GS_GEOM_ATTR; ++ ++/** Returns 'YES' iff aSize's and bSize's width and height are the same. */ ++GS_EXPORT BOOL ++NSEqualSizes(NSSize aSize, NSSize bSize) GS_GEOM_ATTR; ++ ++/** Returns 'YES' iff aPoint's and bPoint's x- and y-coordinates ++ * are the same. */ ++GS_EXPORT BOOL ++NSEqualPoints(NSPoint aPoint, NSPoint bPoint) GS_GEOM_ATTR; ++ ++GS_GEOM_SCOPE BOOL ++NSMouseInRect(NSPoint aPoint, NSRect aRect, BOOL flipped) GS_GEOM_ATTR; ++ ++/** Returns 'YES' iff aPoint is inside aRect. */ ++GS_GEOM_SCOPE BOOL ++NSMouseInRect(NSPoint aPoint, NSRect aRect, BOOL flipped) ++{ ++ if (flipped) ++ { ++ return ((aPoint.x >= NSMinX(aRect)) ++ && (aPoint.y >= NSMinY(aRect)) ++ && (aPoint.x < NSMaxX(aRect)) ++ && (aPoint.y < NSMaxY(aRect))) ? YES : NO; ++ } ++ else ++ { ++ return ((aPoint.x >= NSMinX(aRect)) ++ && (aPoint.y > NSMinY(aRect)) ++ && (aPoint.x < NSMaxX(aRect)) ++ && (aPoint.y <= NSMaxY(aRect))) ? YES : NO; ++ } ++} ++ ++GS_GEOM_SCOPE BOOL ++NSPointInRect(NSPoint aPoint, NSRect aRect) GS_GEOM_ATTR; ++ ++/** Just like 'NSMouseInRect(aPoint, aRect, YES)'. */ ++GS_GEOM_SCOPE BOOL ++NSPointInRect(NSPoint aPoint, NSRect aRect) ++{ ++ return NSMouseInRect(aPoint, aRect, YES); ++} ++ ++GS_GEOM_SCOPE BOOL ++NSContainsRect(NSRect aRect, NSRect bRect) GS_GEOM_ATTR; ++ ++/** Returns 'YES' iff aRect totally encloses bRect. NOTE: For ++ * this to be the case, aRect cannot be empty, nor can any side ++ * of bRect go beyond any side of aRect. Note that this behavior ++ * is different than the original OpenStep behavior, where the sides ++ * of bRect could not touch aRect. */ ++GS_GEOM_SCOPE BOOL ++NSContainsRect(NSRect aRect, NSRect bRect) ++{ ++ return (!NSIsEmptyRect(bRect) ++ && (NSMinX(aRect) <= NSMinX(bRect)) ++ && (NSMinY(aRect) <= NSMinY(bRect)) ++ && (NSMaxX(aRect) >= NSMaxX(bRect)) ++ && (NSMaxY(aRect) >= NSMaxY(bRect))) ? YES : NO; ++} ++ ++#if OS_API_VERSION(GS_API_MACOSX, GS_API_LATEST) ++GS_GEOM_SCOPE BOOL ++NSIntersectsRect(NSRect aRect, NSRect bRect) GS_GEOM_ATTR; ++ ++/** Returns YES if aRect and bRect have non-zero intersection area ++ (intersecting at a line or a point doesn't count). */ ++GS_GEOM_SCOPE BOOL ++NSIntersectsRect(NSRect aRect, NSRect bRect) ++{ ++ /* Note that intersecting at a line or a point doesn't count */ ++ return (NSMaxX(aRect) <= NSMinX(bRect) ++ || NSMaxX(bRect) <= NSMinX(aRect) ++ || NSMaxY(aRect) <= NSMinY(bRect) ++ || NSMaxY(bRect) <= NSMinY(aRect) ++ || NSIsEmptyRect(aRect) ++ || NSIsEmptyRect(bRect)) ? NO : YES; ++} ++#endif ++ ++/** Get a String Representation... **/ ++ ++#ifdef __OBJC__ ++/** Returns an NSString of the form "{x=X; y=Y}", where ++ * X and Y are the x- and y-coordinates of aPoint, respectively. */ ++GS_EXPORT NSString * ++NSStringFromPoint(NSPoint aPoint); ++ ++/** Returns an NSString of the form "{x=X; y=Y; width=W; height=H}", ++ * where X, Y, W, and H are the x-coordinate, y-coordinate, ++ * width, and height of aRect, respectively. */ ++GS_EXPORT NSString * ++NSStringFromRect(NSRect aRect); ++ ++/** Returns an NSString of the form "{width=W; height=H}", where ++ * W and H are the width and height of aSize, respectively. */ ++GS_EXPORT NSString * ++NSStringFromSize(NSSize aSize); ++ ++/** Parses point from string of form "<code>{x=a; y=b}</code>". (0,0) returned ++ if parsing fails. */ ++GS_EXPORT NSPoint NSPointFromString(NSString* string); ++ ++/** Parses size from string of form "<code>{width=a; height=b}</code>". Size of ++ 0,0 returned if parsing fails. */ ++GS_EXPORT NSSize NSSizeFromString(NSString* string); ++ ++/** Parses point from string of form "<code>{x=a; y=b; width=c; ++ height=d}</code>". Rectangle of 0 size at origin returned if parsing ++ fails. ++*/ ++GS_EXPORT NSRect NSRectFromString(NSString* string); ++ ++#endif /* __OBJC__ */ ++ ++#ifdef GS_DEFINED_MAX ++#undef GS_DEFINED_MAX ++#undef MAX ++#endif ++ ++#ifdef GS_DEFINED_MIN ++#undef GS_DEFINED_MIN ++#undef MIN ++#endif ++ ++#if defined(__cplusplus) ++} ++#endif ++ ++#endif /* __NSGeometry_h_GNUSTEP_BASE_INCLUDE */ +Index: gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSZone.h +=================================================================== +--- a/src/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSZone.h (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSZone.h (.../branches/gcc-8-branch) +@@ -0,0 +1,335 @@ ++/** Zone memory management. -*- Mode: ObjC -*- ++ Copyright (C) 1997,1998,1999 Free Software Foundation, Inc. ++ ++ Written by: Yoo C. Chung <wacko@laplace.snu.ac.kr> ++ Date: January 1997 ++ ++ This file is part of the GNUstep Base Library. ++ ++ 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 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. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with this library; if not, write to the Free ++ Software Foundation, Inc., 51 Franklin Street, Fifth Floor, ++ Boston, MA 02111 USA. ++ ++ AutogsdocSource: NSZone.m ++ AutogsdocSource: NSPage.m ++ ++ */ ++ ++#ifndef __NSZone_h_GNUSTEP_BASE_INCLUDE ++#define __NSZone_h_GNUSTEP_BASE_INCLUDE ++#import "../GNUstepBase/GSVersionMacros.h" ++ ++/** ++ * Primary structure representing an <code>NSZone</code>. Technically it ++ * consists of a set of function pointers for zone upkeep functions plus some ++ * other things- ++<example> ++{ ++ // Functions for zone. ++ void *(*malloc)(struct _NSZone *zone, size_t size); ++ void *(*realloc)(struct _NSZone *zone, void *ptr, size_t size); ++ void (*free)(struct _NSZone *zone, void *ptr); ++ void (*recycle)(struct _NSZone *zone); ++ BOOL (*check)(struct _NSZone *zone); ++ BOOL (*lookup)(struct _NSZone *zone, void *ptr); ++ ++ // Zone statistics (not always maintained). ++ struct NSZoneStats (*stats)(struct _NSZone *zone); ++ ++ size_t gran; // Zone granularity (passed in on initialization) ++ NSString *name; // Name of zone (default is 'nil') ++ NSZone *next; // Pointer used for internal management of multiple zones. ++}</example> ++ */ ++typedef struct _NSZone NSZone; ++ ++#import "NSObjCRuntime.h" ++ ++@class NSString; ++ ++#if defined(__cplusplus) ++extern "C" { ++#endif ++ ++struct _NSZone ++{ ++ /* Functions for zone. */ ++ void *(*malloc)(struct _NSZone *zone, size_t size); ++ void *(*realloc)(struct _NSZone *zone, void *ptr, size_t size); ++ void (*free)(struct _NSZone *zone, void *ptr); ++ void (*recycle)(struct _NSZone *zone); ++ BOOL (*check)(struct _NSZone *zone); ++ BOOL (*lookup)(struct _NSZone *zone, void *ptr); ++ struct NSZoneStats (*stats)(struct _NSZone *zone); ++ ++ size_t gran; // Zone granularity ++ __unsafe_unretained NSString *name; // Name of zone (default is 'nil') ++ NSZone *next; ++}; ++ ++/** ++ * Creates a new zone of start bytes, which will grow and shrink by ++ * granularity bytes. If canFree is 0, memory in zone is allocated but ++ * never freed, meaning allocation will be very fast. The whole zone can ++ * still be freed with NSRecycleZone(), and you should still call NSZoneFree ++ * on memory in the zone that is no longer needed, since a count of allocated ++ * pointers is kept and must reach zero before freeing the zone.<br /> ++ * If Garbage Collection is enabled, this function does nothing other than ++ * log a warning and return the same value as the NSDefaultMallocZone() ++ * function. ++ */ ++GS_EXPORT NSZone* ++NSCreateZone (NSUInteger start, NSUInteger gran, BOOL canFree); ++ ++/** Returns the default zone for memory allocation. Memory created in this ++ * zone is the same as memory allocates using the system malloc() function. ++ */ ++GS_EXPORT NSZone* ++NSDefaultMallocZone (void); ++ ++/** ++ * Searches and finds the zone ptr was allocated from. The speed depends ++ * upon the number of zones and their size.<br /> ++ * If Garbage Collection is enabled, this function always returns the ++ * same as the NSDefaultMallocZone() function. ++ */ ++GS_EXPORT NSZone* ++NSZoneFromPointer (void *ptr); ++ ++/** ++ * Allocates and returns memory for elems items of size bytes, in the ++ * given zone. Returns NULL if allocation of size 0 requested. Raises ++ * <code>NSMallocException</code> if not enough free memory in zone to ++ * allocate and no more can be obtained from system, unless using the ++ * default zone, in which case NULL is returned.<br /> ++ * If Garbage Collection is enabled, this function always allocates ++ * non-scanned, non-collectable memory in the NSDefaultMallocZone() and ++ * the zone argument is ignored. ++ */ ++GS_EXPORT void* ++NSZoneMalloc (NSZone *zone, NSUInteger size); ++ ++/** ++ * Allocates and returns cleared memory for elems items of size bytes, in the ++ * given zone. Returns NULL if allocation of size 0 requested. Raises ++ * <code>NSMallocException</code> if not enough free memory in zone to ++ * allocate and no more can be obtained from system, unless using the ++ * default zone, in which case NULL is returned.<br /> ++ * If Garbage Collection is enabled, this function always allocates ++ * non-scanned, non-collectable memory in the NSDefaultMallocZone() and ++ * the zone argument is ignored. ++ */ ++GS_EXPORT void* ++NSZoneCalloc (NSZone *zone, NSUInteger elems, NSUInteger bytes); ++ ++/** ++ * Reallocates the chunk of memory in zone pointed to by ptr to a new one of ++ * size bytes. Existing contents in ptr are copied over. Raises an ++ * <code>NSMallocException</code> if insufficient memory is available in the ++ * zone and no more memory can be obtained from the system, unless using the ++ * default zone, in which case NULL is returned.<br /> ++ * If Garbage Collection is enabled, the zone argument is ignored. ++ */ ++GS_EXPORT void* ++NSZoneRealloc (NSZone *zone, void *ptr, NSUInteger size); ++ ++/** ++ * Return memory for an entire zone to system. In fact, this will not be done ++ * unless all memory in the zone has been explicitly freed (by calls to ++ * NSZoneFree()). For "non-freeable" zones, the number of NSZoneFree() calls ++ * must simply equal the number of allocation calls. The default zone, on the ++ * other hand, cannot be recycled.<br /> ++ * If Garbage Collection is enabled, this function has not effect. ++ */ ++GS_EXPORT void ++NSRecycleZone (NSZone *zone); ++ ++/** ++ * Frees memory pointed to by ptr (which should have been allocated by a ++ * previous call to NSZoneMalloc(), NSZoneCalloc(), or NSZoneRealloc()) and ++ * returns it to zone. Note, if this is a nonfreeable zone, the memory is ++ * not actually freed, but the count of number of free()s is updated.<br /> ++ * If Garbage Collection is enabled, the zone argument is ignored and this ++ * function causes ptr to be deallocated immediately. ++ */ ++GS_EXPORT void ++NSZoneFree (NSZone *zone, void *ptr); ++ ++/** ++ * Sets name of the given zone (useful for debugging and logging). ++ */ ++GS_EXPORT void ++NSSetZoneName (NSZone *zone, NSString *name); ++ ++/** ++ * Returns the name of the given zone (useful for debugging and logging). ++ */ ++GS_EXPORT NSString* ++NSZoneName (NSZone *zone); ++ ++#if OS_API_VERSION(GS_API_NONE, GS_API_NONE) ++ ++/** Deprecated ...<br /> ++ * Checks integrity of a zone. Not defined by OpenStep or OS X. ++ */ ++BOOL ++NSZoneCheck (NSZone *zone); ++ ++/** ++ * <code>NSZoneStats</code> is the structure returned by the NSZoneStats() ++ * function that summarizes the current usage of a zone. It is similar to ++ * the structure <em>mstats</em> in the GNU C library. It has 5 fields of ++ * type <code>size_t</code>- ++ * <deflist> ++ * <term><code>bytes_total</code></term> ++ * <desc> ++ * This is the total size of memory managed by the zone, in bytes.</desc> ++ * <term><code>chunks_used</code></term> ++ * <desc>This is the number of memory chunks in use in the zone.</desc> ++ * <term><code>bytes_used</code></term> ++ * <desc>This is the number of bytes in use.</desc> ++ * <term><code>chunks_free</code></term> ++ * <desc>This is the number of memory chunks that are not in use.</desc> ++ * <term><code>bytes_free</code></term> ++ * <desc> ++ * This is the number of bytes managed by the zone that are not in use. ++ * </desc> ++ * </deflist> ++ */ ++struct NSZoneStats ++{ ++ size_t bytes_total; ++ size_t chunks_used; ++ size_t bytes_used; ++ size_t chunks_free; ++ size_t bytes_free; ++}; ++ ++/** Deprecated ...<br /> ++ * Obtain statistics about the zone. Implementation emphasis is on ++ * correctness, not speed. Not defined by OpenStep or OS X. ++ */ ++struct NSZoneStats ++NSZoneStats (NSZone *zone); ++ ++/** ++ * Try to get more memory - the normal process has failed. ++ * If we can't do anything, just return a null pointer. ++ * Try to do some logging if possible. ++ */ ++void* ++GSOutOfMemory(NSUInteger size, BOOL retry); ++ ++/** ++ * Called during +initialize to tell the class that instances created ++ * in future should have the specified instance variable as a weak ++ * pointer for garbage collection.<br /> ++ * NB. making a pointer weak does not mean that it is automatically ++ * zeroed when the object it points to is garbage collected. To get that ++ * behavior you must asign values to the pointer using the ++ * GSAssignZeroingWeakPointer() function.<br /> ++ * This function has no effect if the system is ++ * not built for garbage collection. ++ */ ++GS_EXPORT void ++GSMakeWeakPointer(Class theClass, const char *iVarName); ++ ++/** ++ * This function must be used to assign a value to a zeroing weak pointer.<br /> ++ * A zeroing weak pointer is one where, when the garbage collector collects ++ * the object pointed to, it also clears the weak pointer.<br /> ++ * Assigning zero (nil) will always succeed and has the effect of telling the ++ * garbage collector that it no longer needs to track the previously assigned ++ * object. Apart from that case, a source needs to be garbage collectable for ++ * this function to work, and using a non-garbage collectable value will ++ * cause the function to return NO.<br /> ++ * If the destination object (the weak pointer watching the source object) ++ * belongs to a chunk of memory which may be collected before the source ++ * object is collected, it is important that it is finalised and the ++ * finalisation code assigns zero to the pointer.<br /> ++ * If garbage collection is not in use, this function performs a simple ++ * assignment returning YES, unless destination is null in which case it ++ * returns NO. ++ */ ++GS_EXPORT BOOL ++GSAssignZeroingWeakPointer(void **destination, void *source); ++ ++#endif ++ ++GS_EXPORT NSUInteger ++NSPageSize (void) __attribute__ ((const)); ++ ++GS_EXPORT NSUInteger ++NSLogPageSize (void) __attribute__ ((const)); ++ ++GS_EXPORT NSUInteger ++NSRoundDownToMultipleOfPageSize (NSUInteger bytes) __attribute__ ((const)); ++ ++GS_EXPORT NSUInteger ++NSRoundUpToMultipleOfPageSize (NSUInteger bytes) __attribute__ ((const)); ++ ++GS_EXPORT NSUInteger ++NSRealMemoryAvailable (void); ++ ++GS_EXPORT void* ++NSAllocateMemoryPages (NSUInteger bytes); ++ ++GS_EXPORT void ++NSDeallocateMemoryPages (void *ptr, NSUInteger bytes); ++ ++GS_EXPORT void ++NSCopyMemoryPages (const void *src, void *dest, NSUInteger bytes); ++ ++#if OS_API_VERSION(MAC_OS_X_VERSION_10_4, OS_API_LATEST) ++ ++enum { ++ NSScannedOption = (1<<0), ++ NSCollectorDisabledOption = (1<<1) ++}; ++ ++/** Allocate memory. If garbage collection is not enabled this uses the ++ * default malloc zone and the options are ignored.<br /> ++ * If garbage collection is enabled, the allocate memory is normally not ++ * scanned for pointers but is itsself garbage collectable. The options ++ * argument is a bitmask in which NSScannedOption sets the memory to be ++ * scanned for pointers by the garbage collector, and ++ * NSCollectorDisabledOption causes the memory to be excempt from being ++ * garbage collected itsself.<br /> ++ * In any case the memory returned is zero'ed. ++ */ ++GS_EXPORT void * ++NSAllocateCollectable(NSUInteger size, NSUInteger options); ++ ++/** Reallocate memory to be of a different size and/or to have different ++ * options settings. The behavior of options is as for ++ * the NSAllocateCollectable() function. ++ */ ++GS_EXPORT void * ++NSReallocateCollectable(void *ptr, NSUInteger size, NSUInteger options); ++ ++#endif ++ ++static inline id NSMakeCollectable(const void *cf) { ++#if __has_feature(objc_arc) ++ return nil; ++#else ++ return (id)cf; // Unimplemented; garbage collection is deprecated. ++#endif ++} ++ ++#if defined(__cplusplus) ++} ++#endif ++ ++#endif /* not __NSZone_h_GNUSTEP_BASE_INCLUDE */ +Index: gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSRange.h +=================================================================== +--- a/src/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSRange.h (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSRange.h (.../branches/gcc-8-branch) +@@ -0,0 +1,235 @@ ++/* ++ * Copyright (C) 1995,1999 Free Software Foundation, Inc. ++ * ++ * Written by: Adam Fedor <fedor@boulder.colorado.edu> ++ * Date: 1995 ++ * ++ * This file is part of the GNUstep Base Library. ++ * ++ * 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 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. ++ * ++ * You should have received a copy of the GNU Lesser General Public ++ * License along with this library; if not, write to the Free ++ * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, ++ * Boston, MA 02111 USA. ++ */ ++ ++#ifndef __NSRange_h_GNUSTEP_BASE_INCLUDE ++#define __NSRange_h_GNUSTEP_BASE_INCLUDE ++#import "../GNUstepBase/GSVersionMacros.h" ++ ++/**** Included Headers *******************************************************/ ++ ++#import "NSObject.h" ++ ++#if defined(__cplusplus) ++extern "C" { ++#endif ++ ++@class NSException; ++@class NXConstantString; ++ ++/**** Type, Constant, and Macro Definitions **********************************/ ++ ++#ifndef MAX ++#define MAX(a,b) \ ++ ({__typeof__(a) _MAX_a = (a); __typeof__(b) _MAX_b = (b); \ ++ _MAX_a > _MAX_b ? _MAX_a : _MAX_b; }) ++#define GS_DEFINED_MAX ++#endif ++ ++#ifndef MIN ++#define MIN(a,b) \ ++ ({__typeof__(a) _MIN_a = (a); __typeof__(b) _MIN_b = (b); \ ++ _MIN_a < _MIN_b ? _MIN_a : _MIN_b; }) ++#define GS_DEFINED_MIN ++#endif ++ ++/** ++ * <example> ++{ ++ NSUInteger location; ++ NSUInteger length; ++}</example> ++ * <p> ++ * The NSRange type is used to specify ranges of locations, ++ * typically items in an array, characters in a string, and bytes ++ * in a data object. ++ * </p> ++ * <p> ++ * As 'boundary' or 'fencepost' errors are a particularly common ++ * problem in programming, it is important that you understand ++ * how an NSRange works. ++ * </p> ++ * <p> ++ * An NSRange consists of a <em>location</em> and a <em>length</em>. The ++ * points that are considered to lie in a range are the integers from ++ * the location to the location plus the length, so the number ++ * of points in a range is the length of the range plus one.<br /> ++ * However, if you consider these points like the marks on a ++ * ruler, you can only store information <strong>between</strong> ++ * points. So the number of items that can be stored in a range ++ * is the length of the range. ++ * </p> ++ */ ++typedef struct _NSRange NSRange; ++struct _NSRange ++{ ++ NSUInteger location; ++ NSUInteger length; ++}; ++ ++#if OS_API_VERSION(GS_API_MACOSX, GS_API_LATEST) ++/** Pointer to an NSRange structure. */ ++typedef NSRange *NSRangePointer; ++#endif ++ ++/**** Function Prototypes ****************************************************/ ++ ++/* ++ * All but the most complex functions are declared static inline in this ++ * header file so that they are maximally efficient. In order to provide ++ * true functions (for code modules that don't have this header) this ++ * header is included in NSRange.m where the functions are no longer ++ * declared inline. ++ */ ++#ifdef IN_NSRANGE_M ++#define GS_RANGE_SCOPE extern ++#define GS_RANGE_ATTR ++#else ++#define GS_RANGE_SCOPE static inline ++#define GS_RANGE_ATTR __attribute__((unused)) ++#endif ++ ++GS_RANGE_SCOPE NSUInteger ++NSMaxRange(NSRange range) GS_RANGE_ATTR; ++ ++/** Returns top end of range (location + length). */ ++GS_RANGE_SCOPE NSUInteger ++NSMaxRange(NSRange range) ++{ ++ return range.location + range.length; ++} ++ ++GS_RANGE_SCOPE BOOL ++NSLocationInRange(NSUInteger location, NSRange range) GS_RANGE_ATTR; ++ ++/** Returns whether location is greater than or equal to range's location ++ * and less than its max. ++ */ ++GS_RANGE_SCOPE BOOL ++NSLocationInRange(NSUInteger location, NSRange range) ++{ ++ return (location >= range.location) && (location < NSMaxRange(range)); ++} ++ ++/** Convenience method for raising an NSRangeException. */ ++GS_EXPORT void _NSRangeExceptionRaise (void); ++/* NB: The implementation of _NSRangeExceptionRaise is: ++ [NSException raise: NSRangeException ++ format: @"Range location + length too great"]; ++ ++ _NSRangeExceptionRaise is defined in NSRange.m so that this ++ file (NSRange.h) can be included without problems in the ++ implementation of the base classes themselves. */ ++ ++GS_RANGE_SCOPE NSRange ++NSMakeRange(NSUInteger location, NSUInteger length) GS_RANGE_ATTR; ++ ++/** Creates new range starting at location and of given length. */ ++GS_RANGE_SCOPE NSRange ++NSMakeRange(NSUInteger location, NSUInteger length) ++{ ++ NSRange range; ++ NSUInteger end = location + length; ++ ++ if (end < location || end < length) ++ { ++ _NSRangeExceptionRaise (); ++ } ++ range.location = location; ++ range.length = length; ++ return range; ++} ++ ++GS_RANGE_SCOPE BOOL ++NSEqualRanges(NSRange range1, NSRange range2) GS_RANGE_ATTR; ++ ++/** Returns whether range1 and range2 have same location and length. */ ++GS_RANGE_SCOPE BOOL ++NSEqualRanges(NSRange range1, NSRange range2) ++{ ++ return ((range1.location == range2.location) ++ && (range1.length == range2.length)); ++} ++ ++GS_RANGE_SCOPE NSRange ++NSUnionRange(NSRange range1, NSRange range2) GS_RANGE_ATTR; ++ ++/** Returns range going from minimum of aRange's and bRange's locations to ++ maximum of their two max's. */ ++GS_RANGE_SCOPE NSRange ++NSUnionRange(NSRange aRange, NSRange bRange) ++{ ++ NSRange range; ++ ++ range.location = MIN(aRange.location, bRange.location); ++ range.length = MAX(NSMaxRange(aRange), NSMaxRange(bRange)) ++ - range.location; ++ return range; ++} ++ ++GS_RANGE_SCOPE NSRange ++NSIntersectionRange(NSRange range1, NSRange range2) GS_RANGE_ATTR; ++ ++/** Returns range containing indices existing in both aRange and bRange. If ++ * the returned length is 0, the location is undefined and should be ignored. ++ */ ++GS_RANGE_SCOPE NSRange ++NSIntersectionRange (NSRange aRange, NSRange bRange) ++{ ++ NSRange range; ++ ++ if (NSMaxRange(aRange) < bRange.location ++ || NSMaxRange(bRange) < aRange.location) ++ return NSMakeRange(0, 0); ++ ++ range.location = MAX(aRange.location, bRange.location); ++ range.length = MIN(NSMaxRange(aRange), NSMaxRange(bRange)) ++ - range.location; ++ return range; ++} ++ ++ ++@class NSString; ++ ++/** Returns string of form {location=a, length=b}. */ ++GS_EXPORT NSString *NSStringFromRange(NSRange range); ++ ++/** Parses range from string of form {location=a, length=b}; returns range ++ with 0 location and length if this fails. */ ++GS_EXPORT NSRange NSRangeFromString(NSString *aString); ++ ++#ifdef GS_DEFINED_MAX ++#undef GS_DEFINED_MAX ++#undef MAX ++#endif ++ ++#ifdef GS_DEFINED_MIN ++#undef GS_DEFINED_MIN ++#undef MIN ++#endif ++ ++#if defined(__cplusplus) ++} ++#endif ++ ++#endif /* __NSRange_h_GNUSTEP_BASE_INCLUDE */ +Index: gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSValue.h +=================================================================== +--- a/src/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSValue.h (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSValue.h (.../branches/gcc-8-branch) +@@ -0,0 +1,370 @@ ++/* Interface for NSValue for GNUStep ++ Copyright (C) 1995, 1996 Free Software Foundation, Inc. ++ ++ Written by: Adam Fedor <fedor@boulder.colorado.edu> ++ Created: 1995 ++ ++ This file is part of the GNUstep Base Library. ++ ++ 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 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. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with this library; if not, write to the Free ++ Software Foundation, Inc., 51 Franklin Street, Fifth Floor, ++ Boston, MA 02111 USA. ++ */ ++ ++#ifndef __NSValue_h_GNUSTEP_BASE_INCLUDE ++#define __NSValue_h_GNUSTEP_BASE_INCLUDE ++#import "../GNUstepBase/GSVersionMacros.h" ++ ++#import "NSObject.h" ++#import "NSGeometry.h" ++#import "NSRange.h" ++ ++#if defined(__cplusplus) ++extern "C" { ++#endif ++ ++@class NSString; ++ ++/** ++ * The <code>NSValue</code> class can wrap a single primitive value as an ++ * object so it can be used in the containers and other places where an object ++ * reference is needed. Once initialized, an <code>NSValue</code> is ++ * immutable, and there is no <code>NSMutableValue</code> class. You ++ * initialize it by giving it a pointer to the primitive value, and you should ++ * be careful this does not get freed until after the <code>NSValue</code> is ++ * no longer used. ++ */ ++@interface NSValue : NSObject <NSCopying, NSCoding> ++ ++// Allocating and Initializing ++ ++/** ++ * Create new instance with specified value (a pointer) of given type, which ++ * is a string code obtainable through the compile-time operator ++ * <code>@encode(...)</code>. For example: ++<example> ++ NSValue *theValue = [NSValue value: &n withObjCType: @encode(int)]; ++</example> ++ */ +++ (NSValue*) value: (const void*)value withObjCType: (const char*)type; ++ ++/** ++ * Create new instance holding anObject. This is useful if you want to add ++ * anObject to a collection such as [NSArray] but don't want it to be retained ++ * (a weak reference). ++ */ +++ (NSValue*) valueWithNonretainedObject: (id)anObject; ++ ++/** ++ * Convenience method to create instance holding an <code>NSPoint</code> ++ * structure. ++ */ +++ (NSValue*) valueWithPoint: (NSPoint)point; ++ ++/** ++ * Convenience method to create instance holding a pointer. Same as ++ * using <code>@encode(void *)</code> in +value:withObjCType: . ++ */ +++ (NSValue*) valueWithPointer: (const void*)pointer; ++ ++/** ++ * Convenience method to create instance holding an <code>NSRange</code> ++ * structure. ++ */ +++ (NSValue*) valueWithRange: (NSRange)range; ++ ++/** ++ * Convenience method to create instance holding an <code>NSRect</code> ++ * structure. ++ */ +++ (NSValue*) valueWithRect: (NSRect)rect; ++ ++/** ++ * Convenience method to create instance holding an <code>NSSize</code> ++ * structure. ++ */ +++ (NSValue*) valueWithSize: (NSSize)size; ++ ++#if OS_API_VERSION(GS_API_MACOSX, GS_API_LATEST) ++/** ++ * Synonym for value:withObjCType: . ++ */ +++ (NSValue*) valueWithBytes: (const void*)value objCType: (const char*)type; ++ ++/** <init/> ++ * Initialize with value of type, parallel to value:withObjCType: . ++ */ ++- (id) initWithBytes: (const void*)data objCType: (const char*)type; ++ ++/** ++ * Compares this instance to another <code>NSValue</code>. For equality, ++ * both contents and declared type of the two values must match. ++ */ ++- (BOOL) isEqualToValue: (NSValue*)other; ++#endif /* GS_API_MACOSX */ ++ ++// Accessing Data ++ ++/** ++ * Copies bytes from the pointer receiver was initialized with into buffer ++ * pointed to by value. Number of bytes copied is determined by the type. If ++ * type was a void * pointer or object id, the memory address itself is ++ * copied. ++ */ ++- (void) getValue: (void*)value; ++ ++/** ++ * Returns the string <code>@encode(...)</code> compatible type the receiver ++ * was initialized with. ++ */ ++- (const char*) objCType; ++ ++/** ++ * If receiver was initialized with an object ID, return it, else raises ++ * <code>NSInternalInconsistencyException</code>. ++ */ ++- (id) nonretainedObjectValue; ++ ++/** ++ * If receiver was initialized with a void * pointer, return it, else raises ++ * <code>NSInternalInconsistencyException</code>. ++ */ ++- (void*) pointerValue; ++ ++/** ++ * If receiver was initialized with an <code>NSRange</code> value, return it, ++ * else raises <code>NSInternalInconsistencyException</code>. ++ */ ++- (NSRange) rangeValue; ++ ++/** ++ * If receiver was initialized with an <code>NSRect</code> value, return it, ++ * else raises <code>NSInternalInconsistencyException</code>. ++ */ ++- (NSRect) rectValue; ++ ++/** ++ * If receiver was initialized with an <code>NSSize</code> value, return it, ++ * else raises <code>NSInternalInconsistencyException</code>. ++ */ ++- (NSSize) sizeValue; ++ ++/** ++ * If receiver was initialized with an <code>NSPoint</code> value, return it, ++ * else raises <code>NSInternalInconsistencyException</code>. ++ */ ++- (NSPoint) pointValue; ++ ++@end ++ ++/** ++ * Subclass of [NSValue] offering convenience methods for initializing from ++ * and accessing as any C primitive numeric type. On access, the value will ++ * be type-converted if necessary, using standard C conversion rules. ++ */ ++@interface NSNumber : NSValue <NSCopying,NSCoding> ++ ++// Allocating and Initializing ++ ++/** New instance from boolean value. */ +++ (NSNumber*) numberWithBool: (BOOL)value; ++/** New instance from signed char value. */ +++ (NSNumber*) numberWithChar: (signed char)value; ++/** New instance from double value. */ +++ (NSNumber*) numberWithDouble: (double)value; ++/** New instance from float value. */ +++ (NSNumber*) numberWithFloat: (float)value; ++/** New instance from (signed) int value. */ +++ (NSNumber*) numberWithInt: (signed int)value; ++/** New instance from (signed) long value. */ +++ (NSNumber*) numberWithLong: (signed long)value; ++/** New instance from (signed) long long value. */ +++ (NSNumber*) numberWithLongLong: (signed long long)value; ++/** New instance from (signed) short value. */ +++ (NSNumber*) numberWithShort: (signed short)value; ++/** New instance from unsigned char value. */ +++ (NSNumber*) numberWithUnsignedChar: (unsigned char)value; ++/** New instance from unsigned int value. */ +++ (NSNumber*) numberWithUnsignedInt: (unsigned int)value; ++/** New instance from unsigned long value. */ +++ (NSNumber*) numberWithUnsignedLong: (unsigned long)value; ++/** New instance from unsigned long long value. */ +++ (NSNumber*) numberWithUnsignedLongLong: (unsigned long long)value; ++/** New instance from unsigned short value. */ +++ (NSNumber*) numberWithUnsignedShort: (unsigned short)value; ++ ++/** Initialize from boolean value. */ ++- (id) initWithBool: (BOOL)value; ++/** Initialize from signed char value. */ ++- (id) initWithChar: (signed char)value; ++/** Initialize from double value. */ ++- (id) initWithDouble: (double)value; ++/** Initialize from float value. */ ++- (id) initWithFloat: (float)value; ++/** Initialize from (signed) int value. */ ++- (id) initWithInt: (signed int)value; ++/** Initialize from (signed) long value. */ ++- (id) initWithLong: (signed long)value; ++/** Initialize from (signed) long long value. */ ++- (id) initWithLongLong: (signed long long)value; ++/** Initialize from (signed) short value. */ ++- (id) initWithShort: (signed short)value; ++/** Initialize from unsigned char value. */ ++- (id) initWithUnsignedChar: (unsigned char)value; ++/** Initialize from unsigned int value. */ ++- (id) initWithUnsignedInt: (unsigned int)value; ++/** Initialize from unsigned long value. */ ++- (id) initWithUnsignedLong: (unsigned long)value; ++/** Initialize from unsigned long long value. */ ++- (id) initWithUnsignedLongLong: (unsigned long long)value; ++/** Initialize from unsigned short value. */ ++- (id) initWithUnsignedShort: (unsigned short)value; ++ ++// Accessing Data ++ ++/** ++ * Return value as a BOOL; this will in fact be a char value converted ++ * if necessary from type initialized with; if you wish to consider anything ++ * nonzero TRUE do not compare directly to YES, but use <code>'!= NO'</code>. ++ */ ++- (BOOL) boolValue; ++/** Returns value as a signed char, converting if necessary. */ ++- (signed char) charValue; ++/** Returns value as a double, converting if necessary. */ ++- (double) doubleValue; ++/** Returns value as a float, converting if necessary. */ ++- (float) floatValue; ++/** Returns value as a (signed) int, converting if necessary. */ ++- (signed int) intValue; ++/** Returns value as a (signed) long, converting if necessary. */ ++- (signed long) longValue; ++/** Returns value as a (signed) long long, converting if necessary. */ ++- (signed long long) longLongValue; ++/** Returns value as a (signed) short, converting if necessary. */ ++- (signed short) shortValue; ++/** Returns value as an unsigned char, converting if necessary. */ ++- (unsigned char) unsignedCharValue; ++/** Returns value as an unsigned int, converting if necessary. */ ++- (unsigned int) unsignedIntValue; ++/** Returns value as an unsigned long, converting if necessary. */ ++- (unsigned long) unsignedLongValue; ++/** Returns value as an unsigned long long, converting if necessary. */ ++- (unsigned long long) unsignedLongLongValue; ++/** Returns value as an unsigned short, converting if necessary. */ ++- (unsigned short) unsignedShortValue; ++ ++/** Returns -description . */ ++- (NSString*) stringValue; ++ ++/** ++ * Returns the string representation of this number using a non-localised ++ * conversion (decimal point is '.' irrespective of the locale). ++ */ ++- (NSString*) description; ++ ++/** ++ * <p> ++ * Produces a string representation of the number. For a boolean ++ * this will be either 'true' or 'false'. For other numbers the ++ * format is produced using the initWithFormat:locale:... method ++ * of NSString, and the format depends on the type of number as ++ * follows - ++ * </p> ++ * <deflist> ++ * <term>char</term> ++ * <desc>%i</desc> ++ * <term> short</term> ++ * <desc>%hi</desc> ++ * <term> int</term> ++ * <desc>%i</desc> ++ * <term> long</term> ++ * <desc>%li</desc> ++ * <term> long long</term> ++ * <desc>%lli</desc> ++ * <term> unsigned char</term> ++ * <desc>%u</desc> ++ * <term> unsigned short</term> ++ * <desc>%hu</desc> ++ * <term> unsigned int</term> ++ * <desc>%u</desc> ++ * <term> unsigned long</term> ++ * <desc>%lu</desc> ++ * <term> unsigned long long</term> ++ * <desc>%llu</desc> ++ * <term> float</term> ++ * <desc>%0.7g</desc> ++ * <term> double</term> ++ * <desc>%0.16g</desc> ++ * </deflist> ++ */ ++- (NSString*) descriptionWithLocale: (id)locale; ++ ++/** ++ * Compares receiver with otherNumber, using C type conversion if necessary, ++ * and returns <code>NSOrderedAscending</code>, ++ * <code>NSOrderedDescending</code>, or <code>NSOrderedSame</code> depending ++ * on whether it is less than, greater than, or equal to otherNumber. ++ */ ++- (NSComparisonResult) compare: (NSNumber*)otherNumber; ++ ++/** ++ * Returns whether receiver and otherNumber represent the same numerical value. ++ */ ++- (BOOL) isEqualToNumber: (NSNumber*)otherNumber; ++ ++ ++#if OS_API_VERSION(MAC_OS_X_VERSION_10_5, GS_API_LATEST) ++/** Return a number intialised with NSInteger. ++ */ +++ (NSNumber*) numberWithInteger: (NSInteger)value; ++/** Return a number intialised with NSUInteger. ++ */ +++ (NSNumber*) numberWithUnsignedInteger: (NSUInteger)value; ++/** Initialise the receiver with NSInteger content. ++ */ ++- (id) initWithInteger: (NSInteger)value; ++/** Initialise the receiver with NSUInteger content. ++ */ ++- (id) initWithUnsignedInteger: (NSUInteger)value; ++/** Return the contents of the receiver as NSInteger. ++ */ ++- (NSInteger) integerValue; ++/** Return the contents of the receiver as NSUInteger. ++ */ ++- (NSUInteger) unsignedIntegerValue; ++#endif ++ ++@end ++ ++#if OS_API_VERSION(GS_API_NONE, GS_API_NONE) ++ ++/** Note: Defines a method that is not in the OpenStep spec, but makes ++ subclassing easier. */ ++@interface NSValue (Subclassing) ++ ++/** Used by value: withObjCType: to determine the concrete subclass to alloc. */ +++ (Class) valueClassWithObjCType: (const char*)type; ++ ++@end ++#endif ++ ++#if defined(__cplusplus) ++} ++#endif ++ ++#if !NO_GNUSTEP && !defined(GNUSTEP_BASE_INTERNAL) ++#import "../GNUstepBase/NSNumber+GNUstepBase.h" ++#endif ++ ++#endif /* __NSValue_h_GNUSTEP_BASE_INCLUDE */ +Index: gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSDate.h +=================================================================== +--- a/src/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSDate.h (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSDate.h (.../branches/gcc-8-branch) +@@ -0,0 +1,300 @@ ++/* Interface for NSDate for GNUStep ++ Copyright (C) 1994, 1996, 1999 Free Software Foundation, Inc. ++ ++ This file is part of the GNUstep Base Library. ++ ++ 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 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. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with this library; if not, write to the Free ++ Software Foundation, Inc., 51 Franklin Street, Fifth Floor, ++ Boston, MA 02111 USA. ++ */ ++ ++#ifndef __NSDate_h_GNUSTEP_BASE_INCLUDE ++#define __NSDate_h_GNUSTEP_BASE_INCLUDE ++#import "../GNUstepBase/GSVersionMacros.h" ++ ++#import "NSObjCRuntime.h" ++ ++#if defined(__cplusplus) ++extern "C" { ++#endif ++ ++GS_EXPORT NSString * const NSSystemClockDidChangeNotification; ++ ++/** ++ * Time interval difference between two dates, in seconds. ++ */ ++typedef double NSTimeInterval; ++ ++/** ++ * Time interval between the unix standard reference date of 1 January 1970 ++ * and the OpenStep reference date of 1 January 2001<br /> ++ * This number comes from:<br /> ++ * (((31 years * 365 days) + 8 days for leap years) = total number of days<br /> ++ * 24 hours * 60 minutes * 60 seconds)<br /> ++ * This ignores leap-seconds. ++ */ ++GS_EXPORT const NSTimeInterval NSTimeIntervalSince1970; ++ ++#import "NSObject.h" ++ ++@class NSArray; ++@class NSCalendarDate; ++@class NSData; ++@class NSDictionary; ++@class NSString; ++@class NSTimeZone; ++@class NSTimeZoneDetail; ++ ++@interface NSDate : NSObject <NSCoding,NSCopying> ++{ ++} ++ ++/** Returns an autoreleased instance with the current date/time. ++ */ +++ (id) date; ++ ++#if OS_API_VERSION(GS_API_MACOSX, GS_API_LATEST) ++/** Returns an autoreleased instance representing the date and time given ++ * by string. The value of string may be a 'natural' specification as ++ * specified by the preferences in the user defaults database, allowing ++ * phrases like 'last tuesday' ++ */ +++ (id) dateWithNaturalLanguageString: (NSString*)string; ++ ++/** ++ * <p>Returns an autoreleased instance representing the date and time given ++ * by string. The value of string may be a 'natural' specification as ++ * specified by the preferences in the user defaults database, allowing ++ * phrases like 'last tuesday' ++ * </p> ++ * The locale contains keys such as - ++ * <deflist> ++ * <term>NSDateTimeOrdering</term> ++ * <desc>Controls the use of ambiguous numbers. This is done as a ++ * sequence of the letters D(ay), M(onth), Y(ear), and H(our). ++ * YMDH means that the first number encountered is assumed to be a ++ * year, the second a month, the third a day, and the last an hour. ++ * </desc> ++ * <term>NSEarlierTimeDesignations</term> ++ * <desc>An array of strings for times in the past.<br /> ++ * Defaults are <em>ago</em>, <em>last</em>, <em>past</em>, <em>prior</em> ++ * </desc> ++ * <term>NSHourNameDesignations</term> ++ * <desc>An array of arrays of strings identifying the time of day. ++ * Each array has an hour as its first value, and one or more words ++ * as subsequent values.<br /> ++ * Defaults are: (0, midnight), (10, morning), (12, noon, lunch), ++ * (14, afternoon), (19, dinner). ++ * </desc> ++ * <term>NSLaterTimeDesignations</term> ++ * <desc>An array of strings for times in the future.<br /> ++ * Default is <em>next</em> ++ * </desc> ++ * <term>NSNextDayDesignations</term> ++ * <desc>The day after today. Default is <em>tomorrow.</em> ++ * </desc> ++ * <term>NSNextNextDayDesignations</term> ++ * <desc>The day after tomorrow. Default is <em>nextday.</em> ++ * </desc> ++ * <term>NSPriorDayDesignations</term> ++ * <desc>The day before today. Default is <em>yesterday.</em> ++ * </desc> ++ * <term>NSThisDayDesignations</term> ++ * <desc>Identifies the current day. Default is <em>today.</em> ++ * </desc> ++ * <term>NSYearMonthWeekDesignations</term> ++ * <desc>An array giving the word for year, month, and week.<br /> ++ * Defaults are <em>year</em>, <em>month</em> and <em>week</em>. ++ * </desc> ++ * </deflist> ++ */ +++ (id) dateWithNaturalLanguageString: (NSString*)string ++ locale: (NSDictionary*)locale; ++#endif ++ ++/** Returns an autoreleased instance with the date and time value given ++ * by the string using the ISO standard format YYYY-MM-DD HH:MM:SS +/-HHHMM ++ * (all the fields of which must be present). ++ */ +++ (id) dateWithString: (NSString*)description; ++ ++#if OS_API_VERSION(MAC_OS_X_VERSION_10_6,GS_API_LATEST) ++/** Returns an autoreleased NSDate instance whose value is offset from ++ * that of the given date by the specified interval in seconds. ++ */ +++ (id) dateWithTimeInterval: (NSTimeInterval)seconds sinceDate: (NSDate*)date; ++#endif ++ ++/** Returns an autoreleased instance with the offset from the unix system ++ * reference date of 1 January 1970, GMT. ++ */ +++ (id) dateWithTimeIntervalSince1970: (NSTimeInterval)seconds; ++ ++/** Returns an autoreleased instance with the offset from the current ++ * date/time given by seconds (which may be fractional). ++ */ +++ (id) dateWithTimeIntervalSinceNow: (NSTimeInterval)seconds; ++ ++/** Returns an autoreleased instance with the offset from the OpenStep ++ * reference date of 1 January 2001, GMT. ++ */ +++ (id) dateWithTimeIntervalSinceReferenceDate: (NSTimeInterval)seconds; ++ ++/** Returns an autoreleased instance with the date/time set in the far ++ * past. ++ */ +++ (id) distantPast; ++ ++/** Returns an autoreleased instance with the date/time set in the far ++ * future. ++ */ +++ (id) distantFuture; ++ ++/** Returns the time interval between the reference date and the current ++ * time. ++ */ +++ (NSTimeInterval) timeIntervalSinceReferenceDate; ++ ++/** Returns an autorelease date instance formed by adding the specified ++ * time interval in seconds to the receiver's time interval. ++ */ ++- (id) addTimeInterval: (NSTimeInterval)seconds; ++ ++/** Returns the time interval between the receivers value and the ++ * OpenStep reference date of 1 Jan 2001 GMT. ++ */ ++- (NSComparisonResult) compare: (NSDate*)otherDate; ++ ++#if OS_API_VERSION(MAC_OS_X_VERSION_10_6,GS_API_LATEST) ++/** Returns an autoreleased NSDate instance whose value is offset from ++ * that of the receiver by the specified interval. ++ */ ++- (id) dateByAddingTimeInterval: (NSTimeInterval)ti; ++#endif ++ ++/** Returns an autoreleased instance of the [NSCalendarDate] class whose ++ * date/time value is the same as that of the receiver, and which uses ++ * the formatString and timeZone specified. ++ */ ++- (NSCalendarDate*) dateWithCalendarFormat: (NSString*)formatString ++ timeZone: (NSTimeZone*)timeZone; ++ ++/** Returns a string representation of the receiver formatted according ++ * to the default format string, time zone, and locale. ++ */ ++- (NSString*) description; ++ ++/** Returns a string representation of the receiver formatted according ++ * to the specified format string, time zone, and locale. ++ */ ++- (NSString*) descriptionWithCalendarFormat: (NSString*)format ++ timeZone: (NSTimeZone*)aTimeZone ++ locale: (NSDictionary*)l; ++ ++/** Returns a string representation of the receiver formatted according ++ * to the default format string and time zone, but using the given locale. ++ */ ++- (NSString*) descriptionWithLocale: (id)locale; ++ ++/** Returns the earlier of the receiver and otherDate.<br /> ++ * If the two represent identical date/time values, returns the receiver. ++ */ ++- (NSDate*) earlierDate: (NSDate*)otherDate; ++ ++/** Returns an instance initialised with the current date/time. ++ */ ++- (id) init; ++ ++/** Returns an instance with the date and time value given ++ * by the string using the ISO standard format YYYY-MM-DD HH:MM:SS +/-HHHMM ++ * (all the fields of which must be present). ++ */ ++- (id) initWithString: (NSString*)description; ++ ++/** Returns an instance with the given offset from anotherDate. ++ */ ++- (id) initWithTimeInterval: (NSTimeInterval)secsToBeAdded ++ sinceDate: (NSDate*)anotherDate; ++ ++#if OS_API_VERSION(GS_API_MACOSX, GS_API_LATEST) ++/** Returns an instance with the offset from the unix system ++ * reference date of 1 January 1970, GMT. ++ */ ++- (id) initWithTimeIntervalSince1970: (NSTimeInterval)seconds; ++#endif ++ ++/** Returns an instance with the offset from the current date/time. ++ */ ++- (id) initWithTimeIntervalSinceNow: (NSTimeInterval)secsToBeAdded; ++ ++/** <init /> ++ * Returns an instance with the given offset from the OpenStep ++ * reference date of 1 January 2001, GMT. ++ */ ++- (id) initWithTimeIntervalSinceReferenceDate: (NSTimeInterval)secs; ++ ++/** Returns NO if other is not a date, otherwise returns the result of ++ * calling the -isEqualtoDate: method. ++ */ ++- (BOOL) isEqual: (id)other; ++ ++/** Returns whether the receiver is exactly equal to other, to the limit ++ * of the NSTimeInterval precision.<br /> ++ * This is the behavior of the current MacOS-X system, not that of the ++ * OpenStep specification (which counted two dates within a second of ++ * each other as being equal).<br /> ++ * The old behavior meant that two dates equal to a third date were not ++ * necessarily equal to each other (confusing), and meant that there was ++ * no reasonable way to use a date as a dictionary key or store dates ++ * in a set. ++ */ ++- (BOOL) isEqualToDate: (NSDate*)other; ++ ++/** Returns the earlier of the receiver and otherDate.<br /> ++ * If the two represent identical date/time values, returns the receiver. ++ */ ++- (NSDate*) laterDate: (NSDate*)otherDate; ++ ++/** Returns the time interval between the receivers value and the ++ * unix system reference date of 1 January 1970, GMT. ++ */ ++- (NSTimeInterval) timeIntervalSince1970; ++ ++/** Returns the time interval between the receivers value and that of the ++ * otherDate argument. If otherDate is earlier than the receiver, the ++ * returned value will be positive, if it is later it will be negative.<br /> ++ * For current (2011) OSX compatibility, this method returns NaN if otherDate ++ * is nil ... do not write code depending on that behavior. ++ */ ++- (NSTimeInterval) timeIntervalSinceDate: (NSDate*)otherDate; ++ ++/** Returns the time interval between the receivers value and the ++ * current date/time. If the receiver represents a date/time in ++ * the past this will be negative, if it is in the future the ++ * returned value will be positive. ++ */ ++- (NSTimeInterval) timeIntervalSinceNow; ++ ++/** Returns the time interval between the receivers value and the ++ * OpenStep reference date of 1 Jan 2001 GMT. ++ */ ++- (NSTimeInterval) timeIntervalSinceReferenceDate; ++ ++@end ++ ++#if defined(__cplusplus) ++} ++#endif ++ ++#endif /* __NSDate_h_GNUSTEP_BASE_INCLUDE*/ +Index: gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSArray.h +=================================================================== +--- a/src/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSArray.h (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSArray.h (.../branches/gcc-8-branch) +@@ -0,0 +1,430 @@ ++/* Interface for NSArray for GNUStep ++ Copyright (C) 1995-2015 Free Software Foundation, Inc. ++ ++ Written by: Andrew Kachites McCallum <mccallum@gnu.ai.mit.edu> ++ Created: 1995 ++ ++ This file is part of the GNUstep Base Library. ++ ++ 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 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. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with this library; if not, write to the Free ++ Software Foundation, Inc., 51 Franklin Street, Fifth Floor, ++ Boston, MA 02111 USA. ++ */ ++ ++#ifndef __NSArray_h_GNUSTEP_BASE_INCLUDE ++#define __NSArray_h_GNUSTEP_BASE_INCLUDE ++#import "../GNUstepBase/GSVersionMacros.h" ++ ++#import "NSObject.h" ++#import "NSRange.h" ++#import "NSEnumerator.h" ++#if __BLOCKS__ ++#import "../GNUstepBase/GSBlocks.h" ++#endif ++ ++#if defined(__cplusplus) ++extern "C" { ++#endif ++ ++@class NSString; ++@class NSURL; ++@class NSIndexSet; ++ ++#if OS_API_VERSION(MAC_OS_X_VERSION_10_6, GS_API_LATEST) ++enum ++{ ++ NSBinarySearchingFirstEqual = (1UL << 8), /** Specifies that the binary ++ * search should find the first object equal in the array. ++ */ ++ NSBinarySearchingLastEqual = (1UL << 9), /** Specifies that the binary ++ * search should find the last object equal in the array. ++ */ ++ NSBinarySearchingInsertionIndex = (1UL << 10), /** Specifies that the binary ++ * search should find the index at which an equal object should be inserted ++ * in order to keep the array sorted ++ */ ++}; ++ ++typedef NSUInteger NSBinarySearchingOptions; ++#endif ++ ++@interface GS_GENERIC_CLASS(NSArray, __covariant ElementT) : NSObject ++ <NSCoding, NSCopying, NSMutableCopying, NSFastEnumeration> ++ +++ (instancetype) array; +++ (instancetype) arrayWithArray: (GS_GENERIC_CLASS(NSArray, ElementT) *)array; +++ (instancetype) arrayWithContentsOfFile: (NSString*)file; ++#if OS_API_VERSION(GS_API_MACOSX, GS_API_LATEST) +++ (instancetype) arrayWithContentsOfURL: (NSURL*)aURL; ++#endif +++ (instancetype) arrayWithObject: (id)anObject; +++ (instancetype) arrayWithObjects: (id)firstObject, ...; +++ (instancetype) arrayWithObjects: (const id[])objects count: (NSUInteger)count; ++ ++- (GS_GENERIC_CLASS(NSArray, ElementT) *) arrayByAddingObject: ++ (GS_GENERIC_TYPE(ElementT))anObject; ++- (GS_GENERIC_CLASS(NSArray, ElementT) *) arrayByAddingObjectsFromArray: ++ (GS_GENERIC_CLASS(NSArray, ElementT)*)anotherArray; ++- (BOOL) containsObject: (GS_GENERIC_TYPE(ElementT))anObject; ++ ++/** <override-subclass /> ++ * Returns the number of elements contained in the receiver. ++ */ ++- (NSUInteger) count; ++- (void) getObjects: (__unsafe_unretained GS_GENERIC_TYPE(ElementT)[])aBuffer; ++- (void) getObjects: (__unsafe_unretained GS_GENERIC_TYPE(ElementT)[])aBuffer ++ range: (NSRange)aRange; ++- (NSUInteger) indexOfObject: (GS_GENERIC_TYPE(ElementT))anObject; ++- (NSUInteger) indexOfObject: (GS_GENERIC_TYPE(ElementT))anObject ++ inRange: (NSRange)aRange; ++- (NSUInteger) indexOfObjectIdenticalTo: (GS_GENERIC_TYPE(ElementT))anObject; ++- (NSUInteger) indexOfObjectIdenticalTo: (GS_GENERIC_TYPE(ElementT))anObject ++ inRange: (NSRange)aRange; ++- (instancetype) init; ++- (instancetype) initWithArray: (GS_GENERIC_CLASS(NSArray, ElementT)*)array; ++#if OS_API_VERSION(GS_API_MACOSX, GS_API_LATEST) ++- (instancetype) initWithArray: (GS_GENERIC_CLASS(NSArray, ElementT)*)array ++ copyItems: (BOOL)shouldCopy; ++#endif ++- (instancetype) initWithContentsOfFile: (NSString*)file; ++#if OS_API_VERSION(GS_API_MACOSX, GS_API_LATEST) ++- (instancetype) initWithContentsOfURL: (NSURL*)aURL; ++#endif ++- (instancetype) initWithObjects: (GS_GENERIC_TYPE(ElementT)) firstObject, ...; ++ ++/** <init /> <override-subclass /> ++ * This should initialize the array with count (may be zero) objects.<br /> ++ * Retains each object placed in the array.<br /> ++ * Calls -init (which does nothing but maintain MacOS-X compatibility), ++ * and needs to be re-implemented in subclasses in order to have all ++ * other initialisers work. ++ */ ++- (instancetype) initWithObjects: (const GS_GENERIC_TYPE(ElementT)[])objects ++ count: (NSUInteger)count; ++- (GS_GENERIC_TYPE(ElementT)) lastObject; ++#if OS_API_VERSION(MAC_OS_X_VERSION_10_6, GS_API_LATEST) ++- (GS_GENERIC_TYPE(ElementT)) firstObject; ++#endif ++ ++/** <override-subclass /> ++ * Returns the object at the specified index. ++ * Raises an exception of the index is beyond the array. ++ */ ++- (GS_GENERIC_TYPE(ElementT)) objectAtIndex: (NSUInteger)index; ++ ++#if OS_API_VERSION(MAC_OS_X_VERSION_10_4, GS_API_LATEST) ++- (GS_GENERIC_CLASS(NSArray, ElementT) *) objectsAtIndexes: ++ (NSIndexSet *)indexes; ++#endif ++ ++- (GS_GENERIC_TYPE(ElementT)) firstObjectCommonWithArray: ++ (GS_GENERIC_CLASS(NSArray, ElementT) *)otherArray; ++- (BOOL) isEqualToArray: (NSArray*)otherArray; ++ ++#if OS_API_VERSION(GS_API_OPENSTEP, GS_API_MACOSX) ++- (void) makeObjectsPerform: (SEL)aSelector; ++- (void) makeObjectsPerform: (SEL)aSelector withObject: (id)argument; ++#endif ++#if OS_API_VERSION(GS_API_MACOSX, GS_API_LATEST) ++- (void) makeObjectsPerformSelector: (SEL)aSelector; ++- (void) makeObjectsPerformSelector: (SEL)aSelector withObject: (id)arg; ++#endif ++ ++- (NSData*) sortedArrayHint; ++- (GS_GENERIC_CLASS(NSArray, ElementT)*) sortedArrayUsingFunction: ++ (NSComparisonResult (*)(id, id, void*))comparator ++ context: (void*)context; ++- (GS_GENERIC_CLASS(NSArray, ElementT)*) sortedArrayUsingFunction: ++ (NSComparisonResult (*)(id, id, void*))comparator ++ context: (void*)context ++ hint: (NSData*)hint; ++- (GS_GENERIC_CLASS(NSArray, ElementT)*) sortedArrayUsingSelector: ++ (SEL)comparator; ++- (GS_GENERIC_CLASS(NSArray, ElementT)*) subarrayWithRange: (NSRange)aRange; ++ ++- (NSString*) componentsJoinedByString: (NSString*)separator; ++- (GS_GENERIC_CLASS(NSArray, NSString*)*) pathsMatchingExtensions: ++ (GS_GENERIC_CLASS(NSArray, NSString*)*)extensions; ++ ++- (GS_GENERIC_CLASS(NSEnumerator, ElementT)*) objectEnumerator; ++- (GS_GENERIC_CLASS(NSEnumerator, ElementT)*) reverseObjectEnumerator; ++ ++- (NSString*) description; ++- (NSString*) descriptionWithLocale: (id)locale; ++- (NSString*) descriptionWithLocale: (id)locale ++ indent: (NSUInteger)level; ++ ++- (BOOL) writeToFile: (NSString*)path atomically: (BOOL)useAuxiliaryFile; ++#if OS_API_VERSION(GS_API_MACOSX, GS_API_LATEST) ++- (BOOL) writeToURL: (NSURL*)url atomically: (BOOL)useAuxiliaryFile; ++- (GS_GENERIC_TYPE(ElementT)) valueForKey: (NSString*)key; ++- (void) setValue: (GS_GENERIC_TYPE(ElementT))value forKey: (NSString*)key; ++#endif ++ ++#if OS_API_VERSION(MAC_OS_X_VERSION_10_6, GS_API_LATEST) ++ ++#if __BLOCKS__ ++DEFINE_BLOCK_TYPE(GSEnumeratorBlock, void, GS_GENERIC_TYPE(ElementT), ++ NSUInteger, BOOL*); ++DEFINE_BLOCK_TYPE(GSPredicateBlock, BOOL, GS_GENERIC_TYPE(ElementT), ++ NSUInteger, BOOL*); ++/** ++ * Enumerate over the collection using the given block. The first argument is ++ * the object and the second is the index in the array. The final argument is ++ * a pointer to a BOOL indicating whether the enumeration should stop. Setting ++ * this to YES will interrupt the enumeration. ++ */ ++- (void) enumerateObjectsUsingBlock: (GSEnumeratorBlock)aBlock; ++ ++/** ++ * Enumerate over the collection using the given block. The first argument is ++ * the object and the second is the index in the array. The final argument is ++ * a pointer to a BOOL indicating whether the enumeration should stop. Setting ++ * this to YES will interrupt the enumeration. ++ * ++ * The opts argument is a bitfield. Setting the NSNSEnumerationConcurrent flag ++ * specifies that it is thread-safe. The NSEnumerationReverse bit specifies ++ * that it should be enumerated in reverse order. ++ */ ++- (void) enumerateObjectsWithOptions: (NSEnumerationOptions)opts ++ usingBlock: (GSEnumeratorBlock)aBlock; ++/** ++ * Enumerate over the specified indexes in the collection using the given ++ * block. The first argument is the object and the second is the index in the ++ * array. The final argument is a pointer to a BOOL indicating whether the ++ * enumeration should stop. Setting this to YES will interrupt the ++ * enumeration. ++ * ++ * The opts argument is a bitfield. Setting the NSNSEnumerationConcurrent flag ++ * specifies that it is thread-safe. The NSEnumerationReverse bit specifies ++ * that it should be enumerated in reverse order. ++ */ ++- (void) enumerateObjectsAtIndexes: (NSIndexSet*)indexSet ++ options: (NSEnumerationOptions)opts ++ usingBlock: (GSEnumeratorBlock)block; ++/** ++ * Returns the indexes of the objects in a collection that match the condition ++ * specified by the block. ++ * ++ * The opts argument is a bitfield. Setting the NSNSEnumerationConcurrent flag ++ * specifies that it is thread-safe. The NSEnumerationReverse bit specifies ++ * that it should be enumerated in reverse order. ++ */ ++- (NSIndexSet *) indexesOfObjectsWithOptions: (NSEnumerationOptions)opts ++ passingTest: (GSPredicateBlock)predicate; ++ ++/** ++ * Returns the indexes of the objects in a collection that match the condition ++ * specified by the block. ++ */ ++- (NSIndexSet*) indexesOfObjectsPassingTest: (GSPredicateBlock)predicate; ++ ++/** ++ * Returns the indexes of the objects in a collection that match the condition ++ * specified by the block and are in the range specified by the index set. ++ * ++ * The opts argument is a bitfield. Setting the NSNSEnumerationConcurrent flag ++ * specifies that it is thread-safe. The NSEnumerationReverse bit specifies ++ * that it should be enumerated in reverse order. ++ */ ++- (NSIndexSet*) indexesOfObjectsAtIndexes: (NSIndexSet*)indexSet ++ options: (NSEnumerationOptions)opts ++ passingTest: (GSPredicateBlock)predicate; ++ ++/** ++ * Returns the index of the first object in the array that matches the ++ * condition specified by the block. ++ * ++ * The opts argument is a bitfield. Setting the NSNSEnumerationConcurrent flag ++ * specifies that it is thread-safe. The NSEnumerationReverse bit specifies ++ * that it should be enumerated in reverse order. ++ */ ++- (NSUInteger) indexOfObjectWithOptions: (NSEnumerationOptions)opts ++ passingTest: (GSPredicateBlock)predicate; ++ ++/** ++ * Returns the index of the first object in the array that matches the ++ * condition specified by the block. ++ */ ++- (NSUInteger) indexOfObjectPassingTest: (GSPredicateBlock)predicate; ++ ++/** ++ * Returns the index of the first object in the specified range in a collection ++ * that matches the condition specified by the block. ++ * ++ * The opts argument is a bitfield. Setting the NSNSEnumerationConcurrent flag ++ * specifies that it is thread-safe. The NSEnumerationReverse bit specifies ++ * that it should be enumerated in reverse order. ++ */ ++- (NSUInteger) indexOfObjectAtIndexes: (NSIndexSet*)indexSet ++ options: (NSEnumerationOptions)opts ++ passingTest: (GSPredicateBlock)predicate; ++ ++/** Returns a sorted array using the comparator to determine the ++ * order of objects. ++ */ ++- (GS_GENERIC_CLASS(NSArray, ElementT) *) sortedArrayUsingComparator: ++ (NSComparator)comparator; ++ ++/** Returns a sorted array using the block to determine the order of objects. ++ * ++ * The opts argument is a bitfield. Setting the NSSortConcurrent flag ++ * specifies that it is thread-safe. The NSSortStable bit specifies that ++ * it should keep equal objects in the same order. ++ */ ++- (GS_GENERIC_CLASS(NSArray, ElementT) *) ++ sortedArrayWithOptions: (NSSortOptions)options ++ usingComparator: (NSComparator)comparator; ++ ++/** ++ * Performs a binary search of the array within the specified range for the ++ * index of an object equal to obj according to cmp. ++ * If NSBinarySearchingInsertionIndex is specified, searches for the index ++ * at which such an object should be inserted. ++ */ ++- (NSUInteger) indexOfObject: (id)key ++ inSortedRange: (NSRange)range ++ options: (NSBinarySearchingOptions)options ++ usingComparator: (NSComparator)comparator; ++#endif ++#endif ++/** ++ * Accessor for subscripting. This is called by the compiler when you write ++ * code like anArray[12]. It should not be called directly. ++ */ ++- (GS_GENERIC_TYPE(ElementT)) objectAtIndexedSubscript: (NSUInteger)anIndex; ++@end ++ ++ ++@interface GS_GENERIC_CLASS(NSMutableArray, ElementT) : NSArray ++ +++ (instancetype) arrayWithCapacity: (NSUInteger)numItems; ++ ++/** <override-subclass /> ++ * Adds anObject at the end of the array, thus increasing the size of ++ * the array. The object is retained upon addition. ++ */ ++- (void) addObject: (GS_GENERIC_TYPE(ElementT))anObject; ++- (void) addObjectsFromArray: (GS_GENERIC_CLASS(NSArray, ElementT)*)otherArray; ++#if OS_API_VERSION(GS_API_MACOSX, GS_API_LATEST) ++- (void) exchangeObjectAtIndex: (NSUInteger)i1 ++ withObjectAtIndex: (NSUInteger)i2; ++#endif ++ ++/** <init /> <override-subclass /> ++ * Initialise the array with the specified capacity ... this ++ * should ensure that the array can have numItems added efficiently.<br /> ++ * Calls -init (which does nothing but maintain MacOS-X compatibility), ++ * and needs to be re-implemented in subclasses in order to have all ++ * other initialisers work. ++ */ ++- (instancetype) initWithCapacity: (NSUInteger)numItems; ++ ++/** <override-subclass /> ++ * Inserts an object into the receiver at the specified location.<br /> ++ * Raises an exception if given an array index which is too large.<br /> ++ * The size of the array increases by one.<br /> ++ * The object is retained by the array. ++ */ ++- (void) insertObject: (GS_GENERIC_TYPE(ElementT))anObject ++ atIndex: (NSUInteger)index; ++#if OS_API_VERSION(MAC_OS_X_VERSION_10_4, GS_API_LATEST) ++- (void) insertObjects: (GS_GENERIC_CLASS(NSArray, ElementT) *)objects ++ atIndexes: (NSIndexSet *)indexes; ++#endif ++ ++/** <override-subclass /> ++ * Removes an object from the receiver at the specified location.<br /> ++ * The size of the array decreases by one.<br /> ++ * Raises an exception if given an array index which is too large.<br /> ++ */ ++- (void) removeObjectAtIndex: (NSUInteger)index; ++ ++- (void) removeObjectsAtIndexes: (NSIndexSet *)indexes; ++ ++/** <override-subclass /> ++ * Places an object into the receiver at the specified location.<br /> ++ * Raises an exception if given an array index which is too large.<br /> ++ * The object is retained by the array. ++ */ ++- (void) replaceObjectAtIndex: (NSUInteger)index ++ withObject: (GS_GENERIC_TYPE(ElementT))anObject; ++ ++#if OS_API_VERSION(MAC_OS_X_VERSION_10_4, GS_API_LATEST) ++- (void) replaceObjectsAtIndexes: (NSIndexSet *)indexes ++ withObjects: (GS_GENERIC_CLASS(NSArray, ElementT)*)objects; ++#endif ++ ++- (void) replaceObjectsInRange: (NSRange)aRange ++ withObjectsFromArray: (GS_GENERIC_CLASS(NSArray, ElementT)*)anArray; ++ ++- (void) replaceObjectsInRange: (NSRange)aRange ++ withObjectsFromArray: (GS_GENERIC_CLASS(NSArray, ElementT)*)anArray ++ range: (NSRange)anotherRange; ++ ++- (void) setArray: (GS_GENERIC_CLASS(NSArray, ElementT) *)otherArray; ++ ++- (void) removeAllObjects; ++- (void) removeLastObject; ++- (void) removeObject: (GS_GENERIC_TYPE(ElementT))anObject; ++- (void) removeObject: (GS_GENERIC_TYPE(ElementT))anObject ++ inRange: (NSRange)aRange; ++- (void) removeObjectIdenticalTo: (GS_GENERIC_TYPE(ElementT))anObject; ++- (void) removeObjectIdenticalTo: (GS_GENERIC_TYPE(ElementT))anObject ++ inRange: (NSRange)aRange; ++- (void) removeObjectsInArray: (GS_GENERIC_CLASS(NSArray, ElementT)*)otherArray; ++- (void) removeObjectsInRange: (NSRange)aRange; ++- (void) removeObjectsFromIndices: (NSUInteger*)indices ++ numIndices: (NSUInteger)count; ++ ++- (void) sortUsingFunction: ++ (NSComparisonResult (*)(GS_GENERIC_TYPE(ElementT), ++ GS_GENERIC_TYPE(ElementT),void*))compare ++ context: (void*)context; ++- (void) sortUsingSelector: (SEL)comparator; ++ ++ ++#if OS_API_VERSION(MAC_OS_X_VERSION_10_6, GS_API_LATEST) ++#if __BLOCKS__ ++/** ++ * Sorts the array using the specified comparator block. ++ */ ++- (void) sortUsingComparator: (NSComparator)comparator; ++ ++/** ++ * Sorts the array using the specified comparator block and options. ++ */ ++- (void) sortWithOptions: (NSSortOptions)options ++ usingComparator: (NSComparator)comparator; ++#endif ++#endif ++#if OS_API_VERSION(MAC_OS_X_VERSION_10_8, GS_API_LATEST) ++/** Set method called by the compiler with array subscripting.<br /> ++ * Replaces the object at anIndex or, if anIndex is the length of the array, ++ * this method appends abObject to the array. ++ */ ++- (void) setObject: (GS_GENERIC_TYPE(ElementT))anObject ++atIndexedSubscript: (NSUInteger)anIndex; ++#endif ++@end ++ ++#if defined(__cplusplus) ++} ++#endif ++ ++#if !NO_GNUSTEP && !defined(GNUSTEP_BASE_INTERNAL) ++#import "../GNUstepBase/NSArray+GNUstepBase.h" ++#endif ++ ++#endif /* __NSArray_h_GNUSTEP_BASE_INCLUDE */ +Index: gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSEnumerator.h +=================================================================== +--- a/src/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSEnumerator.h (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSEnumerator.h (.../branches/gcc-8-branch) +@@ -0,0 +1,63 @@ ++/* ++ NSEnumerator.h ++ ++ Copyright (C) 1998 Free Software Foundation, Inc. ++ ++ Author: Scott Christley <scottc@net-community.com> ++ Date: January 1998 ++ ++ This file is part of the GNUstep Base Library. ++ ++ 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 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. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with this library; if not, write to the Free ++ Software Foundation, Inc., 51 Franklin Street, Fifth Floor, ++ Boston, MA 02111 USA. ++*/ ++ ++#ifndef __NSEnumerator_h_GNUSTEP_BASE_INCLUDE ++#define __NSEnumerator_h_GNUSTEP_BASE_INCLUDE ++#import "../GNUstepBase/GSVersionMacros.h" ++ ++#import "NSObject.h" ++ ++ ++#if defined(__cplusplus) ++extern "C" { ++#endif ++ ++@class GS_GENERIC_CLASS(NSArray, ElementT); ++ ++typedef struct ++{ ++ unsigned long state; ++ __unsafe_unretained id *itemsPtr; ++ unsigned long *mutationsPtr; ++ unsigned long extra[5]; ++} NSFastEnumerationState; ++ ++@protocol NSFastEnumeration ++- (NSUInteger) countByEnumeratingWithState: (NSFastEnumerationState *)state ++ objects: (__unsafe_unretained id[])stackbuf ++ count: (NSUInteger)len; ++@end ++ ++@interface GS_GENERIC_CLASS(NSEnumerator, IterT) : NSObject <NSFastEnumeration> ++- (GS_GENERIC_CLASS(NSArray, IterT) *) allObjects; ++- (GS_GENERIC_TYPE(IterT)) nextObject; ++@end ++ ++#if defined(__cplusplus) ++} ++#endif ++ ++#endif /* __NSEnumerator_h_GNUSTEP_BASE_INCLUDE */ +Index: gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSObjCRuntime.h +=================================================================== +--- a/src/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSObjCRuntime.h (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSObjCRuntime.h (.../branches/gcc-8-branch) +@@ -0,0 +1,317 @@ ++/** Interface to ObjC runtime for GNUStep ++ Copyright (C) 1995, 1997, 2000 Free Software Foundation, Inc. ++ ++ Written by: Andrew Kachites McCallum <mccallum@gnu.ai.mit.edu> ++ Date: 1995 ++ ++ This file is part of the GNUstep Base Library. ++ ++ 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 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. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with this library; if not, write to the Free ++ Software Foundation, Inc., 51 Franklin Street, Fifth Floor, ++ Boston, MA 02111 USA. ++ ++ AutogsdocSource: NSObjCRuntime.m ++ AutogsdocSource: NSLog.m ++ ++ */ ++ ++#ifndef __NSObjCRuntime_h_GNUSTEP_BASE_INCLUDE ++#define __NSObjCRuntime_h_GNUSTEP_BASE_INCLUDE ++ ++#ifdef __cplusplus ++#ifndef __STDC_LIMIT_MACROS ++#define __STDC_LIMIT_MACROS 1 ++#endif ++#endif ++ ++#import "../GNUstepBase/GSVersionMacros.h" ++#import "../GNUstepBase/GSConfig.h" ++#import "../GNUstepBase/GNUstep.h" ++#if __BLOCKS__ ++#import "../GNUstepBase/GSBlocks.h" ++#endif ++ ++#include <stdarg.h> ++#include <limits.h> ++#include <float.h> ++ ++/* PA HP-UX kludge. */ ++#if defined(__hppa__) && defined(__hpux__) && !defined(PRIuPTR) ++#define PRIuPTR "lu" ++#endif ++ ++/* IRIX kludge. */ ++#if defined(__sgi) ++/* IRIX 6.5 <inttypes.h> provides all definitions, but only for C99 ++ compilations. */ ++#define PRId8 "hhd" ++#define PRIu8 "hhu" ++#if (_MIPS_SZLONG == 32) ++#define PRId64 "lld" ++#define PRIu64 "llu" ++#endif ++/* This doesn't match <inttypes.h>, which always has "lld" here, but the ++ arguments are uint64_t, int64_t, which are unsigned long, long for ++ 64-bit in <sgidefs.h>. */ ++#if (_MIPS_SZLONG == 64) ++#define PRId64 "ld" ++#define PRIu64 "lu" ++#endif ++/* This doesn't match <inttypes.h>, which has "u" here, but the arguments ++ are uintptr_t, which is always unsigned long. */ ++#define PRIuPTR "lu" ++#endif ++ ++/* Solaris < 10 kludge. */ ++#if defined(__sun__) && defined(__svr4__) && !defined(PRIuPTR) ++#if defined(__arch64__) || defined (__x86_64__) ++#define PRIuPTR "lu" ++#define PRIdPTR "ld" ++#define PRIxPTR "lx" ++#else ++#define PRIuPTR "u" ++#define PRIdPTR "d" ++#define PRIxPTR "x" ++#endif ++#endif ++ ++ ++/* These typedefs must be in place before GSObjCRuntime.h is imported. ++ */ ++ ++#if !defined(NSINTEGER_DEFINED) ++typedef intptr_t NSInteger; ++typedef uintptr_t NSUInteger; ++# define NSIntegerMax INTPTR_MAX ++# define NSIntegerMin INTPTR_MIN ++# define NSUIntegerMax UINTPTR_MAX ++#endif /* !defined(NSINTEGER_DEFINED) */ ++ ++#if !defined(CGFLOAT_DEFINED) ++#if GS_SIZEOF_VOIDP == 8 ++#define CGFLOAT_IS_DBL 1 ++typedef double CGFloat; ++#define CGFLOAT_MIN DBL_MIN ++#define CGFLOAT_MAX DBL_MAX ++#else ++typedef float CGFloat; ++#define CGFLOAT_MIN FLT_MIN ++#define CGFLOAT_MAX FLT_MAX ++#endif ++#endif /* !defined(CGFLOAT_DEFINED) */ ++ ++#define NSINTEGER_DEFINED 1 ++#define CGFLOAT_DEFINED 1 ++#ifndef NS_AUTOMATED_REFCOUNT_UNAVAILABLE ++# if __has_feature(objc_arc) ++# define NS_AUTOMATED_REFCOUNT_UNAVAILABLE \ ++ __attribute__((unavailable("Not available with automatic reference counting"))) ++# else ++# define NS_AUTOMATED_REFCOUNT_UNAVAILABLE ++# endif ++#endif ++ ++ ++#if defined(__cplusplus) ++extern "C" { ++#endif ++ ++ ++/* ++ * We can have strongly typed enums in C++11 mode or when the objc_fixed_enum ++ * feature is availble. ++ */ ++#if (__has_feature(objc_fixed_enum) || (__cplusplus && (__cplusplus > 199711L) && __has_extension(cxx_strong_enums))) ++# define _GS_NAMED_ENUM(ty, name) enum name : ty name; enum name : ty ++# define _GS_ANON_ENUM(ty) enum : ty ++# if __cplusplus ++# define NS_OPTIONS(ty,name) ty name; enum : ty ++# else ++# define NS_OPTIONS(ty,name) NS_ENUM(ty,name) ++# endif ++#else // this provides less information, but works with older compilers ++# define _GS_NAMED_ENUM(ty, name) ty name; enum ++# define _GS_ANON_ENUM(ty) enum ++# define NS_OPTIONS(ty, name) NS_ENUM(ty, name) ++#endif ++// A bit of fairy dust to expand NS_ENUM to the correct variant ++#define _GS_GET_ENUM_MACRO(_first,_second,NAME,...) NAME ++/* The trick here is that placing the variadic args first will push the name ++ * that the _GS_GET_ENUM_MACRO expands to into the correct position. ++ */ ++#define NS_ENUM(...) _GS_GET_ENUM_MACRO(__VA_ARGS__,_GS_NAMED_ENUM,_GS_ANON_ENUM)(__VA_ARGS__) ++ ++/* ++ * If the compiler supports nullability qualifiers, we define the macros for ++ * non-null sections. ++ */ ++#if __has_feature(nullability) ++# define NS_ASSUME_NONNULL_BEGIN _Pragma("clang assume_nonnull begin") ++# define NS_ASSUME_NONNULL_END _Pragma("clang assume_nonnull end") ++#else ++# define NS_ASSUME_NONNULL_BEGIN ++# define NS_ASSUME_NONNULL_END ++#endif ++ ++/* ++ * Backwards compatibility macro for instance type. ++ */ ++#if !__has_feature(objc_instancetype) ++# define instancetype id ++#endif ++ ++/* ++ * Backwards compatibility macros for Objective-C lightweight generics. ++ */ ++#if __has_feature(objc_generics) ++# define GS_GENERIC_CLASS(clz, ...) clz<__VA_ARGS__> ++# define GS_GENERIC_TYPE_F(typeRef, fallback) typeRef ++#else ++# define GS_GENERIC_CLASS(clz, ...) clz ++# define GS_GENERIC_TYPE_F(typeRef, fallback) fallback ++#endif ++#define GS_GENERIC_TYPE(typeRef) GS_GENERIC_TYPE_F(typeRef, id) ++ ++/** ++ * Backwards compatibility macro for the objc_designated_initializer attribute ++ */ ++#if __has_attribute(objc_designated_initializer) ++# define NS_DESIGNATED_INITIALIZER __attribute__((objc_designated_initializer)) ++#else ++# define NS_DESIGNATED_INITIALIZER ++#endif ++ ++/** Bitfield used to specify options to control enumeration over collections. ++ */ ++typedef NS_OPTIONS(NSUInteger, NSEnumerationOptions) ++{ ++ NSEnumerationConcurrent = (1UL << 0), /** Specifies that the enumeration ++ * is concurrency-safe. Note that this does not mean that it will be ++ * carried out in a concurrent manner, only that it can be. ++ */ ++ ++ NSEnumerationReverse = (1UL << 1) /** Specifies that the enumeration should ++ * happen in the opposite of the natural order of the collection. ++ */ ++}; ++ ++ ++/** Bitfield used to specify options to control the sorting of collections. ++ */ ++typedef NS_OPTIONS(NSUInteger, NSSortOptions) ++{ ++ NSSortConcurrent = (1UL << 0), /** Specifies that the sort ++ * is concurrency-safe. Note that this does not mean that it will be ++ * carried out in a concurrent manner, only that it can be. ++ */ ++ NSSortStable = (1UL << 4) /** Specifies that the sort should keep ++ * equal objects in the same order in the collection. ++ */ ++}; ++ ++ ++#import "../GNUstepBase/GSObjCRuntime.h" ++ ++#if OS_API_VERSION(MAC_OS_X_VERSION_10_5,GS_API_LATEST) ++GS_EXPORT NSString *NSStringFromProtocol(Protocol *aProtocol); ++GS_EXPORT Protocol *NSProtocolFromString(NSString *aProtocolName); ++#endif ++GS_EXPORT SEL NSSelectorFromString(NSString *aSelectorName); ++GS_EXPORT NSString *NSStringFromSelector(SEL aSelector); ++GS_EXPORT SEL NSSelectorFromString(NSString *aSelectorName); ++GS_EXPORT Class NSClassFromString(NSString *aClassName); ++GS_EXPORT NSString *NSStringFromClass(Class aClass); ++GS_EXPORT const char *NSGetSizeAndAlignment(const char *typePtr, ++ NSUInteger *sizep, NSUInteger *alignp); ++ ++#if OS_API_VERSION(GS_API_NONE, GS_API_NONE) ++/* Logging */ ++/** ++ * OpenStep spec states that log messages go to stderr, but just in case ++ * someone wants them to go somewhere else, they can implement a function ++ * like this and assign a pointer to it to _NSLog_printf_handler. ++ */ ++typedef void NSLog_printf_handler (NSString* message); ++GS_EXPORT NSLog_printf_handler *_NSLog_printf_handler; ++GS_EXPORT int _NSLogDescriptor; ++@class NSRecursiveLock; ++GS_EXPORT NSRecursiveLock *GSLogLock(void); ++#endif ++ ++GS_EXPORT void NSLog(NSString *format, ...) NS_FORMAT_FUNCTION(1,2); ++GS_EXPORT void NSLogv(NSString *format, va_list args) NS_FORMAT_FUNCTION(1,0); ++ ++#ifndef YES ++#define YES 1 ++#endif ++#ifndef NO ++#define NO 0 ++#endif ++#ifndef nil ++#define nil 0 ++#endif ++ ++/** ++ * Contains values <code>NSOrderedSame</code>, <code>NSOrderedAscending</code> ++ * <code>NSOrderedDescending</code>, for left hand side equals, less than, or ++ * greater than right hand side. ++ */ ++typedef NS_ENUM(NSInteger, NSComparisonResult) ++{ ++ NSOrderedAscending = (NSInteger)-1, NSOrderedSame, NSOrderedDescending ++}; ++ ++enum {NSNotFound = NSIntegerMax}; ++ ++#if __BLOCKS__ ++DEFINE_BLOCK_TYPE(NSComparator, NSComparisonResult, id, id); ++#endif ++ ++/** ++ * Declare the foundation export macro as an alias to GS_EXPORT ++ */ ++#define FOUNDATION_EXPORT GS_EXPORT ++ ++#if defined(__cplusplus) ++} ++#endif ++ ++/** ++ * Declare Apple availability macros for compatibility purposes as no-ops. ++ */ ++#define NS_CLASS_AVAILABLE(...) ++#define NS_AVAILABLE(...) ++#define NS_AVAILABLE_MAC(...) ++#define NS_DEPRECATED(...) ++#define NS_DEPRECATED_MAC(...) ++#define NS_ENUM_AVAILABLE(...) ++#define NS_ENUM_AVAILABLE_MAC(...) ++#define NS_ENUM_DEPRECATED(...) ++#define NS_ENUM_DEPRECATED_MAC(...) ++#define NS_CLASS_AVAILABLE(...) ++#define NS_CLASS_DEPRECATED(...) ++#define NS_CLASS_AVAILABLE_MAC(...) ++#define NS_CLASS_DEPRECATED_MAC(...) ++#define NS_UNAVAILABLE ++ ++/* Define root class NS macro */ ++#ifndef NS_ROOT_CLASS ++#if __has_attribute(objc_root_class) ++#define NS_ROOT_CLASS __attribute__((objc_root_class)) ++#else ++#define NS_ROOT_CLASS ++#endif ++#endif ++ ++#endif /* __NSObjCRuntime_h_GNUSTEP_BASE_INCLUDE */ +Index: gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSAutoreleasePool.h +=================================================================== +--- a/src/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSAutoreleasePool.h (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSAutoreleasePool.h (.../branches/gcc-8-branch) +@@ -0,0 +1,333 @@ ++/* Interface for NSAutoreleasePool for GNUStep ++ Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc. ++ ++ Written by: Andrew Kachites McCallum <mccallum@gnu.ai.mit.edu> ++ Date: 1995 ++ ++ This file is part of the GNUstep Base Library. ++ ++ 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 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. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with this library; if not, write to the Free ++ Software Foundation, Inc., 51 Franklin Street, Fifth Floor, ++ Boston, MA 02111 USA. ++ */ ++ ++#ifndef __NSAutoreleasePool_h_GNUSTEP_BASE_INCLUDE ++#define __NSAutoreleasePool_h_GNUSTEP_BASE_INCLUDE ++#import "../GNUstepBase/GSVersionMacros.h" ++ ++#import "NSObject.h" ++ ++#if defined(__cplusplus) ++extern "C" { ++#endif ++ ++@class NSAutoreleasePool; ++@class NSThread; ++ ++ ++/** ++ * Each thread has its own copy of these variables. ++ <example> ++{ ++ NSAutoreleasePool *current_pool; // current pool for thread ++ unsigned total_objects_count; // total #/autoreleased objects over thread's lifetime ++ id *pool_cache; // cache of previously-allocated pools, ++ int pool_cache_size; // used internally for recycling ++ int pool_cache_count; ++} ++ </example> ++*/ ++typedef struct autorelease_thread_vars ++{ ++ /* The current, default NSAutoreleasePool for the calling thread; ++ the one that will hold objects that are arguments to ++ [NSAutoreleasePool +addObject:]. */ ++ __unsafe_unretained NSAutoreleasePool *current_pool; ++ ++ /* The total number of objects autoreleased since the thread was ++ started, or since -resetTotalAutoreleasedObjects was called ++ in this thread. (if compiled in) */ ++ unsigned total_objects_count; ++ ++ /* A cache of NSAutoreleasePool's already alloc'ed. Caching old pools ++ instead of deallocating and re-allocating them will save time. */ ++ __unsafe_unretained id *pool_cache; ++ int pool_cache_size; ++ int pool_cache_count; ++} thread_vars_struct; ++ ++/* Initialize an autorelease_thread_vars structure for a new thread. ++ This function is called in NSThread each time an NSThread is created. ++ TV should be of type `struct autorelease_thread_vars *' */ ++#define init_autorelease_thread_vars(TV) \ ++memset (TV, 0, sizeof (__typeof__ (*TV))) ++ ++ ++ ++/** ++ * Each pool holds its objects-to-be-released in a linked-list of ++ these structures. ++ <example> ++{ ++ struct autorelease_array_list *next; ++ unsigned size; ++ unsigned count; ++ id objects[0]; ++} ++ </example> ++ */ ++typedef struct autorelease_array_list ++{ ++ struct autorelease_array_list *next; ++ unsigned size; ++ unsigned count; ++ __unsafe_unretained id objects[0]; ++} array_list_struct; ++ ++ ++ ++/** ++ * <p> ++ * The standard OpenStep system of memory management employs retain counts. ++ * When an object is created, it has a retain count of 1. When an object ++ * is retained, the retain count is incremented. When it is released the ++ * retain count is decremented, and when the retain count goes to zero the ++ * object gets deallocated. ++ * </p> ++ * <p> ++ * A simple retain/release mechanism has problems with passing objects ++ * from one scope to another, ++ * so it's augmented with autorelease pools. You can use the ++ * AUTORELEASE() macro to call the [NSObject-autorelease] ++ * method, which adds an object to the current autorelease pool by ++ * calling [NSAutoreleasePool+addObject:].<br /> ++ * An autorelease pool simply maintains a reference to each object ++ * added to it, and for each addition, the autorelease pool will ++ * call the [NSObject-release] method of the object when the pool ++ * is released. So doing an AUTORELEASE() is just the same as ++ * doing a RELEASE(), but deferred until the current autorelease ++ * pool is deallocated. ++ * </p> ++ * <p> ++ * The NSAutoreleasePool class maintains a separate stack of ++ * autorelease pools objects in each thread. ++ * </p> ++ * <p> ++ * When an autorelease pool is created, it is automatically ++ * added to the stack of pools in the thread. ++ * </p> ++ * <p> ++ * When a pool is destroyed, it (and any pool later in ++ * the stack) is removed from the stack. ++ * </p> ++ * <p> ++ * This mechanism provides a simple but controllable and reasonably ++ * efficient way of managing temporary objects. An object can be ++ * autoreleased and then passed around and used until the topmost ++ * pool in the stack is destroyed. ++ * </p> ++ * <p> ++ * Most methods return objects which are either owned by autorelease ++ * pools or by the receiver of the method, so the lifetime of the ++ * returned object can be assumed to be the shorter of the lifetime ++ * of the current autorelease pool, or that of the receiver on which ++ * the method was called.<br /> ++ * The exceptions to this are those object returned by - ++ * </p> ++ * <deflist> ++ * <term>[NSObject+alloc], [NSObject+allocWithZone:]</term> ++ * <desc> ++ * Methods whose names begin with alloc return an uninitialised ++ * object, owned by the caller. ++ * </desc> ++ * <term>[NSObject-init]</term> ++ * <desc> ++ * Methods whose names begin with init return an initialised ++ * version of the receiving object, owned by the caller.<br /> ++ * NB. The returned object may not actually be the same as the ++ * receiver ... sometimes an init method releases the original ++ * receiver and returns an alternative. ++ * </desc> ++ * <term>[NSObject+new]</term> ++ * <desc> ++ * Methods whose names begin with new combine the effects of ++ * allocation and initialisation. ++ * </desc> ++ * <term>[NSObject-copy], [(NSCopying)-copyWithZone:]</term> ++ * <desc> ++ * Methods whose names begin with copy create a copy of the receiver ++ * which is owned by the caller. ++ * </desc> ++ * <term> ++ * [NSObject-mutableCopy], [(NSMutableCopying)-mutableCopyWithZone:] ++ * </term> ++ * <desc> ++ * Methods whose names begin with mutableCopy create a copy of the receiver ++ * which is owned by the caller. ++ * </desc> ++ * </deflist> ++ */ ++NS_AUTOMATED_REFCOUNT_UNAVAILABLE ++@interface NSAutoreleasePool : NSObject ++{ ++#if GS_EXPOSE(NSAutoreleasePool) && !__has_feature(objc_arc) ++ /* For re-setting the current pool when we are dealloc'ed. */ ++ NSAutoreleasePool *_parent; ++ /* This pointer to our child pool is necessary for co-existing ++ with exceptions. */ ++ NSAutoreleasePool *_child; ++ /* A collection of the objects to be released. */ ++ struct autorelease_array_list *_released; ++ struct autorelease_array_list *_released_head; ++ /* The total number of objects autoreleased in this pool. */ ++ unsigned _released_count; ++ /* The method to add an object to this pool */ ++ void (*_addImp)(id, SEL, id); ++#endif ++#if GS_NONFRAGILE ++#else ++ /* Pointer to private additional data used to avoid breaking ABI ++ * when we don't have the non-fragile ABI available. ++ * Use this mechanism rather than changing the instance variable ++ * layout (see Source/GSInternal.h for details). ++ */ ++ @private id _internal GS_UNUSED_IVAR; ++#endif ++} ++ ++/** ++ * Adds anObj to the current autorelease pool.<br /> ++ * If there is no autorelease pool in the thread, ++ * a warning is logged and the object is leaked (ie it will not be released). ++ */ +++ (void) addObject: (id)anObj; ++ ++/** ++ * Allocate and return an autorelease pool instance.<br /> ++ * If there is an already-allocated NSAutoreleasePool available, ++ * save time by just returning that, rather than allocating a new one.<br /> ++ * The pool instance becomes the current autorelease pool for this thread. ++ */ +++ (id) allocWithZone: (NSZone*)zone; ++ ++/** ++ * Adds anObj to this autorelease pool. ++ */ ++- (void) addObject: (id)anObj; ++ ++/** ++ * Raises an exception - pools should not be autoreleased. ++ */ ++- (id) autorelease; ++ ++#if OS_API_VERSION(MAC_OS_X_VERSION_10_4, GS_API_LATEST) ++/** ++ * Intended to trigger a garbage collection run (if needed) when called in ++ * a garbage collected environment.<br /> ++ * In a non-garbage collected environment, this method implements the ++ * undocumented MacOS-X behavior, and releases the receiver. ++ */ ++- (void) drain; ++#endif ++ ++/** ++ * Destroys the receiver (calls -dealloc). ++ */ ++- (oneway void) release; ++ ++/** ++ * Raises an exception ... pools should not be retained. ++ */ ++- (id) retain; ++ ++#if OS_API_VERSION(GS_API_NONE, GS_API_NONE) ++/** ++ * <p> ++ * Counts the number of times that the specified object occurs ++ * in autorelease pools in the current thread. ++ * </p> ++ * <p> ++ * This method is <em>slow</em> and should probably only be ++ * used for debugging purposes. ++ * </p> ++ */ +++ (unsigned) autoreleaseCountForObject: (id)anObject; ++ ++/** ++ * Return the currently active autorelease pool. ++ */ +++ (id) currentPool; ++ ++/** ++ * <p> ++ * Specifies whether objects contained in autorelease pools are to ++ * be released when the pools are deallocated (by default YES). ++ * </p> ++ * <p> ++ * You can set this to NO for debugging purposes. ++ * </p> ++ */ +++ (void) enableRelease: (BOOL)enable; ++ ++/** ++ * <p> ++ * When autorelease pools are deallocated, the memory they used ++ * is retained in a cache for re-use so that new polls can be ++ * created very quickly. ++ * </p> ++ * <p> ++ * This method may be used to empty that cache, ensuring that ++ * the minimum memory is used by the application. ++ * </p> ++ */ +++ (void) freeCache; ++ ++/** ++ * <p> ++ * Specifies a limit to the number of objects that may be added to ++ * an autorelease pool. When this limit is reached an exception is ++ * raised. ++ * </p> ++ * <p> ++ * You can set this to a smallish value to catch problems with code ++ * that autoreleases too many objects to operate efficiently. ++ * </p> ++ * <p> ++ * Default value is maxint. ++ * </p> ++ */ +++ (void) setPoolCountThreshold: (unsigned)c; ++ ++/** ++ * Return the number of objects in this pool. ++ */ ++- (unsigned) autoreleaseCount; ++ ++/** ++ * Empties the current pool by releasing all the autoreleased objects ++ * in it. Also destroys any child pools (ones created after ++ * the receiver in the same thread) causing any objects in those pools ++ * to be released.<br /> ++ * This is a low cost (efficient) method which may be used to get rid of ++ * autoreleased objects in the pool, but carry on using the pool. ++ */ ++- (void) emptyPool; ++#endif ++@end ++ ++#if defined(__cplusplus) ++} ++#endif ++ ++#endif /* __NSAutoreleasePool_h_GNUSTEP_BASE_INCLUDE */ +Index: gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSObject.h +=================================================================== +--- a/src/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSObject.h (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSObject.h (.../branches/gcc-8-branch) +@@ -0,0 +1,594 @@ ++/**Interface for NSObject for GNUStep ++ Copyright (C) 1995, 1996, 1998 Free Software Foundation, Inc. ++ ++ Written by: Andrew Kachites McCallum <mccallum@gnu.ai.mit.edu> ++ Date: 1995 ++ ++ This file is part of the GNUstep Base Library. ++ ++ 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 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. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with this library; if not, write to the Free ++ Software Foundation, Inc., 51 Franklin Street, Fifth Floor, ++ Boston, MA 02111 USA. ++ ++ AutogsdocSource: NSObject.m ++ */ ++ ++#ifndef __NSObject_h_GNUSTEP_BASE_INCLUDE ++#define __NSObject_h_GNUSTEP_BASE_INCLUDE ++ ++#import "NSObjCRuntime.h" ++#import <objc/objc.h> ++#import "NSZone.h" ++ ++#ifdef GS_WITH_GC ++#undef GS_WITH_GC ++#endif ++#define GS_WITH_GC 0 ++ ++#import "../GNUstepBase/GNUstep.h" ++ ++#if defined(__cplusplus) ++extern "C" { ++#endif ++ ++@class NSArchiver; ++@class NSArray; ++@class NSCoder; ++@class NSDictionary; ++@class NSPortCoder; ++@class NSMethodSignature; ++@class NSMutableString; ++@class NSRecursiveLock; ++@class NSString; ++@class NSInvocation; ++@class Protocol; ++ ++/** ++ * The NSObject protocol describes a minimal set of methods that all ++ * objects are expected to support. You should be able to send any ++ * of the messages listed in this protocol to an object, and be safe ++ * in assuming that the receiver can handle it. ++ */ ++@protocol NSObject ++/** ++ * Returns the class of the receiver. If the receiver is a proxy, then this ++ * may return the class of the proxy target. Use -isProxy to determine whether ++ * the receiver is a proxy. If you wish to find the real class of the ++ * receiver, ignoring proxies, then use object_getClass(). ++ */ ++- (Class) class; ++/** ++ * Returns the superclass of receiver's class. If the receiver is a proxy, ++ * then this may return the class of the proxy target. Use -isProxy to ++ * determine whether the receiver is a proxy. If you wish to find the real ++ * superclass of the receiver's class, ignoring proxies, then use ++ * class_getSuperclass(object_getClass()). ++ */ ++- (Class) superclass; ++/** ++ * Returns whether the receiver is equal to the argument. Defining equality is ++ * complex, so be careful when implementing this method. Collections such as ++ * NSSet depend on the behaviour of this method. In particular, this method ++ * must be commutative, so for any objects a and b: ++ * ++ * [a isEqual: b] == [b isEqual: a] ++ * ++ * This means that you must be very careful when returning YES if the argument ++ * is of another class. For example, if you define a number class that returns ++ * YES if the argument is a string representation of the number, then this will ++ * break because the string will not recognise your object as being equal to ++ * itself. ++ * ++ * If two objects are equal, then they must have the same hash value, however ++ * equal hash values do not imply equality. ++ */ ++- (BOOL) isEqual: (id)anObject; ++/** ++ * Returns YES if the receiver is an instance of the class, an instance of the ++ * subclass, or (in the case of proxies), an instance of something that can be ++ * treated as an instance of the class. ++ */ ++- (BOOL) isKindOfClass: (Class)aClass; ++/** ++ * Returns YES if the receiver is an instance of the class or (in the case of ++ * proxies), an instance of something that can be treated as an instance of the ++ * class. ++ * ++ * Calling this method is rarely the correct thing to do. In most cases, a ++ * subclass can be substituted for a superclass, so you should never need to ++ * check that an object is really an instance of a specific class and not a ++ * subclass. ++ */ ++- (BOOL) isMemberOfClass: (Class)aClass; ++/** ++ * Returns YES if the receiver is a proxy, NO otherwise. The default ++ * implementation of this method in NSObject returns NO, while the ++ * implementation in NSProxy returns YES. ++ */ ++- (BOOL) isProxy; ++/** ++ * Returns a hash value for the object. All objects that are equal *MUST* ++ * return the same hash value. For efficient storage in sets, or as keys in ++ * dictionaries, different objects should return hashes spread evenly over the ++ * range of an integer. ++ * ++ * An object may not return different values from this method after being ++ * stored in a collection. This typically means that ether the hash value must ++ * be constant after the object's creation, or that the object may not be ++ * modified while stored in an unordered collection. ++ */ ++- (NSUInteger) hash; ++/** ++ * Returns the receiver. In a proxy, this may (but is not required to) return ++ * the proxied object. ++ */ ++- (id) self; ++/** ++ * Performs the specified selector. The selector must correspond to a method ++ * that takes no arguments. ++ */ ++- (id) performSelector: (SEL)aSelector; ++/** ++ * Performs the specified selector, with the object as the argument. This ++ * method does not perform any automatic unboxing, so the selector must ++ * correspond to a method that takes one object argument. ++ */ ++- (id) performSelector: (SEL)aSelector ++ withObject: (id)anObject; ++/** ++ * Performs the specified selector, with the objects as the arguments. This ++ * method does not perform any automatic unboxing, so the selector must ++ * correspond to a method that takes two object arguments. ++ */ ++- (id) performSelector: (SEL)aSelector ++ withObject: (id)object1 ++ withObject: (id)object2; ++/** ++ * Returns YES if the object can respond to messages with the specified ++ * selector. The default implementation in NSObject returns YES if the ++ * receiver has a method corresponding to the method, but other classes may ++ * return YES if they can respond to a selector using one of the various ++ * forwarding mechanisms. ++ */ ++- (BOOL) respondsToSelector: (SEL)aSelector; ++/** ++ * Returns YES if the receiver conforms to the specified protocol. ++ */ ++- (BOOL) conformsToProtocol: (Protocol*)aProtocol; ++/** ++ * Increments the reference count of the object and returns the receiver. In ++ * garbage collected mode, this method does nothing. In automated reference ++ * counting mode, you may neither implement this method nor call it directly. ++ */ ++- (id) retain NS_AUTOMATED_REFCOUNT_UNAVAILABLE; ++/** ++ * Decrements the reference count of the object and destroys if it there are no ++ * remaining references. In garbage collected mode, this method does nothing. ++ * In automated reference counting mode, you may neither implement this method ++ * nor call it directly. ++ */ ++- (oneway void) release NS_AUTOMATED_REFCOUNT_UNAVAILABLE; ++/** ++ * Performs a deferred -release operation. The object's reference count is ++ * decremented at the end of the scope of the current autorelease pool, ++ * identified either by a -drain message sent to the current NSAutoreleasePool ++ * instance, or in more recent versions of Objective-C by the end of an ++ * @autorelease_pool scope. ++ * ++ * In garbage collected mode, this method does nothing. In automated reference ++ * counting mode, you may neither implement this method nor call it directly. ++ */ ++- (id) autorelease NS_AUTOMATED_REFCOUNT_UNAVAILABLE; ++/** ++ * Returns the current retain count of an object. This does not include the ++ * result of any pending autorelease operations. ++ * ++ * Code that relies on this method returning a sane value is broken. For ++ * singletons, it may return NSUIntegerMax. Even when it is tracking a retain ++ * count, it will not include on-stack pointers in manual retain/release mode, ++ * pointers marked as __unsafe_unretain or __weak in ARC mode, or pending ++ * autorelease operations. Its value is therefore largely meaningless. It can ++ * occasionally be useful for debugging. ++ */ ++- (NSUInteger) retainCount NS_AUTOMATED_REFCOUNT_UNAVAILABLE; ++/** ++ * Returns the description of the object. This is used by the %@ format ++ * specifier in strings. ++ */ ++- (NSString*) description; ++/** ++ * Returns the zone of the object. ++ */ ++- (NSZone*) zone NS_AUTOMATED_REFCOUNT_UNAVAILABLE; ++@end ++ ++/** ++ * This protocol must be adopted by any class wishing to support copying - ++ * ie where instances of the class should be able to create new instances ++ * which are copies of the original and, where a class has mutable and ++ * immutable versions, where the copies are immutable. ++ */ ++@protocol NSCopying ++/** ++ * Called by [NSObject-copy] passing NSDefaultMallocZone() as zone.<br /> ++ * This method returns a copy of the receiver and, where the receiver is a ++ * mutable variant of a class which has an immutable partner class, the ++ * object returned is an instance of that immutable class.<br /> ++ * The new object is <em>not</em> autoreleased, and is considered to be ++ * 'owned' by the calling code ... which is therefore responsible for ++ * releasing it.<br /> ++ * In the case where the receiver is an instance of a container class, ++ * it is undefined whether contained objects are merely retained in the ++ * new copy, or are themselves copied, or whether some other mechanism ++ * entirely is used. ++ */ ++- (id) copyWithZone: (NSZone*)zone; ++@end ++ ++/** ++ * This protocol must be adopted by any class wishing to support ++ * mutable copying - ie where instances of the class should be able ++ * to create mutable copies of themselves. ++ */ ++@protocol NSMutableCopying ++/** ++ * Called by [NSObject-mutableCopy] passing NSDefaultMallocZone() as zone.<br /> ++ * This method returns a copy of the receiver and, where the receiver is an ++ * immutable variant of a class which has a mutable partner class, the ++ * object returned is an instance of that mutable class. ++ * The new object is <em>not</em> autoreleased, and is considered to be ++ * 'owned' by the calling code ... which is therefore responsible for ++ * releasing it.<br /> ++ * In the case where the receiver is an instance of a container class, ++ * it is undefined whether contained objects are merely retained in the ++ * new copy, or are themselves copied, or whether some other mechanism ++ * entirely is used. ++ */ ++- (id) mutableCopyWithZone: (NSZone*)zone; ++@end ++ ++/** ++ * This protocol must be adopted by any class wishing to support ++ * saving and restoring instances to an archive, or copying them ++ * to remote processes via the Distributed Objects mechanism. ++ */ ++@protocol NSCoding ++ ++/** ++ * Called when it is time for receiver to be serialized for writing to an ++ * archive or network connection. Receiver should record all of its instance ++ * variables using methods on aCoder. See documentation for [NSCoder], ++ * [NSArchiver], [NSKeyedArchiver], and/or [NSPortCoder] for more information. ++ */ ++- (void) encodeWithCoder: (NSCoder*)aCoder; ++ ++/** ++ * Called on a freshly allocated receiver when it is time to reconstitute from ++ * serialized bytes in an archive or from a network connection. Receiver ++ * should load all of its instance variables using methods on aCoder. See ++ * documentation for [NSCoder], [NSUnarchiver], [NSKeyedUnarchiver], and/or ++ * [NSPortCoder] for more information. ++ */ ++- (id) initWithCoder: (NSCoder*)aDecoder; ++@end ++ ++@protocol NSSecureCoding <NSCoding> +++ (BOOL)supportsSecureCoding; ++@end ++ ++ ++GS_ROOT_CLASS @interface NSObject <NSObject> ++{ ++ /** ++ * Points to instance's class. Used by runtime to access method ++ * implementations, etc.. Set in +alloc, Unlike other instance variables, ++ * which are cleared there. ++ */ ++ Class isa; ++} ++ ++#if OS_API_VERSION(MAC_OS_X_VERSION_10_5, GS_API_LATEST) ++/** On a system which performs garbage collection, you should implement ++ * this method to execute code when the receiver is collected.<br /> ++ * You must not call this method yourself (except when a subclass ++ * calls the superclass method within its own implementation). ++ */ ++- (void) finalize; ++#endif ++ ++#if OS_API_VERSION(GS_API_MACOSX, GS_API_LATEST) ++- (NSString*) className; ++#endif ++ +++ (id) allocWithZone: (NSZone*)z; +++ (id) alloc; +++ (Class) class; ++ ++/** ++ * This method is automatically invoked on any class which implements it ++ * when the class is loaded into the runtime.<br /> ++ * It is also invoked on any category where the method is implemented ++ * when that category is loaded into the runtime.<br /> ++ * The +load method is called directly by the runtime and you should never ++ * send a +load message to a class yourself.<br /> ++ * This method is called <em>before</em> the +initialize message is sent ++ * to the class, so you cannot depend on class initialisation having been ++ * performed, or upon other classes existing (apart from superclasses of ++ * the receiver, since +load is called on superclasses before it is called ++ * on their subclasses).<br /> ++ * As a gross generalisation, it is safe to use C code, including ++ * most ObjectiveC runtime functions within +load, but attempting to send ++ * messages to ObjectiveC objects is likely to fail.<br /> ++ * In GNUstep, this method is implemented for NSObject to perform some ++ * initialisation for the base library.<br /> ++ * If you implement +load for a class, don't call [super load] in your ++ * implementation. ++ */ +++ (void) load; ++ ++/** ++ * This message is automatically sent to a class by the runtime. It is ++ * sent once for each class, just before the class is used for the first ++ * time (excluding any automatic call to +load by the runtime).<br /> ++ * The message is sent in a thread-safe manner ... other threads may not ++ * call methods of the class until +initialize has finished executing.<br /> ++ * If the class has a superclass, its implementation of +initialize is ++ * called first.<br /> ++ * If the class does not implement +initialize then the implementation ++ * in the closest superclass may be called. This means that +initialize may ++ * be called more than once, and the recommended way to handle this by ++ * using the ++ * <code> ++ * if (self == [classname class]) ++ * </code> ++ * conditional to check whether the method is being called for a subclass.<br /> ++ * You should never call +initialize yourself ... let the runtime do it.<br /> ++ * You can implement +initialize in your own class if you need to. ++ * NSObject's implementation handles essential root object and base ++ * library initialization.<br /> ++ * It should be safe to call [super initialize] in your implementation ++ * of +initialize. ++ */ +++ (void) initialize; +++ (IMP) instanceMethodForSelector: (SEL)aSelector; +++ (NSMethodSignature*) instanceMethodSignatureForSelector: (SEL)aSelector; +++ (BOOL) instancesRespondToSelector: (SEL)aSelector; +++ (BOOL) isSubclassOfClass: (Class)aClass; +++ (id) new; +++ (void) poseAsClass: (Class)aClassObject; +++ (id) setVersion: (NSInteger)aVersion; +++ (NSInteger) version; ++ ++- (id) awakeAfterUsingCoder: (NSCoder*)aDecoder; ++- (Class) classForArchiver; ++- (Class) classForCoder; ++- (id) copy; ++- (void) dealloc; ++- (void) doesNotRecognizeSelector: (SEL)aSelector; ++- (void) forwardInvocation: (NSInvocation*)anInvocation; ++- (id) init; ++- (IMP) methodForSelector: (SEL)aSelector; ++- (NSMethodSignature*) methodSignatureForSelector: (SEL)aSelector; ++- (id) mutableCopy; ++- (id) replacementObjectForArchiver: (NSArchiver*)anArchiver; ++- (id) replacementObjectForCoder: (NSCoder*)anEncoder; ++- (Class) superclass; ++#if OS_API_VERSION(MAC_OS_X_VERSION_10_5, GS_API_LATEST) ++/** ++ * This method will be called when attempting to send a message a class that ++ * does not understand it. The class may install a new method for the given ++ * selector and return YES, otherwise it should return NO. ++ * ++ * Note: This method is only reliable when using the GNUstep runtime. If you ++ * require compatibility with the GCC runtime, you must also implement ++ * -forwardInvocation: with equivalent semantics. This will be considerably ++ * slower, but more portable. ++ */ +++ (BOOL) resolveClassMethod: (SEL)name; ++ ++/** ++ * This method will be called when attempting to send a message an instance ++ * that does not understand it. The class may install a new method for the ++ * given selector and return YES, otherwise it should return NO. ++ * ++ * Note: This method is only reliable when using the GNUstep runtime. If you ++ * require compatibility with the GCC runtime, you must also implement ++ * -forwardInvocation: with equivalent semantics. This will be considerably ++ * slower, but more portable. ++ */ +++ (BOOL) resolveInstanceMethod: (SEL)name; ++#endif ++#if OS_API_VERSION(MAC_OS_X_VERSION_10_6, GS_API_LATEST) ++/** ++ * Returns an auto-accessing proxy for the given object. This proxy sends a ++ * -beginContentAccess message to the receiver when it is created and an ++ * -endContentAccess message when it is destroyed. This prevents an object ++ * that implements the NSDiscardableContent protocol from having its contents ++ * discarded for as long as the proxy exists. ++ * ++ * On systems using the GNUstep runtime, messages send to the proxy will be ++ * slightly slower than direct messages. With the GCC runtime, they will be ++ * approximately two orders of magnitude slower. The GNUstep runtime, ++ * therefore, is strongly recommended for code calling this method. ++ */ ++- (id) autoContentAccessingProxy; ++ ++/** ++ * If an object does not understand a message, it may delegate it to another ++ * object. Returning nil indicates that forwarding should not take place. The ++ * default implementation of this returns nil, but care should be taken when ++ * subclassing NSObject subclasses and overriding this method that ++ * the superclass implementation is called if returning nil. ++ * ++ * Note: This method is only reliable when using the GNUstep runtime and code ++ * compiled with clang. If you require compatibility with GCC and the GCC ++ * runtime, you must also implement -forwardInvocation: with equivalent ++ * semantics. This will be considerably slower, but more portable. ++ */ ++- (id) forwardingTargetForSelector: (SEL)aSelector; ++ ++#endif ++@end ++ ++/** ++ * Used to allocate memory to hold an object, and initialise the ++ * class of the object to be aClass etc. The allocated memory will ++ * be extraBytes larger than the space actually needed to hold the ++ * instance variables of the object.<br /> ++ * This function is used by the [NSObject+allocWithZone:] method. ++ */ ++GS_EXPORT id ++NSAllocateObject(Class aClass, NSUInteger extraBytes, NSZone *zone); ++ ++/** ++ * Used to release the memory used by an object.<br /> ++ * This function is used by the [NSObject-dealloc] method. ++ */ ++GS_EXPORT void ++NSDeallocateObject(id anObject); ++ ++/** ++ * Used to copy anObject. This makes a bitwise copy of anObject to ++ * memory allocated from zone. The allocated memory will be extraBytes ++ * longer than that necessary to actually store the instance variables ++ * of the copied object.<br /> ++ */ ++GS_EXPORT NSObject * ++NSCopyObject(NSObject *anObject, NSUInteger extraBytes, NSZone *zone); ++ ++/** ++ * Returns a flag to indicate whether anObject should be retained or ++ * copied in order to make a copy in the specified zone.<br /> ++ * Basically, this tests to see if anObject was allocated from ++ * requestedZone and returns YES if it was. ++ */ ++GS_EXPORT BOOL ++NSShouldRetainWithZone(NSObject *anObject, NSZone *requestedZone); ++ ++GS_EXPORT BOOL ++NSDecrementExtraRefCountWasZero(id anObject); ++ ++GS_EXPORT NSUInteger ++NSExtraRefCount(id anObject); ++ ++GS_EXPORT void ++NSIncrementExtraRefCount(id anObject); ++ ++#if OS_API_VERSION(GS_API_NONE, GS_API_NONE) ++ ++/** Global lock to be used by classes when operating on any global ++ data that invoke other methods which also access global; thus, ++ creating the potential for deadlock. */ ++GS_EXPORT NSRecursiveLock *gnustep_global_lock; ++ ++@interface NSObject (NEXTSTEP) ++- (id) error:(const char *)aString, ...; ++/* - (const char *) name; ++ Removed because OpenStep has -(NSString*)name; */ ++@end ++ ++#if GS_API_VERSION(GS_API_NONE, 011700) ++@interface NSObject (GNUstep) +++ (void) enableDoubleReleaseCheck: (BOOL)enable; ++@end ++#endif ++ ++#endif ++ ++#import "NSDate.h" ++/** ++ * Declares some methods for sending messages to self after a fixed delay. ++ * (These methods <em>are</em> in OpenStep and OS X.) ++ */ ++@interface NSObject (TimedPerformers) ++ ++/** ++ * Cancels any perform operations set up for the specified target ++ * in the current run loop. ++ */ +++ (void) cancelPreviousPerformRequestsWithTarget: (id)obj; ++ ++/** ++ * Cancels any perform operations set up for the specified target ++ * in the current loop, but only if the value of aSelector and argument ++ * with which the performs were set up match those supplied.<br /> ++ * Matching of the argument may be either by pointer equality or by ++ * use of the [NSObject-isEqual:] method. ++ */ +++ (void) cancelPreviousPerformRequestsWithTarget: (id)obj ++ selector: (SEL)s ++ object: (id)arg; ++/** ++ * Sets given message to be sent to this instance after given delay, ++ * in any run loop mode. See [NSRunLoop]. ++ */ ++- (void) performSelector: (SEL)s ++ withObject: (id)arg ++ afterDelay: (NSTimeInterval)seconds; ++ ++/** ++ * Sets given message to be sent to this instance after given delay, ++ * in given run loop modes. See [NSRunLoop]. ++ */ ++- (void) performSelector: (SEL)s ++ withObject: (id)arg ++ afterDelay: (NSTimeInterval)seconds ++ inModes: (NSArray*)modes; ++@end ++ ++#if OS_API_VERSION(MAC_OS_X_VERSION_10_6, GS_API_LATEST) ++/** ++ * The NSDiscardableContent protocol is used by objects which encapsulate data ++ * which may be discarded if resource constraints are exceeded. These ++ * constraints are typically, but not always, related memory. ++ */ ++@protocol NSDiscardableContent ++ ++/** ++ * This method is called before any access to the object. It returns YES if ++ * the object's content is still valid. The caller must call -endContentAccess ++ * once for every call to -beginContentAccess; ++ */ ++- (BOOL) beginContentAccess; ++ ++/** ++ * Discards the contents of the object if it is not currently being edited. ++ */ ++- (void) discardContentIfPossible; ++ ++/** ++ * This method indicates that the caller has finished accessing the contents of ++ * the object adopting this protocol. Every call to -beginContentAccess must ++ * be be paired with a call to this method after the caller has finished ++ * accessing the contents. ++ */ ++- (void) endContentAccess; ++ ++/** ++ * Returns YES if the contents of the object have been discarded, either via a ++ * call to -discardContentIfPossible while the object is not in use, or by some ++ * implementation dependent mechanism. ++ */ ++- (BOOL) isContentDiscarded; ++@end ++#endif ++#if defined(__cplusplus) ++} ++#endif ++ ++#if !NO_GNUSTEP && !defined(GNUSTEP_BASE_INTERNAL) ++#import "../GNUstepBase/NSObject+GNUstepBase.h" ++#endif ++ ++#endif /* __NSObject_h_GNUSTEP_BASE_INCLUDE */ +Index: gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSString.h +=================================================================== +--- a/src/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSString.h (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSString.h (.../branches/gcc-8-branch) +@@ -0,0 +1,977 @@ ++/* Interface for NSString for GNUstep ++ Copyright (C) 1995, 1996, 1999 Free Software Foundation, Inc. ++ ++ Written by: Andrew Kachites McCallum <mccallum@gnu.ai.mit.edu> ++ Date: 1995 ++ ++ This file is part of the GNUstep Base Library. ++ ++ 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 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. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with this library; if not, write to the Free ++ Software Foundation, Inc., 51 Franklin Street, Fifth Floor, ++ Boston, MA 02111 USA. ++ */ ++ ++/** ++<chapter> ++ <heading>Portable path handling</heading> ++ <p>Portable path handling (across both unix-like and mswindows operating ++ systems) requires some care. A modern operating system uses the concept ++ of a single root to the filesystem, but mswindows has multiple filesystems ++ with no common root, so code must be aware of this. There is also the ++ more minor issue that windows often uses a backslash as a separator between ++ the components of a path and unix-like systems always use forward slash.<br /> ++ On windows there is also the issue that two styles of path are used, ++ most commonly with a drive letter and a path on that drive ++ (eg. 'C:\directory\file') but also UNC paths ++ (eg. '//host/share/directory/file') so path handling functions must deal ++ with both formats. ++ </p> ++ <p>GNUstep has three path handling modes, 'gnustep', 'unix', and 'windows'. ++ The mode defaults to 'gnustep' but may be set using the GSPathHandling() ++ function.<br /> ++ You should probably stick to using the default 'gnustep' mode in which the ++ path handling methods cope with both 'unix' and 'windows' style paths in ++ portable and tolerant manner:<br /> ++ Paths are read in literally so they can be in the native format provided ++ by the operating system or in a non-native format. See ++ [NSFileManager-stringWithFileSystemRepresentation:length:].<br /> ++ Paths are written out using the native format of the system the application ++ is running on (eg on windows slashes are converted to backslashes). ++ See [NSFileManager-fileSystemRepresentationWithPath:].<br /> ++ The path handling methods accept either a forward or backward slash as a ++ path separator when parsing any path.<br /> ++ Unless operating in 'unix' mode, a leading letter followed by a colon is ++ considered the start of a windows style path (the drive specifier), and a ++ path beginning with something of the form '//host/share/' is considered ++ the start of a UNC style path.<br /> ++ The path handling methods add forward slashes when building new paths ++ internally or when standardising paths, so those path strings provide ++ a portable representation (as long as they are relative paths, not including ++ system specific roots).<br /> ++ An important case to note is that on windows a path which looks at first ++ glance like an absolute path may actually be a relative one.<br /> ++ 'C:file' is a relative path because it specifies a file on the C drive ++ but does not say what directory it is in.<br /> ++Similarly, '/dir/file' is a relative path because it specifies the full ++location fo a file on a drive, but does not specify which drive it is on. ++ </p> ++<p>As a consequence of this path handling, you are able to work completely ++portably using relative paths (adding components, extensions and ++relative paths to a pth, or removing components, extensions and relative ++paths from a path etc), and when you save paths as strings in files ++which may be transferred to another platform, you should save a relative ++path.<br /> ++When you need to know absolute paths of various points in the filesystem, ++you can use various path utility functions to obtain those absolute paths. ++For instance, instead of saving an absolute path to a file, you might want ++to save a path relative to a user's home directory. You could do that by ++calling NSHomeDirectory() to get the home directory, and only saving the ++part of the full path after that prefix. ++</p> ++</chapter> ++ */ ++ ++#ifndef __NSString_h_GNUSTEP_BASE_INCLUDE ++#define __NSString_h_GNUSTEP_BASE_INCLUDE ++#import "../GNUstepBase/GSVersionMacros.h" ++ ++#import "NSObject.h" ++#import "NSRange.h" ++ ++#if defined(__cplusplus) ++extern "C" { ++#endif ++ ++/** ++ * Type for representing unicode characters. (16-bit) ++ */ ++typedef uint16_t unichar; ++ ++#if OS_API_VERSION(MAC_OS_X_VERSION_10_5,GS_API_LATEST) ++#define NSMaximumStringLength (INT_MAX-1) ++#endif ++ ++@class NSArray; ++@class NSCharacterSet; ++@class NSData; ++@class NSDictionary; ++#if OS_API_VERSION(GS_API_MACOSX, GS_API_LATEST) ++@class NSError; ++@class NSLocale; ++@class NSURL; ++#endif ++ ++#define NSMaximumStringLength (INT_MAX-1) ++ ++enum ++{ ++ NSCaseInsensitiveSearch = 1, ++ NSLiteralSearch = 2, ++ NSBackwardsSearch = 4, ++ NSAnchoredSearch = 8, ++ NSNumericSearch = 64 /* MacOS-X 10.2 */ ++#if OS_API_VERSION(MAC_OS_X_VERSION_10_5,GS_API_LATEST) ++ , ++ NSDiacriticInsensitiveSearch = 128, ++ NSWidthInsensitiveSearch = 256, ++ NSForcedOrderingSearch = 512 ++#endif ++#if OS_API_VERSION(MAC_OS_X_VERSION_10_7,GS_API_LATEST) ++ , ++ /** ++ * Treats the search string as a regular expression. This option may be ++ * combined with NSCaseInsensitiveSearch and NSAnchoredSearch, but no other ++ * search options. ++ * ++ * This option may only be used with the -rangeOfString: family of methods. ++ */ ++ NSRegularExpressionSearch = 1024 ++#endif ++}; ++typedef NSUInteger NSStringCompareOptions; ++ ++/** ++ * <p>Enumeration of available encodings for converting between bytes and ++ * characters (in [NSString]s). The ones that are shared with OpenStep and ++ * Cocoa are: <code>NSASCIIStringEncoding, NSNEXTSTEPStringEncoding, ++ * NSJapaneseEUCStringEncoding, NSUTF8StringEncoding, ++ * NSISOLatin1StringEncoding, NSSymbolStringEncoding, ++ * NSNonLossyASCIIStringEncoding, NSShiftJISStringEncoding, ++ * NSISOLatin2StringEncoding, NSUnicodeStringEncoding, ++ * NSWindowsCP1251StringEncoding, NSWindowsCP1252StringEncoding, ++ * NSWindowsCP1253StringEncoding, NSWindowsCP1254StringEncoding, ++ * NSWindowsCP1250StringEncoding, NSISO2022JPStringEncoding, ++ * NSMacOSRomanStringEncoding, NSProprietaryStringEncoding</code>.</p> ++ * ++ * <p>Additional encodings available under GNUstep are: ++ * <code>NSKOI8RStringEncoding, NSISOLatin3StringEncoding, ++ * NSISOLatin4StringEncoding, NSISOCyrillicStringEncoding, ++ * NSISOArabicStringEncoding, NSISOGreekStringEncoding, ++ * NSISOHebrewStringEncoding, NSISOLatin5StringEncoding, ++ * NSISOLatin6StringEncoding, NSISOThaiStringEncoding, ++ * NSISOLatin7StringEncoding, NSISOLatin8StringEncoding, ++ * NSISOLatin9StringEncoding, NSGB2312StringEncoding, NSUTF7StringEncoding, ++ * NSGSM0338StringEncoding, NSBIG5StringEncoding, ++ * NSKoreanEUCStringEncoding</code>.</p> ++ */ ++typedef enum _NSStringEncoding ++{ ++/* NB. Must not have an encoding with value zero - so we can use zero to ++ tell that a variable that should contain an encoding has not yet been ++ initialised */ ++ GSUndefinedEncoding = 0, ++ NSASCIIStringEncoding = 1, ++ NSNEXTSTEPStringEncoding = 2, ++ NSJapaneseEUCStringEncoding = 3, ++ NSUTF8StringEncoding = 4, ++ NSISOLatin1StringEncoding = 5, // ISO-8859-1; West European ++ NSSymbolStringEncoding = 6, ++ NSNonLossyASCIIStringEncoding = 7, ++ NSShiftJISStringEncoding = 8, ++ NSISOLatin2StringEncoding = 9, // ISO-8859-2; East European ++ NSUnicodeStringEncoding = 10, ++ NSUTF16StringEncoding = NSUnicodeStringEncoding, // An alias ++ NSWindowsCP1251StringEncoding = 11, ++ NSWindowsCP1252StringEncoding = 12, // WinLatin1 ++ NSWindowsCP1253StringEncoding = 13, // Greek ++ NSWindowsCP1254StringEncoding = 14, // Turkish ++ NSWindowsCP1250StringEncoding = 15, // WinLatin2 ++ NSISO2022JPStringEncoding = 21, ++ NSMacOSRomanStringEncoding = 30, ++ NSProprietaryStringEncoding = 31, ++ ++ NSKOI8RStringEncoding = 50, // Russian/Cyrillic ++ NSISOLatin3StringEncoding = 51, // ISO-8859-3; South European ++ NSISOLatin4StringEncoding = 52, // ISO-8859-4; North European ++ NSISOCyrillicStringEncoding = 22, // ISO-8859-5 ++ NSISOArabicStringEncoding = 53, // ISO-8859-6 ++ NSISOGreekStringEncoding = 54, // ISO-8859-7 ++ NSISOHebrewStringEncoding = 55, // ISO-8859-8 ++ NSISOLatin5StringEncoding = 57, // ISO-8859-9; Turkish ++ NSISOLatin6StringEncoding = 58, // ISO-8859-10; Nordic ++ NSISOThaiStringEncoding = 59, // ISO-8859-11 ++/* Possible future ISO-8859 additions ++ // ISO-8859-12 ++*/ ++ NSISOLatin7StringEncoding = 61, // ISO-8859-13 ++ NSISOLatin8StringEncoding = 62, // ISO-8859-14 ++ NSISOLatin9StringEncoding = 63, // ISO-8859-15; Replaces ISOLatin1 ++ NSGB2312StringEncoding = 56, ++ NSUTF7StringEncoding = 64, // RFC 2152 ++ NSGSM0338StringEncoding, // GSM (mobile phone) default alphabet ++ NSBIG5StringEncoding, // Traditional chinese ++ NSKoreanEUCStringEncoding // Korean ++ ++#if OS_API_VERSION(MAC_OS_X_VERSION_10_4,GS_API_LATEST) ++ , ++ NSUTF16BigEndianStringEncoding = 0x90000100, ++ NSUTF16LittleEndianStringEncoding = 0x94000100, ++ NSUTF32StringEncoding = 0x8c000100, ++ NSUTF32BigEndianStringEncoding = 0x98000100, ++ NSUTF32LittleEndianStringEncoding = 0x9c000100 ++#endif ++} NSStringEncoding; ++ ++enum { ++ NSOpenStepUnicodeReservedBase = 0xF400 ++}; ++ ++#if OS_API_VERSION(MAC_OS_X_VERSION_10_4,GS_API_LATEST) ++enum { ++ NSStringEncodingConversionAllowLossy = 1, ++ NSStringEncodingConversionExternalRepresentation = 2 ++}; ++typedef NSUInteger NSStringEncodingConversionOptions; ++#endif ++ ++/** ++ * <p> ++ * <code>NSString</code> objects represent an immutable string of Unicode 3.0 ++ * characters. These may be accessed individually as type ++ * <code>unichar</code>, an unsigned short.<br/> ++ * The [NSMutableString] subclass represents a modifiable string. Both are ++ * implemented as part of a class cluster and the instances you receive may ++ * actually be of unspecified concrete subclasses. ++ * </p> ++ * <p> ++ * A constant <code>NSString</code> can be created using the following syntax: ++ * <code>@"..."</code>, where the contents of the quotes are the ++ * string, using only ASCII characters. ++ * </p> ++ * <p> ++ * A variable string can be created using a C printf-like <em>format</em>, ++ * as in <code>[NSString stringWithFormat: @"Total is %f", t]</code>. ++ * </p> ++ * <p> ++ * To create a concrete subclass of <code>NSString</code>, you must have your ++ * class inherit from <code>NSString</code> and override at least the two ++ * primitive methods - -length and -characterAtIndex: ++ * </p> ++ * <p> ++ * In general the rule is that your subclass must override any ++ * initialiser that you want to use with it. The GNUstep ++ * implementation relaxes that to say that, you may override ++ * only the <em>designated initialiser</em> and the other ++ * initialisation methods should work. ++ * </p> ++ * <p> ++ * Where an NSString instance method returns an NSString object, ++ * the class of the actual object returned may be any subclass ++ * of NSString. The actual value returned may be a new ++ * autoreleased object, an autoreleased copy of the receiver, ++ * or the receiver itsself. While the abstract base class ++ * implementations of methods (other than initialisers) will ++ * avoid returning mutable strings by returning an autoreleased ++ * copy of a mutable receiver, concrete subclasses may behave ++ * differently, so code should not rely upon the mutability of ++ * returned strings nor upon their lifetime being greater than ++ * that of the receiver which returned them. ++ * </p> ++ */ ++@interface NSString :NSObject <NSCoding, NSCopying, NSMutableCopying> ++ +++ (id) string; +++ (id) stringWithCharacters: (const unichar*)chars ++ length: (NSUInteger)length; ++#if OS_API_VERSION(MAC_OS_X_VERSION_10_4,GS_API_LATEST) && GS_API_VERSION( 10200,GS_API_LATEST) +++ (id) stringWithCString: (const char*)byteString ++ encoding: (NSStringEncoding)encoding; ++#endif +++ (id) stringWithCString: (const char*)byteString ++ length: (NSUInteger)length; +++ (id) stringWithCString: (const char*)byteString; +++ (id) stringWithFormat: (NSString*)format, ... NS_FORMAT_FUNCTION(1,2); +++ (id) stringWithContentsOfFile:(NSString *)path; ++ ++// Initializing Newly Allocated Strings ++- (id) init; ++#if OS_API_VERSION(MAC_OS_X_VERSION_10_4,GS_API_LATEST) && GS_API_VERSION( 10200,GS_API_LATEST) ++- (id) initWithBytes: (const void*)bytes ++ length: (NSUInteger)length ++ encoding: (NSStringEncoding)encoding; ++- (id) initWithBytesNoCopy: (void*)bytes ++ length: (NSUInteger)length ++ encoding: (NSStringEncoding)encoding ++ freeWhenDone: (BOOL)flag; ++#endif ++#if OS_API_VERSION(MAC_OS_X_VERSION_10_4,GS_API_LATEST) +++ (id) stringWithContentsOfFile: (NSString*)path ++ usedEncoding: (NSStringEncoding*)enc ++ error: (NSError**)error; ++- (id) initWithContentsOfFile: (NSString*)path ++ usedEncoding: (NSStringEncoding*)enc ++ error: (NSError**)error; +++ (id) stringWithContentsOfFile: (NSString*)path ++ encoding: (NSStringEncoding)enc ++ error: (NSError**)error; ++- (id) initWithContentsOfFile: (NSString*)path ++ encoding: (NSStringEncoding)enc ++ error: (NSError**)error; +++ (id) stringWithContentsOfURL: (NSURL*)url ++ usedEncoding: (NSStringEncoding*)enc ++ error: (NSError**)error; ++- (id) initWithContentsOfURL: (NSURL*)url ++ usedEncoding: (NSStringEncoding*)enc ++ error: (NSError**)error; +++ (id) stringWithContentsOfURL: (NSURL*)url ++ encoding: (NSStringEncoding)enc ++ error: (NSError**)error; ++- (id) initWithContentsOfURL: (NSURL*)url ++ encoding: (NSStringEncoding)enc ++ error: (NSError**)error; ++- (BOOL) writeToFile: (NSString*)path ++ atomically: (BOOL)atomically ++ encoding: (NSStringEncoding)enc ++ error: (NSError**)error; ++- (BOOL) writeToURL: (NSURL*)url ++ atomically: (BOOL)atomically ++ encoding: (NSStringEncoding)enc ++ error: (NSError**)error; ++#endif ++#if OS_API_VERSION(MAC_OS_X_VERSION_10_5,GS_API_LATEST) ++- (NSString*)stringByReplacingOccurrencesOfString: (NSString*)replace ++ withString: (NSString*)by ++ options: (NSStringCompareOptions)opts ++ range: (NSRange)searchRange; ++- (NSString*)stringByReplacingOccurrencesOfString: (NSString*)replace ++ withString: (NSString*)by; ++- (NSString*) stringByReplacingCharactersInRange: (NSRange)aRange ++ withString: (NSString*)by; ++#endif ++- (id) initWithCharactersNoCopy: (unichar*)chars ++ length: (NSUInteger)length ++ freeWhenDone: (BOOL)flag; ++- (id) initWithCharacters: (const unichar*)chars ++ length: (NSUInteger)length; ++- (id) initWithCStringNoCopy: (char*)byteString ++ length: (NSUInteger)length ++ freeWhenDone: (BOOL)flag; ++- (id) initWithCString: (const char*)byteString ++ length: (NSUInteger)length; ++- (id) initWithCString: (const char*)byteString; ++- (id) initWithString: (NSString*)string; ++- (id) initWithFormat: (NSString*)format, ... NS_FORMAT_FUNCTION(1,2); ++- (id) initWithFormat: (NSString*)format ++ arguments: (va_list)argList NS_FORMAT_FUNCTION(1,0); ++- (id) initWithData: (NSData*)data ++ encoding: (NSStringEncoding)encoding; ++- (id) initWithContentsOfFile: (NSString*)path; ++ ++// Getting a String's Length ++- (NSUInteger) length; ++ ++// Accessing Characters ++- (unichar) characterAtIndex: (NSUInteger)index; ++- (void) getCharacters: (unichar*)buffer; ++- (void) getCharacters: (unichar*)buffer ++ range: (NSRange)aRange; ++ ++// Combining Strings ++- (NSString*) stringByAppendingFormat: (NSString*)format, ... ++ NS_FORMAT_FUNCTION(1,2); ++- (NSString*) stringByAppendingString: (NSString*)aString; ++ ++// Dividing Strings into Substrings ++- (NSArray*) componentsSeparatedByString: (NSString*)separator; ++- (NSString*) substringFromIndex: (NSUInteger)index; ++- (NSString*) substringToIndex: (NSUInteger)index; ++ ++// Finding Ranges of Characters and Substrings ++- (NSRange) rangeOfCharacterFromSet: (NSCharacterSet*)aSet; ++- (NSRange) rangeOfCharacterFromSet: (NSCharacterSet*)aSet ++ options: (NSUInteger)mask; ++- (NSRange) rangeOfCharacterFromSet: (NSCharacterSet*)aSet ++ options: (NSUInteger)mask ++ range: (NSRange)aRange; ++- (NSRange) rangeOfString: (NSString*)string; ++- (NSRange) rangeOfString: (NSString*)string ++ options: (NSUInteger)mask; ++- (NSRange) rangeOfString: (NSString*)aString ++ options: (NSUInteger)mask ++ range: (NSRange)aRange; ++ ++// Determining Composed Character Sequences ++- (NSRange) rangeOfComposedCharacterSequenceAtIndex: (NSUInteger)anIndex; ++ ++#if OS_API_VERSION(MAC_OS_X_VERSION_10_2,GS_API_LATEST) ++/** Returns a copy of the receiver normalised using the KD form. ++ */ ++- (NSString *) decomposedStringWithCompatibilityMapping; ++ ++/** Returns a copy of the receiver normalised using the D form. ++ */ ++- (NSString *) decomposedStringWithCanonicalMapping; ++ ++/** Returns a copy of the receiver normalised using the KC form. ++ */ ++- (NSString *) precomposedStringWithCompatibilityMapping; ++ ++/** Returns a copy of the receiver normalised using the C form. ++ */ ++- (NSString *) precomposedStringWithCanonicalMapping; ++#endif ++ ++// Converting String Contents into a Property List ++- (id) propertyList; ++- (NSDictionary*) propertyListFromStringsFileFormat; ++ ++// Identifying and Comparing Strings ++- (NSComparisonResult) compare: (NSString*)aString; ++- (NSComparisonResult) compare: (NSString*)aString ++ options: (NSUInteger)mask; ++- (NSComparisonResult) compare: (NSString*)aString ++ options: (NSUInteger)mask ++ range: (NSRange)aRange; ++- (BOOL) hasPrefix: (NSString*)aString; ++- (BOOL) hasSuffix: (NSString*)aString; ++- (BOOL) isEqual: (id)anObject; ++- (BOOL) isEqualToString: (NSString*)aString; ++- (NSUInteger) hash; ++ ++// Getting a Shared Prefix ++- (NSString*) commonPrefixWithString: (NSString*)aString ++ options: (NSUInteger)mask; ++ ++// Changing Case ++- (NSString*) capitalizedString; ++- (NSString*) lowercaseString; ++- (NSString*) uppercaseString; ++ ++// Getting C Strings ++- (const char*) cString; ++#if OS_API_VERSION(GS_API_MACOSX, GS_API_LATEST) ++ ++#if OS_API_VERSION(MAC_OS_X_VERSION_10_4,GS_API_LATEST) && GS_API_VERSION( 10200,GS_API_LATEST) ++- (const char*) cStringUsingEncoding: (NSStringEncoding)encoding; ++- (BOOL) getCString: (char*)buffer ++ maxLength: (NSUInteger)maxLength ++ encoding: (NSStringEncoding)encoding; ++- (id) initWithCString: (const char*)byteString ++ encoding: (NSStringEncoding)encoding; ++- (NSUInteger) lengthOfBytesUsingEncoding: (NSStringEncoding)encoding; ++- (NSUInteger) maximumLengthOfBytesUsingEncoding: (NSStringEncoding)encoding; ++#endif ++ ++#endif ++- (NSUInteger) cStringLength; ++- (void) getCString: (char*)buffer; ++- (void) getCString: (char*)buffer ++ maxLength: (NSUInteger)maxLength; ++- (void) getCString: (char*)buffer ++ maxLength: (NSUInteger)maxLength ++ range: (NSRange)aRange ++ remainingRange: (NSRange*)leftoverRange; ++ ++// Getting Numeric Values ++- (float) floatValue; ++- (int) intValue; ++ ++// Working With Encodings ++- (BOOL) canBeConvertedToEncoding: (NSStringEncoding)encoding; ++- (NSData*) dataUsingEncoding: (NSStringEncoding)encoding; ++- (NSData*) dataUsingEncoding: (NSStringEncoding)encoding ++ allowLossyConversion: (BOOL)flag; +++ (NSStringEncoding) defaultCStringEncoding; ++- (NSString*) description; ++- (NSStringEncoding) fastestEncoding; ++- (NSStringEncoding) smallestEncoding; ++ ++/** ++ * Attempts to complete this string as a path in the filesystem by finding ++ * a unique completion if one exists and returning it by reference in ++ * outputName (which must be a non-nil pointer), or if it finds a set of ++ * completions they are returned by reference in outputArray, if it is non-nil. ++ * filterTypes can be an array of strings specifying extensions to consider; ++ * files without these extensions will be ignored and will not constitute ++ * completions. Returns 0 if no match found, else a positive number that is ++ * only accurate if outputArray was non-nil. ++ */ ++- (NSUInteger) completePathIntoString: (NSString**)outputName ++ caseSensitive: (BOOL)flag ++ matchesIntoArray: (NSArray**)outputArray ++ filterTypes: (NSArray*)filterTypes; ++ ++/** ++ * Converts the receiver to a C string path expressed in the character ++ * encoding appropriate for the local host file system. This string will be ++ * automatically freed soon after it is returned, so copy it if you need it ++ * for long.<br /> ++ * NB. On mingw32 systems the filesystem representation of a path is a 16-bit ++ * unicode character string, so you should only pass the value returned by ++ * this method to functions expecting wide characters.<br /> ++ * This method uses [NSFileManager-fileSystemRepresentationWithPath:] to ++ * perform the conversion. ++ */ ++- (const GSNativeChar*) fileSystemRepresentation; ++ ++/** ++ * Converts the receiver to a C string path using the character encoding ++ * appropriate to the local file system. This string will be stored ++ * into buffer if it is shorter (number of characters) than size, ++ * otherwise NO is returned.<br /> ++ * NB. On mingw32 systems the filesystem representation of a path is a 16-bit ++ * unicode character string, so the buffer you pass to this method must be ++ * twice as many bytes as the size (number of characters) you expect to ++ * receive.<br /> ++ * This method uses [NSFileManager-fileSystemRepresentationWithPath:] to ++ * perform the conversion. ++ */ ++- (BOOL) getFileSystemRepresentation: (GSNativeChar*)buffer ++ maxLength: (NSUInteger)size; ++ ++/** ++ * Returns a string containing the last path component of the receiver.<br /> ++ * The path component is the last non-empty substring delimited by the ends ++ * of the string, or by path separator characters.<br /> ++ * If the receiver only contains a root part, this method returns it.<br /> ++ * If there are no non-empty substrings, this returns an empty string.<br /> ++ * NB. In a windows UNC path, the host and share specification is treated as ++ * a single path component, even though it contains separators. ++ * So a string of the form '//host/share' may be returned.<br /> ++ * Other special cases are apply when the string is the root. ++ * <example> ++ * @"foo/bar" produces @"bar" ++ * @"foo/bar/" produces @"bar" ++ * @"/foo/bar" produces @"bar" ++ * @"/foo" produces @"foo" ++ * @"/" produces @"/" (root is a special case) ++ * @"" produces @"" ++ * @"C:/" produces @"C:/" (root is a special case) ++ * @"C:" produces @"C:" ++ * @"//host/share/" produces @"//host/share/" (root is a special case) ++ * @"//host/share" produces @"//host/share" ++ * </example> ++ */ ++- (NSString*) lastPathComponent; ++ ++/** ++ * Returns a new string containing the path extension of the receiver.<br /> ++ * The path extension is a suffix on the last path component which starts ++ * with the extension separator (a '.') (for example .tiff is the ++ * pathExtension for /foo/bar.tiff).<br /> ++ * Returns an empty string if no such extension exists. ++ * <example> ++ * @"a.b" produces @"b" ++ * @"a.b/" produces @"b" ++ * @"/path/a.ext" produces @"ext" ++ * @"/path/a." produces @"" ++ * @"/path/.a" produces @"" (.a is not an extension to a file) ++ * @".a" produces @"" (.a is not an extension to a file) ++ * </example> ++ */ ++- (NSString*) pathExtension; ++ ++/** ++ * Returns a string where a prefix of the current user's home directory is ++ * abbreviated by '~', or returns the receiver (or an immutable copy) if ++ * it was not found to have the home directory as a prefix. ++ */ ++- (NSString*) stringByAbbreviatingWithTildeInPath; ++ ++/** ++ * Returns a new string with the path component given in aString ++ * appended to the receiver.<br /> ++ * This removes trailing path separators from the receiver and the root ++ * part from aString and replaces them with a single slash as a path ++ * separator.<br /> ++ * Also condenses any multiple separator sequences in the result into ++ * single path separators. ++ * <example> ++ * @"" with @"file" produces @"file" ++ * @"path" with @"file" produces @"path/file" ++ * @"/" with @"file" produces @"/file" ++ * @"/" with @"file" produces @"/file" ++ * @"/" with @"/file" produces @"/file" ++ * @"path with @"C:/file" produces @"path/file" ++ * </example> ++ * NB. Do not use this method to modify strings other than filesystem ++ * paths as the behavior in such cases is undefined ... for instance ++ * the string may have repeated slashes or slash-dot-slash sequences ++ * removed. ++ */ ++- (NSString*) stringByAppendingPathComponent: (NSString*)aString; ++ ++/** ++ * Returns a new string with the path extension given in aString ++ * appended to the receiver after an extensionSeparator ('.').<br /> ++ * If the receiver has trailing path separator characters, they are ++ * stripped before the extension separator is added.<br /> ++ * If the receiver contains no components after the root, the extension ++ * cannot be appended (an extension can only be appended to a file name), ++ * so a copy of the unmodified receiver is returned.<br /> ++ * An empty string may be used as an extension ... in which case the extension ++ * separator is appended.<br /> ++ * This behavior mirrors that of the -stringByDeletingPathExtension method. ++ * <example> ++ * @"Mail" with @"app" produces @"Mail.app" ++ * @"Mail.app" with @"old" produces @"Mail.app.old" ++ * @"file" with @"" produces @"file." ++ * @"/" with @"app" produces @"/" (no file name to append to) ++ * @"" with @"app" produces @"" (no file name to append to) ++ * </example> ++ * NB. Do not use this method to modify strings other than filesystem ++ * paths as the behavior in such cases is undefined ... for instance ++ * the string may have repeated slashes or slash-dot-slash sequences ++ * removed. ++ */ ++- (NSString*) stringByAppendingPathExtension: (NSString*)aString; ++ ++/** ++ * Returns a new string with the last path component (including any final ++ * path separators) removed from the receiver.<br /> ++ * A string without a path component other than the root is returned ++ * without alteration.<br /> ++ * See -lastPathComponent for a definition of a path component. ++ * <example> ++ * @"hello/there" produces @"hello" (a relative path) ++ * @"hello" produces @"" (a relative path) ++ * @"/hello" produces @"/" (an absolute unix path) ++ * @"/" produces @"/" (an absolute unix path) ++ * @"C:file" produces @"C:" (a relative windows path) ++ * @"C:" produces @"C:" (a relative windows path) ++ * @"C:/file" produces @"C:/" (an absolute windows path) ++ * @"C:/" produces @"C:/" (an absolute windows path) ++ * @"//host/share/file" produces @"//host/share/" (a UNC path) ++ * @"//host/share/" produces @"//host/share/" (a UNC path) ++ * @"//path/file" produces @"//path" (an absolute Unix path) ++ * </example> ++ * NB. Do not use this method to modify strings other than filesystem ++ * paths as the behavior in such cases is undefined ... for instance ++ * the string may have repeated slashes or slash-dot-slash sequences ++ * removed. ++ */ ++- (NSString*) stringByDeletingLastPathComponent; ++ ++/** ++ * Returns a new string with the path extension removed from the receiver.<br /> ++ * Strips any trailing path separators before checking for the extension ++ * separator.<br /> ++ * NB. This method does not consider a string which contains nothing ++ * between the root part and the extension separator ('.') to be a path ++ * extension. This mirrors the behavior of the -stringByAppendingPathExtension: ++ * method. ++ * <example> ++ * @"file.ext" produces @"file" ++ * @"/file.ext" produces @"/file" ++ * @"/file.ext/" produces @"/file" (trailing path separators are ignored) ++ * @"/file..ext" produces @"/file." ++ * @"/file." produces @"/file" ++ * @"/.ext" produces @"/.ext" (there is no file to strip from) ++ * @".ext" produces @".ext" (there is no file to strip from) ++ * </example> ++ * NB. Do not use this method to modify strings other than filesystem ++ * paths as the behavior in such cases is undefined ... for instance ++ * the string may have repeated slashes or slash-dot-slash sequences ++ * removed. ++ */ ++- (NSString*) stringByDeletingPathExtension; ++ ++/** ++ * Returns a string created by expanding the initial tilde ('~') and any ++ * following username to be the home directory of the current user or the ++ * named user.<br /> ++ * Returns the receiver or an immutable copy if it was not possible to ++ * expand it. ++ */ ++- (NSString*) stringByExpandingTildeInPath; ++ ++/** ++ * First calls -stringByExpandingTildeInPath if necessary.<br /> ++ * Replaces path string by one in which path components representing symbolic ++ * links have been replaced by their referents.<br /> ++ * Removes a leading '/private' if the result is valid.<br /> ++ * If links cannot be resolved, returns an unmodified copy of the receiver. ++ */ ++- (NSString*) stringByResolvingSymlinksInPath; ++ ++/** ++ * Returns a standardised form of the receiver, with unnecessary parts ++ * removed, tilde characters expanded, and symbolic links resolved ++ * where possible.<br /> ++ * NB. Refers to the local filesystem to resolve symbolic links in ++ * absolute paths, and to expand tildes ... so this can't be used for ++ * general path manipulation.<br /> ++ * If the string is an invalid path, the unmodified receiver is returned.<br /> ++ * <p> ++ * Uses -stringByExpandingTildeInPath to expand tilde expressions.<br /> ++ * Simplifies '//' and '/./' sequences and removes trailing '/' or '.'.<br /> ++ * </p> ++ * <p> ++ * For absolute paths, uses -stringByResolvingSymlinksInPath to resolve ++ * any links, then gets rid of '/../' sequences and removes any '/private' ++ * prefix. ++ * </p> ++ */ ++- (NSString*) stringByStandardizingPath; ++ ++ ++// for methods working with decomposed strings ++- (int) _baseLength; ++ ++#if OS_API_VERSION(GS_API_MACOSX, GS_API_LATEST) ++/** ++ * Concatenates the path components in the array and returns the result.<br /> ++ * This method does not remove empty path components, but does recognize an ++ * empty initial component as a special case meaning that the string ++ * returned will begin with a slash. ++ */ +++ (NSString*) pathWithComponents: (NSArray*)components; ++ ++/** ++ * Returns YES if the receiver represents an absolute path ...<br /> ++ * Returns NO otherwise.<br /> ++ * An absolute path in unix mode is one which begins ++ * with a slash or tilde.<br /> ++ * In windows mode a drive specification (eg C:) followed by a slash or ++ * backslash, is an absolute path, as is any path beginning with a tilde.<br /> ++ * In any mode a UNC path (//host/share...) is always absolute.<br /> ++ * In the default gnustep path handling mode, ++ * the rules are the same as for windows, ++ * except that a path whose root is a slash denotes an absolute path ++ * when running on unix and a relative path when running under windows. ++ */ ++- (BOOL) isAbsolutePath; ++ ++/** ++ * Returns the path components of the receiver separated into an array.<br /> ++ * If the receiver begins with a root sequence such as the path separator ++ * character (or a drive specification in windows) then that is used as the ++ * first element in the array.<br /> ++ * Empty components are removed.<br /> ++ * If a trailing path separator (which was not part of the root) was present, ++ * it is added as the last element in the array. ++ */ ++- (NSArray*) pathComponents; ++ ++/** ++ * Returns an array of strings made by appending the values in paths ++ * to the receiver. ++ */ ++- (NSArray*) stringsByAppendingPaths: (NSArray*)paths; ++ +++ (NSString*) localizedStringWithFormat: (NSString*)format, ... ++ NS_FORMAT_FUNCTION(1,2); ++ +++ (id) stringWithString: (NSString*)aString; +++ (id) stringWithContentsOfURL: (NSURL*)url; +++ (id) stringWithUTF8String: (const char*)bytes; ++- (id) initWithFormat: (NSString*)format ++ locale: (NSDictionary*)locale, ... NS_FORMAT_FUNCTION(1,3); ++- (id) initWithFormat: (NSString*)format ++ locale: (NSDictionary*)locale ++ arguments: (va_list)argList NS_FORMAT_FUNCTION(1,0); ++- (id) initWithUTF8String: (const char *)bytes; ++- (id) initWithContentsOfURL: (NSURL*)url; ++- (NSString*) substringWithRange: (NSRange)aRange; ++- (NSComparisonResult) caseInsensitiveCompare: (NSString*)aString; ++- (NSComparisonResult) compare: (NSString*)string ++ options: (NSUInteger)mask ++ range: (NSRange)compareRange ++ locale: (id)locale; ++- (NSComparisonResult) localizedCompare: (NSString *)string; ++- (NSComparisonResult) localizedCaseInsensitiveCompare: (NSString *)string; ++- (BOOL) writeToFile: (NSString*)filename ++ atomically: (BOOL)useAuxiliaryFile; ++- (BOOL) writeToURL: (NSURL*)url atomically: (BOOL)atomically; ++- (double) doubleValue; +++ (NSStringEncoding*) availableStringEncodings; +++ (NSString*) localizedNameOfStringEncoding: (NSStringEncoding)encoding; ++- (void) getLineStart: (NSUInteger *)startIndex ++ end: (NSUInteger *)lineEndIndex ++ contentsEnd: (NSUInteger *)contentsEndIndex ++ forRange: (NSRange)aRange; ++- (NSRange) lineRangeForRange: (NSRange)aRange; ++- (const char*) lossyCString; ++- (NSString*) stringByAddingPercentEscapesUsingEncoding: (NSStringEncoding)e; ++- (NSString*) stringByPaddingToLength: (NSUInteger)newLength ++ withString: (NSString*)padString ++ startingAtIndex: (NSUInteger)padIndex; ++- (NSString*) stringByReplacingPercentEscapesUsingEncoding: (NSStringEncoding)e; ++- (NSString*) stringByTrimmingCharactersInSet: (NSCharacterSet*)aSet; ++- (const char *)UTF8String; ++#endif ++ ++#if OS_API_VERSION(MAC_OS_X_VERSION_10_9,GS_API_LATEST) ++- (NSString *) stringByAddingPercentEncodingWithAllowedCharacters: (NSCharacterSet *)aSet; ++- (NSString *) stringByRemovingPercentEncoding; ++#endif ++ ++#if OS_API_VERSION(MAC_OS_X_VERSION_10_3,GS_API_LATEST) ++/** Not implemented */ ++- (void) getParagraphStart: (NSUInteger *)startIndex ++ end: (NSUInteger *)parEndIndex ++ contentsEnd: (NSUInteger *)contentsEndIndex ++ forRange: (NSRange)range; ++/** Not implemented */ ++ - (NSRange) paragraphRangeForRange: (NSRange)range; ++#endif ++ ++#if OS_API_VERSION(MAC_OS_X_VERSION_10_5,GS_API_LATEST) ++/** ++ * Returns YES when scanning the receiver's text from left to right ++ * finds an initial digit in the range 1-9 or a letter in the set ++ * ('Y', 'y', 'T', 't').<br /> ++ * Any trailing characters are ignored.<br /> ++ * Any leading whitespace or zeros or signs are also ignored.<br /> ++ * Returns NO if the above conditions are not met. ++ */ ++- (BOOL) boolValue; ++- (NSArray *) componentsSeparatedByCharactersInSet: (NSCharacterSet *)separator; ++- (NSInteger) integerValue; ++- (long long) longLongValue; ++/** Not implemented */ ++- (NSRange) rangeOfComposedCharacterSequencesForRange: (NSRange)range; ++/** Not implemented */ ++- (NSRange) rangeOfString: (NSString *)aString ++ options: (NSStringCompareOptions)mask ++ range: (NSRange)searchRange ++ locale: (NSLocale *)locale; ++ ++#endif ++ ++#if OS_API_VERSION(MAC_OS_X_VERSION_10_10,GS_API_LATEST) ++ ++/** ++ * Returns YES if the receiver contains string, otherwise, NO. ++ */ ++- (BOOL) containsString: (NSString *)string; ++ ++#endif ++ ++#if OS_API_VERSION(GS_API_NONE, GS_API_NONE) +++ (Class) constantStringClass; ++#endif /* GS_API_NONE */ ++ ++@end ++ ++@interface NSMutableString : NSString ++ ++// Creating Temporary Strings +++ (id) string; +++ (id) stringWithCharacters: (const unichar*)characters ++ length: (NSUInteger)length; +++ (id) stringWithCString: (const char*)byteString ++ length: (NSUInteger)length; +++ (id) stringWithCString: (const char*)byteString; +++ (id) stringWithFormat: (NSString*)format, ... NS_FORMAT_FUNCTION(1,2); +++ (id) stringWithContentsOfFile: (NSString*)path; +++ (NSMutableString*) stringWithCapacity: (NSUInteger)capacity; ++ ++// Initializing Newly Allocated Strings ++- (id) initWithCapacity: (NSUInteger)capacity; ++ ++// Modify A String ++- (void) appendFormat: (NSString*)format, ... NS_FORMAT_FUNCTION(1,2); ++- (void) appendString: (NSString*)aString; ++- (void) deleteCharactersInRange: (NSRange)range; ++- (void) insertString: (NSString*)aString atIndex: (NSUInteger)loc; ++- (void) replaceCharactersInRange: (NSRange)range ++ withString: (NSString*)aString; ++- (NSUInteger) replaceOccurrencesOfString: (NSString*)replace ++ withString: (NSString*)by ++ options: (NSUInteger)opts ++ range: (NSRange)searchRange; ++- (void) setString: (NSString*)aString; ++ ++@end ++ ++#ifdef __OBJC_GNUSTEP_RUNTIME_ABI__ ++# if __OBJC_GNUSTEP_RUNTIME_ABI__ >= 20 ++# define GNUSTEP_NEW_STRING_ABI ++# endif ++#endif ++ ++/** ++ * <p>The NXConstantString class is used to hold constant 8-bit character ++ * string objects produced by the compiler where it sees @"..." in the ++ * source. The compiler generates the instances of this class - which ++ * has three instance variables -</p> ++ * <list> ++ * <item>a pointer to the class (this is the sole ivar of NSObject)</item> ++ * <item>a pointer to the 8-bit data</item> ++ * <item>the length of the string</item> ++ * </list> ++ * <p>In older versions of the compiler, the isa variable is always set to ++ * the NXConstantString class. In newer versions a compiler option was ++ * added for GNUstep, to permit the isa variable to be set to another ++ * class, and GNUstep uses this to avoid conflicts with the default ++ * implementation of NXConstantString in the ObjC runtime library (the ++ * preprocessor is used to change all occurrences of NXConstantString ++ * in the source code to NSConstantString).</p> ++ * <p>Since GNUstep will generally use the GNUstep extension to the ++ * compiler, you should never refer to the constant string class by ++ * name, but should use the [NSString+constantStringClass] method to ++ * get the actual class being used for constant strings.</p> ++ * What follows is a dummy declaration of the class to keep the compiler ++ * happy. ++ */ ++@interface NXConstantString : NSString ++{ ++@public ++#ifdef GNUSTEP_NEW_STRING_ABI ++ /** ++ * Flags. The low 16 bits are reserved for the compiler, the top 16 for use ++ * by the Foundation Framework. Currently only the low 2 bits are used, to ++ * indicate the encoding of the string, with the following values: ++ * ++ * 0. ASCII (UTF-8 using only 7-bit characters) ++ * 1. UTF-8 ++ * 2. UTF-16 ++ * 3. UTF-32 ++ * ++ */ ++ uint32_t flags; ++ /** ++ * The number of characters (UTF-16 code units) in the string. ++ */ ++ uint32_t nxcslen; ++ /** ++ * The number of bytes in the string. For fixed-length encodings, this is a ++ * fixed multiple of nxcslen, but for UTF-8 it can be different. ++ */ ++ uint32_t size; ++ /** ++ * Hash value. ++ */ ++ uint32_t hash; ++ /** ++ * Pointer to the byte data of the string. Note that `char*` is the correct ++ * type only if the low two bits of the flags indicate that this is an ASCII ++ * or UTF-8 string, otherwise it is a pointer to 16- or 32-bit characters in ++ * native byte order. ++ */ ++ const char * const nxcsptr; ++#else ++ const char * const nxcsptr; ++ const unsigned int nxcslen; ++#endif ++} ++@end ++ ++#ifdef NeXT_RUNTIME ++/** For internal use with NeXT runtime; ++ needed, until Apple Radar 2870817 is fixed. */ ++extern struct objc_class _NSConstantStringClassReference; ++#endif ++ ++#if defined(__cplusplus) ++} ++#endif ++ ++#if !NO_GNUSTEP && !defined(GNUSTEP_BASE_INTERNAL) ++#import "../GNUstepBase/NSString+GNUstepBase.h" ++#import "../GNUstepBase/NSMutableString+GNUstepBase.h" ++#endif ++ ++#endif /* __NSString_h_GNUSTEP_BASE_INCLUDE */ +Index: gcc/testsuite/objc-obj-c++-shared/F-NSValue.h +=================================================================== +--- a/src/gcc/testsuite/objc-obj-c++-shared/F-NSValue.h (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/objc-obj-c++-shared/F-NSValue.h (.../branches/gcc-8-branch) +@@ -0,0 +1,33 @@ ++/* Copyright (C) 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. ++ ++You should have received a copy of the GNU General Public License ++along with GCC; see the file COPYING3. If not see ++<http://www.gnu.org/licenses/>. */ ++ ++#ifndef _OBJC_F_NSSTRING_H_ ++#define _OBJC_F_NSSTRING_H_ ++ ++/* This is a workaround to PR90709 for the NeXT runtime. ++ If we're on a system version that has headers with items we can't ++ consume, then use the GNUStep header instead. ++*/ ++ ++#if __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ >= 1090 ++# import "GNUStep/Foundation/NSValue.h" ++#else ++# import <Foundation/NSValue.h> ++#endif ++ ++#endif /* _OBJC_F_NSSTRING_H_ */ +Index: gcc/testsuite/objc-obj-c++-shared/F-NSArray.h +=================================================================== +--- a/src/gcc/testsuite/objc-obj-c++-shared/F-NSArray.h (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/objc-obj-c++-shared/F-NSArray.h (.../branches/gcc-8-branch) +@@ -0,0 +1,33 @@ ++/* Copyright (C) 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. ++ ++You should have received a copy of the GNU General Public License ++along with GCC; see the file COPYING3. If not see ++<http://www.gnu.org/licenses/>. */ ++ ++#ifndef _OBJC_F_NSARRAY_H_ ++#define _OBJC_F_NSARRAY_H_ ++ ++/* This is a workaround to PR90709 for the NeXT runtime. ++ If we're on a system version that has headers with items we can't ++ consume, then use the GNUStep header instead. ++*/ ++ ++#if __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ >= 1090 ++# import "GNUStep/Foundation/NSArray.h" ++#else ++# import <Foundation/NSArray.h> ++#endif ++ ++#endif /* _OBJC_F_NSARRAY_H_ */ +Index: gcc/testsuite/objc-obj-c++-shared/CF-CFString.h +=================================================================== +--- a/src/gcc/testsuite/objc-obj-c++-shared/CF-CFString.h (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/objc-obj-c++-shared/CF-CFString.h (.../branches/gcc-8-branch) +@@ -0,0 +1,33 @@ ++/* Copyright (C) 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. ++ ++You should have received a copy of the GNU General Public License ++along with GCC; see the file COPYING3. If not see ++<http://www.gnu.org/licenses/>. */ ++ ++#ifndef _OBJC_CF_CFSTRING_H_ ++#define _OBJC_CF_CFSTRING_H_ ++ ++/* This is a workaround to PR90709 for the NeXT runtime. ++ If we're on a system version that has headers with items we can't ++ consume, then use the GNUStep header instead. ++*/ ++ ++#if __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ >= 1090 ++# import "GNUStep/CoreFoundation/CFString.h" ++#else ++# import <CoreFoundation/CFString.h> ++#endif ++ ++#endif /* _OBJC_CF_CFSTRING_H_ */ +Index: gcc/testsuite/objc-obj-c++-shared/F-NSAutoreleasePool.h +=================================================================== +--- a/src/gcc/testsuite/objc-obj-c++-shared/F-NSAutoreleasePool.h (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/objc-obj-c++-shared/F-NSAutoreleasePool.h (.../branches/gcc-8-branch) +@@ -0,0 +1,33 @@ ++/* Copyright (C) 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. ++ ++You should have received a copy of the GNU General Public License ++along with GCC; see the file COPYING3. If not see ++<http://www.gnu.org/licenses/>. */ ++ ++#ifndef _OBJC_F_NSAUTORELEASEPOOL_H_ ++#define _OBJC_F_NSAUTORELEASEPOOL_H_ ++ ++/* This is a workaround to PR90709 for the NeXT runtime. ++ If we're on a system version that has headers with items we can't ++ consume, then use the GNUStep header instead. ++*/ ++ ++#if __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ >= 1090 ++# import "GNUStep/Foundation/NSAutoreleasePool.h" ++#else ++# import <Foundation/NSAutoreleasePool.h> ++#endif ++ ++#endif /* _OBJC_F_NSAUTORELEASEPOOL_H_ */ +Index: gcc/testsuite/g++.dg/ubsan/vptr-14.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/ubsan/vptr-14.C (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/ubsan/vptr-14.C (.../branches/gcc-8-branch) +@@ -0,0 +1,18 @@ ++// PR sanitizer/89869 ++// { dg-do run } ++// { dg-options "-fsanitize=vptr -fno-sanitize-recover=vptr" } ++ ++struct S { S *s = 0; virtual ~S () {} }; ++ ++void ++foo (S *x, S *y) ++{ ++ (x->s ? y : x) = x->s; ++} ++ ++int ++main () ++{ ++ S a; ++ foo (&a, 0); ++} +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_8_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/lookup/missing-std-include-8.C (.../branches/gcc-8-branch) +@@ -13,6 +13,15 @@ + // { dg-error "expected primary-expression before '\\)' token" "" { target *-*-* } .-3 } + } + ++template<class T> ++void test_make_unique () ++{ ++ std::make_unique<T>(); // { 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_8_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/lookup/missing-std-include-5.C (.../branches/gcc-8-branch) +@@ -1,2 +1,3 @@ ++// { dg-do compile { target c++14 } } + using namespace std::complex_literals; // { dg-error "" } + // { dg-message "#include <complex>" "" { 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_8_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/lookup/missing-std-include-6.C (.../branches/gcc-8-branch) +@@ -11,15 +11,6 @@ + // { dg-error "expected primary-expression before '\\)' token" "" { target *-*-* } .-3 } + } + +-template<class T> +-void test_make_unique () +-{ +- auto p = std::make_unique<T>(); // { dg-error "'make_unique' is not a member of 'std'" } +- // { dg-message "'#include <memory>'" "" { target *-*-* } .-1 } +- // { dg-error "expected primary-expression before '>' token" "" { target *-*-* } .-2 } +- // { dg-error "expected primary-expression before '\\)' token" "" { target *-*-* } .-3 } +-} +- + std::shared_ptr<int> test_shared_ptr; // { dg-error "'shared_ptr' in namespace 'std' does not name a template type" } + // { dg-message "'#include <memory>'" "" { target *-*-* } .-1 } + +Index: gcc/testsuite/g++.dg/warn/conv5.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/warn/conv5.C (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/warn/conv5.C (.../branches/gcc-8-branch) +@@ -0,0 +1,11 @@ ++// PR c++/89876 ++// { dg-do compile { target c++11 } } ++// { dg-prune-output "sorry" } ++ ++template <typename T> ++T f (T, char*); ++ ++template <typename T> ++decltype (f (T (), "")) g (T) { return ""; } // { dg-error "invalid conversion" } ++ ++void h () { g (0); } +Index: gcc/testsuite/g++.dg/asan/pr90570.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/asan/pr90570.C (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/asan/pr90570.C (.../branches/gcc-8-branch) +@@ -0,0 +1,18 @@ ++/* PR sanitizer/90570 */ ++/* { dg-do run } */ ++ ++#include <vector> ++ ++struct stru ++{ ++ std::vector<int> v{1,2,3,4}; ++ int i{5}; ++}; ++ ++int main() ++{ ++ stru s1; ++ stru s2; ++ ++ return 0; ++} +Index: gcc/testsuite/g++.dg/gcov/pr16855.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/gcov/pr16855.C (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/gcov/pr16855.C (.../branches/gcc-8-branch) +@@ -1,6 +1,8 @@ + /* { dg-options "-fprofile-arcs -ftest-coverage" } */ + /* { dg-do run { target native } } */ + ++/* See PR91087 for information on Darwin xfails. */ ++ + #include <stdlib.h> + #include <stdio.h> + +@@ -18,7 +20,9 @@ + { + public: + Test (void) { fprintf (stderr, "In Test::Test\n"); /* count(1) */ } +- ~Test (void) { fprintf (stderr, "In Test::~Test\n"); /* count(1) */ } ++ ~Test (void) { ++ fprintf (stderr, "In Test::~Test\n"); /* count(1) { xfail *-*-darwin* } */ ++ } + } T1; + + void +@@ -42,7 +46,7 @@ + + static void __attribute__ ((destructor)) dtor_default () + { +- fprintf (stderr, "in destructor(())\n"); /* count(1) */ ++ fprintf (stderr, "in destructor(())\n"); /* count(1) { xfail *-*-darwin* } */ + } + +-/* { dg-final { run-gcov branches { -b pr16855.C } } } */ ++/* { dg-final { run-gcov branches { -b pr16855.C } { xfail *-*-darwin* } } } */ +Index: gcc/testsuite/g++.dg/debug/dwarf2/pr91887.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/debug/dwarf2/pr91887.C (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/debug/dwarf2/pr91887.C (.../branches/gcc-8-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 <typename U> A(U); ++}; ++template <class> struct B { typedef A type; }; ++template <class R, typename... Args> ++int Bind(R(Args...), typename B<Args>::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_8_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/pr92022.C (.../branches/gcc-8-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/pr90026.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/opt/pr90026.C (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/opt/pr90026.C (.../branches/gcc-8-branch) +@@ -0,0 +1,24 @@ ++// PR rtl-optimization/90026 ++// { dg-do compile } ++// { dg-options "-fnon-call-exceptions -ftracer -O2 -w" } ++ ++typedef __SIZE_TYPE__ size_t; ++struct S { int *b; ~S () { delete b; } }; ++void bar (); ++char c[sizeof (int)]; ++ ++void * ++operator new (size_t, void *) ++{ ++ __builtin_unreachable (); ++} ++ ++void ++foo () ++{ ++ S a; ++ if (a.b) ++ a.b = new int (); ++ bar (); ++ new (c) int (); ++} +Index: gcc/testsuite/g++.dg/opt/pr90187.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/opt/pr90187.C (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/opt/pr90187.C (.../branches/gcc-8-branch) +@@ -0,0 +1,15 @@ ++// PR target/90187 ++// { dg-do compile } ++// { dg-options "-Ofast -ffloat-store" } ++ ++double a[64]; ++double *foo (void); ++ ++void ++bar (int x, const double *y) ++{ ++ int i; ++ for (i = 0; i < x; i++) ++ if (y[i] < a[i]) ++ a[i] = y[i]; ++} +Index: gcc/testsuite/g++.dg/opt/pr90090.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/opt/pr90090.C (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/opt/pr90090.C (.../branches/gcc-8-branch) +@@ -0,0 +1,19 @@ ++// PR tree-optimization/90090 ++// { dg-do compile } ++// { dg-options "-Ofast -fno-associative-math -fsignaling-nans -fno-tree-dce -fnon-call-exceptions" } ++ ++double bar (double, double, double, double, double); ++double baz (); ++ ++double ++foo (double a) ++{ ++ try ++ { ++ return bar (1.0/a, 2.0/a, 4.0/a, 8.0/a, 16.0/a); ++ } ++ catch (...) ++ { ++ return baz (); ++ } ++} +Index: gcc/testsuite/g++.dg/tree-prof/devirt.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/tree-prof/devirt.C (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/tree-prof/devirt.C (.../branches/gcc-8-branch) +@@ -1,5 +1,5 @@ + /* PR ipa/88561 */ +-/* { dg-options "-O3 -fdump-tree-dom3-details" } */ ++/* { dg-options "-O3 -fdump-tree-tracer-details -fdump-tree-dom3-details" } */ + + struct nsISupports + { +@@ -121,6 +121,6 @@ + __builtin_abort (); + } + +-/* { dg-final-use-not-autofdo { scan-tree-dump-times "folding virtual function call to virtual unsigned int mozPersonalDictionary::_ZThn16" 1 "dom3" { target { lp64 || llp64 } } } } */ +-/* { dg-final-use-not-autofdo { scan-tree-dump-times "folding virtual function call to virtual unsigned int mozPersonalDictionary::_ZThn8" 1 "dom3" { target ilp32 } } } */ +-/* { dg-final-use-not-autofdo { scan-tree-dump-times "folding virtual function call to virtual unsigned int mozPersonalDictionary::AddRef" 1 "dom3" } } */ ++/* { dg-final-use-not-autofdo { scan-tree-dump-times "folding virtual function call to virtual unsigned int mozPersonalDictionary::_ZThn16" 1 "tracer" { target { lp64 || llp64 } } } } */ ++/* { dg-final-use-not-autofdo { scan-tree-dump-times "folding virtual function call to virtual unsigned int mozPersonalDictionary::_ZThn8" 1 "tracer" { target ilp32 } } } */ ++/* { dg-final-use-not-autofdo { scan-tree-dump-times "folding virtual function call to virtual unsigned int mozPersonalDictionary::AddRef" 1 "tracer" } } */ +Index: gcc/testsuite/g++.dg/pr91173.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/pr91173.C (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/pr91173.C (.../branches/gcc-8-branch) +@@ -0,0 +1,45 @@ ++class a { ++ int b; ++ void *c; ++ ++public: ++ bool aa(); ++ int &ab() { ++ if (aa()) { ++ void *d(c); ++ return static_cast<int *>(d)[b]; ++ } ++ return *(int *)0; ++ } ++}; ++typedef enum {E} e; ++class f : public a { ++ int g; ++ ++public: ++ int ac() { ++ if (g) ++ return 1; ++ return ac(); ++ } ++}; ++int *ad; ++struct h { ++ static int ae(e, int *m) { ++ f ag; ++ int *ah; ++ while (!0) { ++ ad = &ag.ab(); ++ ah = ad + ag.ac(); ++ while (ad < ah) ++ *m = *ad++; ++ } ++ } ++}; ++template <class, class> ++void i(int *, int *, int, int *, e n, int *o) { ++ h::ae(n, o); ++} ++int aq, ar, as, at, au; ++void aw() { i<int, bool>(&aq, &ar, as, &at, (e)0, &au); } ++ +Index: gcc/testsuite/g++.dg/pr71694.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/pr71694.C (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/pr71694.C (.../branches/gcc-8-branch) +@@ -1,5 +1,6 @@ + /* { dg-do compile } */ + /* { dg-options "-O2 -fno-store-merging" } */ ++/* { dg-additional-options "-fno-common -mdynamic-no-pic" { target { ia32 && { x86_64-*-darwin* i?86-*-darwin* } } } } */ + + struct B { + B() {} +Index: gcc/testsuite/g++.dg/asm-qual-3.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/asm-qual-3.C (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/asm-qual-3.C (.../branches/gcc-8-branch) +@@ -2,11 +2,11 @@ + // { dg-do compile } + // { dg-options "-std=gnu++98" } + +-asm const (""); // { dg-error {expected '\(' before 'const'} } +-asm volatile (""); // { dg-error {expected '\(' before 'volatile'} } ++asm const (""); // { dg-error {'const' is not an asm qualifier} } ++asm volatile (""); + asm restrict (""); // { dg-error {expected '\(' before 'restrict'} } +-asm inline (""); // { dg-error {expected '\(' before 'inline'} } +-asm goto (""); // { dg-error {expected '\(' before 'goto'} } ++asm inline (""); // { dg-error {asm qualifier outside of function body} } ++asm goto (""); // { dg-error {asm qualifier outside of function body} } + + // There are many other things wrong with this code, so: + // { dg-excess-errors "" } +Index: gcc/testsuite/g++.dg/cpp0x/using-enum-3.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp0x/using-enum-3.C (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp0x/using-enum-3.C (.../branches/gcc-8-branch) +@@ -0,0 +1,21 @@ ++// PR c++/89511 ++// { dg-do compile { target c++11 } } ++ ++void f () ++{ ++ enum e { a }; ++ using e::a; // { dg-error "not a namespace or unscoped enum" } ++} ++ ++struct S { ++ enum E { A }; ++ using E::A; // { dg-error "type .S. is not a base type for type .S." } ++}; ++ ++namespace N { ++ enum E { B }; ++} ++ ++struct T { ++ using N::E::B; // { dg-error "using-declaration for non-member at class scope" } ++}; +Index: gcc/testsuite/g++.dg/cpp0x/lambda/lambda-defarg9.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-defarg9.C (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-defarg9.C (.../branches/gcc-8-branch) +@@ -0,0 +1,10 @@ ++// PR c++/89422 ++// { dg-do compile { target c++11 } } ++// { dg-additional-options -g } ++ ++template <int> struct S ++{ ++ friend void foo (int a = []{ return 0; }()) {} ++ int b; ++}; ++S<0> t; +Index: gcc/testsuite/g++.dg/cpp0x/implicit16.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp0x/implicit16.C (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp0x/implicit16.C (.../branches/gcc-8-branch) +@@ -0,0 +1,37 @@ ++// PR c++/89381 ++// { dg-do compile { target c++11 } } ++ ++template<typename T> ++struct base ++{ ++ base() { } ++ base(const base&) { } ++ base(base&&) { } ++ base& operator=(const base&) { return *this; } ++ base& operator=(base&&) { return *this; } ++}; ++ ++struct foo : base<int> ++{ ++ using base<int>::base; ++ using base<int>::operator=; ++}; ++ ++//using workaround = decltype(foo{*static_cast<foo const*>(0)}); ++ ++struct bar ++{ ++ bar& operator=(foo ve) ++ { ++ value = ve; ++ return *this; ++ } ++ ++ foo value; ++}; ++ ++int main() ++{ ++ foo a; ++ foo b{a}; ++} +Index: gcc/testsuite/g++.dg/cpp0x/nullptr41.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp0x/nullptr41.C (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp0x/nullptr41.C (.../branches/gcc-8-branch) +@@ -0,0 +1,19 @@ ++// PR c++/89212 ++// { dg-do compile { target c++11 } } ++ ++template <int, typename T> using enable_if_t = int; ++ ++template<typename U, typename W, typename Y, class X, W(X::*foo)() = nullptr> ++struct p ++{ ++ template<U(Y::*fun)() = foo, typename T = enable_if_t<nullptr == fun, int>> ++ p(T) { } ++ p() = default; ++}; ++ ++struct A ++{ ++ p<void, void, A, A> i = 1; ++ void bar(); ++ p<void, void, A, A, &A::bar> j; ++}; +Index: gcc/testsuite/g++.dg/cpp0x/pr84497.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp0x/pr84497.C (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp0x/pr84497.C (.../branches/gcc-8-branch) +@@ -1,6 +1,7 @@ + // PR 84497 mismatch with thread constructor fn weakness + // { dg-do compile { target c++11 } } + // { dg-require-weak "" } ++// { dg-require-alias "" } + + struct Base + { +Index: gcc/testsuite/g++.dg/cpp0x/decltype-tid1.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp0x/decltype-tid1.C (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp0x/decltype-tid1.C (.../branches/gcc-8-branch) +@@ -0,0 +1,9 @@ ++// PR c++/87513 ++// { dg-do compile { target c++11 } } ++ ++struct A { template <long> void foo (); }; ++template <long t> auto bar () -> decltype (&A::foo<t>); ++void foo () ++{ ++ bar<0> (); ++} +Index: gcc/testsuite/g++.dg/cpp0x/rv-conv2.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp0x/rv-conv2.C (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp0x/rv-conv2.C (.../branches/gcc-8-branch) +@@ -0,0 +1,18 @@ ++// PR c++/89705 ++// { dg-do compile { target c++11 } } ++ ++struct W { operator const volatile int(); }; ++const int& rci = W(); ++ ++struct X { operator const int(); }; ++int&& rri = X(); ++ ++struct Y { operator volatile int(); }; ++int&& rri2 = Y(); ++ ++struct Z { operator const volatile int(); }; ++volatile int&& rri3 = Z(); ++ ++enum E { A }; ++struct S { operator const E(); }; ++E&& rre = S(); +Index: gcc/testsuite/g++.dg/cpp0x/initlist-value4.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp0x/initlist-value4.C (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp0x/initlist-value4.C (.../branches/gcc-8-branch) +@@ -0,0 +1,12 @@ ++// PR c++/88857 ++// { dg-do compile { target c++11 } } ++ ++class S { int a; }; ++void foo (const S &, int); ++ ++template <int N> ++void ++bar () ++{ ++ foo ({}); // { dg-error "too few arguments to function" } ++} +Index: gcc/testsuite/g++.dg/cpp0x/alignas4.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp0x/alignas4.C (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp0x/alignas4.C (.../branches/gcc-8-branch) +@@ -1,8 +1,14 @@ + // PR c++/59012 + // { dg-do compile { target c++11 } } + // { dg-final { scan-assembler "align 8" { target { { i?86-*-* x86_64-*-* } && { { ! ia32 } && { ! *-*-darwin* } } } } } } +-// { dg-final { scan-assembler "align 4" { target ia32 } } } ++// { dg-final { scan-assembler "align 4" { target { ia32 && { ! *-*-darwin* } } } } } + ++// Darwin produces aligned .zerofill directives for these. ++// { dg-final { scan-assembler {zerofill[^\n\r]+_a,4,2} { target { ilp32 && *-*-darwin* } } } } ++// { dg-final { scan-assembler {zerofill[^\n\r]+_a,8,3} { target { lp64 && *-*-darwin* } } } } ++// { dg-final { scan-assembler {zerofill[^\n\r]+_a2,4,2} { target { ilp32 && *-*-darwin* } } } } ++// { dg-final { scan-assembler {zerofill[^\n\r]+_a2,8,3} { target { lp64 && *-*-darwin* } } } } ++ + template <class... T> + struct A + { +Index: gcc/testsuite/g++.dg/cpp0x/pr89403.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp0x/pr89403.C (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp0x/pr89403.C (.../branches/gcc-8-branch) +@@ -0,0 +1,18 @@ ++// PR c++/89403 ++// { dg-do compile { target c++11 } } ++// { dg-options "-Os -fsyntax-only" } ++ ++template <typename T> ++struct A : T { ++ constexpr A() : T() { } ++}; ++ ++template <typename T> ++struct B { ++ A<T> b; ++ constexpr B() { } ++}; ++ ++struct C { struct {} s; }; ++constexpr B<C> b{}; ++constexpr C c = b.b; +Index: gcc/testsuite/g++.dg/cpp0x/nullptr40.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp0x/nullptr40.C (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp0x/nullptr40.C (.../branches/gcc-8-branch) +@@ -0,0 +1,19 @@ ++// PR c++/89212 ++// { dg-do compile { target c++11 } } ++ ++template <int, typename T> using enable_if_t = int; ++ ++template<class X, void(X::*foo)() = nullptr> ++struct p ++{ ++ template<void(X::*fun)() = foo, typename T = enable_if_t<nullptr == fun, int>> ++ p(T) { } ++ p() = default; ++}; ++ ++struct A ++{ ++ p<A> i = 1; ++ void bar(); ++ p<A, &A::bar> j; ++}; +Index: gcc/testsuite/g++.dg/eh/o32-fp.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/eh/o32-fp.C (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/eh/o32-fp.C (.../branches/gcc-8-branch) +@@ -0,0 +1,47 @@ ++// Test whether call saved float are restored properly for O32 ABI ++// { dg-do run { target { { { mips*-*-linux* } && hard_float } && { ! mips64 } } } } ++// { dg-options "-O2" } ++ ++void __attribute__((noinline)) ++bar (void) ++{ ++ throw 1; ++} ++ ++void __attribute__((noinline)) ++foo (void) ++{ ++ register double f20 __asm__ ("f20") = 0.0; ++ register double f22 __asm__ ("f22") = 0.0; ++ register double f24 __asm__ ("f24") = 0.0; ++ register double f26 __asm__ ("f26") = 0.0; ++ register double f28 __asm__ ("f28") = 0.0; ++ register double f30 __asm__ ("f30") = 0.0; ++ __asm__ __volatile__("":"+f"(f20),"+f"(f22),"+f"(f24),"+f"(f26),"+f"(f30)); ++ bar (); ++} ++ ++int ++main (void) ++{ ++ register double f20 __asm__ ("f20") = 12.0; ++ register double f22 __asm__ ("f22") = 13.0; ++ register double f24 __asm__ ("f24") = 14.0; ++ register double f26 __asm__ ("f26") = 15.0; ++ register double f28 __asm__ ("f28") = 16.0; ++ register double f30 __asm__ ("f30") = 17.0; ++ ++ try ++ { ++ foo (); ++ } ++ catch (...) ++ { ++ __asm__ ("":"+f"(f20),"+f"(f22),"+f"(f24),"+f"(f26),"+f"(f30)); ++ } ++ ++ if (f20 != 12.0 || f22 != 13.0 || f24 != 14.0 ++ || f26 != 15.0 || f28 != 16.0 || f30 != 17.0) ++ __builtin_abort (); ++ return 0; ++} +Index: gcc/testsuite/g++.dg/torture/pr91280.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/torture/pr91280.C (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/torture/pr91280.C (.../branches/gcc-8-branch) +@@ -0,0 +1,223 @@ ++// { dg-do compile } ++ ++enum { Aligned, RowMajor }; ++enum { ReadOnlyAccessors }; ++template <typename> struct K { ++ enum { value }; ++}; ++template <typename> struct traits; ++template <typename T> struct traits<const T> : traits<T> {}; ++struct A { ++ enum { has_write_access, value }; ++}; ++template <typename, int n> class array { ++public: ++ int operator[](unsigned long p1) { return values[p1]; } ++ int values[n]; ++}; ++template <typename> struct I; ++template <typename, int, template <class> class = I> class M; ++template <typename, int, int, typename> class J; ++template <typename, int> class N; ++template <typename, typename> class D; ++template <typename, typename, typename, typename> class TensorContractionOp; ++template <long, typename> class TensorChippingOp; ++class C; ++template <typename DenseIndex, int NumDims> ++struct K<array<DenseIndex, NumDims>> { ++ static const long value = NumDims; ++}; ++template <typename Scalar_, int NumIndices_, int Options_, typename IndexType_> ++struct traits<J<Scalar_, NumIndices_, Options_, IndexType_>> { ++ typedef IndexType_ Index; ++}; ++template <typename PlainObjectType, int Options_, ++ template <class> class MakePointer_> ++struct traits<M<PlainObjectType, Options_, MakePointer_>> ++ : traits<PlainObjectType> {}; ++template <typename T> struct B { typedef T type; }; ++template <typename Derived> class N<Derived, ReadOnlyAccessors> { ++public: ++ typedef typename traits<Derived>::Index Index; ++ D<int, Derived> m_fn1(); ++ template <typename OtherDerived, typename Dimensions> ++ TensorContractionOp<Dimensions, Derived, const OtherDerived, int> ++ m_fn2(OtherDerived, Dimensions); ++ template <Index> TensorChippingOp<1, Derived> m_fn3(Index); ++}; ++template <typename Derived, int = A::value> ++class N : public N<Derived, ReadOnlyAccessors> { ++public: ++ template <typename DeviceType> C m_fn4(DeviceType); ++}; ++template <typename, typename> struct TensorEvaluator; ++template <typename UnaryOp, typename ArgType, typename Device> ++struct TensorEvaluator<const D<UnaryOp, ArgType>, Device> { ++ TensorEvaluator(D<UnaryOp, ArgType>, Device); ++}; ++template <typename, typename> class D { ++public: ++ typedef typename B<D>::type Nested; ++}; ++template <typename Indices_, typename LeftArgType_, typename RightArgType_, ++ typename OutputKernelType_, typename Device_> ++struct traits< ++ TensorEvaluator<const TensorContractionOp<Indices_, LeftArgType_, ++ RightArgType_, OutputKernelType_>, ++ Device_>> { ++ typedef Indices_ Indices; ++ typedef LeftArgType_ LeftArgType; ++ typedef RightArgType_ RightArgType; ++ typedef OutputKernelType_ OutputKernelType; ++ typedef Device_ Device; ++}; ++template <typename, typename LhsXprType, typename RhsXprType, typename> ++class TensorContractionOp { ++public: ++ typedef typename B<TensorContractionOp>::type Nested; ++ typename LhsXprType::Nested m_fn5(); ++ typename RhsXprType::Nested m_fn6(); ++}; ++template <typename Derived> struct TensorContractionEvaluatorBase { ++ typedef typename traits<Derived>::LeftArgType LeftArgType; ++ typedef typename traits<Derived>::RightArgType RightArgType; ++ typedef typename traits<Derived>::Device Device; ++ TensorContractionEvaluatorBase( ++ TensorContractionOp<typename traits<Derived>::Indices, LeftArgType, ++ RightArgType, ++ typename traits<Derived>::OutputKernelType> ++ p1, ++ Device p2) ++ : m_leftImpl(p1.m_fn6(), p2), m_rightImpl(p1.m_fn5(), p2) { ++ long nocontract_idx; ++ for (int i;; i++) { ++ bool contracting; ++ if (contracting) { ++ if (nocontract_idx < K<int>::value) ++ m_j_size = m_j_strides[nocontract_idx]; ++ nocontract_idx++; ++ } ++ } ++ } ++ array<long, 1> m_j_strides; ++ long m_j_size; ++ TensorEvaluator<RightArgType, Device> m_leftImpl; ++ TensorEvaluator<LeftArgType, Device> m_rightImpl; ++}; ++template <typename Indices, typename LeftArgType, typename RightArgType, ++ typename OutputKernelType, typename Device> ++struct TensorEvaluator< ++ const TensorContractionOp<Indices, LeftArgType, RightArgType, ++ OutputKernelType>, ++ Device> ++ : TensorContractionEvaluatorBase<TensorEvaluator< ++ const TensorContractionOp<Indices, LeftArgType, RightArgType, ++ OutputKernelType>, ++ Device>> { ++ typedef TensorEvaluator Self; ++ typedef TensorContractionEvaluatorBase<Self> Base; ++ TensorEvaluator( ++ TensorContractionOp<Indices, LeftArgType, RightArgType, OutputKernelType> ++ p1, ++ Device p2) ++ : Base(p1, p2) {} ++}; ++template <long DimId, typename XprType> ++struct traits<TensorChippingOp<DimId, XprType>> : traits<XprType> {}; ++template <long, typename XprType> ++class TensorChippingOp : public N<TensorChippingOp<1, XprType>> { ++public: ++ typedef typename B<TensorChippingOp>::type Nested; ++}; ++template <long DimId, typename ArgType, typename Device> ++struct TensorEvaluator<const TensorChippingOp<DimId, ArgType>, Device> { ++ static const int NumInputDims = K<typename ArgType::Dimensions>::value; ++ array<long, NumInputDims> m_dimensions; ++}; ++template <long DimId, typename ArgType, typename Device> ++struct TensorEvaluator<TensorChippingOp<DimId, ArgType>, Device> ++ : TensorEvaluator<const TensorChippingOp<1, ArgType>, Device> { ++ TensorEvaluator(TensorChippingOp<DimId, ArgType>, Device); ++}; ++template <typename, typename RhsXprType> class TensorAssignOp { ++public: ++ TensorAssignOp(TensorChippingOp<0, const M<J<int, 3, 1, int>, 1>>, ++ RhsXprType); ++ TensorChippingOp<0, const M<J<int, 3, 1, int>, 1>> m_fn7(); ++ typename RhsXprType::Nested m_fn8(); ++}; ++template <typename LeftArgType, typename RightArgType, typename Device> ++struct TensorEvaluator<const TensorAssignOp<LeftArgType, RightArgType>, ++ Device> { ++ TensorEvaluator(TensorAssignOp<LeftArgType, RightArgType> p1, Device p2) ++ : m_leftImpl(p1.m_fn7(), p2), m_rightImpl(p1.m_fn8(), p2) {} ++ TensorEvaluator<LeftArgType, Device> m_leftImpl; ++ TensorEvaluator<RightArgType, Device> m_rightImpl; ++}; ++template <typename Expression> class F { ++public: ++ static void m_fn9(Expression p1) { ++ int device; ++ TensorEvaluator<Expression, int>(p1, device); ++ } ++}; ++class C { ++public: ++ void ++ operator=(TensorContractionOp<array<int, 1>, ++ TensorChippingOp<1, M<J<float, 3, 1, int>, 0>>, ++ const D<int, M<J<float, 3, 1, int>, 0>>, int> ++ p1) { ++ TensorAssignOp< ++ TensorChippingOp<0, const M<J<int, 3, 1, int>, 1>>, ++ const TensorContractionOp< ++ array<int, 1>, TensorChippingOp<1, M<J<float, 3, 1, int>, 0>>, ++ const D<int, M<J<float, 3, 1, int>, 0>>, int>> ++ assign(m_expression, p1); ++ F<const TensorAssignOp< ++ TensorChippingOp<0, const M<J<int, 3, 1, int>, 1>>, ++ const TensorContractionOp< ++ array<int, 1>, TensorChippingOp<1, M<J<float, 3, 1, int>, 0>>, ++ const D<int, M<J<float, 3, 1, int>, 0>>, int>>>::m_fn9(assign); ++ } ++ TensorChippingOp<0, const M<J<int, 3, 1, int>, 1>> m_expression; ++}; ++template <typename, int NumIndices_, int, typename> class J { ++public: ++ typedef array<long, NumIndices_> Dimensions; ++}; ++template <typename PlainObjectType, int Options_, template <class> class> ++class M : public N<M<PlainObjectType, Options_>> { ++public: ++ typedef typename PlainObjectType::Dimensions Dimensions; ++}; ++template <int NDIMS> struct TTypes { ++ typedef M<J<float, NDIMS, RowMajor, int>, Aligned> ConstTensor; ++}; ++class L { ++public: ++ template <typename, long NDIMS> typename TTypes<NDIMS>::ConstTensor m_fn10(); ++}; ++class H { ++public: ++ H(int *); ++}; ++class G { ++public: ++ G(H *(int *)); ++}; ++int Run_d; ++class O : H { ++public: ++ int BatchMatMul_context; ++ O() : H(&BatchMatMul_context) { ++ L out, in_y, in_x; ++ auto Tx = in_x.m_fn10<float, 3>(), Ty = in_y.m_fn10<float, 3>(), ++ Tz = out.m_fn10<float, 3>(), z = Tz; ++ array<int, 1> contract_pairs; ++ auto x = Tx.m_fn3<0>(0); ++ auto y = Ty.m_fn1(); ++ z.m_fn4(Run_d) = x.m_fn2(y, contract_pairs); ++ } ++}; ++G registrar__body__0__object([](int *) -> H * { O(); return 0; }); +Index: gcc/testsuite/g++.dg/torture/pr92384.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/torture/pr92384.C (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/torture/pr92384.C (.../branches/gcc-8-branch) +@@ -0,0 +1,38 @@ ++// PR c++/92384 ++// { dg-do run } ++ ++struct S {}; ++struct T : public S { S a, b, c, d, e, f, g, h, i, j, k, l, m; }; ++struct U { long long a, b, c; }; ++ ++U ++foo (S, S, S, T, T, T, U g) ++{ ++ return g; ++} ++ ++__attribute__((noipa)) bool ++bar (S a, S b, S c, T d, T e, T f, U g, void **h) ++{ ++ h[0] = (void *) &a; ++ h[1] = (void *) &b; ++ h[2] = (void *) &c; ++ h[3] = (void *) &d; ++ h[4] = (void *) &e; ++ h[5] = (void *) &f; ++ h[6] = (void *) &g; ++ asm volatile ("" : : "r" (h) : "memory"); ++ return (h[0] != h[1] && h[1] != h[2] && h[2] != h[3] ++ && h[3] != h[4] && h[4] != h[5] && h[5] != h[6]); ++} ++ ++int ++main () ++{ ++ S a; ++ T b; ++ U c = { 1, 2, 3 }; ++ void *d[7]; ++ if (!bar (a, a, a, b, b, b, c, d)) ++ __builtin_abort (); ++} +Index: gcc/testsuite/g++.dg/torture/pr90194.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/torture/pr90194.C (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/torture/pr90194.C (.../branches/gcc-8-branch) +@@ -0,0 +1,18 @@ ++// { dg-do compile } ++// { dg-additional-options "-g" } ++ ++struct cb { ++ int yr; ++}; ++ ++void * ++operator new (__SIZE_TYPE__, void *nq) ++{ ++ return nq; ++} ++ ++void ++af (int xn) ++{ ++ new (&xn) cb { }; ++} +Index: gcc/testsuite/g++.dg/torture/pr91355.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/torture/pr91355.C (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/torture/pr91355.C (.../branches/gcc-8-branch) +@@ -0,0 +1,28 @@ ++// PR tree-optimization/91355 ++// { dg-do run } ++// { dg-options "-std=c++14" } ++ ++unsigned int d = 0; ++ ++struct S { ++ S () { d++; } ++ S (const S &) { d++; } ++ ~S () { d--; } ++}; ++ ++void ++foo (int i) throw (int) // { dg-warning "dynamic exception specifications are deprecated" } ++{ ++ if (i == 0) ++ throw 3; ++ S d; ++ throw 3; ++} ++ ++int ++main () ++{ ++ try { foo (1); } catch (...) {} ++ if (d) ++ __builtin_abort (); ++} +Index: gcc/testsuite/g++.dg/torture/pr89698.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/torture/pr89698.C (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/torture/pr89698.C (.../branches/gcc-8-branch) +@@ -0,0 +1,28 @@ ++/* { dg-do run } */ ++ ++extern "C" void abort (void); ++ ++class A { ++ virtual void f(){}; ++public: ++ int x; ++ A(int in): x(in) {}; ++}; ++ ++class B: public A { ++public: ++ int y; ++ B(int in):A(in-1), y(in) {}; ++}; ++ ++int test(void) ++{ ++ int res; ++ B b(2); ++ A* bp = &b; ++ void* vp = dynamic_cast<void*>(bp); ++ if (((A*)vp)->x == 1 && ((B*)vp)->y == 2) ++ return 1; ++ return 0; ++} ++int main() { if (test() != 1) abort (); return 0; } +Index: gcc/testsuite/g++.dg/ipa/pr88235.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/ipa/pr88235.C (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/ipa/pr88235.C (.../branches/gcc-8-branch) +@@ -0,0 +1,55 @@ ++// { dg-do compile } ++// { dg-options "-O1 -fdevirtualize -finline-small-functions -fipa-cp -fipa-cp-clone --param ipa-cp-eval-threshold=125 --param max-inline-insns-single=4" } ++ ++extern "C" int printf (const char *, ...); ++enum E { vf_request, vf_event } want; ++ ++int errs = 0; ++ ++class ivResource { ++public: ++ virtual ~ivResource () { } ++}; ++ ++class ivHandler : public ivResource { ++public: ++ virtual void event() { } ++}; ++ ++class ivGlyph : public ivResource { ++public: ++ virtual ~ivGlyph () { } ++ virtual void request () { ++ if (want!=vf_request) ++ ++errs; ++ } ++}; ++ ++class ItemView : public ivGlyph, public ivHandler { ++public: ++ virtual void event () { ++ if (want!=vf_event) ++ ++errs; ++ } ++} a; ++ ++ivGlyph *bar() { ++ return &a; ++} ++ ++ivHandler *bar2() { ++ return &a; ++} ++ ++int main() { ++ want=vf_request; ++ bar()->request(); ++ want=vf_event; ++ bar2()->event(); ++ if (errs) { ++ printf("FAIL\n"); ++ return 1; ++ } ++ printf("PASS\n"); ++ return 0; ++} +Index: gcc/testsuite/g++.dg/ipa/pr89693.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/ipa/pr89693.C (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/ipa/pr89693.C (.../branches/gcc-8-branch) +@@ -0,0 +1,52 @@ ++// Copyright (C) 2005 Free Software Foundation, Inc. ++// Contributed by Nathan Sidwell 4 Apr 2005 <nathan@codesourcery.com> ++// Re-purposed to check for re-rurgesnce of PR 89693 in 2019. ++ ++// { dg-do compile } ++// { dg-options "-O3 -fno-ipa-icf-functions" } ++ ++// Origin: yanliu@ca.ibm.com ++// nathan@codesourcery.com ++ ++struct A { ++ virtual void One (); ++}; ++struct B { ++ virtual B *Two (); ++ virtual B &Three (); ++}; ++ ++struct C : A, B ++{ ++ virtual C *Two (); ++ virtual C &Three (); ++}; ++void A::One () {} ++B *B::Two() {return this;} ++B &B::Three() {return *this;} ++C *C::Two () {return 0;} ++C &C::Three () {return *(C *)0;} ++ ++B *Foo (B *b) ++{ ++ return b->Two (); ++} ++ ++B &Bar (B *b) ++{ ++ return b->Three (); ++} ++ ++int main () ++{ ++ C c; ++ ++ /* We should not adjust a null pointer. */ ++ if (Foo (&c)) ++ return 1; ++ /* But we should adjust a (bogus) null reference. */ ++ if (!&Bar (&c)) ++ return 2; ++ ++ return 0; ++} +Index: gcc/testsuite/g++.dg/cet-notrack-1.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cet-notrack-1.C (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/cet-notrack-1.C (.../branches/gcc-8-branch) +@@ -1,7 +1,7 @@ + /* { dg-do compile { target i?86-*-* x86_64-*-* } } */ + /* { dg-options "-fcf-protection" } */ + /* { dg-final { scan-assembler "endbr32|endbr64" } } */ +-/* { dg-final { scan-assembler-times "\tcall\[ \t]+puts" 2 } } */ ++/* { dg-final { scan-assembler-times "\tcall\[ \t]+_?puts" 2 } } */ + /* { dg-final { scan-assembler-times "notrack call\[ \t]+" 1 } } */ + #include <stdio.h> + +Index: gcc/testsuite/g++.dg/cpp1y/var-templ61.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp1y/var-templ61.C (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp1y/var-templ61.C (.../branches/gcc-8-branch) +@@ -0,0 +1,20 @@ ++// PR c++/89512 ++// { dg-do compile { target c++14 } } ++ ++struct A { ++ template <typename T> ++ static const int a = 0; ++}; ++ ++struct B { ++ template <typename T> ++ static int foo () ++ { ++ return T::a; // { dg-error "missing template arguments" } ++ } ++}; ++ ++int bar () ++{ ++ return B::foo<A> (); // { dg-message "required from here" } ++} +Index: gcc/testsuite/g++.dg/cpp1y/pr89767.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp1y/pr89767.C (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp1y/pr89767.C (.../branches/gcc-8-branch) +@@ -0,0 +1,32 @@ ++// PR c++/89767 ++// { dg-do compile { target c++14 } } ++// { dg-options "-O2 -Wall" } ++ ++template <typename d> struct e { using g = d; }; ++template <typename d, template <typename> class> using h = e<d>; ++template <typename d, template <typename> class i> ++using j = typename h<d, i>::g; ++template <typename c> int k(c); ++template <typename...> class au; ++struct l { template <typename c> using m = typename c::f; }; ++struct s : l { using af = j<au<int, int> *, m>; }; ++template <unsigned long, typename> struct o; ++template <long p, typename c> using q = typename o<p, c>::g; ++template <typename> struct r; ++template <typename c> struct r<c *> { typedef c aj; }; ++template <typename ak, typename> struct al { typename r<ak>::aj operator*(); void operator++(); }; ++template <typename am, typename an, typename ao> ++bool operator!=(al<am, ao>, al<an, ao>); ++template <unsigned long, typename...> struct ap; ++template <unsigned long aq, typename ar, typename... as> ++struct ap<aq, ar, as...> : ap<1, as...> {}; ++template <unsigned long aq, typename ar> struct ap<aq, ar> {}; ++template <typename... at> class au : public ap<0, at...> {}; ++template <unsigned long p, typename ar, typename... as> ++struct o<p, au<ar, as...>> : o<p - 1, au<as...>> {}; ++template <typename ar, typename... as> struct o<0, au<ar, as...>> { typedef ar g; }; ++template <long p, typename ar> constexpr ar av(ap<p, ar> __t) { return ar (); } ++template <int p, typename... at> constexpr q<p, au<at...>> aw(au<at...> __t) { av<p>(__t); return q<p, au<at...>> (); } ++struct bg { typedef s::af af; }; ++struct F { typedef al<bg::af, int> bk; bk begin(); bk end(); }; ++void bo() { int t = 0; F cv; for (auto bp : cv) [t, n = k(aw<1>(bp))] {}; } +Index: gcc/testsuite/g++.dg/cpp1y/lambda-init18.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp1y/lambda-init18.C (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp1y/lambda-init18.C (.../branches/gcc-8-branch) +@@ -0,0 +1,12 @@ ++// PR c++/89767 ++// { dg-do compile { target c++14 } } ++ ++void bar (int); ++ ++void ++foo () ++{ ++ int x = 0; ++ auto z = [x, y = [x] { bar (x); }] { y (); bar (x); }; ++ z (); ++} +Index: gcc/testsuite/g++.dg/cpp1y/lambda-init19.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp1y/lambda-init19.C (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp1y/lambda-init19.C (.../branches/gcc-8-branch) +@@ -0,0 +1,15 @@ ++// PR c++/89767 ++// { dg-do compile { target c++14 } } ++ ++void bar (int); ++ ++void ++foo () ++{ ++ int x = 0; ++ int a = 0, b = 0, c = 0, d = 0, e = 0, f = 0, g = 0, h = 0; ++ auto z = [x, y = [x] { bar (x); }, x] { y (); bar (x); }; // { dg-error "already captured 'x' in lambda expression" } ++ auto w = [x, a, b, c, d, y = [x] { bar (x); }, e, f, g, h, x] { y (); bar (x + a + b + c + d + e + f + g + h); }; // { dg-error "already captured 'x' in lambda expression" } ++ z (); ++ w (); ++} +Index: gcc/testsuite/g++.dg/cpp1z/constexpr-if28.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp1z/constexpr-if28.C (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp1z/constexpr-if28.C (.../branches/gcc-8-branch) +@@ -0,0 +1,11 @@ ++// PR c++/89576 ++// { dg-do compile { target c++17 } } ++ ++template <class T> ++void foo() ++{ ++ constexpr int x = 0; ++ [&] { ++ if constexpr (x) {} ++ }; ++} +Index: gcc/testsuite/g++.dg/cpp1z/decomp49.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp1z/decomp49.C (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp1z/decomp49.C (.../branches/gcc-8-branch) +@@ -0,0 +1,14 @@ ++// PR c++/82075 ++// { dg-do run { target c++11 } } ++// { dg-options "" } ++ ++struct B { }; ++struct D : B { int i; }; ++ ++int ++main () ++{ ++ auto [i] = D{}; // { dg-warning "only available with" "" { target c++14_down } } ++ if (i != 0) ++ __builtin_abort (); ++} +Index: gcc/testsuite/g++.dg/cpp1z/decomp50.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp1z/decomp50.C (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp1z/decomp50.C (.../branches/gcc-8-branch) +@@ -0,0 +1,51 @@ ++// PR c++/92106 - ICE with structured bindings and -Wreturn-local-addr. ++// { dg-do compile { target c++17 } } ++ ++template <typename> struct B; ++template <typename _Tp> struct B<_Tp *> { typedef _Tp& reference; }; ++struct C { ++ template <typename _Up> using rebind = _Up *; ++}; ++template <typename _Iterator, typename> class D { ++public: ++ typename B<_Iterator>::reference operator*(); ++ void operator++(); ++}; ++ ++template <typename _Iterator, typename _Container> ++bool operator!=(D<_Iterator, _Container>, D<_Iterator, _Container>); ++template <typename _Tp> class F { ++public: ++ typedef _Tp value_type; ++}; ++ ++template <typename _Alloc> struct G { ++ template <typename _Tp> struct H { using type = C::rebind<_Tp>; }; ++ using const_pointer = typename H<typename _Alloc::value_type>::type; ++}; ++template <typename _Tp, typename _Alloc = F<_Tp>> class I { ++ typedef D<typename G<_Alloc>::const_pointer, int> const_iterator; ++ ++public: ++ const_iterator begin(); ++ const_iterator end(); ++}; ++ ++struct A { ++ struct J { ++ int name; ++ int value; ++ }; ++ I<J> members; ++ template <typename Key> const int *find(Key) { ++ for (const auto &[name, value] : members) ++ // See <https://gcc.gnu.org/ml/gcc-patches/2019-10/msg01107.html> ++ // 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/aggr-base7.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp1z/aggr-base7.C (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp1z/aggr-base7.C (.../branches/gcc-8-branch) +@@ -0,0 +1,8 @@ ++// PR c++/88690 ++// { dg-do compile { target c++11 } } ++ ++struct A { int a = 1; }; ++struct B { int b = 0; }; ++struct C { C() = default; C (const C&) = delete; }; ++struct D : public B, public C {}; ++struct E : A { D f; } g{}; +Index: gcc/testsuite/g++.dg/cpp1z/inline-var5.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp1z/inline-var5.C (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp1z/inline-var5.C (.../branches/gcc-8-branch) +@@ -0,0 +1,27 @@ ++// PR c++/89405 ++// { dg-do compile { target c++17 } } ++// { dg-options "-fno-weak" } ++ ++template <int N> ++struct S ++{ ++ static constexpr int a = N; // { dg-warning "semantics of inline variable" } ++}; // { dg-message "you can work around this" "" { target *-*-* } .-1 } ++ ++const int *x = &S<0>::a; ++// PR c++/87921 ++// { dg-do compile { target c++17 } } ++ ++template <class H> ++struct X ++{ ++ static inline long x[] = { 1L }; ++ long foo () { return x[0]; } ++}; ++ ++void ++bar () ++{ ++ class L {}; ++ X<L> v {}; ++} +Index: gcc/testsuite/g++.dg/cpp1z/aggr-base8.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp1z/aggr-base8.C (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp1z/aggr-base8.C (.../branches/gcc-8-branch) +@@ -0,0 +1,48 @@ ++// PR c++/89214 ++// { dg-do compile { target c++17 } } ++ ++struct A ++{ ++ A (int); ++}; ++ ++struct BB ++{ ++ A a; ++}; ++ ++struct B : BB ++{ ++}; ++ ++void ++foo () ++{ ++ B b1 = {42}; ++ B b2 = {{42}}; ++ B b3 = {{{42}}}; ++ ++ B b4 = B{42}; ++ B b5 = B{{42}}; ++ B b6 = B{{{42}}}; ++ ++ B b7 = {B{42}}; ++ B b8 = {B{{42}}}; ++ B b9 = {B{{{42}}}}; ++ ++ B b10 = {{B{42}}}; // { dg-warning "initializing a base class of type .BB. results in object slicing" } ++ B b11 = {{B{{42}}}}; // { dg-warning "initializing a base class of type .BB. results in object slicing" } ++ B b12 = {{B{{{42}}}}}; // { dg-warning "initializing a base class of type .BB. results in object slicing" } ++ ++ B bb1{42}; ++ B bb2{{42}}; ++ B bb3{{{42}}}; ++ ++ B bb7{B{42}}; ++ B bb8{B{{42}}}; ++ B bb9{B{{{42}}}}; ++ ++ B bb10{{B{42}}}; // { dg-warning "initializing a base class of type .BB. results in object slicing" } ++ B bb11{{B{{42}}}}; // { dg-warning "initializing a base class of type .BB. results in object slicing" } ++ B bb12{{B{{{42}}}}}; // { dg-warning "initializing a base class of type .BB. results in object slicing" } ++} +Index: gcc/testsuite/g++.dg/cpp1z/class-deduction62.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp1z/class-deduction62.C (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp1z/class-deduction62.C (.../branches/gcc-8-branch) +@@ -0,0 +1,22 @@ ++// PR c++/88419 ++// { dg-do compile { target c++17 } } ++ ++template<class> struct ref_view { ++ template<class T> ref_view(T&&); ++}; ++ ++template<class R> ref_view(R&) -> ref_view<R>; ++ ++struct ref_fn { ++ template<class R> auto operator()(R r) const ++ noexcept(noexcept(ref_view{r})); ++}; ++ ++template<class R> struct indirect_view { ++ indirect_view(R); ++}; ++ ++struct indirect_fn { ++ template<class R> auto operator()(R r) const ++ noexcept(noexcept(indirect_view{r})); ++}; +Index: gcc/testsuite/g++.dg/cpp1z/aggr-base9.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp1z/aggr-base9.C (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp1z/aggr-base9.C (.../branches/gcc-8-branch) +@@ -0,0 +1,33 @@ ++// PR c++/89214 ++// { dg-do compile { target c++17 } } ++ ++struct B { ++ int c; ++}; ++ ++struct D : B { }; ++ ++void ++foo () ++{ ++ D d1 = {42}; ++ D d2 = {{42}}; ++ ++ D d4 = D{42}; ++ D d5 = D{{42}}; ++ ++ D d7 = {D{42}}; ++ D d8 = {D{{42}}}; ++ ++ D d10 = {{D{42}}}; // { dg-warning "initializing a base class of type .B. results in object slicing" } ++ D d11 = {{D{{42}}}}; // { dg-warning "initializing a base class of type .B. results in object slicing" } ++ ++ D dd1{42}; ++ D dd2{{42}}; ++ ++ D dd7{D{42}}; ++ D dd8{D{{42}}}; ++ ++ D dd10{{D{42}}}; // { dg-warning "initializing a base class of type .B. results in object slicing" } ++ D dd11{{D{{42}}}}; // { dg-warning "initializing a base class of type .B. results in object slicing" } ++} +Index: gcc/testsuite/g++.dg/cpp1z/class-deduction63.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp1z/class-deduction63.C (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp1z/class-deduction63.C (.../branches/gcc-8-branch) +@@ -0,0 +1,11 @@ ++// PR c++/88869 ++// { dg-do compile { target c++17 } } ++ ++template <typename> struct B; ++template <> struct B<int> { ++ template <typename T> struct C { ++ T e; ++ C (T f) : e(f) {} ++ }; ++ void foo () { C c (42); } ++}; +Index: gcc/testsuite/g++.dg/cpp1z/class-deduction64.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp1z/class-deduction64.C (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp1z/class-deduction64.C (.../branches/gcc-8-branch) +@@ -0,0 +1,9 @@ ++// PR c++/88820 ++// { dg-do compile { target c++17 } } ++ ++template <int> struct S; ++ ++template <S> struct W { ++ template <typename> static int foo(); ++ bool b = foo<int>(); ++}; +Index: gcc/testsuite/g++.dg/cpp1z/eval-order5.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp1z/eval-order5.C (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp1z/eval-order5.C (.../branches/gcc-8-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/cpp1z/class-deduction58.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp1z/class-deduction58.C (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp1z/class-deduction58.C (.../branches/gcc-8-branch) +@@ -0,0 +1,16 @@ ++// PR c++/86098 ++// { dg-additional-options -std=c++17 } ++ ++template <class _Res> class future; ++template <class T> T&& declval(); ++ ++template<template <class...> class T> ++struct construct_deduced { ++ template <class... AN> ++ using deduced_t = decltype(T{declval<AN>()...}); ++ template<class... AN> ++ deduced_t<AN...> operator()(AN&&... an) const; ++}; ++ ++template<class T> ++future<T> future_from(T singleSender); +Index: gcc/testsuite/g++.dg/cpp1z/fold-lambda3.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp1z/fold-lambda3.C (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp1z/fold-lambda3.C (.../branches/gcc-8-branch) +@@ -0,0 +1,19 @@ ++// PR c++/88183 ++// { dg-do compile { target c++17 } } ++ ++struct A { int i; }; ++ ++template <class T> T& g(T); ++ ++template <class U, class... Vs> ++void f(U u, Vs... vs) ++{ ++ [vs...](auto x) { ++ (g(x) .* ... .* vs) = 42; ++ }(u); ++} ++ ++int main() ++{ ++ f(A(), &A::i); ++} +Index: gcc/testsuite/g++.dg/ext/flexary34.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/ext/flexary34.C (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/ext/flexary34.C (.../branches/gcc-8-branch) +@@ -0,0 +1,10 @@ ++// PR c++/87148 ++// { dg-do compile } ++// { dg-options "-pedantic" } ++ ++struct Tst { int i; char t[]; }; // { dg-warning "forbids flexible array member" } ++ ++Tst t {}; // { dg-warning "extended initializer lists only available with" "" { target c++98_only } } ++Tst u = Tst(); ++void foo () { Tst u = {}; } ++Tst *bar () { return new Tst (); } +Index: gcc/testsuite/g++.dg/ext/90532.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/ext/90532.C (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/ext/90532.C (.../branches/gcc-8-branch) +@@ -0,0 +1,27 @@ ++// { dg-do compile { target c++11 } } ++// PR c++/90532 ++static_assert( !__is_constructible(int[]), "" ); ++static_assert( !__is_constructible(int[], int), "" ); ++static_assert( !__is_constructible(int[], int[]), "" ); ++static_assert( !__is_trivially_constructible(int[]), "" ); ++static_assert( !__is_trivially_constructible(int[], int), "" ); ++static_assert( !__is_trivially_constructible(int[], int[]), "" ); ++static_assert( !__is_trivially_constructible(int[], int(&)[]), "" ); ++static_assert( !__is_trivially_constructible(int[], void), "" ); ++struct A { }; ++static_assert( !__is_constructible(A[]), "" ); ++static_assert( !__is_constructible(A[], const A&), "" ); ++static_assert( !__is_constructible(A[], const A[]), "" ); ++static_assert( !__is_trivially_constructible(A[]), "" ); ++static_assert( !__is_trivially_constructible(A[], const A&), "" ); ++static_assert( !__is_trivially_constructible(A[], const A[]), "" ); ++static_assert( !__is_trivially_constructible(A[], A(&)[]), "" ); ++static_assert( !__is_trivially_constructible(A[], void), "" ); ++struct B { B(); }; ++static_assert( !__is_constructible(B[]), "" ); ++static_assert( !__is_constructible(B[], const B&), "" ); ++static_assert( !__is_trivially_constructible(B[]), "" ); ++static_assert( !__is_trivially_constructible(B[], const B&), "" ); ++static_assert( !__is_trivially_constructible(B[], const B[]), "" ); ++static_assert( !__is_trivially_constructible(B[], B(&)[]), "" ); ++static_assert( !__is_trivially_constructible(B[], void), "" ); +Index: gcc/testsuite/g++.dg/ext/instantiate2.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/ext/instantiate2.C (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/ext/instantiate2.C (.../branches/gcc-8-branch) +@@ -8,8 +8,7 @@ + template <class T> T A<T>::t = 0; + static template struct A<int>; + +-// { dg-final { scan-assembler "\n_?_ZN1AIiE1tE(:|\n|\t)" { target { ! *-*-darwin* } } } } +-// { dg-final { scan-assembler ".zerofill __DATA,__pu_bss2,__ZN1AIiE1tE" { target *-*-darwin* } } } ++// { dg-final { scan-assembler "\n_?_ZN1AIiE1tE(:|\n|\t)" } } + void test_int() { A<int>::t = 42; } + + // { dg-final { scan-assembler-not "\n_?_ZN1AIcE1tE(:|\n|\t)" } } +Index: gcc/testsuite/g++.dg/ext/alignof2.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/ext/alignof2.C (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/ext/alignof2.C (.../branches/gcc-8-branch) +@@ -3,7 +3,7 @@ + // wrong for some fields. + + // { dg-do run } +-// { dg-xfail-run-if "AIX ABI increases struct alignment for first member double" { powerpc-ibm-aix* } } ++// { dg-xfail-run-if "AIX/Darwin ABI increases struct alignment for first member double" { powerpc-ibm-aix* || { ilp32 && powerpc-*-darwin* } } } + + extern "C" void abort(); + +Index: gcc/testsuite/g++.dg/ext/asm15.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/ext/asm15.C (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/ext/asm15.C (.../branches/gcc-8-branch) +@@ -6,5 +6,6 @@ + void + foo (S &s) + { +- __asm volatile ("" : "+r" (s) : : "memory"); // { dg-error "" } ++ __asm volatile ("" : "+r" (s) : : "memory"); // { dg-error "impossible constraint" } ++ // { dg-error "must stay in memory" "" { target *-*-* } .-1 } + } +Index: gcc/testsuite/g++.dg/ext/asm16.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/ext/asm16.C (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/ext/asm16.C (.../branches/gcc-8-branch) +@@ -6,5 +6,6 @@ + void + foo () + { +- __asm volatile ("" : "=r" (s) : : "memory"); // { dg-error "" } ++ __asm volatile ("" : "=r" (s) : : "memory"); // { dg-error "impossible constraint" } ++ // { dg-error "must stay in memory" "" { target *-*-* } .-1 } + } +Index: gcc/testsuite/g++.dg/ext/asm17.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/ext/asm17.C (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/ext/asm17.C (.../branches/gcc-8-branch) +@@ -0,0 +1,11 @@ ++// PR target/89752 ++// { dg-do compile } ++ ++struct A { A (); ~A (); short c; }; ++ ++void ++foo () ++{ ++ A a0, a1; ++ __asm volatile ("" : "+rm" (a0), "+rm" (a1)); ++} +Index: gcc/testsuite/g++.dg/ext/vector37.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/ext/vector37.C (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/ext/vector37.C (.../branches/gcc-8-branch) +@@ -0,0 +1,29 @@ ++// PR c++/90810 ++// { dg-do run } ++ ++void ++foo (float x, float y) ++{ ++ typedef float __attribute__ ((__vector_size__ (4 * sizeof (float)), __may_alias__)) V; ++ const V a = { x, x, x, x }, b = { y, y, y, y }; ++ const V c = a / b; ++ if (c[0] != 6.0f || c[1] != 6.0f || c[2] != 6.0f || c[3] != 6.0f) ++ __builtin_abort (); ++} ++ ++void ++bar (float y) ++{ ++ typedef float __attribute__ ((__vector_size__ (4 * sizeof (float)), __may_alias__)) V; ++ const V a = { 7.0f, 8.0f, 9.0f, 10.0f }, b = { 1.0f, 2.0f, 3.0f, y }; ++ const V c = a / b; ++ if (c[0] != 7.0f || c[1] != 4.0f || c[2] != 3.0f || c[3] != 5.0f) ++ __builtin_abort (); ++} ++ ++int ++main () ++{ ++ foo (12.0f, 2.0f); ++ bar (2.0f); ++} +Index: gcc/testsuite/g++.dg/pch/pr90326.Hs +=================================================================== +--- a/src/gcc/testsuite/g++.dg/pch/pr90326.Hs (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/pch/pr90326.Hs (.../branches/gcc-8-branch) +@@ -0,0 +1 @@ ++// empty +Index: gcc/testsuite/g++.dg/pch/pr90326.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/pch/pr90326.C (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/pch/pr90326.C (.../branches/gcc-8-branch) +@@ -0,0 +1,9 @@ ++#include "pr90326.H" ++ ++int main() ++{ ++ float f = __FLT_MAX__; ++ if (f == 0.0) ++ __builtin_abort (); ++ return 0; ++} +Index: gcc/testsuite/g++.dg/gomp/lastprivate-1.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/gomp/lastprivate-1.C (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/gomp/lastprivate-1.C (.../branches/gcc-8-branch) +@@ -0,0 +1,16 @@ ++// PR c++/90950 ++// { dg-do compile } ++ ++template <typename T> ++T ++foo (void) ++{ ++ T y = 0; ++ T &x = y; ++ #pragma omp parallel for lastprivate (x) ++ for (int i = 0; i < 8; ++i) ++ x = i; ++ return x; ++} ++ ++int a = foo<int> (); +Index: gcc/testsuite/g++.dg/gomp/pr89796.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/gomp/pr89796.C (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/gomp/pr89796.C (.../branches/gcc-8-branch) +@@ -0,0 +1,53 @@ ++// PR c++/89796 ++// { dg-do compile } ++// { dg-additional-options "-Wunused-value" } ++ ++int ++f1 (int &c) ++{ ++ int r; ++ #pragma omp atomic capture // { dg-bogus "value computed is not used" } ++ { r = c; c++; } ++ return r; ++} ++ ++template <int N> ++int ++f2 (int &c) ++{ ++ int r; ++ #pragma omp atomic capture // { dg-bogus "value computed is not used" } ++ { r = c; c++; } ++ return r; ++} ++ ++int ++f3 (int &c) ++{ ++ return f2 <0> (c); ++} ++ ++int ++f4 (int *p) ++{ ++ int r; ++ #pragma omp atomic capture // { dg-bogus "value computed is not used" } ++ { r = *p; (*p)++; } ++ return r; ++} ++ ++template <int N> ++int ++f5 (int *p) ++{ ++ int r; ++ #pragma omp atomic capture // { dg-bogus "value computed is not used" } ++ { r = *p; (*p)++; } ++ return r; ++} ++ ++int ++f6 (int *p) ++{ ++ return f5 <0> (p); ++} +Index: gcc/testsuite/g++.dg/other/pr92201.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/other/pr92201.C (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/other/pr92201.C (.../branches/gcc-8-branch) +@@ -0,0 +1,7 @@ ++// PR c++/92201 ++ ++int ++foo (void (*p) ()) ++{ ++ return (*reinterpret_cast<int (*)()> (p)) (); ++} +Index: gcc/testsuite/g++.dg/other/pr88568.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/other/pr88568.C (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/other/pr88568.C (.../branches/gcc-8-branch) +@@ -0,0 +1,13 @@ ++// PR c/88568 ++// { dg-do compile } ++// { dg-require-dll "" } ++ ++struct S { ++ __attribute__((dllimport)) static const char foo[]; ++}; ++ ++int ++foo (int x) ++{ ++ return S::foo[x]; ++} +Index: gcc/testsuite/g++.dg/tree-ssa/tail-call-1.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/tree-ssa/tail-call-1.C (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/tree-ssa/tail-call-1.C (.../branches/gcc-8-branch) +@@ -0,0 +1,11 @@ ++// PR c++/82081 ++// { dg-do compile { target c++11 } } ++// { dg-additional-options "-O2 -fdump-tree-optimized" } ++// { dg-final { scan-tree-dump-not "tail call" "optimized" } } ++ ++int g(int) ; ++ ++int f() noexcept { ++ int i = 42, j = 43; ++ return g(i+j); ++} +Index: gcc/testsuite/g++.dg/tree-ssa/pr87008.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/tree-ssa/pr87008.C (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/tree-ssa/pr87008.C (.../branches/gcc-8-branch) +@@ -0,0 +1,17 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -fdump-tree-optimized" } */ ++ ++extern void dontcallthis(); ++ ++struct A { long a, b; }; ++struct B : A {}; ++template<class T>void cp(T&a,T const&b){a=b;} ++long f(B x){ ++ B y; cp<A>(y,x); ++ B z; cp<A>(z,x); ++ if (y.a - z.a) ++ dontcallthis (); ++ return 0; ++} ++ ++/* { dg-final { scan-tree-dump-not "dontcallthis" "optimized" } } */ +Index: gcc/testsuite/g++.dg/tls/thread_local11.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/tls/thread_local11.C (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/tls/thread_local11.C (.../branches/gcc-8-branch) +@@ -0,0 +1,36 @@ ++// PR c++/60702 ++// { dg-do compile { target c++11 } } ++// { dg-add-options tls } ++// { dg-require-effective-target tls_runtime } ++// { dg-additional-options "-fdump-tree-gimple" } ++// { dg-final { scan-tree-dump-times "_ZTW2s1" 2 "gimple" } } ++// { dg-final { scan-tree-dump-times "_ZTW2s2" 2 "gimple" } } ++// { dg-final { scan-tree-dump-times "_ZTW2s3" 2 "gimple" } } ++// { dg-final { scan-tree-dump-times "_ZTW2s4" 2 "gimple" } } ++// { dg-final { scan-tree-dump-times "_ZTWN1T2u1E" 2 "gimple" } } ++// { dg-final { scan-tree-dump-times "_ZTWN1T2u2E" 2 "gimple" } } ++// { dg-final { scan-tree-dump-times "_ZTWN1T2u3E" 2 "gimple" } } ++// { dg-final { scan-tree-dump-times "_ZTWN1T2u4E" 2 "gimple" } } ++// { dg-final { scan-tree-dump-times "_ZTWN1T2u5E" 2 "gimple" } } ++// { dg-final { scan-tree-dump-times "_ZTWN1T2u6E" 2 "gimple" } } ++// { dg-final { scan-tree-dump-times "_ZTWN1T2u7E" 2 "gimple" } } ++// { dg-final { scan-tree-dump-times "_ZTWN1T2u8E" 2 "gimple" } } ++ ++#include "thread_local11.h" ++ ++void ++foo () ++{ ++ f1 (); ++ f2 (); ++ f3 (); ++ f4 (); ++ f5 (); ++ f6 (); ++ f7<0> (); ++ f8<0> (); ++ f9<0> (); ++ f10<0> (); ++ f11<0> (); ++ f12<0> (); ++} +Index: gcc/testsuite/g++.dg/tls/thread_local12a.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/tls/thread_local12a.C (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/tls/thread_local12a.C (.../branches/gcc-8-branch) +@@ -0,0 +1,12 @@ ++// PR c++/60702 ++// { dg-do run { target c++11 } } ++// { dg-add-options tls } ++// { dg-require-effective-target tls_runtime } ++ ++#include "thread_local11.h" ++ ++int ++main () ++{ ++ if (f1 ()->i != 42) abort (); ++} +Index: gcc/testsuite/g++.dg/tls/thread_local12b.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/tls/thread_local12b.C (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/tls/thread_local12b.C (.../branches/gcc-8-branch) +@@ -0,0 +1,12 @@ ++// PR c++/60702 ++// { dg-do run { target c++11 } } ++// { dg-add-options tls } ++// { dg-require-effective-target tls_runtime } ++ ++#include "thread_local11.h" ++ ++int ++main () ++{ ++ if (*f2 () != 42) abort (); ++} +Index: gcc/testsuite/g++.dg/tls/thread_local12c.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/tls/thread_local12c.C (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/tls/thread_local12c.C (.../branches/gcc-8-branch) +@@ -0,0 +1,12 @@ ++// PR c++/60702 ++// { dg-do run { target c++11 } } ++// { dg-add-options tls } ++// { dg-require-effective-target tls_runtime } ++ ++#include "thread_local11.h" ++ ++int ++main () ++{ ++ if (f3 ()->i != 42) abort (); ++} +Index: gcc/testsuite/g++.dg/tls/thread_local12d.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/tls/thread_local12d.C (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/tls/thread_local12d.C (.../branches/gcc-8-branch) +@@ -0,0 +1,12 @@ ++// PR c++/60702 ++// { dg-do run { target c++11 } } ++// { dg-add-options tls } ++// { dg-require-effective-target tls_runtime } ++ ++#include "thread_local11.h" ++ ++int ++main () ++{ ++ if (*f4 () != 42) abort (); ++} +Index: gcc/testsuite/g++.dg/tls/thread_local12e.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/tls/thread_local12e.C (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/tls/thread_local12e.C (.../branches/gcc-8-branch) +@@ -0,0 +1,12 @@ ++// PR c++/60702 ++// { dg-do run { target c++11 } } ++// { dg-add-options tls } ++// { dg-require-effective-target tls_runtime } ++ ++#include "thread_local11.h" ++ ++int ++main () ++{ ++ if (f5 ()->i != 42) abort (); ++} +Index: gcc/testsuite/g++.dg/tls/thread_local12f.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/tls/thread_local12f.C (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/tls/thread_local12f.C (.../branches/gcc-8-branch) +@@ -0,0 +1,12 @@ ++// PR c++/60702 ++// { dg-do run { target c++11 } } ++// { dg-add-options tls } ++// { dg-require-effective-target tls_runtime } ++ ++#include "thread_local11.h" ++ ++int ++main () ++{ ++ if (*f6 () != 42) abort (); ++} +Index: gcc/testsuite/g++.dg/tls/thread_local12g.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/tls/thread_local12g.C (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/tls/thread_local12g.C (.../branches/gcc-8-branch) +@@ -0,0 +1,12 @@ ++// PR c++/60702 ++// { dg-do run { target c++11 } } ++// { dg-add-options tls } ++// { dg-require-effective-target tls_runtime } ++ ++#include "thread_local11.h" ++ ++int ++main () ++{ ++ if (f7<0> ()->i != 42) abort (); ++} +Index: gcc/testsuite/g++.dg/tls/thread_local12h.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/tls/thread_local12h.C (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/tls/thread_local12h.C (.../branches/gcc-8-branch) +@@ -0,0 +1,12 @@ ++// PR c++/60702 ++// { dg-do run { target c++11 } } ++// { dg-add-options tls } ++// { dg-require-effective-target tls_runtime } ++ ++#include "thread_local11.h" ++ ++int ++main () ++{ ++ if (*f8<0> () != 42) abort (); ++} +Index: gcc/testsuite/g++.dg/tls/thread_local12i.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/tls/thread_local12i.C (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/tls/thread_local12i.C (.../branches/gcc-8-branch) +@@ -0,0 +1,12 @@ ++// PR c++/60702 ++// { dg-do run { target c++11 } } ++// { dg-add-options tls } ++// { dg-require-effective-target tls_runtime } ++ ++#include "thread_local11.h" ++ ++int ++main () ++{ ++ if (f9<0> ()->i != 42) abort (); ++} +Index: gcc/testsuite/g++.dg/tls/thread_local12j.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/tls/thread_local12j.C (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/tls/thread_local12j.C (.../branches/gcc-8-branch) +@@ -0,0 +1,12 @@ ++// PR c++/60702 ++// { dg-do run { target c++11 } } ++// { dg-add-options tls } ++// { dg-require-effective-target tls_runtime } ++ ++#include "thread_local11.h" ++ ++int ++main () ++{ ++ if (*f10<0> () != 42) abort (); ++} +Index: gcc/testsuite/g++.dg/tls/thread_local12k.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/tls/thread_local12k.C (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/tls/thread_local12k.C (.../branches/gcc-8-branch) +@@ -0,0 +1,12 @@ ++// PR c++/60702 ++// { dg-do run { target c++11 } } ++// { dg-add-options tls } ++// { dg-require-effective-target tls_runtime } ++ ++#include "thread_local11.h" ++ ++int ++main () ++{ ++ if (f11<0> ()->i != 42) abort (); ++} +Index: gcc/testsuite/g++.dg/tls/thread_local12l.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/tls/thread_local12l.C (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/tls/thread_local12l.C (.../branches/gcc-8-branch) +@@ -0,0 +1,12 @@ ++// PR c++/60702 ++// { dg-do run { target c++11 } } ++// { dg-add-options tls } ++// { dg-require-effective-target tls_runtime } ++ ++#include "thread_local11.h" ++ ++int ++main () ++{ ++ if (*f12<0> () != 42) abort (); ++} +Index: gcc/testsuite/g++.dg/tls/pr85400.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/tls/pr85400.C (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/tls/pr85400.C (.../branches/gcc-8-branch) +@@ -0,0 +1,24 @@ ++// PR c++/85400 ++// Testcase by Brian Vandenberg <phantall@gmail.com> ++ ++// { dg-do link { target c++11 } } ++// { dg-require-effective-target fpic } ++// { dg-require-effective-target shared } ++// { dg-require-effective-target tls } ++// { dg-options "-shared -fPIC -O" } ++// { dg-add-options tls } ++ ++struct Test ++{ ++ int blah (int y) ++ { ++ thread_local int mything = 3; ++ mything = y > 0 ? y : mything; ++ return mything; ++ } ++}; ++ ++int stuff (Test& test, int y) ++{ ++ return test.blah(y); ++} +Index: gcc/testsuite/g++.dg/tls/thread_local11a.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/tls/thread_local11a.C (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/tls/thread_local11a.C (.../branches/gcc-8-branch) +@@ -0,0 +1,20 @@ ++// PR c++/60702 ++// { dg-do compile { target c++11 } } ++// { dg-add-options tls } ++// { dg-require-alias "" } ++// { dg-require-effective-target tls_runtime } ++// { dg-additional-options "-fdump-tree-gimple" } ++// { dg-final { scan-tree-dump-times "_ZTH2s1" 1 "gimple" } } ++// { dg-final { scan-tree-dump-times "_ZTH2s2" 1 "gimple" } } ++// { dg-final { scan-tree-dump-times "_ZTH2s3" 1 "gimple" } } ++// { dg-final { scan-tree-dump-times "_ZTH2s4" 1 "gimple" } } ++// { dg-final { scan-tree-dump-times "_ZTHN1T2u1E" 1 "gimple" } } ++// { dg-final { scan-tree-dump-times "_ZTHN1T2u2E" 1 "gimple" } } ++// { dg-final { scan-tree-dump-times "_ZTHN1T2u3E" 1 "gimple" } } ++// { dg-final { scan-tree-dump-times "_ZTHN1T2u4E" 1 "gimple" } } ++// { dg-final { scan-tree-dump-times "_ZTHN1T2u5E" 1 "gimple" } } ++// { dg-final { scan-tree-dump-times "_ZTHN1T2u6E" 1 "gimple" } } ++// { dg-final { scan-tree-dump-times "_ZTHN1T2u7E" 1 "gimple" } } ++// { dg-final { scan-tree-dump-times "_ZTHN1T2u8E" 1 "gimple" } } ++ ++#include "thread_local11.C" +Index: gcc/testsuite/g++.dg/tls/thread_local11.h +=================================================================== +--- a/src/gcc/testsuite/g++.dg/tls/thread_local11.h (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/tls/thread_local11.h (.../branches/gcc-8-branch) +@@ -0,0 +1,26 @@ ++// PR c++/60702 ++ ++extern "C" void abort (); ++struct S { S () { i = 42; }; int i; }; ++thread_local S s1, s2, s3, s4; ++struct T { static thread_local S u1, u2, u3, u4, u5, u6, u7, u8; int i; } t; ++thread_local S T::u1, T::u2, T::u3, T::u4, T::u5, T::u6, T::u7, T::u8; ++ ++S *f1 () { return &s1; } ++int *f2 () { return &s2.i; } ++S *f3 () { return &t.u1; } ++int *f4 () { return &t.u2.i; } ++S *f5 () { return &T::u3; } ++int *f6 () { return &T::u4.i; } ++template <int N> ++S *f7 () { return &s3; } ++template <int N> ++int *f8 () { return &s4.i; } ++template <int N> ++S *f9 () { return &t.u5; } ++template <int N> ++int *f10 () { return &t.u6.i; } ++template <int N> ++S *f11 () { return &T::u7; } ++template <int N> ++int *f12 () { return &T::u8.i; } +Index: gcc/testsuite/g++.dg/tls/pr77285-2.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/tls/pr77285-2.C (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/tls/pr77285-2.C (.../branches/gcc-8-branch) +@@ -3,7 +3,7 @@ + // { dg-require-effective-target tls } + // { dg-final { scan-assembler "_Z4var1B3tag" } } + // { dg-final { scan-assembler "_Z4var2B3tag" } } +-// { dg-final { scan-assembler "_ZTH4var1B3tag" } } ++// { dg-final { scan-assembler "_ZTH4var1B3tag" { xfail *-*-darwin* } } } + // { dg-final { scan-assembler "_ZTW4var1B3tag" } } + + struct __attribute__((abi_tag("tag"))) X { ~X () {} int i = 0; }; +Index: gcc/testsuite/g++.dg/concepts/no-bool1.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/concepts/no-bool1.C (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/g++.dg/concepts/no-bool1.C (.../branches/gcc-8-branch) +@@ -0,0 +1,4 @@ ++// { dg-do compile { target c++14 } } ++// { dg-additional-options -fconcepts } ++ ++template <class T> concept True = true; +Index: gcc/testsuite/objc.dg/no-extra-load.m +=================================================================== +--- a/src/gcc/testsuite/objc.dg/no-extra-load.m (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/objc.dg/no-extra-load.m (.../branches/gcc-8-branch) +@@ -1,7 +1,7 @@ + /* { dg-do compile { target *-*-darwin* } } */ + /* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */ + +-#include <Foundation/NSObject.h> ++#include "../objc-obj-c++-shared/F-NSObject.h" + main() { [NSObject new]; } + + /* { dg-final { scan-assembler-not "L_objc_msgSend\\\$non_lazy_ptr" } } */ +Index: gcc/testsuite/objc.dg/method-6.m +=================================================================== +--- a/src/gcc/testsuite/objc.dg/method-6.m (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/objc.dg/method-6.m (.../branches/gcc-8-branch) +@@ -5,12 +5,12 @@ + /* { dg-options "-Wstrict-selector-match" } */ + + #ifdef __NEXT_RUNTIME__ +-#include <Foundation/NSObject.h> +-#define OBJECT NSObject ++# include "../objc-obj-c++-shared/F-NSObject.h" ++# define OBJECT NSObject + #else +-#include <objc/Object.h> +-#include <objc/Protocol.h> +-#define OBJECT Object ++# include <objc/Object.h> ++# include <objc/Protocol.h> ++# define OBJECT Object + #endif + + @interface Base +Index: gcc/testsuite/objc.dg/objc-gc-4.m +=================================================================== +--- a/src/gcc/testsuite/objc.dg/objc-gc-4.m (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/objc.dg/objc-gc-4.m (.../branches/gcc-8-branch) +@@ -3,6 +3,7 @@ + /* Contributed by Ziemowit Laski <zlaski@apple.com> */ + + /* { dg-do compile } */ ++/* { dg-skip-if "GC API is an error from Darwin16." { *-*-darwin1[6-8]* } { "-fnext-runtime" } { "" } } */ + /* { dg-options "-fobjc-gc" } */ + /* { dg-prune-output "cc1obj: warning: '-fobjc-gc' is ignored for '-fgnu-runtime'" } */ + +Index: gcc/testsuite/objc.dg/strings/const-cfstring-5.m +=================================================================== +--- a/src/gcc/testsuite/objc.dg/strings/const-cfstring-5.m (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/objc.dg/strings/const-cfstring-5.m (.../branches/gcc-8-branch) +@@ -6,7 +6,7 @@ + /* { dg-skip-if "NeXT only" { *-*-* } { "-fgnu-runtime" } { "" } } */ + /* { dg-options "-mconstant-cfstrings" } */ + +-#include <Foundation/NSObject.h> ++#include "../../objc-obj-c++-shared/F-NSObject.h" + + @interface Foo: NSObject { + char *cString; +Index: gcc/testsuite/objc.dg/strings/const-str-12b.m +=================================================================== +--- a/src/gcc/testsuite/objc.dg/strings/const-str-12b.m (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/objc.dg/strings/const-str-12b.m (.../branches/gcc-8-branch) +@@ -6,11 +6,11 @@ + /* { dg-options "-mno-constant-cfstrings -fconstant-string-class=Foo" { target *-*-darwin* } } */ + + #ifdef __NEXT_RUNTIME__ +-#include <Foundation/NSObject.h> +-#define OBJECT NSObject ++# include "../../objc-obj-c++-shared/F-NSObject.h" ++# define OBJECT NSObject + #else +-#include <objc/Object.h> +-#define OBJECT Object ++# include <objc/Object.h> ++# define OBJECT Object + #endif + #include "../../objc-obj-c++-shared/objc-test-suite-types.h" + +Index: gcc/testsuite/objc.dg/strings/const-cfstring-2.m +=================================================================== +--- a/src/gcc/testsuite/objc.dg/strings/const-cfstring-2.m (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/objc.dg/strings/const-cfstring-2.m (.../branches/gcc-8-branch) +@@ -8,8 +8,8 @@ + /* { dg-skip-if "NeXT only" { *-*-* } { "-fgnu-runtime" } { "" } } */ + /* { dg-options "-mconstant-cfstrings -Wnonportable-cfstrings" } */ + +-#import <Foundation/NSString.h> +-#import <CoreFoundation/CFString.h> ++#include "../../objc-obj-c++-shared/F-NSString.h" ++#include "../../objc-obj-c++-shared/CF-CFString.h" + + #ifndef __CONSTANT_CFSTRINGS__ + #error The -fconstant-cfstrings option is not functioning properly +Index: gcc/testsuite/objc.dg/encode-7-next-64bit.m +=================================================================== +--- a/src/gcc/testsuite/objc.dg/encode-7-next-64bit.m (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/objc.dg/encode-7-next-64bit.m (.../branches/gcc-8-branch) +@@ -9,10 +9,11 @@ + #include <stdbool.h> + #include <string.h> + #include <stdlib.h> +-#include <Foundation/NSObject.h> ++#include <stdio.h> ++#include "../objc-obj-c++-shared/F-NSObject.h" ++#include "../objc-obj-c++-shared/CF-CFString.h" + #include "../objc-obj-c++-shared/runtime.h" + +-extern int printf(char *,...); + void CHECK_IF(const char *s1, const char *s2) + { + if (strcmp(s1,s2) != 0) { +Index: gcc/testsuite/objc.dg/proto-lossage-7.m +=================================================================== +--- a/src/gcc/testsuite/objc.dg/proto-lossage-7.m (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/objc.dg/proto-lossage-7.m (.../branches/gcc-8-branch) +@@ -3,7 +3,7 @@ + /* { dg-do compile } */ + + #ifdef __NEXT_RUNTIME__ +-#include <Foundation/NSObject.h> ++#include "../objc-obj-c++-shared/F-NSObject.h" + #define OBJECT NSObject + #else + #include <objc/Object.h> +Index: gcc/testsuite/objc.dg/symtab-1.m +=================================================================== +--- a/src/gcc/testsuite/objc.dg/symtab-1.m (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/objc.dg/symtab-1.m (.../branches/gcc-8-branch) +@@ -4,7 +4,7 @@ + /* { dg-do compile { target { *-*-darwin* } } } */ + /* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */ + +-#include <Foundation/NSObject.h> ++#include "../objc-obj-c++-shared/F-NSObject.h" + + @interface Base: NSObject + - (void)setValues; +Index: gcc/testsuite/objc.dg/headers.m +=================================================================== +--- a/src/gcc/testsuite/objc.dg/headers.m (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/objc.dg/headers.m (.../branches/gcc-8-branch) +@@ -2,6 +2,7 @@ + // test in libstdc++-v3). Author: Loren J. Rittle <ljrittle@acm.org>. + // { dg-options "-Wall -Wpointer-arith -Wcast-qual -Wstrict-prototypes -Wshadow" } + // { dg-do compile } ++/* { dg-xfail-if "PR90709" { *-*-darwin1[4-9]* } { "-fnext-runtime" } { "" } } */ + + #ifdef __NEXT_RUNTIME__ + #include <Foundation/NSString.h> +Index: gcc/testsuite/objc.dg/stubify-1.m +=================================================================== +--- a/src/gcc/testsuite/objc.dg/stubify-1.m (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/objc.dg/stubify-1.m (.../branches/gcc-8-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 ; +@@ -28,8 +28,8 @@ + } + @end + +-/* { dg-final { scan-assembler-not "\(bl|call\)\[ \t\]+_objc_msgSend\n" } } */ +-/* { dg-final { scan-assembler "\(bl|call\)\[ \t\]+L_objc_msgSend\\\$stub\n" } } */ +-/* { dg-final { scan-assembler-not "\(bl|call\)\[ \t\]+_bogonic\n" } } */ +-/* { dg-final { scan-assembler "\(bl|call\)\[ \t\]+L_bogonic\\\$stub\n" } } */ +-/* { dg-final { scan-assembler-not "\\\$non_lazy_ptr" } } */ ++/* { dg-final { scan-assembler-not {(bl|call)[ \t]+_objc_msgSend\n} } } */ ++/* { dg-final { scan-assembler {(bl|call)[ \t]+L_objc_msgSend\$stub\n} } } */ ++/* { dg-final { scan-assembler-not {(bl|call)[ \t]+_bogonic\n} } } */ ++/* { dg-final { scan-assembler {(bl|call)[ \t]+L_bogonic\$stub\n} } } */ ++/* { dg-final { scan-assembler-not {\$non_lazy_ptr} } } */ +Index: gcc/testsuite/objc.dg/objc-foreach-4.m +=================================================================== +--- a/src/gcc/testsuite/objc.dg/objc-foreach-4.m (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/objc.dg/objc-foreach-4.m (.../branches/gcc-8-branch) +@@ -5,9 +5,9 @@ + /* { dg-skip-if "No NeXT fast enum. pre-Darwin9" { *-*-darwin[5-8]* } { "-fnext-runtime" } { "" } } */ + /* { dg-additional-options "-framework Foundation" { target { *-*-darwin* } } } */ + +-#include <Foundation/NSString.h> +-#include <Foundation/NSAutoreleasePool.h> +-#include <Foundation/NSArray.h> ++#include "../objc-obj-c++-shared/F-NSString.h" ++#include "../objc-obj-c++-shared/F-NSAutoreleasePool.h" ++#include "../objc-obj-c++-shared/F-NSArray.h" + + // gcc -o foo foo.m -framework Foundation + +Index: gcc/testsuite/objc.dg/instancetype-0.m +=================================================================== +--- a/src/gcc/testsuite/objc.dg/instancetype-0.m (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/objc.dg/instancetype-0.m (.../branches/gcc-8-branch) +@@ -0,0 +1,30 @@ ++/* Contributed by Iain Sandoe <iain@sandoe.co.uk>, May 2019. */ ++/* { dg-do compile } */ ++ ++/* Basic check of parsing instancetype. */ ++ ++extern id class_createInstance (id, int); ++extern id class_getSuperclass (id); ++ ++@interface MyObject ++{ ++ Class isa; ++} +++ (instancetype)alloc; ++- (instancetype)init; +++ (instancetype)initialize; +++ (instancetype)factoryMethodA; +++ (id)factoryMethodB; +++ (Class) class; +++ (Class) superclass; ++@end ++ ++@implementation MyObject +++ (instancetype)alloc { return class_createInstance (self, 0); } ++- (instancetype)init { return self; } +++ (instancetype)initialize { return self; } +++ (instancetype)factoryMethodA { return [[[self class] alloc] init]; } +++ (id)factoryMethodB { return [[[self class] alloc] init]; } +++ (Class) class { return self; } +++ (Class) superclass { return class_getSuperclass (self); } ++@end +Index: gcc/testsuite/objc.dg/objc-foreach-5.m +=================================================================== +--- a/src/gcc/testsuite/objc.dg/objc-foreach-5.m (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/objc.dg/objc-foreach-5.m (.../branches/gcc-8-branch) +@@ -4,8 +4,9 @@ + /* { dg-skip-if "No NeXT fast enum. pre-Darwin9" { *-*-darwin[5-8]* } { "-fnext-runtime" } { "" } } */ + /* { dg-additional-options "-framework Foundation" { target { *-*-darwin* } } } */ + +-#include <Foundation/NSArray.h> +-#include <Foundation/NSAutoreleasePool.h> ++#include "../objc-obj-c++-shared/F-NSArray.h" ++#include "../objc-obj-c++-shared/F-NSAutoreleasePool.h" ++#include "../objc-obj-c++-shared/F-NSValue.h" + + NSArray * createTestVictim(unsigned capacity) { + NSMutableArray * arr = [[NSMutableArray alloc] initWithCapacity:capacity]; +Index: gcc/testsuite/objc.dg/stubify-2.m +=================================================================== +--- a/src/gcc/testsuite/objc.dg/stubify-2.m (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/objc.dg/stubify-2.m (.../branches/gcc-8-branch) +@@ -1,10 +1,10 @@ + /* All calls must be properly stubified, m32 only. */ + /* Testcase extracted from TextEdit:Document.m. */ + +-/* { dg-do compile { target powerpc*-*-darwin* } } */ ++/* { 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 -mmacosx-version-min=10.4 -msymbol-stubs" } */ + + typedef struct objc_object { } *id ; + int x = 41 ; +@@ -30,4 +30,9 @@ + + /* Any symbol_ref of an un-stubified objc_msgSend is an error; look + for "objc_msgSend" in quotes, without the $stub suffix. */ +-/* { dg-final { scan-rtl-dump-not "symbol_ref.*\"objc_msgSend\"" "jump" } } */ ++ ++/* { dg-final { scan-assembler-not {(bl|call)[ \t]+_objc_msgSend\n} } } */ ++/* { dg-final { scan-assembler {(bl|call)[ \t]+L_objc_msgSend\$stub\n} } } */ ++/* { dg-final { scan-assembler-not {(bl|call)[ \t]+_bogonic\n} } } */ ++/* { dg-final { scan-assembler {(bl|call)[ \t]+L_bogonic\$stub\n} } } */ ++/* { dg-final { scan-assembler-not {\$non_lazy_ptr} } } */ +Index: gcc/testsuite/objc.dg/zero-link-1.m +=================================================================== +--- a/src/gcc/testsuite/objc.dg/zero-link-1.m (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/objc.dg/zero-link-1.m (.../branches/gcc-8-branch) +@@ -5,7 +5,7 @@ + /* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */ + /* { dg-options "-fzero-link" } */ + +-#include <Foundation/NSObject.h> ++#include "../objc-obj-c++-shared/F-NSObject.h" + + extern void abort(void); + #define CHECK_IF(expr) if(!(expr)) abort(); +Index: gcc/testsuite/objc.dg/zero-link-2.m +=================================================================== +--- a/src/gcc/testsuite/objc.dg/zero-link-2.m (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/objc.dg/zero-link-2.m (.../branches/gcc-8-branch) +@@ -5,7 +5,7 @@ + /* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */ + /* { dg-options "-fno-zero-link" } */ + +-#include <Foundation/NSObject.h> ++#include "../objc-obj-c++-shared/F-NSObject.h" + + extern void abort(void); + #define CHECK_IF(expr) if(!(expr)) abort(); +Index: gcc/testsuite/objc.dg/torture/strings/const-str-10.m +=================================================================== +--- a/src/gcc/testsuite/objc.dg/torture/strings/const-str-10.m (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/objc.dg/torture/strings/const-str-10.m (.../branches/gcc-8-branch) +@@ -6,7 +6,8 @@ + /* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */ + /* { dg-options "-mno-constant-cfstrings" { target *-*-darwin* } } */ + +-#include <Foundation/NSObject.h> ++#include "../../../objc-obj-c++-shared/F-NSObject.h" ++#include <stdlib.h> + #include "../../../objc-obj-c++-shared/runtime.h" /* For NEXT_OBJC_USE_NEW_INTERFACE. */ + + @interface NSString: NSObject +Index: gcc/testsuite/objc.dg/torture/strings/const-str-11.m +=================================================================== +--- a/src/gcc/testsuite/objc.dg/torture/strings/const-str-11.m (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/objc.dg/torture/strings/const-str-11.m (.../branches/gcc-8-branch) +@@ -7,7 +7,7 @@ + /* { dg-options "-fconstant-string-class=XStr" } */ + /* { dg-options "-mno-constant-cfstrings -fconstant-string-class=XStr" { target *-*-darwin* } } */ + +-#include <Foundation/NSObject.h> ++#include "../../../objc-obj-c++-shared/F-NSObject.h" + #include "../../../objc-obj-c++-shared/runtime.h" /* For NEXT_OBJC_USE_NEW_INTERFACE. */ + + @interface XString: NSObject { +Index: gcc/testsuite/objc.dg/torture/strings/const-cfstring-1.m +=================================================================== +--- a/src/gcc/testsuite/objc.dg/torture/strings/const-cfstring-1.m (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/objc.dg/torture/strings/const-cfstring-1.m (.../branches/gcc-8-branch) +@@ -13,8 +13,8 @@ + Well, we don't implement writable ones at this juncture. */ + /* { dg-options "-mconstant-cfstrings -framework Cocoa -Wl,-w" { target *-*-darwin[123]* } } */ + +-#import <Foundation/NSString.h> +-#import <CoreFoundation/CFString.h> ++#include "../../../objc-obj-c++-shared/F-NSString.h" ++#include "../../../objc-obj-c++-shared/CF-CFString.h" + #include <stdlib.h> + + void printOut(NSString *str) { +Index: gcc/testsuite/objc.dg/torture/strings/const-str-9.m +=================================================================== +--- a/src/gcc/testsuite/objc.dg/torture/strings/const-str-9.m (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/objc.dg/torture/strings/const-str-9.m (.../branches/gcc-8-branch) +@@ -5,7 +5,7 @@ + /* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */ + /* { dg-options "-mno-constant-cfstrings" { target *-*-darwin* } } */ + +-#include <Foundation/NSObject.h> ++#include "../../../objc-obj-c++-shared/F-NSObject.h" + #include "../../../objc-obj-c++-shared/runtime.h" /* For NEXT_OBJC_USE_NEW_INTERFACE. */ + + @interface NSConstantString: NSObject { +Index: gcc/testsuite/objc.dg/zero-link-3.m +=================================================================== +--- a/src/gcc/testsuite/objc.dg/zero-link-3.m (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/objc.dg/zero-link-3.m (.../branches/gcc-8-branch) +@@ -7,12 +7,12 @@ + /* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */ + + #ifdef __NEXT_RUNTIME__ +-#include <Foundation/NSObject.h> +-#define OBJECT NSObject ++# include "../objc-obj-c++-shared/F-NSObject.h" ++# define OBJECT NSObject + #else +-#include <objc/Object.h> +-#include <objc/Protocol.h> +-#define OBJECT Object ++# include <objc/Object.h> ++# include <objc/Protocol.h> ++# define OBJECT Object + #endif + + extern void abort(void); +Index: gcc/testsuite/objc.dg/image-info.m +=================================================================== +--- a/src/gcc/testsuite/objc.dg/image-info.m (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/objc.dg/image-info.m (.../branches/gcc-8-branch) +@@ -7,7 +7,7 @@ + /* { dg-skip-if "NeXT-only" { *-*-* } { "-fgnu-runtime" } { "" } } */ + /* { dg-options "-freplace-objc-classes" } */ + +-#include <Foundation/NSObject.h> ++#include "../objc-obj-c++-shared/F-NSObject.h" + + extern void abort(void); + #define CHECK_IF(expr) if(!(expr)) abort(); +Index: gcc/testsuite/objc.dg/isa-field-1.m +=================================================================== +--- a/src/gcc/testsuite/objc.dg/isa-field-1.m (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/objc.dg/isa-field-1.m (.../branches/gcc-8-branch) +@@ -1,5 +1,7 @@ + /* Ensure there are no bizarre difficulties with accessing the 'isa' field of objects. */ + /* { dg-do compile } */ ++/* The use of isa is deprecated, but we still want to test that it works. */ ++/* { dg-additional-options "-Wno-deprecated-declarations" } */ + + #include "../objc-obj-c++-shared/TestsuiteObject.h" + #include "../objc-obj-c++-shared/runtime.h" +Index: gcc/testsuite/obj-c++.dg/stubify-1.mm +=================================================================== +--- a/src/gcc/testsuite/obj-c++.dg/stubify-1.mm (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/obj-c++.dg/stubify-1.mm (.../branches/gcc-8-branch) +@@ -4,13 +4,13 @@ + /* { 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 "-mdynamic-no-pic -fno-exceptions -mmacosx-version-min=10.4 -msymbol-stubs" } */ + + typedef struct objc_object { } *id ; + int x = 41 ; + + extern "C" { +- extern id objc_msgSend(id self, char * op, ...); ++ extern id objc_msgSend(id self, objc_selector* op, ...); + extern int bogonic (int, int, int); + } + +@@ -20,9 +20,9 @@ + - (Document *) close; + @end + @implementation Document +-- (Document *) class { } +-- (Document *) close { } +-- (Document *) window { } ++- (Document *) class { return (Document *)0; } ++- (Document *) close { return (Document *)0; } ++- (Document *) window { return (Document *)0; } + - (void)willEndCloseSheet:(void *)sheet returnCode:(int)returnCode contextInfo:(void *)contextInfo { + [[self window] close]; + ((void (*)(id, char *, int))objc_msgSend)([self class], (char *)contextInfo, 1); +@@ -32,8 +32,8 @@ + } + @end + +-/* { dg-final { scan-assembler-not "\(bl|call\)\[ \t\]+_objc_msgSend\n" } } */ +-/* { dg-final { scan-assembler "\(bl|call\)\[ \t\]+L_objc_msgSend\\\$stub\n" } } */ +-/* { dg-final { scan-assembler-not "\(bl|call\)\[ \t\]+_bogonic\n" } } */ +-/* { dg-final { scan-assembler "\(bl|call\)\[ \t\]+L_bogonic\\\$stub\n" } } */ +-/* { dg-final { scan-assembler-not "\\\$non_lazy_ptr" } } */ ++/* { dg-final { scan-assembler-not {(bl|call)[ \t]+_objc_msgSend\n} } } */ ++/* { dg-final { scan-assembler {(bl|call)[ \t]+L_objc_msgSend\$stub\n} } } */ ++/* { dg-final { scan-assembler-not {(bl|call)[ \t]+_bogonic\n} } } */ ++/* { dg-final { scan-assembler {(bl|call)[ \t]+L_bogonic\$stub\n} } } */ ++/* { dg-final { scan-assembler-not {\$non_lazy_ptr} } } */ +Index: gcc/testsuite/obj-c++.dg/isa-field-1.mm +=================================================================== +--- a/src/gcc/testsuite/obj-c++.dg/isa-field-1.mm (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/obj-c++.dg/isa-field-1.mm (.../branches/gcc-8-branch) +@@ -1,5 +1,7 @@ + /* Ensure there are no bizarre difficulties with accessing the 'isa' field of objects. */ + /* { dg-do compile } */ ++/* The use of isa is deprecated, but we still want to test that is works. */ ++/* { dg-additional-options "-Wno-deprecated-declarations" } */ + + #include "../objc-obj-c++-shared/TestsuiteObject.h" + #include "../objc-obj-c++-shared/runtime.h" +Index: gcc/testsuite/obj-c++.dg/try-catch-1.mm +=================================================================== +--- a/src/gcc/testsuite/obj-c++.dg/try-catch-1.mm (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/obj-c++.dg/try-catch-1.mm (.../branches/gcc-8-branch) +@@ -39,4 +39,5 @@ + @finally { + printf("In @finally block (%d)... ", exc_control); + } ++ return -1; + } +Index: gcc/testsuite/obj-c++.dg/cxx-ivars-3.mm +=================================================================== +--- a/src/gcc/testsuite/obj-c++.dg/cxx-ivars-3.mm (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/obj-c++.dg/cxx-ivars-3.mm (.../branches/gcc-8-branch) +@@ -2,13 +2,14 @@ + + // { dg-do run { target *-*-darwin* } } + // { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } ++// { dg-skip-if "Headers incompatible with 10.4 APIs" { *-*-darwin1[3-8]* } { "-fnext-runtime" } { "" } } + // { dg-additional-options "-fobjc-call-cxx-cdtors -mmacosx-version-min=10.4 -framework Foundation" } + // This test has no equivalent or meaning for m64/ABI V2 +-// { dg-xfail-run-if "No Test Avail" { *-*-darwin* && lp64 } { "-fnext-runtime" } { "" } } ++// { dg-xfail-run-if "No Test Avail" { *-*-darwin* && lp64 } { "-fnext-runtime" } { "" } } + + #include <objc/objc-runtime.h> + #include <stdlib.h> +-#include <Foundation/NSObject.h> ++#include "../objc-obj-c++-shared/F-NSObject.h" + + //extern "C" { int printf(const char *,...); } + #define CHECK_IF(expr) if(!(expr)) abort() +Index: gcc/testsuite/obj-c++.dg/torture/strings/const-str-10.mm +=================================================================== +--- a/src/gcc/testsuite/obj-c++.dg/torture/strings/const-str-10.mm (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/obj-c++.dg/torture/strings/const-str-10.mm (.../branches/gcc-8-branch) +@@ -6,7 +6,7 @@ + /* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */ + /* { dg-options "-mno-constant-cfstrings" { target *-*-darwin* } } */ + +-#include <Foundation/NSObject.h> ++#include "../../../objc-obj-c++-shared/F-NSObject.h" + #include "../../../objc-obj-c++-shared/runtime.h" /* For NEXT_OBJC_USE_NEW_INTERFACE. */ + + @interface NSString: NSObject +Index: gcc/testsuite/obj-c++.dg/torture/strings/const-str-11.mm +=================================================================== +--- a/src/gcc/testsuite/obj-c++.dg/torture/strings/const-str-11.mm (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/obj-c++.dg/torture/strings/const-str-11.mm (.../branches/gcc-8-branch) +@@ -7,7 +7,7 @@ + /* { dg-options "-fconstant-string-class=XStr" } */ + /* { dg-options "-mno-constant-cfstrings -fconstant-string-class=XStr" { target *-*-darwin* } } */ + +-#include <Foundation/NSObject.h> ++#include "../../../objc-obj-c++-shared/F-NSObject.h" + #include "../../../objc-obj-c++-shared/runtime.h" /* For NEXT_OBJC_USE_NEW_INTERFACE. */ + + @interface XString: NSObject { +Index: gcc/testsuite/obj-c++.dg/torture/strings/const-cfstring-1.mm +=================================================================== +--- a/src/gcc/testsuite/obj-c++.dg/torture/strings/const-cfstring-1.mm (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/obj-c++.dg/torture/strings/const-cfstring-1.mm (.../branches/gcc-8-branch) +@@ -13,8 +13,8 @@ + well, we don't implement writable ones at this juncture. */ + /* { dg-options "-mconstant-cfstrings -framework Cocoa -Wl,-w" { target *-*-darwin[123]* } } */ + +-#import <Foundation/NSString.h> +-#import <CoreFoundation/CFString.h> ++#include "../../../objc-obj-c++-shared/F-NSString.h" ++#include "../../../objc-obj-c++-shared/CF-CFString.h" + #include <stdlib.h> + + void printOut(NSString *str) { +@@ -47,10 +47,10 @@ + checkNSRange([@"Hello World" rangeOfString:(id)CFSTR("World")]); + checkNSRange([(id)CFSTR("Hello World") rangeOfString:(id)CFSTR("World")]); + +- checkCFRange(CFStringFind((CFStringRef)@"Hello World", (CFStringRef)@"World", 0)); +- checkCFRange(CFStringFind(CFSTR("Hello World"), (CFStringRef)@"World", 0)); +- checkCFRange(CFStringFind((CFStringRef)@"Hello World", CFSTR("World"), 0)); +- checkCFRange(CFStringFind(CFSTR("Hello World"), CFSTR("World"), 0)); ++ checkCFRange(CFStringFind((CFStringRef)@"Hello World", (CFStringRef)@"World", (CFStringCompareFlags)0)); ++ checkCFRange(CFStringFind(CFSTR("Hello World"), (CFStringRef)@"World", (CFStringCompareFlags)0)); ++ checkCFRange(CFStringFind((CFStringRef)@"Hello World", CFSTR("World"), (CFStringCompareFlags)0)); ++ checkCFRange(CFStringFind(CFSTR("Hello World"), CFSTR("World"), (CFStringCompareFlags)0)); + + /* Check for string uniquing. */ + if (s0a != s0b || s0a != s2 || s1 != (id)s2) { +Index: gcc/testsuite/obj-c++.dg/torture/strings/const-str-9.mm +=================================================================== +--- a/src/gcc/testsuite/obj-c++.dg/torture/strings/const-str-9.mm (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/obj-c++.dg/torture/strings/const-str-9.mm (.../branches/gcc-8-branch) +@@ -5,7 +5,7 @@ + /* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */ + /* { dg-options "-mno-constant-cfstrings" { target *-*-darwin* } } */ + +-#include <Foundation/NSObject.h> ++#include "../../../objc-obj-c++-shared/F-NSObject.h" + #include "../../../objc-obj-c++-shared/runtime.h" /* For NEXT_OBJC_USE_NEW_INTERFACE. */ + + @interface NSConstantString: NSObject { +Index: gcc/testsuite/obj-c++.dg/strings/const-str-12.mm +=================================================================== +--- a/src/gcc/testsuite/obj-c++.dg/strings/const-str-12.mm (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/obj-c++.dg/strings/const-str-12.mm (.../branches/gcc-8-branch) +@@ -6,7 +6,7 @@ + /* { dg-options "-mno-constant-cfstrings -fconstant-string-class=Foo" { target *-*-darwin* } } */ + + #ifdef __NEXT_RUNTIME__ +-#include <Foundation/NSObject.h> ++#include "../../objc-obj-c++-shared/F-NSObject.h" + #define OBJECT NSObject + #else + #include <objc/Object.h> +Index: gcc/testsuite/obj-c++.dg/strings/const-cfstring-2.mm +=================================================================== +--- a/src/gcc/testsuite/obj-c++.dg/strings/const-cfstring-2.mm (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/obj-c++.dg/strings/const-cfstring-2.mm (.../branches/gcc-8-branch) +@@ -8,8 +8,8 @@ + /* { dg-skip-if "NeXT only" { *-*-* } { "-fgnu-runtime" } { "" } } */ + /* { dg-options "-ftrack-macro-expansion=0 -mconstant-cfstrings -Wnonportable-cfstrings" } */ + +-#import <Foundation/NSString.h> +-#import <CoreFoundation/CFString.h> ++#include "../../objc-obj-c++-shared/F-NSString.h" ++#include "../../objc-obj-c++-shared/CF-CFString.h" + + #ifndef __CONSTANT_CFSTRINGS__ + #error The -fconstant-cfstrings option is not functioning properly +Index: gcc/testsuite/obj-c++.dg/strings/const-cfstring-5.mm +=================================================================== +--- a/src/gcc/testsuite/obj-c++.dg/strings/const-cfstring-5.mm (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/obj-c++.dg/strings/const-cfstring-5.mm (.../branches/gcc-8-branch) +@@ -6,7 +6,7 @@ + /* { dg-skip-if "NeXT only" { *-*-* } { "-fgnu-runtime" } { "" } } */ + /* { dg-options "-mconstant-cfstrings" } */ + +-#include <Foundation/NSObject.h> ++#include "../../objc-obj-c++-shared/F-NSObject.h" + + @interface Foo: NSObject { + char *cString; +Index: gcc/testsuite/obj-c++.dg/stubify-2.mm +=================================================================== +--- a/src/gcc/testsuite/obj-c++.dg/stubify-2.mm (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/obj-c++.dg/stubify-2.mm (.../branches/gcc-8-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 -mmacosx-version-min=10.4 -msymbol-stubs" } */ + + typedef struct objc_object { } *id ; + int x = 41 ; +@@ -16,9 +16,9 @@ + - (Document *) close; + @end + @implementation Document +-- (Document *) class { } +-- (Document *) close { } +-- (Document *) window { } ++- (Document *) class { return (Document *)0; } ++- (Document *) close { return (Document *)0; } ++- (Document *) window { return (Document *)0; } + - (void)willEndCloseSheet:(void *)sheet returnCode:(int)returnCode contextInfo:(void *)contextInfo { + [[self window] close]; + ((void (*)(id, char *, int))objc_msgSend)([self class], (char *)contextInfo, 1); +@@ -30,4 +30,9 @@ + + /* Any symbol_ref of an un-stubified objc_msgSend is an error; look + for "objc_msgSend" in quotes, without the $stub suffix. */ +-/* { dg-final { scan-rtl-dump-not "symbol_ref.*\"objc_msgSend\"" "jump" } } */ ++ ++/* { dg-final { scan-assembler-not {(bl|call)[ \t]+_objc_msgSend\n} } } */ ++/* { dg-final { scan-assembler {(bl|call)[ \t]+L_objc_msgSend\$stub\n} } } */ ++/* { dg-final { scan-assembler-not {(bl|call)[ \t]+_Z7bogoniciii\n} } } */ ++/* { dg-final { scan-assembler {(bl|call)[ \t]+L__Z7bogoniciii\$stub\n} } } */ ++/* { dg-final { scan-assembler-not {\$non_lazy_ptr} } } */ +Index: gcc/testsuite/obj-c++.dg/objc-gc-3.mm +=================================================================== +--- a/src/gcc/testsuite/obj-c++.dg/objc-gc-3.mm (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/obj-c++.dg/objc-gc-3.mm (.../branches/gcc-8-branch) +@@ -3,6 +3,7 @@ + /* Contributed by Ziemowit Laski <zlaski@apple.com> */ + + /* { dg-do compile } */ ++/* { dg-skip-if "GC API is an error from Darwin16." { *-*-darwin1[6-8]* } { "-fnext-runtime" } { "" } } */ + /* { dg-options "-fobjc-gc" } */ + /* { dg-prune-output "cc1objplus: warning: '-fobjc-gc' is ignored for '-fgnu-runtime'" } */ + +Index: gcc/testsuite/obj-c++.dg/qual-types-1.mm +=================================================================== +--- a/src/gcc/testsuite/obj-c++.dg/qual-types-1.mm (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/obj-c++.dg/qual-types-1.mm (.../branches/gcc-8-branch) +@@ -4,6 +4,8 @@ + + /* { dg-do run } */ + /* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */ ++/* { dg-prune-output ".*ld: warning: direct access in.*" } */ ++ + #include "../objc-obj-c++-shared/TestsuiteObject.m" + #include <stdlib.h> + +Index: gcc/testsuite/obj-c++.dg/proto-lossage-7.mm +=================================================================== +--- a/src/gcc/testsuite/obj-c++.dg/proto-lossage-7.mm (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/obj-c++.dg/proto-lossage-7.mm (.../branches/gcc-8-branch) +@@ -1,9 +1,11 @@ + /* Check that typedefs of ObjC classes preserve + any @protocol qualifiers. */ + /* { dg-do compile } */ ++/* Suppress warnings that the GNUStep headers introduce. */ ++/* { dg-additional-options "-std=gnu++11 -Wno-expansion-to-defined -Wno-variadic-macros" { target *-*-darwin* } } */ + + #ifdef __NEXT_RUNTIME__ +-#include <Foundation/NSObject.h> ++#include "../objc-obj-c++-shared/F-NSObject.h" + #define OBJECT NSObject + #else + #include <objc/Object.h> +Index: gcc/testsuite/obj-c++.dg/syntax-error-1.mm +=================================================================== +--- a/src/gcc/testsuite/obj-c++.dg/syntax-error-1.mm (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/obj-c++.dg/syntax-error-1.mm (.../branches/gcc-8-branch) +@@ -1,8 +1,10 @@ + /* Graceful handling of a syntax error. */ + /* { dg-do compile } */ ++/* Suppress warnings that the GNUStep headers introduce. */ ++/* { dg-additional-options "-std=gnu++11 -Wno-expansion-to-defined -Wno-variadic-macros" { target *-*-darwin* } } */ + + #ifdef __NEXT_RUNTIME__ +-#include <Foundation/NSObject.h> ++#include "../objc-obj-c++-shared/F-NSObject.h" + #define OBJECT NSObject + #else + #include <objc/Object.h> +Index: gcc/testsuite/obj-c++.dg/try-catch-3.mm +=================================================================== +--- a/src/gcc/testsuite/obj-c++.dg/try-catch-3.mm (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/obj-c++.dg/try-catch-3.mm (.../branches/gcc-8-branch) +@@ -15,4 +15,5 @@ + @catch (TestsuiteObject* theException) { + return [theException name]; + } ++ return (const char *)0; + } +Index: gcc/testsuite/c-c++-common/cpp/pr92296-1.c +=================================================================== +--- a/src/gcc/testsuite/c-c++-common/cpp/pr92296-1.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/c-c++-common/cpp/pr92296-1.c (.../branches/gcc-8-branch) +@@ -0,0 +1,32 @@ ++/* PR preprocessor/92296 */ ++/* { dg-do preprocess } */ ++ ++#pragma push_macro("__TIMESTAMP__") ++#pragma pop_macro("__TIMESTAMP__") ++ ++#pragma push_macro("__TIME__") ++#pragma pop_macro("__TIME__") ++ ++#pragma push_macro("__DATE__") ++#pragma pop_macro("__DATE__") ++ ++#pragma push_macro("__FILE__") ++#pragma pop_macro("__FILE__") ++ ++#pragma push_macro("__BASE_FILE__") ++#pragma pop_macro("__BASE_FILE__") ++ ++#pragma push_macro("__LINE__") ++#pragma pop_macro("__LINE__") ++ ++#pragma push_macro("__INCLUDE_LEVEL__") ++#pragma pop_macro("__INCLUDE_LEVEL__") ++ ++#pragma push_macro("__COUNTER__") ++#pragma pop_macro("__COUNTER__") ++ ++#pragma push_macro("__has_attribute") ++#pragma pop_macro("__has_attribute") ++ ++#pragma push_macro("__has_cpp_attribute") ++#pragma pop_macro("__has_cpp_attribute") +Index: gcc/testsuite/c-c++-common/cpp/pr92296-2.c +=================================================================== +--- a/src/gcc/testsuite/c-c++-common/cpp/pr92296-2.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/c-c++-common/cpp/pr92296-2.c (.../branches/gcc-8-branch) +@@ -0,0 +1,73 @@ ++/* PR preprocessor/92296 */ ++/* { dg-do preprocess } */ ++/* { dg-options "-Wno-builtin-macro-redefined" } */ ++ ++#pragma push_macro("__TIMESTAMP__") ++#undef __TIMESTAMP__ ++#define __TIMESTAMP__ "Thu Oct 31 12:00:00 2019" ++timestamp1 = __TIMESTAMP__ ++#pragma pop_macro("__TIMESTAMP__") ++timestamp2 = __TIMESTAMP__ ++ ++#pragma push_macro("__TIME__") ++#undef __TIME__ ++#define __TIME__ "12:00:00" ++time1 = __TIME__ ++#pragma pop_macro("__TIME__") ++time2 = __TIME__ ++ ++#pragma push_macro("__DATE__") ++#undef __DATE__ ++#define __DATE__ "Oct 31 2019" ++date1 = __DATE__ ++#pragma pop_macro("__DATE__") ++date2 = __DATE__ ++ ++#pragma push_macro("__FILE__") ++#undef __FILE__ ++#define __FILE__ "pr92296-3.c" ++file1 = __FILE__ /* { dg-final { scan-file pr92296-2.i "file1 = \"pr92296-3.c\"" } } */ ++#pragma pop_macro("__FILE__") ++file2 = __FILE__ /* { dg-final { scan-file-not pr92296-2.i "file2 = \"pr92296-3.c\"" } } */ ++ ++#pragma push_macro("__BASE_FILE__") ++#undef __BASE_FILE__ ++#define __BASE_FILE__ "pr92296-4.c" ++filebase1 = __BASE_FILE__ /* { dg-final { scan-file pr92296-2.i "filebase1 = \"pr92296-4.c\"" } } */ ++#pragma pop_macro("__BASE_FILE__") ++filebase2 = __BASE_FILE__ /* { dg-final { scan-file-not pr92296-2.i "filebase2 = \"pr92296-4.c\"" } } */ ++ ++#pragma push_macro("__LINE__") ++#undef __LINE__ /* { dg-warning "undefining" } */ ++#define __LINE__ 142 ++line1 = __LINE__ /* { dg-final { scan-file pr92296-2.i "line1 = 142" } } */ ++#pragma pop_macro("__LINE__") ++line2 = __LINE__ /* { dg-final { scan-file pr92296-2.i "line2 = 45" } } */ ++ ++#pragma push_macro("__INCLUDE_LEVEL__") ++#undef __INCLUDE_LEVEL__ /* { dg-warning "undefining" } */ ++#define __INCLUDE_LEVEL__ 42 ++includelevel1 = __INCLUDE_LEVEL__ /* { dg-final { scan-file pr92296-2.i "includelevel1 = 42" } } */ ++#pragma pop_macro("__INCLUDE_LEVEL__") ++includelevel2 = __INCLUDE_LEVEL__ /* { dg-final { scan-file pr92296-2.i "includelevel2 = 0" } } */ ++ ++#pragma push_macro("__COUNTER__") ++#undef __COUNTER__ /* { dg-warning "undefining" } */ ++#define __COUNTER__ 172 ++counter1 = __COUNTER__ /* { dg-final { scan-file pr92296-2.i "counter1 = 172" } } */ ++#pragma pop_macro("__COUNTER__") ++counter2 = __COUNTER__ /* { dg-final { scan-file-not pr92296-2.i "counter2 = 172" } } */ ++ ++#pragma push_macro("__has_attribute") ++#undef __has_attribute /* { dg-warning "undefining" } */ ++#define __has_attribute(x) 0 ++hasattr1 = __has_attribute(noreturn) /* { dg-final { scan-file pr92296-2.i "hasattr1 = 0" } } */ ++#pragma pop_macro("__has_attribute") ++hasattr2 = __has_attribute(noreturn) /* { dg-final { scan-file-not pr92296-2.i "hasattr2 = 0" } } */ ++ ++#pragma push_macro("__has_cpp_attribute") ++#undef __has_cpp_attribute /* { dg-warning "undefining" } */ ++#define __has_cpp_attribute(x) 0 ++hasattrcpp1 = __has_cpp_attribute(noreturn) /* { dg-final { scan-file pr92296-2.i "hasattrcpp1 = 0" } } */ ++#pragma pop_macro("__has_cpp_attribute") ++hasattrcpp2 = __has_cpp_attribute(noreturn) /* { dg-final { scan-file-not pr92296-2.i "hasattrcpp2 = 0" } } */ +Index: gcc/testsuite/c-c++-common/pr90108.c +=================================================================== +--- a/src/gcc/testsuite/c-c++-common/pr90108.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/c-c++-common/pr90108.c (.../branches/gcc-8-branch) +@@ -0,0 +1,6 @@ ++/* PR c++/90108 */ ++/* { dg-do compile } */ ++/* { dg-options "--param ggc-min-heapsize=0" } */ ++ ++typedef unsigned int a __attribute__ ((__aligned__(8), __may_alias__)); ++typedef unsigned int a __attribute__ ((__aligned__(8), __may_alias__)); +Index: gcc/testsuite/c-c++-common/gomp/pr88588.c +=================================================================== +--- a/src/gcc/testsuite/c-c++-common/gomp/pr88588.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/c-c++-common/gomp/pr88588.c (.../branches/gcc-8-branch) +@@ -0,0 +1,18 @@ ++/* PR middle-end/88588 */ ++/* { dg-do compile } */ ++/* { dg-options "-fopenmp -O1" } */ ++ ++int *v; ++ ++#pragma omp declare simd ++void ++foo (int x) ++{ ++ int *a = &x; ++ ++ for (;;) ++ { ++ *v = *a; ++ a = v; ++ } ++} +Index: gcc/testsuite/c-c++-common/gomp/pr91401-2.c +=================================================================== +--- a/src/gcc/testsuite/c-c++-common/gomp/pr91401-2.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/c-c++-common/gomp/pr91401-2.c (.../branches/gcc-8-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/pr90954.c +=================================================================== +--- a/src/gcc/testsuite/c-c++-common/gomp/pr90954.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/c-c++-common/gomp/pr90954.c (.../branches/gcc-8-branch) +@@ -0,0 +1,27 @@ ++/* PR sanitizer/90954 */ ++/* { dg-do compile } */ ++/* { dg-options "-fopenmp -fsanitize=undefined" } */ ++ ++float v; ++int i; ++ ++void ++foo (float x, float y) ++{ ++ #pragma omp atomic ++ v += x / y; ++} ++ ++void ++bar (int x, int y) ++{ ++ #pragma omp atomic ++ i += x / y; ++} ++ ++void ++baz (int x, int y) ++{ ++ #pragma omp atomic ++ i *= (x << y); ++} +Index: gcc/testsuite/c-c++-common/gomp/pr91401-1.c +=================================================================== +--- a/src/gcc/testsuite/c-c++-common/gomp/pr91401-1.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/c-c++-common/gomp/pr91401-1.c (.../branches/gcc-8-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/pr53633-2.c +=================================================================== +--- a/src/gcc/testsuite/c-c++-common/pr53633-2.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/c-c++-common/pr53633-2.c (.../branches/gcc-8-branch) +@@ -0,0 +1,19 @@ ++/* { dg-do compile } */ ++/* { dg-require-effective-target naked_functions } */ ++/* { dg-options "-O2 -Wall" } */ ++/* Check that we do not get warnings about missing return statements ++ or bogus looking noreturn functions. */ ++static int __attribute__((naked)) ++foo (void) ++{ ++ __asm__ (""); ++} ++ ++static int __attribute__((naked,noreturn)) ++bar (void) ++{ ++ __asm__ (""); ++} ++ ++int foo_caller (void) { return foo (); } ++int bar_caller (void) { return bar (); } +Index: gcc/testsuite/c-c++-common/unroll-6.c +=================================================================== +--- a/src/gcc/testsuite/c-c++-common/unroll-6.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/c-c++-common/unroll-6.c (.../branches/gcc-8-branch) +@@ -0,0 +1,9 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O -fno-tree-loop-optimize" } */ ++ ++void test (void) ++{ ++ #pragma GCC unroll 2 ++ for (int nv = 0; nv <= 2; nv += 2) ++ {} ++} +Index: gcc/testsuite/c-c++-common/pr89933.c +=================================================================== +--- a/src/gcc/testsuite/c-c++-common/pr89933.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/c-c++-common/pr89933.c (.../branches/gcc-8-branch) +@@ -0,0 +1,5 @@ ++/* PR c/89933 */ ++/* { dg-do compile } */ ++ ++typedef unsigned int a __attribute__ ((__aligned__(8), __may_alias__)); ++typedef unsigned int a __attribute__ ((__aligned__(8), __may_alias__)); +Index: gcc/testsuite/c-c++-common/unroll-7.c +=================================================================== +--- a/src/gcc/testsuite/c-c++-common/unroll-7.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/c-c++-common/unroll-7.c (.../branches/gcc-8-branch) +@@ -0,0 +1,11 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O -fno-tree-dominator-opts" } */ ++ ++int nv; ++ ++void test (void) ++{ ++ #pragma GCC unroll 2 ++ for (nv = 0; nv < 1; ++nv) ++ {} ++} +Index: gcc/testsuite/c-c++-common/pr89946.c +=================================================================== +--- a/src/gcc/testsuite/c-c++-common/pr89946.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/testsuite/c-c++-common/pr89946.c (.../branches/gcc-8-branch) +@@ -0,0 +1,7 @@ ++/* PR c/89946 */ ++ ++__attribute__((patchable_function_entry (-1))) void foo (void) {} /* { dg-warning "'patchable_function_entry' attribute argument '-1' is not an integer constant" } */ ++__attribute__((patchable_function_entry (5, -5))) void bar (void) {} /* { dg-warning "'patchable_function_entry' attribute argument '-5' is not an integer constant" } */ ++int i, j; ++__attribute__((patchable_function_entry (i))) void baz (void) {} /* { dg-warning "'patchable_function_entry' attribute argument 'i' is not an integer constant" } */ ++__attribute__((patchable_function_entry (2, j))) void qux (void) {} /* { dg-warning "'patchable_function_entry' attribute argument 'j' is not an integer constant" } */ +Index: gcc/objcp/ChangeLog +=================================================================== +--- a/src/gcc/objcp/ChangeLog (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/objcp/ChangeLog (.../branches/gcc-8-branch) +@@ -1,3 +1,11 @@ ++2019-08-29 Jakub Jelinek <jakub@redhat.com> ++ ++ Backported from mainline ++ 2019-05-10 Jakub Jelinek <jakub@redhat.com> ++ ++ PR pch/90326 ++ * config-lang.in (gtfiles): Don't add c-family/c-cppbuiltin.c. ++ + 2019-02-22 Release Manager + + * GCC 8.3.0 released. +Index: gcc/objcp/config-lang.in +=================================================================== +--- a/src/gcc/objcp/config-lang.in (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/objcp/config-lang.in (.../branches/gcc-8-branch) +@@ -52,7 +52,6 @@ + gtfiles="$gtfiles \ + \$(srcdir)/objc/objc-act.h \ + \$(srcdir)/objc/objc-map.h \ +-\$(srcdir)/c-family/c-cppbuiltin.c \ + \$(srcdir)/objc/objc-act.c \ + \$(srcdir)/objc/objc-gnu-runtime-abi-01.c \ + \$(srcdir)/objc/objc-next-runtime-abi-01.c \ +Index: gcc/cp/typeck.c +=================================================================== +--- a/src/gcc/cp/typeck.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/cp/typeck.c (.../branches/gcc-8-branch) +@@ -40,6 +40,7 @@ + #include "stringpool.h" + #include "attribs.h" + #include "asan.h" ++#include "gimplify.h" + + static tree cp_build_addr_expr_strict (tree, tsubst_flags_t); + static tree cp_build_function_call (tree, tree, tsubst_flags_t); +@@ -1383,6 +1384,11 @@ + template parameters set, they can't be equal. */ + if (!comp_template_parms_position (t1, t2)) + return false; ++ /* If T1 and T2 don't represent the same class template deduction, ++ they aren't equal. */ ++ if (CLASS_PLACEHOLDER_TEMPLATE (t1) ++ != CLASS_PLACEHOLDER_TEMPLATE (t2)) ++ return false; + /* Constrained 'auto's are distinct from parms that don't have the same + constraints. */ + if (!equivalent_placeholder_constraints (t1, t2)) +@@ -2437,6 +2443,12 @@ + /* A static data member. */ + result = member; + mark_exp_read (object); ++ ++ if (tree wrap = maybe_get_tls_wrapper_call (result)) ++ /* Replace an evaluated use of the thread_local variable with ++ a call to its wrapper. */ ++ result = wrap; ++ + /* If OBJECT has side-effects, they are supposed to occur. */ + if (TREE_SIDE_EFFECTS (object)) + result = build2 (COMPOUND_EXPR, TREE_TYPE (result), object, result); +@@ -5747,18 +5759,17 @@ + return c_common_truthvalue_conversion (input_location, expr); + } + +-/* Just like cp_truthvalue_conversion, but we want a CLEANUP_POINT_EXPR. */ ++/* Just like cp_truthvalue_conversion, but we want a CLEANUP_POINT_EXPR. This ++ is a low-level function; most callers should use maybe_convert_cond. */ + + tree + condition_conversion (tree expr) + { + tree t; +- /* Anything that might happen in a template should go through +- maybe_convert_cond. */ +- gcc_assert (!processing_template_decl); + t = perform_implicit_conversion_flags (boolean_type_node, expr, + tf_warning_or_error, LOOKUP_NORMAL); +- t = fold_build_cleanup_point_expr (boolean_type_node, t); ++ if (!processing_template_decl) ++ t = fold_build_cleanup_point_expr (boolean_type_node, t); + return t; + } + +@@ -7983,8 +7994,6 @@ + /* Produce (a ? (b = rhs) : (c = rhs)) + except that the RHS goes through a save-expr + so the code to compute it is only emitted once. */ +- tree cond; +- + if (VOID_TYPE_P (TREE_TYPE (rhs))) + { + if (complain & tf_error) +@@ -7999,13 +8008,21 @@ + if (!lvalue_or_else (lhs, lv_assign, complain)) + return error_mark_node; + +- cond = build_conditional_expr +- (input_location, TREE_OPERAND (lhs, 0), +- cp_build_modify_expr (loc, TREE_OPERAND (lhs, 1), +- modifycode, rhs, complain), +- cp_build_modify_expr (loc, TREE_OPERAND (lhs, 2), +- modifycode, rhs, complain), +- complain); ++ tree op1 = cp_build_modify_expr (loc, TREE_OPERAND (lhs, 1), ++ modifycode, rhs, complain); ++ /* When sanitizing undefined behavior, even when rhs doesn't need ++ stabilization at this point, the sanitization might add extra ++ SAVE_EXPRs in there and so make sure there is no tree sharing ++ in the rhs, otherwise those SAVE_EXPRs will have initialization ++ only in one of the two branches. */ ++ if (sanitize_flags_p (SANITIZE_UNDEFINED ++ | SANITIZE_UNDEFINED_NONDEFAULT)) ++ rhs = unshare_expr (rhs); ++ tree op2 = cp_build_modify_expr (loc, TREE_OPERAND (lhs, 2), ++ modifycode, rhs, complain); ++ tree cond = build_conditional_expr (input_location, ++ TREE_OPERAND (lhs, 0), op1, op2, ++ complain); + + if (cond == error_mark_node) + return cond; +@@ -9092,8 +9109,10 @@ + tree base = DECL_DECOMP_BASE (whats_returned); + if (TREE_CODE (TREE_TYPE (base)) == REFERENCE_TYPE) + { +- 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; + } + } + if (TREE_CODE (valtype) == REFERENCE_TYPE) +Index: gcc/cp/init.c +=================================================================== +--- a/src/gcc/cp/init.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/cp/init.c (.../branches/gcc-8-branch) +@@ -419,6 +419,15 @@ + if (ftype == error_mark_node) + continue; + ++ /* Ignore flexible array members for value initialization. */ ++ if (TREE_CODE (ftype) == ARRAY_TYPE ++ && !COMPLETE_TYPE_P (ftype) ++ && !TYPE_DOMAIN (ftype) ++ && COMPLETE_TYPE_P (TREE_TYPE (ftype)) ++ && (next_initializable_field (DECL_CHAIN (field)) ++ == NULL_TREE)) ++ continue; ++ + /* We could skip vfields and fields of types with + user-defined constructors, but I think that won't improve + performance at all; it should be simpler in general just +@@ -2269,8 +2278,11 @@ + || TREE_CODE (init) == STRING_CST))) + break; + /* Don't return a CONSTRUCTOR for a variable with partial run-time +- initialization, since it doesn't represent the entire value. */ +- if (TREE_CODE (init) == CONSTRUCTOR ++ initialization, since it doesn't represent the entire value. ++ Similarly for VECTOR_CSTs created by cp_folding those ++ CONSTRUCTORs. */ ++ if ((TREE_CODE (init) == CONSTRUCTOR ++ || TREE_CODE (init) == VECTOR_CST) + && !DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P (decl)) + break; + /* If the variable has a dynamic initializer, don't use its +Index: gcc/cp/class.c +=================================================================== +--- a/src/gcc/cp/class.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/cp/class.c (.../branches/gcc-8-branch) +@@ -5171,7 +5171,9 @@ + for (ovl_iterator iter (get_class_binding_direct + (t, assign_op_identifier)); + iter; ++iter) +- if ((!user_p || !DECL_ARTIFICIAL (*iter)) && move_fn_p (*iter)) ++ if ((!user_p || !DECL_ARTIFICIAL (*iter)) ++ && DECL_CONTEXT (*iter) == t ++ && move_fn_p (*iter)) + return true; + + return false; +Index: gcc/cp/decl.c +=================================================================== +--- a/src/gcc/cp/decl.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/cp/decl.c (.../branches/gcc-8-branch) +@@ -2163,13 +2163,33 @@ + if (TYPE_NAME (TREE_TYPE (newdecl)) == newdecl) + { + tree remove = TREE_TYPE (newdecl); +- for (tree t = TYPE_MAIN_VARIANT (remove); ; +- t = TYPE_NEXT_VARIANT (t)) +- if (TYPE_NEXT_VARIANT (t) == remove) +- { +- TYPE_NEXT_VARIANT (t) = TYPE_NEXT_VARIANT (remove); +- break; +- } ++ if (TYPE_MAIN_VARIANT (remove) == remove) ++ { ++ gcc_assert (TYPE_NEXT_VARIANT (remove) == NULL_TREE); ++ /* If remove is the main variant, no need to remove that ++ from the list. One of the DECL_ORIGINAL_TYPE ++ variants, e.g. created for aligned attribute, might still ++ refer to the newdecl TYPE_DECL though, so remove that one ++ in that case. */ ++ if (tree orig = DECL_ORIGINAL_TYPE (newdecl)) ++ if (orig != remove) ++ for (tree t = TYPE_MAIN_VARIANT (orig); t; ++ t = TYPE_MAIN_VARIANT (t)) ++ if (TYPE_NAME (TYPE_NEXT_VARIANT (t)) == newdecl) ++ { ++ TYPE_NEXT_VARIANT (t) ++ = TYPE_NEXT_VARIANT (TYPE_NEXT_VARIANT (t)); ++ break; ++ } ++ } ++ else ++ for (tree t = TYPE_MAIN_VARIANT (remove); ; ++ t = TYPE_NEXT_VARIANT (t)) ++ if (TYPE_NEXT_VARIANT (t) == remove) ++ { ++ TYPE_NEXT_VARIANT (t) = TYPE_NEXT_VARIANT (remove); ++ break; ++ } + } + } + else if (merge_attr) +@@ -5616,6 +5636,7 @@ + be merged. */ + TREE_PUBLIC (decl) = 0; + DECL_COMMON (decl) = 0; ++ DECL_INTERFACE_KNOWN (decl) = 1; + const char *msg; + if (DECL_INLINE_VAR_P (decl)) + msg = G_("sorry: semantics of inline variable " +@@ -8326,7 +8347,7 @@ + (acquire_name, build_function_type_list (integer_type_node, + TREE_TYPE (guard_addr), + NULL_TREE), +- NULL_TREE, ECF_NOTHROW | ECF_LEAF); ++ NULL_TREE, ECF_NOTHROW); + if (!release_fn || !abort_fn) + vfntype = build_function_type_list (void_type_node, + TREE_TYPE (guard_addr), +@@ -8333,7 +8354,7 @@ + NULL_TREE); + if (!release_fn) + release_fn = push_library_fn (release_name, vfntype, NULL_TREE, +- ECF_NOTHROW | ECF_LEAF); ++ ECF_NOTHROW); + if (!abort_fn) + abort_fn = push_library_fn (abort_name, vfntype, NULL_TREE, + ECF_NOTHROW | ECF_LEAF); +Index: gcc/cp/method.c +=================================================================== +--- a/src/gcc/cp/method.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/cp/method.c (.../branches/gcc-8-branch) +@@ -1201,6 +1201,8 @@ + expr = assignable_expr (to, from); + else if (trivial && from && TREE_CHAIN (from)) + return error_mark_node; // only 0- and 1-argument ctors can be trivial ++ else if (TREE_CODE (to) == ARRAY_TYPE && !TYPE_DOMAIN (to)) ++ return error_mark_node; // can't construct an array of unknown bound + else + expr = constructible_expr (to, from); + return expr; +Index: gcc/cp/ChangeLog +=================================================================== +--- a/src/gcc/cp/ChangeLog (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/cp/ChangeLog (.../branches/gcc-8-branch) +@@ -1,3 +1,293 @@ ++2019-11-21 Jakub Jelinek <jakub@redhat.com> ++ ++ Backported from mainline ++ 2019-10-22 Jakub Jelinek <jakub@redhat.com> ++ ++ PR tree-optimization/85887 ++ * decl.c (expand_static_init): Drop ECF_LEAF from __cxa_guard_acquire ++ and __cxa_guard_release. ++ ++ 2019-10-29 Jakub Jelinek <jakub@redhat.com> ++ ++ 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. ++ ++ 2019-10-04 Jakub Jelinek <jakub@redhat.com> ++ ++ PR c++/91974 ++ * cp-gimplify.c (cp_gimplify_expr) <case CALL_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-08-09 Jakub Jelinek <jakub@redhat.com> ++ ++ 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-11-05 Jason Merrill <jason@redhat.com> ++ ++ PR c++/88075 ++ * parser.c (cp_parser_decl_specifier_seq): Support C++20 ++ concept-definition syntax without 'bool'. ++ ++2019-10-22 Marek Polacek <polacek@redhat.com> ++ ++ Backported from mainline ++ 2019-10-21 Marek Polacek <polacek@redhat.com> ++ ++ 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. ++ ++2019-09-03 Iain Sandoe <iain@sandoe.co.uk> ++ ++ Backported from mainline ++ 2019-08-23 Iain Sandoe <iain@sandoe.co.uk> ++ ++ 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-30 Richard Biener <rguenther@suse.de> ++ ++ Backport from mainline ++ 2019-02-21 Richard Biener <rguenther@suse.de> ++ ++ PR middle-end/89392 ++ * vtable-class-hierarchy.c (vtv_generate_init_routine): Do not ++ make symtab process new functions here. ++ ++2019-08-29 Jakub Jelinek <jakub@redhat.com> ++ ++ Backported from mainline ++ 2019-06-21 Jakub Jelinek <jakub@redhat.com> ++ ++ PR c++/90950 ++ * semantics.c (finish_omp_clauses): Don't reject references to ++ incomplete types if processing_template_decl. ++ ++ 2019-05-15 Jakub Jelinek <jakub@redhat.com> ++ ++ PR debug/90197 ++ * cp-gimplify.c (genericize_cp_loop): Emit a DEBUG_BEGIN_STMT ++ before the condition (or if missing or constant non-zero at the end ++ of the loop. Emit a DEBUG_BEGIN_STMT before the increment expression ++ if any. Don't call protected_set_expr_location on incr if it already ++ has a location. ++ ++ 2019-05-10 Jakub Jelinek <jakub@redhat.com> ++ ++ PR pch/90326 ++ * config-lang.in (gtfiles): Remove c-family/c-lex.c, add ++ c-family/c-cppbuiltin.c. ++ ++2019-08-15 Jonathan Wakely <jwakely@redhat.com> ++ ++ Backport from mainline. ++ 2019-08-14 Jonathan Wakely <jwakely@redhat.com> ++ ++ PR c++/91436 ++ * name-lookup.c (get_std_name_hint): Fix min_dialect field for ++ complex_literals and make_unique entries. ++ ++2019-08-01 Marek Polacek <polacek@redhat.com> ++ ++ Backported from mainline ++ 2018-06-12 Jason Merrill <jason@redhat.com> ++ ++ PR c++/86098 - ICE with template placeholder for TTP. ++ * typeck.c (structural_comptypes) [TEMPLATE_TYPE_PARM]: Check ++ CLASS_PLACEHOLDER_TEMPLATE. ++ ++2019-06-11 Jakub Jelinek <jakub@redhat.com> ++ ++ PR c++/90810 ++ * init.c (constant_value_1): Handle VECTOR_CST DECL_INITIAL for ++ !DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P decls like CONSTRUCTOR. ++ ++2019-05-22 Eric Botcazou <ebotcazou@adacore.com> ++ ++ Backport from mainline ++ 2018-05-10 Eric Botcazou <ebotcazou@adacore.com> ++ ++ PR c++/85400 ++ * decl2.c (adjust_var_decl_tls_model): New static function. ++ (comdat_linkage): Call it on a variable. ++ (maybe_make_one_only): Likewise. ++ ++2019-05-20 Jonathan Wakely <jwakely@redhat.com> ++ ++ Backported from mainline ++ 2019-05-20 Jonathan Wakely <jwakely@redhat.com> ++ ++ PR c++/90532 Ensure __is_constructible(T[]) is false ++ * method.c (is_xible_helper): Return error_mark_node for construction ++ of an array of unknown bound. ++ ++2019-05-07 Marek Polacek <polacek@redhat.com> ++ ++ Backported from mainline ++ 2019-02-27 Marek Polacek <polacek@redhat.com> ++ ++ PR c++/88857 - ICE with value-initialization of argument in template. ++ * call.c (convert_like_real): Don't call build_value_init in template. ++ ++ 2019-03-25 Marek Polacek <polacek@redhat.com> ++ ++ PR c++/89214 - ICE when initializing aggregates with bases. ++ * typeck2.c (digest_init_r): Warn about object slicing instead of ++ crashing. ++ ++ 2019-02-27 Marek Polacek <polacek@redhat.com> ++ ++ PR c++/89511 - ICE with using-declaration and unscoped enumerator. ++ * parser.c (cp_parser_using_declaration): For an unscoped enum ++ only use its context if it's not a function declaration. ++ ++ 2019-03-25 Marek Polacek <polacek@redhat.com> ++ ++ PR c++/89705 - ICE with reference binding with conversion function. ++ * call.c (reference_binding): If the result of the conversion function ++ is a prvalue of non-class type, use the cv-unqualified type. ++ ++ 2019-03-29 Marek Polacek <polacek@redhat.com> ++ ++ PR c++/89876 - ICE with deprecated conversion. ++ * call.c (convert_like_real): Only give warnings with tf_warning. ++ ++2019-04-30 Jakub Jelinek <jakub@redhat.com> ++ ++ Backported from mainline ++ 2019-04-19 Jakub Jelinek <jakub@redhat.com> ++ ++ PR c++/90108 ++ * decl.c (duplicate_decls): If remove is main variant and ++ DECL_ORIGINAL_TYPE is some other type, remove a DECL_ORIGINAL_TYPE ++ variant that has newdecl as TYPE_NAME if any. ++ ++ 2019-04-12 Jakub Jelinek <jakub@redhat.com> ++ ++ PR c/89933 ++ * decl.c (duplicate_decls): When newdecl's type is its main variant, ++ don't try to remove it from the variant list, but instead assert ++ it has no variants. ++ ++ 2019-03-29 Jakub Jelinek <jakub@redhat.com> ++ ++ PR sanitizer/89869 ++ * typeck.c: Include gimplify.h. ++ (cp_build_modify_expr) <case COND_EXPR>: Unshare rhs before using it ++ for second time. Formatting fixes. ++ ++ 2019-03-26 Jakub Jelinek <jakub@redhat.com> ++ ++ PR c++/89796 ++ * semantics.c (finish_omp_atomic): Add warning_sentinel for ++ -Wunused-value around finish_expr_stmt call. ++ ++ 2019-03-22 Jakub Jelinek <jakub@redhat.com> ++ ++ PR c++/60702 ++ * cp-tree.h (get_tls_wrapper_fn): Remove declaration. ++ (maybe_get_tls_wrapper_call): Declare. ++ * decl2.c (get_tls_wrapper_fn): Make static. ++ (maybe_get_tls_wrapper_call): New function. ++ * typeck.c (build_class_member_access_expr): Handle accesses to TLS ++ variables. ++ * semantics.c (finish_qualified_id_expr): Likewise. ++ (finish_id_expression_1): Use maybe_get_tls_wrapper_call. ++ * pt.c (tsubst_copy_and_build): Likewise. ++ ++ 2019-03-21 Jakub Jelinek <jakub@redhat.com> ++ ++ PR c++/89767 ++ * parser.c (cp_parser_lambda_introducer): Add ids and first_capture_id ++ variables, check for duplicates in this function. ++ * lambda.c (add_capture): Don't check for duplicates nor use ++ IDENTIFIER_MARKED. ++ (register_capture_members): Don't clear IDENTIFIER_MARKED here. ++ ++ 2019-03-14 Jakub Jelinek <jakub@redhat.com> ++ ++ PR c++/89512 ++ * semantics.c (finish_qualified_id_expr): Reject variable templates. ++ ++ 2019-03-06 Jakub Jelinek <jakub@redhat.com> ++ ++ PR c++/87148 ++ * init.c (build_value_init_noctor): Ignore flexible array members. ++ ++ 2019-02-20 Jakub Jelinek <jakub@redhat.com> ++ ++ PR c++/89403 ++ * decl2.c (c_parse_final_cleanups): Move TREE_ASM_WRITTEN setting ++ for flag_syntax_only from here... ++ * semantics.c (expand_or_defer_fn_1): ... here. ++ ++ PR c++/89405 ++ * decl.c (maybe_commonize_var): When clearing TREE_PUBLIC and ++ DECL_COMMON, set DECL_INTERFACE_KNOWN. ++ ++2019-03-08 Jason Merrill <jason@redhat.com> ++ ++ PR c++/88820 - ICE with CTAD and member template used in DMI. ++ * pt.c (do_class_deduction): Handle parm used as its own arg. ++ ++ PR c++/88869 - C++17 ICE with CTAD and explicit specialization. ++ * pt.c (do_class_deduction): Don't include explicit specialization ++ args in outer_args. ++ ++ PR c++/88419 - C++17 ICE with class template arg deduction. ++ * pt.c (make_template_placeholder): Set TYPE_CANONICAL after ++ CLASS_PLACEHOLDER_TEMPLATE. ++ ++ PR c++/88690 - C++17 ICE with empty base in aggregate. ++ * typeck2.c (process_init_constructor_record): Skip trivial ++ initialization of an empty base. ++ ++ PR c++/87921 - wrong error with inline static data member. ++ * decl2.c (c_parse_final_cleanups): Don't force out uninstantiated ++ inline static data members. ++ ++ PR c++/89381 - implicit copy and using-declaration. ++ * class.c (classtype_has_move_assign_or_move_ctor_p): Don't consider ++ op= brought in by a using-declaration. ++ ++ PR c++/89576 - if constexpr of lambda capture. ++ * semantics.c (maybe_convert_cond): Do convert a non-dependent ++ condition in a template. ++ * typeck.c (condition_conversion): Handle being called in a ++ template. ++ ++ PR c++/89422 - ICE with -g and lambda in default arg in template. ++ * pt.c (tsubst_function_decl): SET_DECL_FRIEND_CONTEXT sooner. ++ ++ PR c++/87513 - 'sorry' mangling PMF template-id. ++ * mangle.c (write_expression): Handle SCOPE_REF to BASELINK. ++ ++ PR c++/88183 - ICE with .* fold-expression. ++ * pt.c (fold_expression) [DOTSTAR_EXPR]: Remove special handling. ++ ++2019-03-07 Jakub Jelinek <jakub@redhat.com> ++ ++ PR c++/89585 ++ * parser.c (cp_parser_asm_definition): Parse asm qualifiers even ++ at toplevel, but diagnose them. ++ ++2019-02-26 Marek Polacek <polacek@redhat.com> ++ ++ Backported from mainline ++ 2019-02-11 Marek Polacek <polacek@redhat.com> ++ ++ PR c++/89212 - ICE converting nullptr to pointer-to-member-function. ++ * pt.c (tsubst_copy_and_build) <case CONSTRUCTOR>: Return early for ++ null member pointer value. ++ + 2019-02-22 Release Manager + + * GCC 8.3.0 released. +Index: gcc/cp/cp-gimplify.c +=================================================================== +--- a/src/gcc/cp/cp-gimplify.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/cp/cp-gimplify.c (.../branches/gcc-8-branch) +@@ -202,11 +202,13 @@ + tree blab, clab; + tree exit = NULL; + tree stmt_list = NULL; ++ tree debug_begin = NULL; + + blab = begin_bc_block (bc_break, start_locus); + clab = begin_bc_block (bc_continue, start_locus); + +- protected_set_expr_location (incr, start_locus); ++ if (EXPR_LOCATION (incr) == UNKNOWN_LOCATION) ++ protected_set_expr_location (incr, start_locus); + + cp_walk_tree (&cond, cp_genericize_r, data, NULL); + cp_walk_tree (&body, cp_genericize_r, data, NULL); +@@ -213,6 +215,13 @@ + cp_walk_tree (&incr, cp_genericize_r, data, NULL); + *walk_subtrees = 0; + ++ if (MAY_HAVE_DEBUG_MARKER_STMTS ++ && (!cond || !integer_zerop (cond))) ++ { ++ debug_begin = build0 (DEBUG_BEGIN_STMT, void_type_node); ++ SET_EXPR_LOCATION (debug_begin, EXPR_LOC_OR_LOC (cond, start_locus)); ++ } ++ + if (cond && TREE_CODE (cond) != INTEGER_CST) + { + /* If COND is constant, don't bother building an exit. If it's false, +@@ -225,10 +234,24 @@ + } + + if (exit && cond_is_first) +- append_to_statement_list (exit, &stmt_list); ++ { ++ append_to_statement_list (debug_begin, &stmt_list); ++ debug_begin = NULL_TREE; ++ append_to_statement_list (exit, &stmt_list); ++ } + append_to_statement_list (body, &stmt_list); + finish_bc_block (&stmt_list, bc_continue, clab); +- append_to_statement_list (incr, &stmt_list); ++ if (incr) ++ { ++ if (MAY_HAVE_DEBUG_MARKER_STMTS) ++ { ++ tree d = build0 (DEBUG_BEGIN_STMT, void_type_node); ++ SET_EXPR_LOCATION (d, EXPR_LOC_OR_LOC (incr, start_locus)); ++ append_to_statement_list (d, &stmt_list); ++ } ++ append_to_statement_list (incr, &stmt_list); ++ } ++ append_to_statement_list (debug_begin, &stmt_list); + if (exit && !cond_is_first) + append_to_statement_list (exit, &stmt_list); + +@@ -752,6 +775,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)) +Index: gcc/cp/typeck2.c +=================================================================== +--- a/src/gcc/cp/typeck2.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/cp/typeck2.c (.../branches/gcc-8-branch) +@@ -1142,8 +1142,29 @@ + { + tree elt = CONSTRUCTOR_ELT (init, 0)->value; + if (reference_related_p (type, TREE_TYPE (elt))) +- /* We should have fixed this in reshape_init. */ +- gcc_unreachable (); ++ { ++ /* In C++17, aggregates can have bases, thus participate in ++ aggregate initialization. In the following case: ++ ++ struct B { int c; }; ++ struct D : B { }; ++ D d{{D{{42}}}}; ++ ++ there's an extra set of braces, so the D temporary initializes ++ the first element of d, which is the B base subobject. The base ++ of type B is copy-initialized from the D temporary, causing ++ object slicing. */ ++ tree field = next_initializable_field (TYPE_FIELDS (type)); ++ if (field && DECL_FIELD_IS_BASE (field)) ++ { ++ if (warning_at (loc, 0, "initializing a base class of type %qT " ++ "results in object slicing", TREE_TYPE (field))) ++ inform (loc, "remove %<{ }%> around initializer"); ++ } ++ else ++ /* We should have fixed this in reshape_init. */ ++ gcc_unreachable (); ++ } + } + + if (BRACE_ENCLOSED_INITIALIZER_P (init) +@@ -1538,6 +1559,13 @@ + } + } + ++ if (DECL_SIZE (field) && integer_zerop (DECL_SIZE (field)) ++ && !TREE_SIDE_EFFECTS (next)) ++ /* Don't add trivial initialization of an empty base/field to the ++ constructor, as they might not be ordered the way the back-end ++ expects. */ ++ continue; ++ + /* If this is a bitfield, now convert to the lowered type. */ + if (type != TREE_TYPE (field)) + next = cp_convert_and_check (TREE_TYPE (field), next, complain); +Index: gcc/cp/pt.c +=================================================================== +--- a/src/gcc/cp/pt.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/cp/pt.c (.../branches/gcc-8-branch) +@@ -11732,8 +11732,6 @@ + { + case COMPOUND_EXPR: + return build_x_compound_expr (input_location, left, right, complain); +- case DOTSTAR_EXPR: +- return build_m_component_ref (left, right, complain); + default: + return build_x_binary_op (input_location, code, + left, TREE_CODE (left), +@@ -13023,6 +13021,11 @@ + set_constraints (r, ci); + } + ++ if (DECL_FRIEND_P (t) && DECL_FRIEND_CONTEXT (t)) ++ SET_DECL_FRIEND_CONTEXT (r, ++ tsubst (DECL_FRIEND_CONTEXT (t), ++ args, complain, in_decl)); ++ + /* Set up the DECL_TEMPLATE_INFO for R. There's no need to do + this in the special friend case mentioned above where + GEN_TMPL is NULL. */ +@@ -13084,11 +13087,6 @@ + && !grok_op_properties (r, /*complain=*/true)) + return error_mark_node; + +- if (DECL_FRIEND_P (t) && DECL_FRIEND_CONTEXT (t)) +- SET_DECL_FRIEND_CONTEXT (r, +- tsubst (DECL_FRIEND_CONTEXT (t), +- args, complain, in_decl)); +- + /* Possibly limit visibility based on template args. */ + DECL_VISIBILITY (r) = VISIBILITY_DEFAULT; + if (DECL_VISIBILITY_SPECIFIED (t)) +@@ -18797,6 +18795,12 @@ + looked up by digest_init. */ + process_index_p = !(type && MAYBE_CLASS_TYPE_P (type)); + ++ if (null_member_pointer_value_p (t)) ++ { ++ gcc_assert (same_type_p (type, TREE_TYPE (t))); ++ RETURN (t); ++ } ++ + n = vec_safe_copy (CONSTRUCTOR_ELTS (t)); + newlen = vec_safe_length (n); + FOR_EACH_VEC_SAFE_ELT (n, idx, ce) +@@ -18890,17 +18894,10 @@ + { + tree r = tsubst_copy (t, args, complain, in_decl); + /* ??? We're doing a subset of finish_id_expression here. */ +- if (VAR_P (r) +- && !processing_template_decl +- && !cp_unevaluated_operand +- && (TREE_STATIC (r) || DECL_EXTERNAL (r)) +- && CP_DECL_THREAD_LOCAL_P (r)) +- { +- if (tree wrap = get_tls_wrapper_fn (r)) +- /* Replace an evaluated use of the thread_local variable with +- a call to its wrapper. */ +- r = build_cxx_call (wrap, 0, NULL, tf_warning_or_error); +- } ++ if (tree wrap = maybe_get_tls_wrapper_call (r)) ++ /* Replace an evaluated use of the thread_local variable with ++ a call to its wrapper. */ ++ r = wrap; + else if (outer_automatic_var_p (r)) + r = process_outer_var_ref (r, complain); + +@@ -25998,8 +25995,10 @@ + tree + make_template_placeholder (tree tmpl) + { +- tree t = make_auto_1 (DECL_NAME (tmpl), true); ++ tree t = make_auto_1 (DECL_NAME (tmpl), false); + CLASS_PLACEHOLDER_TEMPLATE (t) = tmpl; ++ /* Our canonical type depends on the placeholder. */ ++ TYPE_CANONICAL (t) = canonical_type_parameter (t); + return t; + } + +@@ -26534,6 +26533,9 @@ + error ("non-class template %qT used without template arguments", tmpl); + return error_mark_node; + } ++ if (init && TREE_TYPE (init) == ptype) ++ /* Using the template parm as its own argument. */ ++ return ptype; + + tree type = TREE_TYPE (tmpl); + +@@ -26601,7 +26603,7 @@ + + tree outer_args = NULL_TREE; + if (DECL_CLASS_SCOPE_P (tmpl) +- && CLASSTYPE_TEMPLATE_INFO (DECL_CONTEXT (tmpl))) ++ && CLASSTYPE_TEMPLATE_INSTANTIATION (DECL_CONTEXT (tmpl))) + { + outer_args = CLASSTYPE_TI_ARGS (DECL_CONTEXT (tmpl)); + type = TREE_TYPE (most_general_template (tmpl)); +Index: gcc/cp/semantics.c +=================================================================== +--- a/src/gcc/cp/semantics.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/cp/semantics.c (.../branches/gcc-8-branch) +@@ -645,10 +645,13 @@ + return NULL_TREE; + + /* Wait until we instantiate templates before doing conversion. */ +- if (processing_template_decl) ++ if (processing_template_decl ++ && (type_dependent_expression_p (cond) ++ /* For GCC 8 only convert non-dependent condition in a lambda. */ ++ || !current_lambda_expr ())) + return cond; + +- if (warn_sequence_point) ++ if (warn_sequence_point && !processing_template_decl) + verify_sequence_points (cond); + + /* Do the conversion. */ +@@ -2099,6 +2102,14 @@ + expr = build_offset_ref (qualifying_class, expr, /*address_p=*/false, + complain); + } ++ else if (!template_p ++ && TREE_CODE (expr) == TEMPLATE_DECL ++ && !DECL_FUNCTION_TEMPLATE_P (expr)) ++ { ++ if (complain & tf_error) ++ error ("%qE missing template arguments", expr); ++ return error_mark_node; ++ } + else + { + /* In a template, return a SCOPE_REF for most qualified-ids +@@ -2114,6 +2125,8 @@ + expr = build_qualified_name (TREE_TYPE (expr), + qualifying_class, expr, + template_p); ++ else if (tree wrap = maybe_get_tls_wrapper_call (expr)) ++ expr = wrap; + + expr = convert_from_reference (expr); + } +@@ -3709,18 +3722,10 @@ + *non_integral_constant_expression_p = true; + } + +- tree wrap; +- if (VAR_P (decl) +- && !cp_unevaluated_operand +- && !processing_template_decl +- && (TREE_STATIC (decl) || DECL_EXTERNAL (decl)) +- && CP_DECL_THREAD_LOCAL_P (decl) +- && (wrap = get_tls_wrapper_fn (decl))) +- { +- /* Replace an evaluated use of the thread_local variable with +- a call to its wrapper. */ +- decl = build_cxx_call (wrap, 0, NULL, tf_warning_or_error); +- } ++ if (tree wrap = maybe_get_tls_wrapper_call (decl)) ++ /* Replace an evaluated use of the thread_local variable with ++ a call to its wrapper. */ ++ decl = wrap; + else if (TREE_CODE (decl) == TEMPLATE_ID_EXPR + && !dependent_p + && variable_template_p (TREE_OPERAND (decl, 0))) +@@ -4265,7 +4270,12 @@ + /* There's no reason to do any of the work here if we're only doing + semantic analysis; this code just generates RTL. */ + if (flag_syntax_only) +- return false; ++ { ++ /* Pretend that this function has been written out so that we don't try ++ to expand it again. */ ++ TREE_ASM_WRITTEN (fn) = 1; ++ return false; ++ } + + return true; + } +@@ -7305,7 +7315,8 @@ + t = require_complete_type (t); + if (t == error_mark_node) + remove = true; +- else if (TREE_CODE (TREE_TYPE (t)) == REFERENCE_TYPE ++ else if (!processing_template_decl ++ && TREE_CODE (TREE_TYPE (t)) == REFERENCE_TYPE + && !complete_type_or_else (TREE_TYPE (TREE_TYPE (t)), t)) + remove = true; + } +@@ -8452,6 +8463,11 @@ + stmt = build2 (OMP_ATOMIC, void_type_node, integer_zero_node, stmt); + OMP_ATOMIC_SEQ_CST (stmt) = seq_cst; + } ++ ++ /* Avoid -Wunused-value warnings here, the whole construct has side-effects ++ and even if it might be wrapped from fold-const.c or c-omp.c wrapped ++ in some tree that appears to be unused, the value is not unused. */ ++ warning_sentinel w (warn_unused_value); + finish_expr_stmt (stmt); + } + +Index: gcc/cp/decl2.c +=================================================================== +--- a/src/gcc/cp/decl2.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/cp/decl2.c (.../branches/gcc-8-branch) +@@ -1838,6 +1838,17 @@ + } + } + ++/* Adjust the TLS model on variable DECL if need be, typically after ++ the linkage of DECL has been modified. */ ++ ++static void ++adjust_var_decl_tls_model (tree decl) ++{ ++ if (CP_DECL_THREAD_LOCAL_P (decl) ++ && !lookup_attribute ("tls_model", DECL_ATTRIBUTES (decl))) ++ set_decl_tls_model (decl, decl_default_tls_model (decl)); ++} ++ + /* Set DECL up to have the closest approximation of "initialized common" + linkage available. */ + +@@ -1888,6 +1899,9 @@ + + if (TREE_PUBLIC (decl)) + DECL_COMDAT (decl) = 1; ++ ++ if (VAR_P (decl)) ++ adjust_var_decl_tls_model (decl); + } + + /* For win32 we also want to put explicit instantiations in +@@ -1926,6 +1940,8 @@ + /* Mark it needed so we don't forget to emit it. */ + node->forced_by_abi = true; + TREE_USED (decl) = 1; ++ ++ adjust_var_decl_tls_model (decl); + } + } + } +@@ -3357,7 +3373,7 @@ + VAR and then returns a reference to VAR. The wrapper function is used + in place of VAR everywhere VAR is mentioned. */ + +-tree ++static tree + get_tls_wrapper_fn (tree var) + { + /* Only C++11 TLS vars need this wrapper fn. */ +@@ -3409,6 +3425,22 @@ + return fn; + } + ++/* If EXPR is a thread_local variable that should be wrapped by init ++ wrapper function, return a call to that function, otherwise return ++ NULL. */ ++ ++tree ++maybe_get_tls_wrapper_call (tree expr) ++{ ++ if (VAR_P (expr) ++ && !processing_template_decl ++ && !cp_unevaluated_operand ++ && CP_DECL_THREAD_LOCAL_P (expr)) ++ if (tree wrap = get_tls_wrapper_fn (expr)) ++ return build_cxx_call (wrap, 0, NULL, tf_warning_or_error); ++ return NULL; ++} ++ + /* At EOF, generate the definition for the TLS wrapper function FN: + + T& var_wrapper() { +@@ -4888,11 +4920,6 @@ + /* Generate RTL for this function now that we know we + need it. */ + expand_or_defer_fn (decl); +- /* If we're compiling -fsyntax-only pretend that this +- function has been written out so that we don't try to +- expand it again. */ +- if (flag_syntax_only) +- TREE_ASM_WRITTEN (decl) = 1; + reconsider = true; + } + } +@@ -4905,7 +4932,10 @@ + { + if (var_finalized_p (decl) || DECL_REALLY_EXTERN (decl) + /* Don't write it out if we haven't seen a definition. */ +- || (DECL_IN_AGGR_P (decl) && !DECL_INLINE_VAR_P (decl))) ++ || (DECL_IN_AGGR_P (decl) && !DECL_INLINE_VAR_P (decl)) ++ /* Or haven't instantiated it. */ ++ || (DECL_TEMPLATE_INSTANTIATION (decl) ++ && !DECL_TEMPLATE_INSTANTIATED (decl))) + continue; + import_export_decl (decl); + /* If this static data member is needed, provide it to the +Index: gcc/cp/parser.c +=================================================================== +--- a/src/gcc/cp/parser.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/cp/parser.c (.../branches/gcc-8-branch) +@@ -10266,6 +10266,11 @@ + first = false; + } + ++ hash_set<tree> *ids = NULL; ++#if GCC_VERSION >= 8000 ++ char ids_buf[sizeof (hash_set<tree>) + __alignof__ (hash_set<tree>) - 1]; ++#endif ++ tree first_capture_id = NULL_TREE; + while (cp_lexer_next_token_is_not (parser->lexer, CPP_CLOSE_SQUARE)) + { + cp_token* capture_token; +@@ -10301,11 +10306,14 @@ + pedwarn (loc, 0, "explicit by-copy capture of %<this%> redundant " + "with by-copy capture default"); + cp_lexer_consume_token (parser->lexer); +- add_capture (lambda_expr, +- /*id=*/this_identifier, +- /*initializer=*/finish_this_expr (), +- /*by_reference_p=*/true, +- explicit_init_p); ++ if (LAMBDA_EXPR_THIS_CAPTURE (lambda_expr)) ++ pedwarn (input_location, 0, ++ "already captured %qD in lambda expression", ++ this_identifier); ++ else ++ add_capture (lambda_expr, /*id=*/this_identifier, ++ /*initializer=*/finish_this_expr (), ++ /*by_reference_p=*/true, explicit_init_p); + continue; + } + +@@ -10319,11 +10327,14 @@ + "-std=c++17 or -std=gnu++17"); + cp_lexer_consume_token (parser->lexer); + cp_lexer_consume_token (parser->lexer); +- add_capture (lambda_expr, +- /*id=*/this_identifier, +- /*initializer=*/finish_this_expr (), +- /*by_reference_p=*/false, +- explicit_init_p); ++ if (LAMBDA_EXPR_THIS_CAPTURE (lambda_expr)) ++ pedwarn (input_location, 0, ++ "already captured %qD in lambda expression", ++ this_identifier); ++ else ++ add_capture (lambda_expr, /*id=*/this_identifier, ++ /*initializer=*/finish_this_expr (), ++ /*by_reference_p=*/false, explicit_init_p); + continue; + } + +@@ -10445,11 +10456,35 @@ + "default", capture_id); + } + +- add_capture (lambda_expr, +- capture_id, +- capture_init_expr, +- /*by_reference_p=*/capture_kind == BY_REFERENCE, +- explicit_init_p); ++ /* Check for duplicates. ++ Optimize for the zero or one explicit captures cases and only create ++ the hash_set after adding second capture. */ ++ bool found = false; ++ if (ids && ids->elements ()) ++ found = ids->add (capture_id); ++ else if (first_capture_id == NULL_TREE) ++ first_capture_id = capture_id; ++ else if (capture_id == first_capture_id) ++ found = true; ++ else ++ { ++#if GCC_VERSION >= 8000 ++ ids = new (ids_buf ++ + (-(uintptr_t) ids_buf ++ & (__alignof__ (hash_set <tree>) - 1))) hash_set <tree>; ++#else ++ ids = new hash_set <tree>; ++#endif ++ ids->add (first_capture_id); ++ ids->add (capture_id); ++ } ++ if (found) ++ pedwarn (input_location, 0, ++ "already captured %qD in lambda expression", capture_id); ++ else ++ add_capture (lambda_expr, capture_id, capture_init_expr, ++ /*by_reference_p=*/capture_kind == BY_REFERENCE, ++ explicit_init_p); + + /* If there is any qualification still in effect, clear it + now; we will be starting fresh with the next capture. */ +@@ -10458,6 +10493,13 @@ + parser->object_scope = NULL_TREE; + } + ++ if (ids) ++#if GCC_VERSION >= 8000 ++ ids->~hash_set <tree> (); ++#else ++ delete ids; ++#endif ++ + cp_parser_require (parser, CPP_CLOSE_SQUARE, RT_CLOSE_SQUARE); + } + +@@ -13510,6 +13552,15 @@ + case RID_CONCEPT: + ds = ds_concept; + cp_lexer_consume_token (parser->lexer); ++ /* In C++20 a concept definition is just 'concept name = expr;' ++ Support that syntax by pretending we've seen 'bool'. */ ++ if (cp_lexer_next_token_is (parser->lexer, CPP_NAME) ++ && cp_lexer_nth_token_is (parser->lexer, 2, CPP_EQ)) ++ { ++ cp_parser_set_decl_spec_type (decl_specs, boolean_type_node, ++ token, /*type_definition*/false); ++ decl_specs->any_type_specifiers_p = true; ++ } + break; + + /* function-specifier: +@@ -18773,7 +18824,8 @@ + /*is_declaration=*/true); + if (!qscope) + qscope = global_namespace; +- else if (UNSCOPED_ENUM_P (qscope)) ++ else if (UNSCOPED_ENUM_P (qscope) ++ && !TYPE_FUNCTION_SCOPE_P (qscope)) + qscope = CP_TYPE_CONTEXT (qscope); + + if (access_declaration_p && cp_parser_error_occurred (parser)) +@@ -19125,8 +19177,9 @@ + location_t volatile_loc = UNKNOWN_LOCATION; + location_t inline_loc = UNKNOWN_LOCATION; + location_t goto_loc = UNKNOWN_LOCATION; ++ location_t first_loc = UNKNOWN_LOCATION; + +- if (cp_parser_allow_gnu_extensions_p (parser) && parser->in_function_body) ++ if (cp_parser_allow_gnu_extensions_p (parser)) + for (;;) + { + cp_token *token = cp_lexer_peek_token (parser->lexer); +@@ -19152,6 +19205,8 @@ + } + else + inline_loc = loc; ++ if (!first_loc) ++ first_loc = loc; + cp_lexer_consume_token (parser->lexer); + continue; + +@@ -19163,6 +19218,8 @@ + } + else + goto_loc = loc; ++ if (!first_loc) ++ first_loc = loc; + cp_lexer_consume_token (parser->lexer); + continue; + +@@ -19182,6 +19239,12 @@ + bool inline_p = (inline_loc != UNKNOWN_LOCATION); + bool goto_p = (goto_loc != UNKNOWN_LOCATION); + ++ if (!parser->in_function_body && (inline_p || goto_p)) ++ { ++ error_at (first_loc, "asm qualifier outside of function body"); ++ inline_p = goto_p = false; ++ } ++ + /* Look for the opening `('. */ + if (!cp_parser_require (parser, CPP_OPEN_PAREN, RT_OPEN_PAREN)) + return; +@@ -33599,8 +33662,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; + +@@ -38680,7 +38745,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/config-lang.in +=================================================================== +--- a/src/gcc/cp/config-lang.in (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/cp/config-lang.in (.../branches/gcc-8-branch) +@@ -37,7 +37,7 @@ + \$(srcdir)/c-family/c-pragma.h \$(srcdir)/cp/decl.h \ + \$(srcdir)/cp/parser.h \ + \$(srcdir)/c-family/c-common.c \$(srcdir)/c-family/c-format.c \ +-\$(srcdir)/c-family/c-lex.c \$(srcdir)/c-family/c-pragma.c \ ++\$(srcdir)/c-family/c-cppbuiltin.c \$(srcdir)/c-family/c-pragma.c \ + \$(srcdir)/cp/call.c \$(srcdir)/cp/class.c \$(srcdir)/cp/constexpr.c \ + \$(srcdir)/cp/cp-gimplify.c \ + \$(srcdir)/cp/cp-lang.c \$(srcdir)/cp/cp-objcp-common.c \ +Index: gcc/cp/call.c +=================================================================== +--- a/src/gcc/cp/call.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/cp/call.c (.../branches/gcc-8-branch) +@@ -1767,6 +1767,9 @@ + && DECL_CONV_FN_P (t->cand->fn)) + { + tree ftype = TREE_TYPE (TREE_TYPE (t->cand->fn)); ++ /* A prvalue of non-class type is cv-unqualified. */ ++ if (TREE_CODE (ftype) != REFERENCE_TYPE && !CLASS_TYPE_P (ftype)) ++ ftype = cv_unqualified (ftype); + int sflags = (flags|LOOKUP_NO_CONVERSION)&~LOOKUP_NO_TEMP_BIND; + conversion *new_second + = reference_binding (rto, ftype, NULL_TREE, c_cast_p, +@@ -6775,7 +6778,8 @@ + /* If we're initializing from {}, it's value-initialization. */ + if (BRACE_ENCLOSED_INITIALIZER_P (expr) + && CONSTRUCTOR_NELTS (expr) == 0 +- && TYPE_HAS_DEFAULT_CONSTRUCTOR (totype)) ++ && TYPE_HAS_DEFAULT_CONSTRUCTOR (totype) ++ && !processing_template_decl) + { + bool direct = CONSTRUCTOR_IS_DIRECT_INIT (expr); + if (abstract_virtuals_error_sfinae (NULL_TREE, totype, complain)) +@@ -7110,7 +7114,8 @@ + + case ck_qual: + /* Warn about deprecated conversion if appropriate. */ +- string_conv_p (totype, expr, 1); ++ if (complain & tf_warning) ++ string_conv_p (totype, expr, 1); + break; + + case ck_ptr: +Index: gcc/cp/lambda.c +=================================================================== +--- a/src/gcc/cp/lambda.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/cp/lambda.c (.../branches/gcc-8-branch) +@@ -612,19 +612,6 @@ + IDENTIFIER_LENGTH (id) + 1); + name = get_identifier (buf); + +- /* If TREE_TYPE isn't set, we're still in the introducer, so check +- for duplicates. */ +- if (!LAMBDA_EXPR_CLOSURE (lambda)) +- { +- if (IDENTIFIER_MARKED (name)) +- { +- pedwarn (input_location, 0, +- "already captured %qD in lambda expression", id); +- return NULL_TREE; +- } +- IDENTIFIER_MARKED (name) = true; +- } +- + if (variadic) + type = make_pack_expansion (type); + +@@ -685,8 +672,6 @@ + if (PACK_EXPANSION_P (field)) + field = PACK_EXPANSION_PATTERN (field); + +- /* We set this in add_capture to avoid duplicates. */ +- IDENTIFIER_MARKED (DECL_NAME (field)) = false; + finish_member_declaration (field); + } + +Index: gcc/cp/vtable-class-hierarchy.c +=================================================================== +--- a/src/gcc/cp/vtable-class-hierarchy.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/cp/vtable-class-hierarchy.c (.../branches/gcc-8-branch) +@@ -1191,8 +1191,6 @@ + gimplify_function_tree (vtv_fndecl); + cgraph_node::add_new_function (vtv_fndecl, false); + +- symtab->process_new_functions (); +- + if (flag_vtable_verify == VTV_PREINIT_PRIORITY && !TARGET_PECOFF) + assemble_vtv_preinit_initializer (vtv_fndecl); + +Index: gcc/cp/mangle.c +=================================================================== +--- a/src/gcc/cp/mangle.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/cp/mangle.c (.../branches/gcc-8-branch) +@@ -3047,7 +3047,8 @@ + { + scope = TREE_OPERAND (expr, 0); + member = TREE_OPERAND (expr, 1); +- gcc_assert (!BASELINK_P (member)); ++ if (BASELINK_P (member)) ++ member = BASELINK_FUNCTIONS (member); + } + else + { +Index: gcc/cp/cp-tree.h +=================================================================== +--- a/src/gcc/cp/cp-tree.h (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/cp/cp-tree.h (.../branches/gcc-8-branch) +@@ -6390,7 +6390,7 @@ + extern tree get_guard (tree); + extern tree get_guard_cond (tree, bool); + extern tree set_guard (tree); +-extern tree get_tls_wrapper_fn (tree); ++extern tree maybe_get_tls_wrapper_call (tree); + extern void mark_needed (tree); + extern bool decl_needed_p (tree); + extern void note_vague_linkage_fn (tree); +Index: gcc/cp/name-lookup.c +=================================================================== +--- a/src/gcc/cp/name-lookup.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/cp/name-lookup.c (.../branches/gcc-8-branch) +@@ -5509,7 +5509,7 @@ + {"bitset", "<bitset>", cxx11}, + /* <complex>. */ + {"complex", "<complex>", cxx98}, +- {"complex_literals", "<complex>", cxx98}, ++ {"complex_literals", "<complex>", cxx14}, + /* <condition_variable>. */ + {"condition_variable", "<condition_variable>", cxx11}, + {"condition_variable_any", "<condition_variable>", cxx11}, +@@ -5571,7 +5571,7 @@ + {"multimap", "<map>", cxx98}, + /* <memory>. */ + {"make_shared", "<memory>", cxx11}, +- {"make_unique", "<memory>", cxx11}, ++ {"make_unique", "<memory>", cxx14}, + {"shared_ptr", "<memory>", cxx11}, + {"unique_ptr", "<memory>", cxx11}, + {"weak_ptr", "<memory>", cxx11}, +Index: gcc/tree-ssa-ccp.c +=================================================================== +--- a/src/gcc/tree-ssa-ccp.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/tree-ssa-ccp.c (.../branches/gcc-8-branch) +@@ -2082,8 +2082,6 @@ + visited); + else if (chkp_gimple_call_builtin_p (stmt, BUILT_IN_CHKP_BNDRET)) + continue; +- else +- gcc_assert (is_gimple_debug (stmt)); + } + + /* Advance the iterator to the previous non-debug gimple statement in the same +@@ -2108,9 +2106,9 @@ + /* Find a BUILT_IN_STACK_SAVE dominating gsi_stmt (I), and insert + a clobber of VAR before each matching BUILT_IN_STACK_RESTORE. + +- It is possible that BUILT_IN_STACK_SAVE cannot be find in a dominator when a +- previous pass (such as DOM) duplicated it along multiple paths to a BB. In +- that case the function gives up without inserting the clobbers. */ ++ It is possible that BUILT_IN_STACK_SAVE cannot be found in a dominator when ++ a previous pass (such as DOM) duplicated it along multiple paths to a BB. ++ In that case the function gives up without inserting the clobbers. */ + + static void + insert_clobbers_for_var (gimple_stmt_iterator i, tree var) +Index: gcc/cgraphclones.c +=================================================================== +--- a/src/gcc/cgraphclones.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/cgraphclones.c (.../branches/gcc-8-branch) +@@ -938,6 +938,11 @@ + If non-NULL BLOCK_TO_COPY determine what basic blocks to copy. + If non_NULL NEW_ENTRY determine new entry BB of the clone. + ++ If TARGET_ATTRIBUTES is non-null, when creating a new declaration, ++ add the attributes to DECL_ATTRIBUTES. And call valid_attribute_p ++ that will promote value of the attribute DECL_FUNCTION_SPECIFIC_TARGET ++ of the declaration. ++ + Return the new version's cgraph node. */ + + cgraph_node * +@@ -945,7 +950,7 @@ + (vec<cgraph_edge *> redirect_callers, + vec<ipa_replace_map *, va_gc> *tree_map, bitmap args_to_skip, + bool skip_return, bitmap bbs_to_copy, basic_block new_entry_block, +- const char *suffix) ++ const char *suffix, tree target_attributes) + { + tree old_decl = decl; + cgraph_node *new_version_node = NULL; +@@ -968,6 +973,19 @@ + SET_DECL_ASSEMBLER_NAME (new_decl, DECL_NAME (new_decl)); + SET_DECL_RTL (new_decl, NULL); + ++ if (target_attributes) ++ { ++ DECL_ATTRIBUTES (new_decl) = target_attributes; ++ ++ location_t saved_loc = input_location; ++ tree v = TREE_VALUE (target_attributes); ++ input_location = DECL_SOURCE_LOCATION (new_decl); ++ bool r = targetm.target_option.valid_attribute_p (new_decl, NULL, v, 0); ++ input_location = saved_loc; ++ if (!r) ++ return NULL; ++ } ++ + /* When the old decl was a con-/destructor make sure the clone isn't. */ + DECL_STATIC_CONSTRUCTOR (new_decl) = 0; + DECL_STATIC_DESTRUCTOR (new_decl) = 0; +Index: gcc/tree-ssa-loop-ivopts.c +=================================================================== +--- a/src/gcc/tree-ssa-loop-ivopts.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/tree-ssa-loop-ivopts.c (.../branches/gcc-8-branch) +@@ -582,6 +582,9 @@ + /* The common candidates. */ + vec<iv_common_cand *> iv_common_cands; + ++ /* Hash map recording base object information of tree exp. */ ++ hash_map<tree, tree> *base_object_map; ++ + /* The maximum invariant variable id. */ + unsigned max_inv_var_id; + +@@ -1093,6 +1096,7 @@ + data->vcands.create (20); + data->inv_expr_tab = new hash_table<iv_inv_expr_hasher> (10); + data->name_expansion_cache = NULL; ++ data->base_object_map = NULL; + data->iv_common_cand_tab = new hash_table<iv_common_cand_hasher> (10); + data->iv_common_cands.create (20); + decl_rtl_to_reset.create (20); +@@ -1099,55 +1103,61 @@ + gcc_obstack_init (&data->iv_obstack); + } + +-/* Returns a memory object to that EXPR points. In case we are able to +- determine that it does not point to any such object, NULL is returned. */ ++/* walk_tree callback for determine_base_object. */ + + static tree +-determine_base_object (tree expr) ++determine_base_object_1 (tree *tp, int *walk_subtrees, void *wdata) + { +- enum tree_code code = TREE_CODE (expr); +- tree base, obj; +- +- /* If this is a pointer casted to any type, we need to determine +- the base object for the pointer; so handle conversions before +- throwing away non-pointer expressions. */ +- if (CONVERT_EXPR_P (expr)) +- return determine_base_object (TREE_OPERAND (expr, 0)); +- +- if (!POINTER_TYPE_P (TREE_TYPE (expr))) +- return NULL_TREE; +- +- switch (code) ++ tree_code code = TREE_CODE (*tp); ++ tree obj = NULL_TREE; ++ if (code == ADDR_EXPR) + { +- case INTEGER_CST: +- return NULL_TREE; +- +- case ADDR_EXPR: +- obj = TREE_OPERAND (expr, 0); +- base = get_base_address (obj); +- ++ tree base = get_base_address (TREE_OPERAND (*tp, 0)); + if (!base) +- return expr; ++ obj = *tp; ++ else if (TREE_CODE (base) != MEM_REF) ++ obj = fold_convert (ptr_type_node, build_fold_addr_expr (base)); ++ } ++ else if (code == SSA_NAME && POINTER_TYPE_P (TREE_TYPE (*tp))) ++ obj = fold_convert (ptr_type_node, *tp); + +- if (TREE_CODE (base) == MEM_REF) +- return determine_base_object (TREE_OPERAND (base, 0)); ++ if (!obj) ++ { ++ if (!EXPR_P (*tp)) ++ *walk_subtrees = 0; + +- return fold_convert (ptr_type_node, +- build_fold_addr_expr (base)); ++ return NULL_TREE; ++ } ++ /* Record special node for multiple base objects and stop. */ ++ if (*static_cast<tree *> (wdata)) ++ { ++ *static_cast<tree *> (wdata) = integer_zero_node; ++ return integer_zero_node; ++ } ++ /* Record the base object and continue looking. */ ++ *static_cast<tree *> (wdata) = obj; ++ return NULL_TREE; ++} + +- case POINTER_PLUS_EXPR: +- return determine_base_object (TREE_OPERAND (expr, 0)); ++/* Returns a memory object to that EXPR points with caching. Return NULL if we ++ are able to determine that it does not point to any such object; specially ++ return integer_zero_node if EXPR contains multiple base objects. */ + +- case PLUS_EXPR: +- case MINUS_EXPR: +- /* Pointer addition is done solely using POINTER_PLUS_EXPR. */ +- gcc_unreachable (); ++static tree ++determine_base_object (struct ivopts_data *data, tree expr) ++{ ++ tree *slot, obj = NULL_TREE; ++ if (data->base_object_map) ++ { ++ if ((slot = data->base_object_map->get(expr)) != NULL) ++ return *slot; ++ } ++ else ++ data->base_object_map = new hash_map<tree, tree>; + +- default: +- if (POLY_INT_CST_P (expr)) +- return NULL_TREE; +- return fold_convert (ptr_type_node, expr); +- } ++ (void) walk_tree_without_duplicates (&expr, determine_base_object_1, &obj); ++ data->base_object_map->put (expr, obj); ++ return obj; + } + + /* Return true if address expression with non-DECL_P operand appears +@@ -1205,7 +1215,7 @@ + } + + iv->base = base; +- iv->base_object = determine_base_object (base); ++ iv->base_object = determine_base_object (data, base); + iv->step = step; + iv->biv_p = false; + iv->nonlin_use = NULL; +@@ -7487,6 +7497,8 @@ + delete data->inv_expr_tab; + data->inv_expr_tab = NULL; + free_affine_expand_cache (&data->name_expansion_cache); ++ if (data->base_object_map) ++ delete data->base_object_map; + delete data->iv_common_cand_tab; + data->iv_common_cand_tab = NULL; + data->iv_common_cands.release (); +Index: gcc/df-core.c +=================================================================== +--- a/src/gcc/df-core.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/df-core.c (.../branches/gcc-8-branch) +@@ -298,12 +298,12 @@ + + Artificial defs and uses occur both at the beginning and ends of blocks. + +- For blocks that area at the destination of eh edges, the ++ For blocks that are at the destination of eh edges, the + artificial uses and defs occur at the beginning. The defs relate + to the registers specified in EH_RETURN_DATA_REGNO and the uses +- relate to the registers specified in ED_USES. Logically these ++ relate to the registers specified in EH_USES. Logically these + defs and uses should really occur along the eh edge, but there is +- no convenient way to do this. Artificial edges that occur at the ++ no convenient way to do this. Artificial defs that occur at the + beginning of the block have the DF_REF_AT_TOP flag set. + + Artificial uses occur at the end of all blocks. These arise from +Index: gcc/modulo-sched.c +=================================================================== +--- a/src/gcc/modulo-sched.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/modulo-sched.c (.../branches/gcc-8-branch) +@@ -1605,6 +1605,7 @@ + mii = 1; /* Need to pass some estimate of mii. */ + rec_mii = sms_order_nodes (g, mii, node_order, &max_asap); + mii = MAX (res_MII (g), rec_mii); ++ mii = MAX (mii, 1); + maxii = MAX (max_asap, MAXII_FACTOR * mii); + + if (dump_file) +@@ -3004,9 +3005,7 @@ + last_must_precede = next_ps_i; + } + /* The closing branch must be the last in the row. */ +- if (must_precede +- && bitmap_bit_p (must_precede, next_ps_i->id) +- && JUMP_P (ps_rtl_insn (ps, next_ps_i->id))) ++ if (JUMP_P (ps_rtl_insn (ps, next_ps_i->id))) + return false; + + last_in_row = next_ps_i; +Index: gcc/lto-streamer-out.c +=================================================================== +--- a/src/gcc/lto-streamer-out.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/lto-streamer-out.c (.../branches/gcc-8-branch) +@@ -1945,6 +1945,7 @@ + /* Write OMP SIMD related info. */ + streamer_write_hwi (ob, loop->safelen); + streamer_write_hwi (ob, loop->unroll); ++ streamer_write_hwi (ob, loop->owned_clique); + streamer_write_hwi (ob, loop->dont_vectorize); + streamer_write_hwi (ob, loop->force_vectorize); + stream_write_tree (ob, loop->simduid, true); +Index: gcc/xcoffout.c +=================================================================== +--- a/src/gcc/xcoffout.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/xcoffout.c (.../branches/gcc-8-branch) +@@ -64,6 +64,7 @@ + + char *xcoff_bss_section_name; + char *xcoff_private_data_section_name; ++char *xcoff_private_rodata_section_name; + char *xcoff_tls_data_section_name; + char *xcoff_tbss_section_name; + char *xcoff_read_only_section_name; +Index: gcc/tree-ssa-math-opts.c +=================================================================== +--- a/src/gcc/tree-ssa-math-opts.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/tree-ssa-math-opts.c (.../branches/gcc-8-branch) +@@ -334,7 +334,8 @@ + /* Do not recognize x / x as valid division, as we are getting + confused later by replacing all immediate uses x in such + a stmt. */ +- && gimple_assign_rhs1 (use_stmt) != def; ++ && gimple_assign_rhs1 (use_stmt) != def ++ && !stmt_can_throw_internal (use_stmt); + } + + /* Return whether USE_STMT is DEF * DEF. */ +@@ -359,13 +360,12 @@ + { + if (gimple_code (use_stmt) == GIMPLE_ASSIGN + && gimple_assign_rhs_code (use_stmt) == RDIV_EXPR +- && gimple_assign_rhs1 (use_stmt) != gimple_assign_rhs2 (use_stmt)) ++ && gimple_assign_rhs1 (use_stmt) != gimple_assign_rhs2 (use_stmt) ++ && !stmt_can_throw_internal (use_stmt)) + { + tree denominator = gimple_assign_rhs2 (use_stmt); + if (TREE_CODE (denominator) == SSA_NAME) +- { +- return is_square_of (SSA_NAME_DEF_STMT (denominator), def); +- } ++ return is_square_of (SSA_NAME_DEF_STMT (denominator), def); + } + return 0; + } +@@ -603,7 +603,7 @@ + + /* If it is more profitable to optimize 1 / x, don't optimize 1 / (x * x). */ + if (sqrt_recip_count > square_recip_count) +- return; ++ goto out; + + /* Do the expensive part only if we can hope to optimize something. */ + if (count + square_recip_count >= threshold && count >= 1) +@@ -646,6 +646,7 @@ + } + } + ++out: + for (occ = occ_head; occ; ) + occ = free_bb (occ); + +Index: gcc/tree-ssa-dom.c +=================================================================== +--- a/src/gcc/tree-ssa-dom.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/tree-ssa-dom.c (.../branches/gcc-8-branch) +@@ -170,11 +170,10 @@ + gimple *def_stmt = SSA_NAME_DEF_STMT (name); + if (is_gimple_assign (def_stmt)) + { +- /* We know the result of DEF_STMT was zero. See if that allows +- us to deduce anything about the SSA_NAMEs used on the RHS. */ + enum tree_code code = gimple_assign_rhs_code (def_stmt); + switch (code) + { ++ /* If the result of an OR is zero, then its operands are, too. */ + case BIT_IOR_EXPR: + if (integer_zerop (value)) + { +@@ -188,8 +187,7 @@ + } + break; + +- /* We know the result of DEF_STMT was one. See if that allows +- us to deduce anything about the SSA_NAMEs used on the RHS. */ ++ /* If the result of an AND is nonzero, then its operands are, too. */ + case BIT_AND_EXPR: + if (!integer_zerop (value)) + { +@@ -296,7 +294,6 @@ + break; + } + +- + case EQ_EXPR: + case NE_EXPR: + { +@@ -336,7 +333,28 @@ + case NEGATE_EXPR: + { + tree rhs = gimple_assign_rhs1 (def_stmt); +- tree res = fold_build1 (code, TREE_TYPE (rhs), value); ++ tree res; ++ /* If this is a NOT and the operand has a boolean range, then we ++ know its value must be zero or one. We are not supposed to ++ have a BIT_NOT_EXPR for boolean types with precision > 1 in ++ the general case, see e.g. the handling of TRUTH_NOT_EXPR in ++ the gimplifier, but it can be generated by match.pd out of ++ a BIT_XOR_EXPR wrapped in a BIT_AND_EXPR. Now the handling ++ of BIT_AND_EXPR above already forces a specific semantics for ++ boolean types with precision > 1 so we must do the same here, ++ otherwise we could change the semantics of TRUTH_NOT_EXPR for ++ boolean types with precision > 1. */ ++ if (code == BIT_NOT_EXPR ++ && TREE_CODE (rhs) == SSA_NAME ++ && ssa_name_has_boolean_range (rhs)) ++ { ++ if ((TREE_INT_CST_LOW (value) & 1) == 0) ++ res = build_one_cst (TREE_TYPE (rhs)); ++ else ++ res = build_zero_cst (TREE_TYPE (rhs)); ++ } ++ else ++ res = fold_build1 (code, TREE_TYPE (rhs), value); + derive_equivalences (rhs, res, recursion_limit - 1); + break; + } +@@ -598,7 +616,7 @@ + various tables mantained by DOM. Returns the taken edge if + the statement is a conditional with a statically determined + value. */ +- edge optimize_stmt (basic_block, gimple_stmt_iterator); ++ edge optimize_stmt (basic_block, gimple_stmt_iterator *, bool *); + }; + + /* Jump threading, redundancy elimination and const/copy propagation. +@@ -1437,10 +1455,48 @@ + m_avail_exprs_stack->pop_to_marker (); + + edge taken_edge = NULL; ++ /* Initialize visited flag ahead of us, it has undefined state on ++ pass entry. */ + for (gsi = gsi_start_bb (bb); !gsi_end_p (gsi); gsi_next (&gsi)) ++ gimple_set_visited (gsi_stmt (gsi), false); ++ for (gsi = gsi_start_bb (bb); !gsi_end_p (gsi);) + { ++ /* Do not optimize a stmt twice, substitution might end up with ++ _3 = _3 which is not valid. */ ++ if (gimple_visited_p (gsi_stmt (gsi))) ++ { ++ gsi_next (&gsi); ++ continue; ++ } ++ ++ /* Compute range information and optimize the stmt. */ + evrp_range_analyzer.record_ranges_from_stmt (gsi_stmt (gsi), false); +- taken_edge = this->optimize_stmt (bb, gsi); ++ bool removed_p = false; ++ taken_edge = this->optimize_stmt (bb, &gsi, &removed_p); ++ if (!removed_p) ++ gimple_set_visited (gsi_stmt (gsi), true); ++ ++ /* Go back and visit stmts inserted by folding after substituting ++ into the stmt at gsi. */ ++ if (gsi_end_p (gsi)) ++ { ++ gcc_checking_assert (removed_p); ++ gsi = gsi_last_bb (bb); ++ while (!gsi_end_p (gsi) && !gimple_visited_p (gsi_stmt (gsi))) ++ gsi_prev (&gsi); ++ } ++ else ++ { ++ do ++ { ++ gsi_prev (&gsi); ++ } ++ while (!gsi_end_p (gsi) && !gimple_visited_p (gsi_stmt (gsi))); ++ } ++ if (gsi_end_p (gsi)) ++ gsi = gsi_start_bb (bb); ++ else ++ gsi_next (&gsi); + } + + /* Now prepare to process dominated blocks. */ +@@ -1905,7 +1961,8 @@ + condition to an equality condition. */ + + edge +-dom_opt_dom_walker::optimize_stmt (basic_block bb, gimple_stmt_iterator si) ++dom_opt_dom_walker::optimize_stmt (basic_block bb, gimple_stmt_iterator *si, ++ bool *removed_p) + { + gimple *stmt, *old_stmt; + bool may_optimize_p; +@@ -1913,7 +1970,7 @@ + bool was_noreturn; + edge retval = NULL; + +- old_stmt = stmt = gsi_stmt (si); ++ old_stmt = stmt = gsi_stmt (*si); + was_noreturn = is_gimple_call (stmt) && gimple_call_noreturn_p (stmt); + + if (dump_file && (dump_flags & TDF_DETAILS)) +@@ -1936,9 +1993,9 @@ + + /* Try to fold the statement making sure that STMT is kept + up to date. */ +- if (fold_stmt (&si)) ++ if (fold_stmt (si)) + { +- stmt = gsi_stmt (si); ++ stmt = gsi_stmt (*si); + gimple_set_modified (stmt, true); + + if (dump_file && (dump_flags & TDF_DETAILS)) +@@ -1987,8 +2044,8 @@ + && DECL_BUILT_IN_CLASS (callee) == BUILT_IN_NORMAL + && DECL_FUNCTION_CODE (callee) == BUILT_IN_CONSTANT_P) + { +- propagate_tree_value_into_stmt (&si, integer_zero_node); +- stmt = gsi_stmt (si); ++ propagate_tree_value_into_stmt (si, integer_zero_node); ++ stmt = gsi_stmt (*si); + } + } + +@@ -2044,9 +2101,9 @@ + } + + update_stmt_if_modified (stmt); +- eliminate_redundant_computations (&si, m_const_and_copies, ++ eliminate_redundant_computations (si, m_const_and_copies, + m_avail_exprs_stack); +- stmt = gsi_stmt (si); ++ stmt = gsi_stmt (*si); + + /* Perform simple redundant store elimination. */ + if (gimple_assign_single_p (stmt) +@@ -2073,7 +2130,7 @@ + { + basic_block bb = gimple_bb (stmt); + unlink_stmt_vdef (stmt); +- if (gsi_remove (&si, true)) ++ if (gsi_remove (si, true)) + { + bitmap_set_bit (need_eh_cleanup, bb->index); + if (dump_file && (dump_flags & TDF_DETAILS)) +@@ -2080,6 +2137,7 @@ + fprintf (dump_file, " Flagged to clear EH edges.\n"); + } + release_defs (stmt); ++ *removed_p = true; + return retval; + } + } +Index: gcc/xcoffout.h +=================================================================== +--- a/src/gcc/xcoffout.h (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/xcoffout.h (.../branches/gcc-8-branch) +@@ -127,6 +127,7 @@ + + extern char *xcoff_bss_section_name; + extern char *xcoff_private_data_section_name; ++extern char *xcoff_private_rodata_section_name; + extern char *xcoff_tls_data_section_name; + extern char *xcoff_tbss_section_name; + extern char *xcoff_read_only_section_name; +Index: gcc/gimple-ssa-warn-restrict.c +=================================================================== +--- a/src/gcc/gimple-ssa-warn-restrict.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/gimple-ssa-warn-restrict.c (.../branches/gcc-8-branch) +@@ -314,13 +314,9 @@ + offrange[0] += offset_int::from (min, SIGNED); + offrange[1] += offset_int::from (max, SIGNED); + } +- else if (rng == VR_ANTI_RANGE) +- { +- offrange[0] += offset_int::from (max + 1, SIGNED); +- offrange[1] += offset_int::from (min - 1, SIGNED); +- } + else + { ++ /* Handle an anti-range the same as no range at all. */ + gimple *stmt = SSA_NAME_DEF_STMT (offset); + tree type; + if (is_gimple_assign (stmt) +@@ -702,6 +698,10 @@ + offset_int bounds[2] = { maxobjsize, maxobjsize }; + if (dstref->strbounded_p) + { ++ unsigned nargs = gimple_call_num_args (call); ++ if (nargs <= sizeargno) ++ return; ++ + tree size = gimple_call_arg (call, sizeargno); + tree range[2]; + if (get_size_range (size, range, true)) +Index: gcc/lto-wrapper.c +=================================================================== +--- a/src/gcc/lto-wrapper.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/lto-wrapper.c (.../branches/gcc-8-branch) +@@ -1669,7 +1669,9 @@ + struct pex_obj *pex; + char jobs[32]; + +- fprintf (mstream, "all:"); ++ fprintf (mstream, ++ ".PHONY: all\n" ++ "all:"); + for (i = 0; i < nr; ++i) + { + int j = ltrans_priorities[i*2 + 1]; +Index: gcc/tree-ssa-sink.c +=================================================================== +--- a/src/gcc/tree-ssa-sink.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/tree-ssa-sink.c (.../branches/gcc-8-branch) +@@ -229,7 +229,7 @@ + /* If result of comparsion is unknown, preffer EARLY_BB. + Thus use !(...>=..) rather than (...<...) */ + && !(best_bb->count.apply_scale (100, 1) +- > (early_bb->count.apply_scale (threshold, 1)))) ++ >= early_bb->count.apply_scale (threshold, 1))) + return best_bb; + + /* No better block found, so return EARLY_BB, which happens to be the +@@ -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_8_3_0_release) ++++ b/src/gcc/dwarf2out.c (.../branches/gcc-8-branch) +@@ -2875,9 +2875,13 @@ + separate comdat sections since the linker will then be able to + remove duplicates. But not all tools support .debug_types sections + yet. For Dwarf V5 or higher .debug_types doesn't exist any more, +- it is DW_UT_type unit type in .debug_info section. */ ++ it is DW_UT_type unit type in .debug_info section. For late LTO ++ debug there should be almost no types emitted so avoid enabling ++ -fdebug-types-section there. */ + +-#define use_debug_types (dwarf_version >= 4 && flag_debug_types_section) ++#define use_debug_types (dwarf_version >= 4 \ ++ && flag_debug_types_section \ ++ && !in_lto_p) + + /* Various DIE's use offsets relative to the beginning of the + .debug_info section to refer to each other. */ +@@ -3713,7 +3717,7 @@ + static void output_die (dw_die_ref); + static void output_compilation_unit_header (enum dwarf_unit_type); + static void output_comp_unit (dw_die_ref, int, const unsigned char *); +-static void output_comdat_type_unit (comdat_type_node *); ++static void output_comdat_type_unit (comdat_type_node *, bool); + static const char *dwarf2_name (tree, int); + static void add_pubname (tree, dw_die_ref); + static void add_enumerator_pubname (const char *, dw_die_ref); +@@ -9339,7 +9343,6 @@ + } + break; + case dw_val_class_loc_list: +- case dw_val_class_view_list: + if (dwarf_split_debug_info && dwarf_version >= 5) + { + gcc_assert (AT_loc_list (a)->num_assigned); +@@ -9348,6 +9351,9 @@ + else + size += DWARF_OFFSET_SIZE; + break; ++ case dw_val_class_view_list: ++ size += DWARF_OFFSET_SIZE; ++ break; + case dw_val_class_range_list: + if (value_format (a) == DW_FORM_rnglistx) + { +@@ -9425,7 +9431,7 @@ + we use DW_FORM_ref_addr. In DWARF2, DW_FORM_ref_addr + is sized by target address length, whereas in DWARF3 + it's always sized as an offset. */ +- if (use_debug_types) ++ if (AT_ref (a)->comdat_type_p) + size += DWARF_TYPE_SIGNATURE_SIZE; + else if (dwarf_version == 2) + size += DWARF2_ADDR_SIZE; +@@ -9721,12 +9727,12 @@ + gcc_unreachable (); + } + case dw_val_class_loc_list: +- case dw_val_class_view_list: + if (dwarf_split_debug_info + && dwarf_version >= 5 + && AT_loc_list (a)->num_assigned) + return DW_FORM_loclistx; + /* FALLTHRU */ ++ case dw_val_class_view_list: + case dw_val_class_range_list: + /* For range lists in DWARF 5, use DW_FORM_rnglistx from .debug_info.dwo + but in .debug_info use DW_FORM_sec_offset, which is shorter if we +@@ -9869,7 +9875,12 @@ + return DW_FORM_flag; + case dw_val_class_die_ref: + if (AT_ref_external (a)) +- return use_debug_types ? DW_FORM_ref_sig8 : DW_FORM_ref_addr; ++ { ++ if (AT_ref (a)->comdat_type_p) ++ return DW_FORM_ref_sig8; ++ else ++ return DW_FORM_ref_addr; ++ } + else + return DW_FORM_ref; + case dw_val_class_fde_ref: +@@ -11217,7 +11228,8 @@ + /* Output a comdat type unit DIE and its children. */ + + static void +-output_comdat_type_unit (comdat_type_node *node) ++output_comdat_type_unit (comdat_type_node *node, ++ bool early_lto_debug ATTRIBUTE_UNUSED) + { + const char *secname; + char *tmp; +@@ -11244,14 +11256,16 @@ + if (dwarf_version >= 5) + { + if (!dwarf_split_debug_info) +- secname = ".debug_info"; ++ secname = early_lto_debug ? DEBUG_LTO_INFO_SECTION : DEBUG_INFO_SECTION; + else +- secname = ".debug_info.dwo"; ++ secname = (early_lto_debug ++ ? DEBUG_LTO_DWO_INFO_SECTION : DEBUG_DWO_INFO_SECTION); + } + else if (!dwarf_split_debug_info) +- secname = ".debug_types"; ++ secname = early_lto_debug ? ".gnu.debuglto_.debug_types" : ".debug_types"; + else +- secname = ".debug_types.dwo"; ++ secname = (early_lto_debug ++ ? ".gnu.debuglto_.debug_types.dwo" : ".debug_types.dwo"); + + tmp = XALLOCAVEC (char, 4 + DWARF_TYPE_SIGNATURE_SIZE * 2); + sprintf (tmp, dwarf_version >= 5 ? "wi." : "wt."); +@@ -17879,6 +17893,8 @@ + case DW_OP_push_object_address: + case DW_OP_call_frame_cfa: + case DW_OP_GNU_variable_value: ++ case DW_OP_GNU_addr_index: ++ case DW_OP_GNU_const_index: + ++frame_offset_; + break; + +@@ -19661,6 +19677,9 @@ + + case HIGH: + case CONST_FIXED: ++ case MINUS: ++ case SIGN_EXTEND: ++ case ZERO_EXTEND: + return false; + + case MEM: +@@ -22202,19 +22221,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) +@@ -26573,17 +26591,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. + +@@ -31398,7 +31412,7 @@ + ? dl_section_ref + : debug_skeleton_line_section_label)); + +- output_comdat_type_unit (ctnode); ++ output_comdat_type_unit (ctnode, false); + *slot = ctnode; + } + +@@ -32039,7 +32053,7 @@ + ? debug_line_section_label + : debug_skeleton_line_section_label)); + +- output_comdat_type_unit (ctnode); ++ output_comdat_type_unit (ctnode, true); + *slot = ctnode; + } + +Index: gcc/match.pd +=================================================================== +--- a/src/gcc/match.pd (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/match.pd (.../branches/gcc-8-branch) +@@ -2406,6 +2406,13 @@ + && TYPE_UNSIGNED (TREE_TYPE (@1))))) + (view_convert @1))) + ++/* Simplify a view-converted empty constructor. */ ++(simplify ++ (view_convert CONSTRUCTOR@0) ++ (if (TREE_CODE (@0) != SSA_NAME ++ && CONSTRUCTOR_NELTS (@0) == 0) ++ { build_zero_cst (type); })) ++ + /* Re-association barriers around constants and other re-association + barriers can be removed. */ + (simplify +Index: gcc/expr.c +=================================================================== +--- a/src/gcc/expr.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/expr.c (.../branches/gcc-8-branch) +@@ -5187,9 +5187,13 @@ + } + else + { +- rtx from_rtx +- = simplify_gen_subreg (to_mode, result, +- TYPE_MODE (TREE_TYPE (from)), 0); ++ rtx from_rtx; ++ if (MEM_P (result)) ++ from_rtx = change_address (result, to_mode, NULL_RTX); ++ else ++ from_rtx ++ = simplify_gen_subreg (to_mode, result, ++ TYPE_MODE (TREE_TYPE (from)), 0); + if (from_rtx) + { + emit_move_insn (XEXP (to_rtx, 0), +@@ -5258,6 +5262,7 @@ + MEM_VOLATILE_P (to_rtx) = 1; + } + ++ gcc_checking_assert (known_ge (bitpos, 0)); + if (optimize_bitfield_assignment_op (bitsize, bitpos, + bitregion_start, bitregion_end, + mode1, to_rtx, to, from, +@@ -7115,6 +7120,7 @@ + } + + /* Store the value in the bitfield. */ ++ gcc_assert (known_ge (bitpos, 0)); + store_bit_field (target, bitsize, bitpos, + bitregion_start, bitregion_end, + mode, temp, reverse); +@@ -10658,6 +10664,14 @@ + mode2 + = CONSTANT_P (op0) ? TYPE_MODE (TREE_TYPE (tem)) : GET_MODE (op0); + ++ /* Make sure bitpos is not negative, it can wreak havoc later. */ ++ if (maybe_lt (bitpos, 0)) ++ { ++ gcc_checking_assert (offset == NULL_TREE); ++ offset = size_int (bits_to_bytes_round_down (bitpos)); ++ bitpos = num_trailing_bits (bitpos); ++ } ++ + /* If we have either an offset, a BLKmode result, or a reference + outside the underlying object, we must force it to memory. + Such a case can occur in Ada if we have unchecked conversion +@@ -10906,6 +10920,7 @@ + && GET_MODE_CLASS (ext_mode) == MODE_INT) + reversep = TYPE_REVERSE_STORAGE_ORDER (type); + ++ gcc_checking_assert (known_ge (bitpos, 0)); + op0 = extract_bit_field (op0, bitsize, bitpos, unsignedp, + (modifier == EXPAND_STACK_PARM + ? NULL_RTX : target), +Index: gcc/opts.c +=================================================================== +--- a/src/gcc/opts.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/opts.c (.../branches/gcc-8-branch) +@@ -922,6 +922,14 @@ + "linker plugin"); + opts->x_flag_fat_lto_objects = 1; + } ++ ++ /* -gsplit-dwarf isn't compatible with LTO, see PR88389. */ ++ if (opts->x_dwarf_split_debug_info) ++ { ++ inform (loc, "%<-gsplit-dwarf%> is not supported with LTO," ++ " disabling"); ++ opts->x_dwarf_split_debug_info = 0; ++ } + } + + /* We initialize opts->x_flag_split_stack to -1 so that targets can set a +Index: gcc/tree-ssa-loop-ivcanon.c +=================================================================== +--- a/src/gcc/tree-ssa-loop-ivcanon.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/tree-ssa-loop-ivcanon.c (.../branches/gcc-8-branch) +@@ -1177,7 +1177,7 @@ + = niter_desc.may_be_zero && !integer_zerop (niter_desc.may_be_zero); + } + if (TREE_CODE (niter) == INTEGER_CST) +- locus = gimple_location (last_stmt (exit->src)); ++ locus = gimple_location_safe (last_stmt (exit->src)); + else + { + /* For non-constant niter fold may_be_zero into niter again. */ +@@ -1204,7 +1204,7 @@ + niter = find_loop_niter_by_eval (loop, &exit); + + if (exit) +- locus = gimple_location (last_stmt (exit->src)); ++ locus = gimple_location_safe (last_stmt (exit->src)); + + if (TREE_CODE (niter) != INTEGER_CST) + exit = NULL; +Index: gcc/recog.c +=================================================================== +--- a/src/gcc/recog.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/recog.c (.../branches/gcc-8-branch) +@@ -1070,6 +1070,11 @@ + int + address_operand (rtx op, machine_mode mode) + { ++ /* Wrong mode for an address expr. */ ++ if (GET_MODE (op) != VOIDmode ++ && ! SCALAR_INT_MODE_P (GET_MODE (op))) ++ return false; ++ + return memory_address_p (mode, op); + } + +@@ -2695,10 +2700,13 @@ + /* p is used for address_operands. When we are called by + gen_reload, no one will have checked that the address is + strictly valid, i.e., that all pseudos requiring hard regs +- have gotten them. */ +- if (strict <= 0 +- || (strict_memory_address_p (recog_data.operand_mode[opno], +- op))) ++ have gotten them. We also want to make sure we have a ++ valid mode. */ ++ if ((GET_MODE (op) == VOIDmode ++ || SCALAR_INT_MODE_P (GET_MODE (op))) ++ && (strict <= 0 ++ || (strict_memory_address_p ++ (recog_data.operand_mode[opno], op)))) + win = 1; + break; + +Index: gcc/ada/sem_spark.adb +=================================================================== +--- a/src/gcc/ada/sem_spark.adb (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/ada/sem_spark.adb (.../branches/gcc-8-branch) +@@ -971,7 +971,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; +@@ -2379,7 +2379,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/libgnat/system-darwin-ppc.ads +=================================================================== +--- a/src/gcc/ada/libgnat/system-darwin-ppc.ads (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/ada/libgnat/system-darwin-ppc.ads (.../branches/gcc-8-branch) +@@ -158,7 +158,7 @@ + Preallocated_Stacks : constant Boolean := False; + Signed_Zeros : constant Boolean := True; + Stack_Check_Default : constant Boolean := False; +- Stack_Check_Probes : constant Boolean := False; ++ Stack_Check_Probes : constant Boolean := True; + Stack_Check_Limits : constant Boolean := False; + Support_Aggregates : constant Boolean := True; + Support_Atomic_Primitives : constant Boolean := Word_Size = 64; +Index: gcc/ada/ChangeLog +=================================================================== +--- a/src/gcc/ada/ChangeLog (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/ada/ChangeLog (.../branches/gcc-8-branch) +@@ -1,3 +1,111 @@ ++2019-11-25 Eric Botcazou <ebotcazou@adacore.com> ++ ++ PR ada/92575 ++ * expect.c (__gnat_expect_poll [VMS, HPUX]): Fix typo. ++ ++2019-10-12 Eric Botcazou <ebotcazou@adacore.com> ++ ++ 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 <ebotcazou@adacore.com> ++ ++ * gcc-interface/decl.c (annotate_value) <INTEGER_CST>: Really test the ++ sign of the value when deciding to build a NEGATE_EXPR. ++ <PLUS_EXPR>: Remove redundant line. ++ <BIT_AND_EXPR>: Do the negation here. ++ ++2019-09-23 Eric Botcazou <ebotcazou@adacore.com> ++ ++ * 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-09-01 Iain Sandoe <iain@sandoe.co.uk> ++ ++ Backport from mainline. ++ 2019-07-02 Iain Sandoe <iain@sandoe.co.uk> ++ ++ * libgnat/system-darwin-ppc.ads: Set Stack_Check_Probes True for ++ PPC Darwin. ++ ++2019-08-05 Iain Sandoe <iain@sandoe.co.uk> ++ ++ Backport from mainline. ++ 2019-06-30 Iain Sandoe <iain@sandoe.co.uk> ++ ++ * gnatlink.adb (Link_Step): Push -shared-libgcc explicitly, when it ++ is the target default (unless overidden by the static flag). ++ When the user has put an instance of shared/static-libgcc do not push ++ a duplicate of this. ++ ++2019-06-29 Eric Botcazou <ebotcazou@adacore.com> ++ ++ * gcc-interface/decl.c (gnat_to_gnu_entity): Beep up comment on SAVED, ++ and tweak comment on the assertion about the scopes of Itypes. Do not ++ skip the regular processing for Itypes that are E_Record_Subtype with ++ a Cloned_Subtype. Get the Cloned_Subtype for every E_Record_Subtype ++ if the type is dummy and hasn't got its own freeze node. ++ <E_Record_Subtype>: Save again the DECL of the Cloned_Subtype, if any. ++ <E_Access_Subtype>: Save again the DECL of the equivalent type. ++ (Gigi_Equivalent_Type) <E_Access_Subtype>: New case. ++ ++2019-06-29 Eric Botcazou <ebotcazou@adacore.com> ++ ++ * gcc-interface/trans.c (mark_visited_r): Set TYPE_SIZES_GIMPLIFIED on ++ the main variant of a type, if any. ++ ++2019-06-29 Eric Botcazou <ebotcazou@adacore.com> ++ ++ * gcc-interface/decl.c (set_nonaliased_component_on_array_type): Add ++ missing guard for the presence of TYPE_CANONICAL. ++ (set_reverse_storage_order_on_array_type): Likewise. ++ ++2019-06-17 Arnaud Charlet <charlet@adacore.com> ++ ++ PR ada/80590 ++ * exp_ch9.adb (Expand_N_Delay_Relative_Statement): Swap the two ++ conditions to avoid a unnecessary exception propagation in the default ++ case. ++ ++2019-05-28 Eric Botcazou <ebotcazou@adacore.com> ++ ++ * gcc-interface/trans.c (walk_nesting_tree): New static function. ++ (finalize_nrv): Use it to walk the entire nesting tree. ++ ++2019-05-27 Eric Botcazou <ebotcazou@adacore.com> ++ ++ * gcc-interface/utils.c (maybe_pad_type): Issue the warning for the ++ specific case of component types preferably. ++ ++2019-05-27 Eric Botcazou <ebotcazou@adacore.com> ++ ++ * gcc-interface/trans.c (Call_to_gnu): Use the unpadded type when ++ putting back an intermediate conversion the type of the actuals. ++ ++2019-05-07 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> ++ ++ * gcc-interface/Makefile.in (install-gcc-specs): Use foreach. ++ Honor DESTDIR. ++ ++2019-02-23 Eric Botcazou <ebotcazou@adacore.com> ++ ++ PR ada/89349 ++ Backport from mainline ++ 2018-05-25 Arnaud Charlet <charlet@adacore.com> ++ ++ * osint.ads (Unknown_Attributes): No longer pretend this is a constant. ++ (No_File_Info_Cache): Initialize separately. ++ * osint.adb (No_File_Info_Cache): Update initializer. ++ + 2019-02-22 Release Manager + + * GCC 8.3.0 released. +Index: gcc/ada/gcc-interface/utils.c +=================================================================== +--- a/src/gcc/ada/gcc-interface/utils.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/ada/gcc-interface/utils.c (.../branches/gcc-8-branch) +@@ -1519,14 +1519,14 @@ + generated for some other corresponding source entity. */ + if (Comes_From_Source (gnat_entity)) + { +- if (Present (gnat_error_node)) ++ if (is_component_type) ++ post_error_ne_tree ("component of& padded{ by ^ bits}?", ++ gnat_entity, gnat_entity, ++ size_diffop (size, orig_size)); ++ else if (Present (gnat_error_node)) + post_error_ne_tree ("{^ }bits of & unused?", + gnat_error_node, gnat_entity, + size_diffop (size, orig_size)); +- else if (is_component_type) +- post_error_ne_tree ("component of& padded{ by ^ bits}?", +- gnat_entity, gnat_entity, +- size_diffop (size, orig_size)); + } + } + +Index: gcc/ada/gcc-interface/Makefile.in +=================================================================== +--- a/src/gcc/ada/gcc-interface/Makefile.in (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/ada/gcc-interface/Makefile.in (.../branches/gcc-8-branch) +@@ -2285,9 +2285,8 @@ + install-gcc-specs: + # Install all the requested GCC spec files. + +- for f in $(GCC_SPEC_FILES); do \ +- $(INSTALL_DATA_DATE) $(srcdir)/ada/$$f $(libsubdir)/; \ +- done ++ $(foreach f,$(GCC_SPEC_FILES), \ ++ $(INSTALL_DATA_DATE) $(srcdir)/ada/$(f) $(DESTDIR)$(libsubdir)/;) + + install-gnatlib: ../stamp-gnatlib-$(RTSDIR) install-gcc-specs + $(RMDIR) $(DESTDIR)$(ADA_RTL_OBJ_DIR) +Index: gcc/ada/gcc-interface/decl.c +=================================================================== +--- a/src/gcc/ada/gcc-interface/decl.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/ada/gcc-interface/decl.c (.../branches/gcc-8-branch) +@@ -295,7 +295,10 @@ + tree gnu_size = NULL_TREE; + /* Contains the GCC name to be used for the GCC node. */ + tree gnu_entity_name; +- /* True if we have already saved gnu_decl as a GNAT association. */ ++ /* True if we have already saved gnu_decl as a GNAT association. This can ++ also be used to purposely avoid making such an association but this use ++ case ought not to be applied to types because it can break the deferral ++ mechanism implemented for access types. */ + bool saved = false; + /* True if we incremented defer_incomplete_level. */ + bool this_deferred = false; +@@ -312,14 +315,11 @@ + + /* Since a use of an Itype is a definition, process it as such if it is in + the main unit, except for E_Access_Subtype because it's actually a use +- of its base type, and for E_Record_Subtype with cloned subtype because +- it's actually a use of the cloned subtype, see below. */ ++ of its base type, see below. */ + if (!definition + && is_type + && Is_Itype (gnat_entity) +- && !(kind == E_Access_Subtype +- || (kind == E_Record_Subtype +- && Present (Cloned_Subtype (gnat_entity)))) ++ && Ekind (gnat_entity) != E_Access_Subtype + && !present_gnu_tree (gnat_entity) + && In_Extended_Main_Code_Unit (gnat_entity)) + { +@@ -362,7 +362,7 @@ + } + + /* This abort means the Itype has an incorrect scope, i.e. that its +- scope does not correspond to the subprogram it is declared in. */ ++ scope does not correspond to the subprogram it is first used in. */ + gcc_unreachable (); + } + +@@ -371,7 +371,9 @@ + In that case, we will abort below when we try to save a new GCC tree + for this object. We also need to handle the case of getting a dummy + type when a Full_View exists but be careful so as not to trigger its +- premature elaboration. */ ++ premature elaboration. Likewise for a cloned subtype without its own ++ freeze node, which typically happens when a generic gets instantiated ++ on an incomplete or private type. */ + if ((!definition || (is_type && imported_p)) + && present_gnu_tree (gnat_entity)) + { +@@ -385,11 +387,27 @@ + || No (Freeze_Node (Full_View (gnat_entity))))) + { + gnu_decl +- = gnat_to_gnu_entity (Full_View (gnat_entity), NULL_TREE, false); ++ = gnat_to_gnu_entity (Full_View (gnat_entity), NULL_TREE, ++ false); + save_gnu_tree (gnat_entity, NULL_TREE, false); + save_gnu_tree (gnat_entity, gnu_decl, false); + } + ++ if (TREE_CODE (gnu_decl) == TYPE_DECL ++ && TYPE_IS_DUMMY_P (TREE_TYPE (gnu_decl)) ++ && Ekind (gnat_entity) == E_Record_Subtype ++ && No (Freeze_Node (gnat_entity)) ++ && Present (Cloned_Subtype (gnat_entity)) ++ && (present_gnu_tree (Cloned_Subtype (gnat_entity)) ++ || No (Freeze_Node (Cloned_Subtype (gnat_entity))))) ++ { ++ gnu_decl ++ = gnat_to_gnu_entity (Cloned_Subtype (gnat_entity), NULL_TREE, ++ false); ++ save_gnu_tree (gnat_entity, NULL_TREE, false); ++ save_gnu_tree (gnat_entity, gnu_decl, false); ++ } ++ + return gnu_decl; + } + +@@ -3367,13 +3385,13 @@ + case E_Record_Subtype: + /* If Cloned_Subtype is Present it means this record subtype has + identical layout to that type or subtype and we should use +- that GCC type for this one. The front end guarantees that ++ that GCC type for this one. The front-end guarantees that + the component list is shared. */ + if (Present (Cloned_Subtype (gnat_entity))) + { + gnu_decl = gnat_to_gnu_entity (Cloned_Subtype (gnat_entity), + NULL_TREE, false); +- saved = true; ++ maybe_present = true; + break; + } + +@@ -3787,8 +3805,8 @@ + case E_Access_Subtype: + /* We treat this as identical to its base type; any constraint is + meaningful only to the front-end. */ +- gnu_decl = gnat_to_gnu_entity (Etype (gnat_entity), NULL_TREE, false); +- saved = true; ++ gnu_decl = gnat_to_gnu_entity (gnat_equiv_type, NULL_TREE, false); ++ maybe_present = true; + + /* The designated subtype must be elaborated as well, if it does + not have its own freeze node. But designated subtypes created +@@ -4974,6 +4992,10 @@ + gnat_equiv = Equivalent_Type (gnat_entity); + break; + ++ case E_Access_Subtype: ++ gnat_equiv = Etype (gnat_entity); ++ break; ++ + case E_Class_Wide_Type: + gnat_equiv = Root_Type (gnat_entity); + break; +@@ -6065,7 +6087,8 @@ + set_nonaliased_component_on_array_type (tree type) + { + TYPE_NONALIASED_COMPONENT (type) = 1; +- TYPE_NONALIASED_COMPONENT (TYPE_CANONICAL (type)) = 1; ++ if (TYPE_CANONICAL (type)) ++ TYPE_NONALIASED_COMPONENT (TYPE_CANONICAL (type)) = 1; + } + + /* Set TYPE_REVERSE_STORAGE_ORDER on an array type built by means of +@@ -6075,7 +6098,8 @@ + set_reverse_storage_order_on_array_type (tree type) + { + TYPE_REVERSE_STORAGE_ORDER (type) = 1; +- TYPE_REVERSE_STORAGE_ORDER (TYPE_CANONICAL (type)) = 1; ++ if (TYPE_CANONICAL (type)) ++ TYPE_REVERSE_STORAGE_ORDER (TYPE_CANONICAL (type)) = 1; + } + + /* Return true if DISCR1 and DISCR2 represent the same discriminant. */ +@@ -8083,9 +8107,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; +@@ -8163,9 +8186,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; + } + +@@ -8206,9 +8228,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_8_3_0_release) ++++ b/src/gcc/ada/gcc-interface/trans.c (.../branches/gcc-8-branch) +@@ -1720,32 +1720,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 (TREE_CODE (TREE_TYPE (gnu_prefix)) == FUNCTION_TYPE) ++ else if (TREE_CODE (TREE_TYPE (gnu_prefix)) == FUNCTION_TYPE ++ && (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; + +@@ -3534,6 +3531,20 @@ + return NULL_TREE; + } + ++/* Apply FUNC to all the sub-trees of nested functions in NODE. FUNC is called ++ with the DATA and the address of each sub-tree. If FUNC returns a non-NULL ++ value, the traversal is stopped. */ ++ ++static void ++walk_nesting_tree (struct cgraph_node *node, walk_tree_fn func, void *data) ++{ ++ for (node = node->nested; node; node = node->next_nested) ++ { ++ walk_tree_without_duplicates (&DECL_SAVED_TREE (node->decl), func, data); ++ walk_nesting_tree (node, func, data); ++ } ++} ++ + /* Finalize the Named Return Value optimization for FNDECL. The NRV bitmap + contains the candidates for Named Return Value and OTHER is a list of + the other return values. GNAT_RET is a representative return node. */ +@@ -3541,7 +3552,6 @@ + static void + finalize_nrv (tree fndecl, bitmap nrv, vec<tree, va_gc> *other, Node_Id gnat_ret) + { +- struct cgraph_node *node; + struct nrv_data data; + walk_tree_fn func; + unsigned int i; +@@ -3562,10 +3572,7 @@ + return; + + /* Prune also the candidates that are referenced by nested functions. */ +- node = cgraph_node::get_create (fndecl); +- for (node = node->nested; node; node = node->next_nested) +- walk_tree_without_duplicates (&DECL_SAVED_TREE (node->decl), prune_nrv_r, +- &data); ++ walk_nesting_tree (cgraph_node::get_create (fndecl), prune_nrv_r, &data); + if (bitmap_empty_p (nrv)) + return; + +@@ -4308,7 +4315,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) +@@ -4575,7 +4583,7 @@ + since the parent is a procedure call, so put it back here. Note that + we might have a dummy type here if the actual is the dereference of a + pointer to it, but that's OK if the formal is passed by reference. */ +- tree gnu_actual_type = gnat_to_gnu_type (Etype (gnat_actual)); ++ tree gnu_actual_type = get_unpadded_type (Etype (gnat_actual)); + if (TYPE_IS_DUMMY_P (gnu_actual_type)) + gcc_assert (is_true_formal_parm && DECL_BY_REF_P (gnu_formal)); + else if (suppress_type_conversion +@@ -8167,8 +8175,9 @@ + else if (!TYPE_IS_DUMMY_P (t)) + TREE_VISITED (t) = 1; + ++ /* The test in gimplify_type_sizes is on the main variant. */ + if (TYPE_P (t)) +- TYPE_SIZES_GIMPLIFIED (t) = 1; ++ TYPE_SIZES_GIMPLIFIED (TYPE_MAIN_VARIANT (t)) = 1; + + return NULL_TREE; + } +Index: gcc/ada/sem_util.adb +=================================================================== +--- a/src/gcc/ada/sem_util.adb (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/ada/sem_util.adb (.../branches/gcc-8-branch) +@@ -5714,11 +5714,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 +@@ -5769,25 +5765,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 +@@ -5812,14 +5795,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 + +@@ -5834,11 +5813,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_8_3_0_release) ++++ b/src/gcc/ada/sem_util.ads (.../branches/gcc-8-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/expect.c +=================================================================== +--- a/src/gcc/ada/expect.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/ada/expect.c (.../branches/gcc-8-branch) +@@ -265,7 +265,7 @@ + if ((status & 1) != 1) + { + ready = -1; +- dead_process = i + 1; ++ *dead_process = i + 1; + return ready; + } + } +@@ -450,7 +450,7 @@ + if (ei.request == TIOCCLOSE) + { + ioctl (fd[i], TIOCREQSET, &ei); +- dead_process = i + 1; ++ *dead_process = i + 1; + return -1; + } + +Index: gcc/ada/exp_ch9.adb +=================================================================== +--- a/src/gcc/ada/exp_ch9.adb (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/ada/exp_ch9.adb (.../branches/gcc-8-branch) +@@ -8144,18 +8144,17 @@ + Proc : Entity_Id; + + begin +- -- Try to use System.Relative_Delays.Delay_For only if available. This +- -- is the implementation used on restricted platforms when Ada.Calendar +- -- is not available. ++ -- Try to use Ada.Calendar.Delays.Delay_For if available. + +- if RTE_Available (RO_RD_Delay_For) then +- Proc := RTE (RO_RD_Delay_For); ++ if RTE_Available (RO_CA_Delay_For) then ++ Proc := RTE (RO_CA_Delay_For); + +- -- Otherwise, use Ada.Calendar.Delays.Delay_For and emit an error +- -- message if not available. ++ -- Otherwise, use System.Relative_Delays.Delay_For and emit an error ++ -- message if not available. This is the implementation used on ++ -- restricted platforms when Ada.Calendar is not available. + + else +- Proc := RTE (RO_CA_Delay_For); ++ Proc := RTE (RO_RD_Delay_For); + end if; + + Rewrite (N, +Index: gcc/ada/gnatlink.adb +=================================================================== +--- a/src/gcc/ada/gnatlink.adb (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/ada/gnatlink.adb (.../branches/gcc-8-branch) +@@ -1882,6 +1882,7 @@ + Clean_Link_Option_Set : declare + J : Natural; + Shared_Libgcc_Seen : Boolean := False; ++ Static_Libgcc_Seen : Boolean := False; + + begin + J := Linker_Options.First; +@@ -1903,7 +1904,7 @@ + end if; + end if; + +- -- Remove duplicate -shared-libgcc switch ++ -- Remove duplicate -shared-libgcc switches + + if Linker_Options.Table (J).all = Shared_Libgcc_String then + if Shared_Libgcc_Seen then +@@ -1917,6 +1918,20 @@ + end if; + end if; + ++ -- Remove duplicate -static-libgcc switches ++ ++ if Linker_Options.Table (J).all = Static_Libgcc_String then ++ if Static_Libgcc_Seen then ++ Linker_Options.Table (J .. Linker_Options.Last - 1) := ++ Linker_Options.Table (J + 1 .. Linker_Options.Last); ++ Linker_Options.Decrement_Last; ++ Num_Args := Num_Args - 1; ++ ++ else ++ Static_Libgcc_Seen := True; ++ end if; ++ end if; ++ + -- Here we just check for a canonical form that matches the + -- pragma Linker_Options set in the NT runtime. + +@@ -1948,14 +1963,27 @@ + -- libgcc, if gcc is not called with -shared-libgcc, call it + -- with -static-libgcc, as there are some platforms where one + -- of these two switches is compulsory to link. ++ -- Don't push extra switches if we already saw one. + + if Shared_Libgcc_Default = 'T' + and then not Shared_Libgcc_Seen ++ and then not Static_Libgcc_Seen + then + Linker_Options.Increment_Last; + Linker_Options.Table (Linker_Options.Last) := Static_Libgcc; + Num_Args := Num_Args + 1; + end if; ++ ++ -- Likewise, the reverse. ++ ++ if Shared_Libgcc_Default = 'H' ++ and then not Static_Libgcc_Seen ++ and then not Shared_Libgcc_Seen ++ then ++ Linker_Options.Increment_Last; ++ Linker_Options.Table (Linker_Options.Last) := Shared_Libgcc; ++ Num_Args := Num_Args + 1; ++ end if; + end if; + end Clean_Link_Option_Set; + +Index: gcc/ada/osint.adb +=================================================================== +--- a/src/gcc/ada/osint.adb (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/ada/osint.adb (.../branches/gcc-8-branch) +@@ -250,8 +250,7 @@ + Attr : aliased File_Attributes; + end record; + +- No_File_Info_Cache : constant File_Info_Cache := +- (No_File, Unknown_Attributes); ++ No_File_Info_Cache : constant File_Info_Cache := (No_File, (others => 0)); + + package File_Name_Hash_Table is new GNAT.HTable.Simple_HTable ( + Header_Num => File_Hash_Num, +Index: gcc/ada/osint.ads +=================================================================== +--- a/src/gcc/ada/osint.ads (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/ada/osint.ads (.../branches/gcc-8-branch) +@@ -255,10 +255,26 @@ + -- from the disk and then cached in the File_Attributes parameter (possibly + -- along with other values). + +- type File_Attributes is private; +- Unknown_Attributes : constant File_Attributes; ++ File_Attributes_Size : constant Natural := 32; ++ -- This should be big enough to fit a "struct file_attributes" on any ++ -- system. It doesn't cause any malfunction if it is too big (which avoids ++ -- the need for either mapping the struct exactly or importing the sizeof ++ -- from C, which would result in dynamic code). However, it does waste ++ -- space (e.g. when a component of this type appears in a record, if it is ++ -- unnecessarily large). Note: for runtime units, use System.OS_Constants. ++ -- SIZEOF_struct_file_attributes instead, which has the exact value. ++ ++ type File_Attributes is ++ array (1 .. File_Attributes_Size) ++ of System.Storage_Elements.Storage_Element; ++ for File_Attributes'Alignment use Standard'Maximum_Alignment; ++ ++ Unknown_Attributes : File_Attributes; + -- A cache for various attributes for a file (length, accessibility,...) +- -- This must be initialized to Unknown_Attributes prior to the first call. ++ -- Will be initialized properly at elaboration (for efficiency later on, ++ -- avoid function calls every time we want to reset the attributes) prior ++ -- to the first usage. We cannot make it constant since the compiler may ++ -- put it in a read-only section. + + function Is_Directory + (Name : C_File_Name; +@@ -754,22 +770,4 @@ + -- detected, the file being written is deleted, and a fatal error is + -- signalled. + +- File_Attributes_Size : constant Natural := 32; +- -- This should be big enough to fit a "struct file_attributes" on any +- -- system. It doesn't cause any malfunction if it is too big (which avoids +- -- the need for either mapping the struct exactly or importing the sizeof +- -- from C, which would result in dynamic code). However, it does waste +- -- space (e.g. when a component of this type appears in a record, if it is +- -- unnecessarily large). Note: for runtime units, use System.OS_Constants. +- -- SIZEOF_struct_file_attributes instead, which has the exact value. +- +- type File_Attributes is +- array (1 .. File_Attributes_Size) +- of System.Storage_Elements.Storage_Element; +- for File_Attributes'Alignment use Standard'Maximum_Alignment; +- +- Unknown_Attributes : constant File_Attributes := (others => 0); +- -- Will be initialized properly at elaboration (for efficiency later on, +- -- avoid function calls every time we want to reset the attributes). +- + end Osint; +Index: gcc/ada/sem_ch8.adb +=================================================================== +--- a/src/gcc/ada/sem_ch8.adb (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/ada/sem_ch8.adb (.../branches/gcc-8-branch) +@@ -4259,9 +4259,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 +@@ -4268,7 +4266,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_8_3_0_release) ++++ b/src/gcc/ada/sem_elab.adb (.../branches/gcc-8-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/tree-ssa-address.c +=================================================================== +--- a/src/gcc/tree-ssa-address.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/tree-ssa-address.c (.../branches/gcc-8-branch) +@@ -259,6 +259,20 @@ + ? expand_expr (addr->index, NULL_RTX, pointer_mode, EXPAND_NORMAL) + : NULL_RTX); + ++ /* addr->base could be an SSA_NAME that was set to a constant value. The ++ call to expand_expr may expose that constant. If so, fold the value ++ into OFF and clear BSE. Otherwise we may later try to pull a mode from ++ BSE to generate a REG, which won't work with constants because they ++ are modeless. */ ++ if (bse && GET_CODE (bse) == CONST_INT) ++ { ++ if (off) ++ off = simplify_gen_binary (PLUS, pointer_mode, bse, off); ++ else ++ off = bse; ++ gcc_assert (GET_CODE (off) == CONST_INT); ++ bse = NULL_RTX; ++ } + gen_addr_rtx (pointer_mode, sym, bse, idx, st, off, &address, NULL, NULL); + if (pointer_mode != address_mode) + address = convert_memory_address (address_mode, address); +Index: gcc/common/config/aarch64/aarch64-common.c +=================================================================== +--- a/src/gcc/common/config/aarch64/aarch64-common.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/common/config/aarch64/aarch64-common.c (.../branches/gcc-8-branch) +@@ -41,6 +41,8 @@ + + #undef TARGET_OPTION_OPTIMIZATION_TABLE + #define TARGET_OPTION_OPTIMIZATION_TABLE aarch_option_optimization_table ++#undef TARGET_OPTION_INIT_STRUCT ++#define TARGET_OPTION_INIT_STRUCT aarch64_option_init_struct + + /* Set default optimization options. */ + static const struct default_options aarch_option_optimization_table[] = +@@ -113,8 +115,6 @@ + } + } + +-struct gcc_targetm_common targetm_common = TARGETM_COMMON_INITIALIZER; +- + /* An ISA extension in the co-processor and main instruction set space. */ + struct aarch64_option_extension + { +@@ -122,17 +122,30 @@ + const unsigned long flag_canonical; + const unsigned long flags_on; + const unsigned long flags_off; ++ const bool is_synthetic; + }; + + /* ISA extensions in AArch64. */ + static const struct aarch64_option_extension all_extensions[] = + { +-#define AARCH64_OPT_EXTENSION(NAME, FLAG_CANONICAL, FLAGS_ON, FLAGS_OFF, Z) \ +- {NAME, FLAG_CANONICAL, FLAGS_ON, FLAGS_OFF}, ++#define AARCH64_OPT_EXTENSION(NAME, FLAG_CANONICAL, FLAGS_ON, FLAGS_OFF, \ ++ SYNTHETIC, Z) \ ++ {NAME, FLAG_CANONICAL, FLAGS_ON, FLAGS_OFF, SYNTHETIC}, + #include "config/aarch64/aarch64-option-extensions.def" +- {NULL, 0, 0, 0} ++ {NULL, 0, 0, 0, false} + }; + ++/* A copy of the ISA extensions list for AArch64 sorted by the popcount of ++ bits and extension turned on. Cached for efficiency. */ ++static struct aarch64_option_extension all_extensions_by_on[] = ++{ ++#define AARCH64_OPT_EXTENSION(NAME, FLAG_CANONICAL, FLAGS_ON, FLAGS_OFF, \ ++ SYNTHETIC, Z) \ ++ {NAME, FLAG_CANONICAL, FLAGS_ON, FLAGS_OFF, SYNTHETIC}, ++#include "config/aarch64/aarch64-option-extensions.def" ++ {NULL, 0, 0, 0, false} ++}; ++ + struct processor_name_to_arch + { + const std::string processor_name; +@@ -232,6 +245,76 @@ + return AARCH64_PARSE_OK; + } + ++/* Comparer to sort aarch64's feature extensions by population count. Largest ++ first. */ ++ ++typedef const struct aarch64_option_extension opt_ext; ++ ++int opt_ext_cmp (const void* a, const void* b) ++{ ++ opt_ext *opt_a = (opt_ext *)a; ++ opt_ext *opt_b = (opt_ext *)b; ++ ++ /* We consider the total set of bits an options turns on to be the union of ++ the singleton set containing the option itself and the set of options it ++ turns on as a dependency. As an example +dotprod turns on FL_DOTPROD and ++ FL_SIMD. As such the set of bits represented by this option is ++ {FL_DOTPROD, FL_SIMD}. */ ++ unsigned long total_flags_a = opt_a->flag_canonical & opt_a->flags_on; ++ unsigned long total_flags_b = opt_b->flag_canonical & opt_b->flags_on; ++ int popcnt_a = popcount_hwi ((HOST_WIDE_INT)total_flags_a); ++ int popcnt_b = popcount_hwi ((HOST_WIDE_INT)total_flags_b); ++ int order = popcnt_b - popcnt_a; ++ ++ /* If they have the same amount of bits set, give it a more ++ deterministic ordering by using the value of the bits themselves. */ ++ if (order == 0) ++ return total_flags_b - total_flags_a; ++ ++ return order; ++} ++ ++/* Implement TARGET_OPTION_INIT_STRUCT. */ ++ ++static void ++aarch64_option_init_struct (struct gcc_options *opts ATTRIBUTE_UNUSED) ++{ ++ /* Sort the extensions based on how many bits they set, order the larger ++ counts first. We sort the list because this makes processing the ++ feature bits O(n) instead of O(n^2). While n is small, the function ++ to calculate the feature strings is called on every options push, ++ pop and attribute change (arm_neon headers, lto etc all cause this to ++ happen quite frequently). It is a trade-off between time and space and ++ so time won. */ ++ int n_extensions ++ = sizeof (all_extensions) / sizeof (struct aarch64_option_extension); ++ qsort (&all_extensions_by_on, n_extensions, ++ sizeof (struct aarch64_option_extension), opt_ext_cmp); ++} ++ ++/* Checks to see if enough bits from the option OPT are enabled in ++ ISA_FLAG_BITS to be able to replace the individual options with the ++ canonicalized version of the option. This is done based on two rules: ++ ++ 1) Synthetic groups, such as +crypto we only care about the bits that are ++ turned on. e.g. +aes+sha2 can be replaced with +crypto. ++ ++ 2) Options that themselves have a bit, such as +rdma, in this case, all the ++ feature bits they turn on must be available and the bit for the option ++ itself must be. In this case it's effectively a reduction rather than a ++ grouping. e.g. +fp+simd is not enough to turn on +rdma, for that you would ++ need +rdma+fp+simd which is reduced down to +rdma. ++*/ ++ ++static bool ++aarch64_contains_opt (unsigned long isa_flag_bits, opt_ext *opt) ++{ ++ unsigned long flags_check ++ = opt->is_synthetic ? opt->flags_on : opt->flag_canonical; ++ ++ return (isa_flag_bits & flags_check) == flags_check; ++} ++ + /* Return a string representation of ISA_FLAGS. DEFAULT_ARCH_FLAGS + gives the default set of flags which are implied by whatever -march + we'd put out. Our job is to figure out the minimal set of "+" and +@@ -245,27 +328,98 @@ + const struct aarch64_option_extension *opt = NULL; + std::string outstr = ""; + +- /* Pass one: Find all the things we need to turn on. As a special case, +- we always want to put out +crc if it is enabled. */ +- for (opt = all_extensions; opt->name != NULL; opt++) +- if ((isa_flags & opt->flag_canonical +- && !(default_arch_flags & opt->flag_canonical)) +- || (default_arch_flags & opt->flag_canonical +- && opt->flag_canonical == AARCH64_ISA_CRC)) +- { +- outstr += "+"; +- outstr += opt->name; +- } ++ unsigned long isa_flag_bits = isa_flags; + +- /* Pass two: Find all the things we need to turn off. */ +- for (opt = all_extensions; opt->name != NULL; opt++) +- if ((~isa_flags) & opt->flag_canonical +- && !((~default_arch_flags) & opt->flag_canonical)) ++ /* Pass one: Minimize the search space by reducing the set of options ++ to the smallest set that still turns on the same features as before in ++ conjunction with the bits that are turned on by default for the selected ++ architecture. */ ++ for (opt = all_extensions_by_on; opt->name != NULL; opt++) ++ { ++ /* If the bit is on by default, then all the options it turns on are also ++ on by default due to the transitive dependencies. ++ ++ If the option is enabled explicitly in the set then we need to emit ++ an option for it. Since this list is sorted by extensions setting the ++ largest number of featers first, we can be sure that nothing else will ++ ever need to set the bits we already set. Consider the following ++ situation: ++ ++ Feat1 = A + B + C ++ Feat2 = A + B ++ Feat3 = A + D ++ Feat4 = B + C ++ Feat5 = C ++ ++ The following results are expected: ++ ++ A + C = A + Feat5 ++ B + C = Feat4 ++ Feat4 + A = Feat1 ++ Feat2 + Feat5 = Feat1 ++ Feat1 + C = Feat1 ++ Feat3 + Feat4 = Feat1 + D ++ ++ This search assumes that all invidual feature bits are use visible, ++ in other words the user must be able to do +A, +B, +C and +D. */ ++ if (aarch64_contains_opt (isa_flag_bits | default_arch_flags, opt)) + { +- outstr += "+no"; +- outstr += opt->name; ++ /* We remove all the dependent bits, to prevent them from being turned ++ on twice. This only works because we assume that all there are ++ individual options to set all bits standalone. */ ++ isa_flag_bits &= ~opt->flags_on; ++ isa_flag_bits |= opt->flag_canonical; + } ++ } + ++ /* By toggling bits on and off, we may have set bits on that are already ++ enabled by default. So we mask the default set out so we don't emit an ++ option for them. Instead of checking for this each time during Pass One ++ we just mask all default bits away at the end. */ ++ isa_flag_bits &= ~default_arch_flags; ++ ++ /* We now have the smallest set of features we need to process. A subsequent ++ linear scan of the bits in isa_flag_bits will allow us to print the ext ++ names. However as a special case if CRC was enabled before, always print ++ it. This is required because some CPUs have an incorrect specification ++ in older assemblers. Even though CRC should be the default for these ++ cases the -mcpu values won't turn it on. */ ++ if (isa_flags & AARCH64_ISA_CRC) ++ isa_flag_bits |= AARCH64_ISA_CRC; ++ ++ /* Pass Two: ++ Print the option names that we're sure we must turn on. These are only ++ optional extension names. Mandatory ones have already been removed and ++ ones we explicitly want off have been too. */ ++ for (opt = all_extensions_by_on; opt->name != NULL; opt++) ++ { ++ if (isa_flag_bits & opt->flag_canonical) ++ { ++ outstr += "+"; ++ outstr += opt->name; ++ } ++ } ++ ++ /* Pass Three: ++ Print out a +no for any mandatory extension that we are ++ turning off. By this point aarch64_parse_extension would have ensured ++ that any optional extensions are turned off. The only things left are ++ things that can't be turned off usually, e.g. something that is on by ++ default because it's mandatory and we want it off. For turning off bits ++ we don't guarantee the smallest set of flags, but instead just emit all ++ options the user has specified. ++ ++ The assembler requires all +<opts> to be printed before +no<opts>. */ ++ for (opt = all_extensions_by_on; opt->name != NULL; opt++) ++ { ++ if ((~isa_flags) & opt->flag_canonical ++ && !((~default_arch_flags) & opt->flag_canonical)) ++ { ++ outstr += "+no"; ++ outstr += opt->name; ++ } ++ } ++ + return outstr; + } + +@@ -345,5 +499,7 @@ + return aarch64_rewrite_selected_cpu (argv[argc - 1]); + } + ++struct gcc_targetm_common targetm_common = TARGETM_COMMON_INITIALIZER; ++ + #undef AARCH64_CPU_NAME_LENGTH + +Index: gcc/dse.c +=================================================================== +--- a/src/gcc/dse.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/dse.c (.../branches/gcc-8-branch) +@@ -2515,10 +2515,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/tree-ssa-ifcombine.c +=================================================================== +--- a/src/gcc/tree-ssa-ifcombine.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/tree-ssa-ifcombine.c (.../branches/gcc-8-branch) +@@ -40,6 +40,7 @@ + #include "gimplify-me.h" + #include "tree-cfg.h" + #include "tree-ssa.h" ++#include "params.h" + + #ifndef LOGICAL_OP_NON_SHORT_CIRCUIT + #define LOGICAL_OP_NON_SHORT_CIRCUIT \ +@@ -556,7 +557,11 @@ + { + tree t1, t2; + gimple_stmt_iterator gsi; +- if (!LOGICAL_OP_NON_SHORT_CIRCUIT || flag_sanitize_coverage) ++ bool logical_op_non_short_circuit = LOGICAL_OP_NON_SHORT_CIRCUIT; ++ if (PARAM_VALUE (PARAM_LOGICAL_OP_NON_SHORT_CIRCUIT) != -1) ++ logical_op_non_short_circuit ++ = PARAM_VALUE (PARAM_LOGICAL_OP_NON_SHORT_CIRCUIT); ++ if (!logical_op_non_short_circuit || flag_sanitize_coverage) + return false; + /* Only do this optimization if the inner bb contains only the conditional. */ + if (!gsi_one_before_end_p (gsi_start_nondebug_after_labels_bb (inner_cond_bb))) +Index: gcc/lto-streamer-in.c +=================================================================== +--- a/src/gcc/lto-streamer-in.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/lto-streamer-in.c (.../branches/gcc-8-branch) +@@ -826,6 +826,7 @@ + /* Read OMP SIMD related info. */ + loop->safelen = streamer_read_hwi (ib); + loop->unroll = streamer_read_hwi (ib); ++ loop->owned_clique = streamer_read_hwi (ib); + loop->dont_vectorize = streamer_read_hwi (ib); + loop->force_vectorize = streamer_read_hwi (ib); + loop->simduid = stream_read_tree (ib, data_in); +@@ -1131,6 +1132,14 @@ + ? !MAY_HAVE_DEBUG_MARKER_STMTS + : !MAY_HAVE_DEBUG_BIND_STMTS)) + remove = true; ++ /* In case the linemap overflows locations can be dropped ++ to zero. Thus do not keep nonsensical inline entry markers ++ we'd later ICE on. */ ++ tree block; ++ if (gimple_debug_inline_entry_p (stmt) ++ && (block = gimple_block (stmt)) ++ && !inlined_function_outer_scope_p (block)) ++ remove = true; + if (is_gimple_call (stmt) + && gimple_call_internal_p (stmt)) + { +Index: gcc/fortran/interface.c +=================================================================== +--- a/src/gcc/fortran/interface.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/fortran/interface.c (.../branches/gcc-8-branch) +@@ -2941,9 +2941,11 @@ + + if (f->sym == NULL) + { ++ /* These errors have to be issued, otherwise an ICE can occur. ++ See PR 78865. */ + if (where) +- gfc_error ("Missing alternate return spec in subroutine call " +- "at %L", where); ++ gfc_error_now ("Missing alternate return specifier in subroutine " ++ "call at %L", where); + return false; + } + +@@ -2950,8 +2952,8 @@ + if (a->expr == NULL) + { + if (where) +- gfc_error ("Unexpected alternate return spec in subroutine " +- "call at %L", where); ++ gfc_error_now ("Unexpected alternate return specifier in " ++ "subroutine call at %L", where); + return false; + } + +@@ -3655,6 +3657,7 @@ + gfc_warning (OPT_Wimplicit_procedure, + "Procedure %qs called at %L is not explicitly declared", + sym->name, where); ++ gfc_find_proc_namespace (sym->ns)->implicit_interface_calls = 1; + } + + if (sym->attr.if_source == IFSRC_UNKNOWN) +Index: gcc/fortran/trans-expr.c +=================================================================== +--- a/src/gcc/fortran/trans-expr.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/fortran/trans-expr.c (.../branches/gcc-8-branch) +@@ -352,7 +352,7 @@ + of refs following. */ + + gfc_expr * +-gfc_find_and_cut_at_last_class_ref (gfc_expr *e) ++gfc_find_and_cut_at_last_class_ref (gfc_expr *e, bool is_mold) + { + gfc_expr *base_expr; + gfc_ref *ref, *class_ref, *tail = NULL, *array_ref; +@@ -394,7 +394,10 @@ + e->ref = NULL; + } + +- base_expr = gfc_copy_expr (e); ++ if (is_mold) ++ base_expr = gfc_expr_to_initialize (e); ++ else ++ base_expr = gfc_copy_expr (e); + + /* Restore the original tail expression. */ + if (class_ref) +@@ -3834,7 +3837,8 @@ + + + static void +-conv_function_val (gfc_se * se, gfc_symbol * sym, gfc_expr * expr) ++conv_function_val (gfc_se * se, gfc_symbol * sym, gfc_expr * expr, ++ gfc_actual_arglist *actual_args) + { + tree tmp; + +@@ -3852,7 +3856,7 @@ + else + { + if (!sym->backend_decl) +- sym->backend_decl = gfc_get_extern_function_decl (sym); ++ sym->backend_decl = gfc_get_extern_function_decl (sym, actual_args); + + TREE_USED (sym->backend_decl) = 1; + +@@ -6276,7 +6280,7 @@ + + /* Generate the actual call. */ + if (base_object == NULL_TREE) +- conv_function_val (se, sym, expr); ++ conv_function_val (se, sym, expr, args); + else + conv_base_obj_fcn_val (se, base_object, expr); + +@@ -8385,24 +8389,7 @@ + } + } + +-/* Indentify class valued proc_pointer assignments. */ + +-static bool +-pointer_assignment_is_proc_pointer (gfc_expr * expr1, gfc_expr * expr2) +-{ +- gfc_ref * ref; +- +- ref = expr1->ref; +- while (ref && ref->next) +- ref = ref->next; +- +- return ref && ref->type == REF_COMPONENT +- && ref->u.c.component->attr.proc_pointer +- && expr2->expr_type == EXPR_VARIABLE +- && expr2->symtree->n.sym->attr.flavor == FL_PROCEDURE; +-} +- +- + /* Do everything that is needed for a CLASS function expr2. */ + + static tree +@@ -8454,7 +8441,7 @@ + tree desc; + tree tmp; + tree expr1_vptr = NULL_TREE; +- bool scalar, non_proc_pointer_assign; ++ bool scalar, non_proc_ptr_assign; + gfc_ss *ss; + + gfc_start_block (&block); +@@ -8462,7 +8449,9 @@ + gfc_init_se (&lse, NULL); + + /* Usually testing whether this is not a proc pointer assignment. */ +- non_proc_pointer_assign = !pointer_assignment_is_proc_pointer (expr1, expr2); ++ non_proc_ptr_assign = !(gfc_expr_attr (expr1).proc_pointer ++ && expr2->expr_type == EXPR_VARIABLE ++ && expr2->symtree->n.sym->attr.flavor == FL_PROCEDURE); + + /* Check whether the expression is a scalar or not; we cannot use + expr1->rank as it can be nonzero for proc pointers. */ +@@ -8472,7 +8461,7 @@ + gfc_free_ss_chain (ss); + + if (expr1->ts.type == BT_DERIVED && expr2->ts.type == BT_CLASS +- && expr2->expr_type != EXPR_FUNCTION && non_proc_pointer_assign) ++ && expr2->expr_type != EXPR_FUNCTION && non_proc_ptr_assign) + { + gfc_add_data_component (expr2); + /* The following is required as gfc_add_data_component doesn't +@@ -8492,7 +8481,7 @@ + else + gfc_conv_expr (&rse, expr2); + +- if (non_proc_pointer_assign && expr1->ts.type == BT_CLASS) ++ if (non_proc_ptr_assign && expr1->ts.type == BT_CLASS) + { + trans_class_vptr_len_assignment (&block, expr1, expr2, &rse, NULL, + NULL); +Index: gcc/fortran/trans-array.c +=================================================================== +--- a/src/gcc/fortran/trans-array.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/fortran/trans-array.c (.../branches/gcc-8-branch) +@@ -1164,6 +1164,7 @@ + tree nelem; + tree cond; + tree or_expr; ++ tree elemsize; + tree class_expr = NULL_TREE; + int n, dim, tmp_dim; + int total_dim = 0; +@@ -1329,10 +1330,15 @@ + } + } + ++ if (class_expr == NULL_TREE) ++ elemsize = fold_convert (gfc_array_index_type, ++ TYPE_SIZE_UNIT (gfc_get_element_type (type))); ++ else ++ elemsize = gfc_class_vtab_size_get (class_expr); ++ + /* Get the size of the array. */ + if (size && !callee_alloc) + { +- tree elemsize; + /* If or_expr is true, then the extent in at least one + dimension is zero and the size is set to zero. */ + size = fold_build3_loc (input_location, COND_EXPR, gfc_array_index_type, +@@ -1339,11 +1345,6 @@ + or_expr, gfc_index_zero_node, size); + + nelem = size; +- if (class_expr == NULL_TREE) +- elemsize = fold_convert (gfc_array_index_type, +- TYPE_SIZE_UNIT (gfc_get_element_type (type))); +- else +- elemsize = gfc_class_vtab_size_get (class_expr); + + size = fold_build2_loc (input_location, MULT_EXPR, gfc_array_index_type, + size, elemsize); +@@ -1354,6 +1355,10 @@ + size = NULL_TREE; + } + ++ /* Set the span. */ ++ tmp = fold_convert (gfc_array_index_type, elemsize); ++ gfc_conv_descriptor_span_set (pre, desc, tmp); ++ + gfc_trans_allocate_array_storage (pre, post, info, size, nelem, initial, + dynamic, dealloc); + +@@ -2652,6 +2657,9 @@ + if (ss_info->type != GFC_SS_REFERENCE) + return false; + ++ if (ss_info->data.scalar.needs_temporary) ++ return false; ++ + /* If the actual argument can be absent (in other words, it can + be a NULL reference), don't try to evaluate it; pass instead + the reference directly. */ +@@ -3414,10 +3422,8 @@ + if (build_class_array_ref (se, base, index)) + return; + +- if (expr && ((is_subref_array (expr) +- && GFC_DESCRIPTOR_TYPE_P (TREE_TYPE (info->descriptor))) +- || (expr->ts.deferred && (expr->expr_type == EXPR_VARIABLE +- || expr->expr_type == EXPR_FUNCTION)))) ++ if (expr && (expr->ts.deferred && (expr->expr_type == EXPR_VARIABLE ++ || expr->expr_type == EXPR_FUNCTION))) + decl = expr->symtree->n.sym->backend_decl; + + /* A pointer array component can be detected from its field decl. Fix +@@ -9527,9 +9533,15 @@ + if (sym->ts.type == BT_CLASS + && !sym->attr.associate_var + && CLASS_DATA (sym)->attr.allocatable +- && expr->ref && expr->ref->type == REF_COMPONENT +- && strcmp (expr->ref->u.c.component->name, "_data") == 0 +- && expr->ref->next == NULL) ++ && expr->ref ++ && ((expr->ref->type == REF_ARRAY && expr->ref->u.ar.type == AR_FULL ++ && expr->ref->next == NULL) ++ || (expr->ref->type == REF_COMPONENT ++ && strcmp (expr->ref->u.c.component->name, "_data") == 0 ++ && (expr->ref->next == NULL ++ || (expr->ref->next->type == REF_ARRAY ++ && expr->ref->next->u.ar.type == AR_FULL ++ && expr->ref->next->next == NULL))))) + return true; + + /* An allocatable variable. */ +@@ -10350,6 +10362,8 @@ + { + gfc_ref *ref; + ++ gfc_fix_class_refs (expr); ++ + for (ref = expr->ref; ref; ref = ref->next) + if (ref->type == REF_ARRAY && ref->u.ar.type != AR_ELEMENT) + break; +Index: gcc/fortran/symbol.c +=================================================================== +--- a/src/gcc/fortran/symbol.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/fortran/symbol.c (.../branches/gcc-8-branch) +@@ -522,7 +522,7 @@ + /* The copying of procedure dummy arguments for module procedures in + a submodule occur whilst the current state is COMP_CONTAINS. It + is necessary, therefore, to let this through. */ +- if (attr->dummy ++ if (name && attr->dummy + && (attr->function || attr->subroutine) + && gfc_current_state () == COMP_CONTAINS + && !(gfc_new_block && gfc_new_block->abr_modproc_decl)) +@@ -554,6 +554,7 @@ + + conf (external, intrinsic); + conf (entry, intrinsic); ++ conf (abstract, intrinsic); + + if ((attr->if_source == IFSRC_DECL && !attr->procedure) || attr->contained) + conf (external, subroutine); +@@ -1685,7 +1686,15 @@ + return false; + + attr->subroutine = 1; +- return check_conflict (attr, name, where); ++ ++ /* If we are looking at a BLOCK DATA statement and we encounter a ++ name with a leading underscore (which must be ++ compiler-generated), do not check. See PR 84394. */ ++ ++ if (name && *name != '_' && gfc_current_state () != COMP_BLOCK_DATA) ++ return check_conflict (attr, name, where); ++ else ++ return true; + } + + +@@ -1801,7 +1810,8 @@ + if (where == NULL) + where = &gfc_current_locus; + +- if (attr->proc != PROC_UNKNOWN && !attr->module_procedure) ++ if (attr->proc != PROC_UNKNOWN && !attr->module_procedure ++ && attr->access == ACCESS_UNKNOWN) + { + if (attr->proc == PROC_ST_FUNCTION && t == PROC_INTERNAL + && !gfc_notification_std (GFC_STD_F2008)) +@@ -4352,7 +4362,7 @@ + /* Get a global symbol, creating it if it doesn't exist. */ + + gfc_gsymbol * +-gfc_get_gsymbol (const char *name) ++gfc_get_gsymbol (const char *name, bool bind_c) + { + gfc_gsymbol *s; + +@@ -4363,6 +4373,7 @@ + s = XCNEW (gfc_gsymbol); + s->type = GSYM_UNKNOWN; + s->name = gfc_get_string ("%s", name); ++ s->bind_c = bind_c; + + gfc_insert_bbt (&gfc_gsym_root, s, gsym_compare); + +Index: gcc/fortran/class.c +=================================================================== +--- a/src/gcc/fortran/class.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/fortran/class.c (.../branches/gcc-8-branch) +@@ -561,7 +561,7 @@ + ref to the _len component. */ + + gfc_expr * +-gfc_get_len_component (gfc_expr *e) ++gfc_get_len_component (gfc_expr *e, int k) + { + gfc_expr *ptr; + gfc_ref *ref, **last; +@@ -586,6 +586,14 @@ + } + /* And replace if with a ref to the _len component. */ + gfc_add_len_component (ptr); ++ if (k != ptr->ts.kind) ++ { ++ gfc_typespec ts; ++ gfc_clear_ts (&ts); ++ ts.type = BT_INTEGER; ++ ts.kind = k; ++ gfc_convert_type_warn (ptr, &ts, 2, 0); ++ } + return ptr; + } + +@@ -899,6 +907,9 @@ + if (!comp_is_finalizable (comp)) + return; + ++ if (comp->finalized) ++ return; ++ + e = gfc_copy_expr (expr); + if (!e->ref) + e->ref = ref = gfc_get_ref (); +@@ -1026,6 +1037,7 @@ + sub_ns); + gfc_free_expr (e); + } ++ comp->finalized = true; + } + + +@@ -2661,6 +2673,7 @@ + gfc_namespace *sub_ns; + gfc_namespace *contained; + gfc_expr *e; ++ size_t e_size; + + gfc_get_symbol (name, ns, &vtype); + if (!gfc_add_flavor (&vtype->attr, FL_DERIVED, NULL, +@@ -2695,11 +2708,13 @@ + e = gfc_get_expr (); + e->ts = *ts; + e->expr_type = EXPR_VARIABLE; ++ if (ts->type == BT_CHARACTER) ++ e_size = ts->kind; ++ else ++ gfc_element_size (e, &e_size); + c->initializer = gfc_get_int_expr (gfc_size_kind, + NULL, +- ts->type == BT_CHARACTER +- ? ts->kind +- : gfc_element_size (e)); ++ e_size); + gfc_free_expr (e); + + /* Add component _extends. */ +Index: gcc/fortran/decl.c +=================================================================== +--- a/src/gcc/fortran/decl.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/fortran/decl.c (.../branches/gcc-8-branch) +@@ -1678,6 +1678,14 @@ + free (expr->value.character.string); + expr->value.character.string = s; + expr->value.character.length = len; ++ /* If explicit representation was given, clear it ++ as it is no longer needed after padding. */ ++ if (expr->representation.length) ++ { ++ expr->representation.length = 0; ++ free (expr->representation.string); ++ expr->representation.string = NULL; ++ } + } + } + +@@ -3891,7 +3899,6 @@ + return MATCH_YES; + } + +- + m = gfc_match (" type ("); + matched_type = (m == MATCH_YES); + if (matched_type) +@@ -3940,7 +3947,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; + } +@@ -3963,8 +3973,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; +@@ -3994,7 +4008,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; +@@ -4015,7 +4032,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) +@@ -7156,7 +7179,7 @@ + name is a global identifier. */ + if (!binding_label || gfc_notification_std (GFC_STD_F2008)) + { +- s = gfc_get_gsymbol (name); ++ s = gfc_get_gsymbol (name, false); + + if (s->defined || (s->type != GSYM_UNKNOWN && s->type != type)) + { +@@ -7178,7 +7201,7 @@ + && (!gfc_notification_std (GFC_STD_F2008) + || strcmp (name, binding_label) != 0)) + { +- s = gfc_get_gsymbol (binding_label); ++ s = gfc_get_gsymbol (binding_label, true); + + if (s->defined || (s->type != GSYM_UNKNOWN && s->type != type)) + { +Index: gcc/fortran/trans-openmp.c +=================================================================== +--- a/src/gcc/fortran/trans-openmp.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/fortran/trans-openmp.c (.../branches/gcc-8-branch) +@@ -548,6 +548,9 @@ + build3_loc (input_location, COND_EXPR, + void_type_node, cond, then_b, + else_b)); ++ /* Avoid -W*uninitialized warnings. */ ++ if (DECL_P (decl)) ++ TREE_NO_WARNING (decl) = 1; + } + else + gfc_add_expr_to_block (&block, then_b); +@@ -654,6 +657,9 @@ + gfc_add_expr_to_block (&block, + build3_loc (input_location, COND_EXPR, + void_type_node, cond, then_b, else_b)); ++ /* Avoid -W*uninitialized warnings. */ ++ if (DECL_P (dest)) ++ TREE_NO_WARNING (dest) = 1; + + return gfc_finish_block (&block); + } +Index: gcc/fortran/gfortran.h +=================================================================== +--- a/src/gcc/fortran/gfortran.h (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/fortran/gfortran.h (.../branches/gcc-8-branch) +@@ -1080,6 +1080,7 @@ + struct gfc_typebound_proc *tb; + /* When allocatable/pointer and in a coarray the associated token. */ + tree caf_token; ++ bool finalized; + } + gfc_component; + +@@ -1856,6 +1857,9 @@ + + /* Set to 1 for !$ACC ROUTINE namespaces. */ + unsigned oacc_routine:1; ++ ++ /* Set to 1 if there are any calls to procedures with implicit interface. */ ++ unsigned implicit_interface_calls:1; + } + gfc_namespace; + +@@ -1883,6 +1887,7 @@ + enum gfc_symbol_type type; + + int defined, used; ++ bool bind_c; + locus where; + gfc_namespace *ns; + } +@@ -3059,7 +3064,7 @@ + void gfc_free_dt_list (void); + + +-gfc_gsymbol *gfc_get_gsymbol (const char *); ++gfc_gsymbol *gfc_get_gsymbol (const char *, bool bind_c); + gfc_gsymbol *gfc_find_gsymbol (gfc_gsymbol *, const char *); + gfc_gsymbol *gfc_find_case_gsymbol (gfc_gsymbol *, const char *); + +@@ -3426,7 +3431,7 @@ + bool gfc_is_class_container_ref (gfc_expr *e); + gfc_expr *gfc_class_initializer (gfc_typespec *, gfc_expr *); + unsigned int gfc_hash_value (gfc_symbol *); +-gfc_expr *gfc_get_len_component (gfc_expr *e); ++gfc_expr *gfc_get_len_component (gfc_expr *e, int); + bool gfc_build_class_symbol (gfc_typespec *, symbol_attribute *, + gfc_array_spec **); + gfc_symbol *gfc_find_derived_vtab (gfc_symbol *); +Index: gcc/fortran/lang.opt +=================================================================== +--- a/src/gcc/fortran/lang.opt (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/fortran/lang.opt (.../branches/gcc-8-branch) +@@ -742,6 +742,13 @@ + Fortran Var(flag_sign_zero) Init(1) + Apply negative sign to zero values. + ++ftail-call-workaround ++Fortran Alias(ftail-call-workaround=,1,0) ++ ++ftail-call-workaround= ++Fortran RejectNegative Joined UInteger IntegerRange(0, 2) Var(flag_tail_call_workaround) Init(1) ++Disallow tail call optimization when a calling routine may have omitted character lengths. ++ + funderscoring + Fortran Var(flag_underscoring) Init(1) + Append underscores to externally visible names. +Index: gcc/fortran/ChangeLog +=================================================================== +--- a/src/gcc/fortran/ChangeLog (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/fortran/ChangeLog (.../branches/gcc-8-branch) +@@ -1,3 +1,426 @@ ++2019-11-10 Thomas Koenig <tkoenig@gcc.gnu.org> ++ ++ Backport from trunk ++ PR fortran/92113 ++ * trans-decl.c (gfc_get_symbol_decl): If __def_init actually ++ contains a value, put it into the read-only section. ++ ++2019-10-27 Paul Thomas <pault@gcc.gnu.org> ++ ++ 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-18 Steven G. Kargl <kargl@gcc.gnu.org> ++ ++ PR fortran/69455 ++ * trans-decl.c (generate_local_decl): Avoid misconstructed ++ intrinsic modules in a BLOCK construct. ++ ++2019-10-07 Thomas Koenig <tkoenig@gcc.gnu.org> ++ ++ 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-09-28 Paul Thomas <pault@gcc.gnu.org> ++ ++ 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-18 Thomas Koenig <tkoenig@gcc.gnu.org> ++ ++ 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 <tkoenig@gcc.gnu.org> ++ ++ 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. ++ ++2013-08-13 Thomas Koenig <tkoenig@gcc.gnu.org> ++ ++ Backport from trunk ++ PR fortran/90563 ++ * frontend-passes.c (insert_index): Suppress errors while ++ simplifying the resulting expression. ++ ++2019-08-02 Thomas Koenig <tkoenig@gcc.gnu.org> ++ Paul Thomas <pault@gcc.gnu.org> ++ ++ Backport from trunk ++ PR fortran/90786 ++ PR fortran/90813 ++ * trans-expr.c (pointer_assignment_is_proc_pointer) Remove as ++ it is very simple and only called from one place. ++ (gfc_trans_pointer_assignment): Rename non_proc_pointer_assign ++ as non_proc_ptr_assign. Assign to it directly, rather than call ++ to above, deleted function and use gfc_expr_attr instead of ++ only checking the reference chain. ++ * trans-decl.c (sym_identifier): New function. ++ (mangled_identifier): New function, doing most of the work ++ of gfc_sym_mangled_identifier. ++ (gfc_sym_mangled_identifier): Use mangled_identifier. Add mangled ++ identifier to global symbol table. ++ (get_proc_pointer_decl): Use backend decl from global identifier ++ if present. ++ ++2019-07-07 Paul Thomas <pault@gcc.gnu.org> ++ ++ Backport from trunk ++ PR fortran/91077 ++ * trans-array.c (gfc_conv_scalarized_array_ref) Delete code ++ that gave symbol backend decl for subref arrays. ++ ++2019-06-21 Thomas Koenig <tkoenig@gcc.gnu.org> ++ ++ Backport from trunk ++ PR fortran/90937 ++ * trans-types.c (get_formal_from_actual_arglist): Get symbol from ++ current namespace so it will be freed later. If symbol is of type ++ character, get an empty character length. ++ ++2019-06-12 Thomas Koenig <tkoenig@gcc.gnu.org> ++ Tomáš Trnka <trnka@scm.com> ++ ++ Backport from trunk ++ PR fortran/90744 ++ * trans-types.c (get_formal_from_actual_arglist): Unset typespec ++ flags which make no sense for procedures without explicit ++ interface. ++ ++2019-06-10 Paul Thomas <pault@gcc.gnu.org> ++ ++ Backport from trunk ++ PR fortran/90498 ++ * trans-stmt.c (trans_associate_var) Do not use the saved ++ descriptor if the expression is a COMPONENT_REF. ++ ++2019-06-09 Paul Thomas <pault@gcc.gnu.org> ++ ++ Backport from trunk ++ PR fortran/57284 ++ * resolve.c (find_array_spec): If this is a class expression ++ and the symbol and component array specs are the same, this is ++ not an error. ++ *trans-intrinsic.c (gfc_conv_intrinsic_size): If a class symbol ++ argument, has no namespace, it has come from the interface ++ mapping and the _data component must be accessed directly. ++ ++2019-05-30 Marek Polacek <polacek@redhat.com> ++ ++ * lang.opt (ftail-call-workaround): Fix a typo. ++ ++2019-05-30 Jakub Jelinek <jakub@redhat.com> ++ ++ * lang.opt (ftail-call-workaround=): Fix a typo - lenghts to lengths. ++ ++2019-05-29 Jakub Jelinek <jakub@redhat.com> ++ ++ PR fortran/90329 ++ Backported from mainline ++ 2019-05-29 Jakub Jelinek <jakub@redhat.com> ++ ++ PR fortran/90329 ++ * lang.opt (fbroken-callers): Remove. ++ (ftail-call-workaround, ftail-call-workaround=): New options. ++ * gfortran.h (struct gfc_namespace): Add implicit_interface_calls. ++ * interface.c (gfc_procedure_use): Set implicit_interface_calls ++ for calls to implicit interface procedures. ++ * trans-decl.c (create_function_arglist): Use flag_tail_call_workaround ++ instead of flag_broken_callers. If it is not 2, also require ++ sym->ns->implicit_interface_calls. ++ * invoke.texi (fbroken-callers): Remove documentation. ++ (ftail-call-workaround, ftail-call-workaround=): Document. ++ ++ 2019-05-19 Thomas Koenig <tkoenig@gcc.gnu.org> ++ ++ PR fortran/90329 ++ * invoke.texi: Document -fbroken-callers. ++ * lang.opt: Add -fbroken-callers. ++ * trans-decl.c (create_function_arglist): Only set ++ DECL_HIDDEN_STRING_LENGTH if flag_broken_callers is set. ++ ++ 2019-05-16 Jakub Jelinek <jakub@redhat.com> ++ ++ PR fortran/90329 ++ * trans-decl.c (create_function_arglist): Set ++ DECL_HIDDEN_STRING_LENGTH on hidden string length PARM_DECLs if ++ len is constant. ++ ++2019-04-30 Jakub Jelinek <jakub@redhat.com> ++ ++ Backported from mainline ++ 2019-03-11 Jakub Jelinek <jakub@redhat.com> ++ ++ PR fortran/89651 ++ * trans-openmp.c (gfc_omp_clause_default_ctor): Set TREE_NO_WARNING ++ on decl if adding COND_EXPR for allocatable. ++ (gfc_omp_clause_copy_ctor): Set TREE_NO_WARNING on dest. ++ ++2019-04-24 Paul Thomas <pault@gcc.gnu.org> ++ ++ Backport from mainline ++ PR fortran/87127 ++ * resolve.c (check_host_association): If an external function ++ is typed but not declared explicitly to be external, change the ++ old symbol from a variable to an external function. ++ ++2019-04-14 Thomas Koenig <tkoenig@gcc.gnu.org> ++ ++ Backport from trunk ++ PR fortran/87352 ++ * gfortran.h (gfc_component): Add finalized field. ++ * class.c (finalize_component): If the component is already ++ finalized, return early. Set component->finalized on exit. ++ ++2019-04-14 Thomas Koenig <tkoenig@gcc.gnu.org> ++ ++ Backport from trunk ++ PR fortran/89981 ++ * resolve.c (resolve_global_procedure): If the global symbol is an ++ ENTRY, also look up its name among the entries. ++ ++2019-04-10 Harald Anlauf <anlauf@gmx.de> ++ ++ Backport from trunk ++ PR fortran/89904 ++ * check.c (gfc_check_transfer): Reject procedures as actual ++ arguments for SOURCE and MOLD of TRANSFER intrinsic. ++ ++2019-03-31 Harald Anlauf <anlauf@gmx.de> ++ ++ PR fortran/83515 ++ PR fortran/85797 ++ * trans-types.c (gfc_typenode_for_spec): Handle conversion for ++ procedure pointers. ++ * target-memory.c (gfc_element_size): Handle size determination ++ for procedure pointers. ++ ++2019-03-30 Thomas Koenig <tkoenig@gcc.gnu.org> ++ ++ PR fortran/78865 ++ Backport from trunk ++ * interface.c (compare_actual_formal): Change errors about ++ missing or extra to gfc_error_now to make sure they are issued. ++ Change "spec" to "specifier" in message. ++ * resolve.c (resolve_global_procedure): Also check for mismatching ++ interface with global symbols if the namespace has already been ++ resolved. ++ ++2019-03-24 Janus Weil <janus@gcc.gnu.org> ++ ++ PR fortran/71861 ++ Backport from trunk ++ * symbol.c (check_conflict): ABSTRACT attribute conflicts with ++ INTRINSIC attribute. ++ ++2019-03-23 Thomas Koenig <tkoeng@gcc.gnu.org> ++ ++ PR fortran/68009 ++ Backport from trunk ++ * iresolve.c: Include trans.h. ++ (gfc_resolve_fe_runtine_error): Set backend_decl on ++ resolved_sym. ++ ++2019-03-17 Thomas Koenig <tkoenig@gcc.gnu.org> ++ ++ PR fortran/84394 ++ Backport from trunk ++ * symbol.c (gfc_add_subroutine): If we are encountering a ++ subrtoutine within a BLOCK DATA and the name starts with an ++ underscore, do not check. ++ ++2019-03-16 Thomas Koenig <tkoenig@gcc.gnu.org> ++ ++ PR fortran/66089 ++ Backport from trunk ++ * trans-array.c (gfc_scalar_elemental_arg_saved_as_reference): ++ Return false if a scalar tempoary is needed. ++ (gfc_walk_variable_expr): Fix up class refs. ++ ++2019-03-16 Thomas Koenig <tkoenig@gcc.gnu.org> ++ ++ PR fortran/66695 ++ PR fortran/77746 ++ PR fortran/79485 ++ Backport from trunk ++ * gfortran.h (gfc_symbol): Add bind_c component. ++ (gfc_get_gsymbol): Add argument bind_c. ++ * decl.c (add_global_entry): Add bind_c argument to ++ gfc_get_symbol. ++ * parse.c (parse_block_data): Likewise. ++ (parse_module): Likewise. ++ (add_global_procedure): Likewise. ++ (add_global_program): Likewise. ++ * resolve.c (resolve_common_blocks): Likewise. ++ (resolve_global_procedure): Likewise. ++ (gfc_verify_binding_labels): Likewise. ++ * symbol.c (gfc_get_gsymbol): Add argument bind_c. Set bind_c ++ in gsym. ++ * trans-decl.c (gfc_get_module_backend_decl): Add bind_c argument ++ to gfc_get_symbol. ++ (gfc_get_extern_function_decl): If the sym has a binding label ++ and it cannot be found in the global symbol tabel, it is the wrong ++ one and vice versa. ++ ++2019-03-13 Thomas Koenig <tkoenig@gcc.gnu.org> ++ ++ PR fortran/87673 ++ Backport from trunk ++ * match.c (gfc_match_type_spec): Remove call to ++ gfc_resolve_expr for character length. ++ ++2019-03-10 Thomas Koenig <tkoenig@gcc.gnu.org> ++ ++ PR fortran/71544 ++ Backport from trunk ++ * trans-types.c (gfc_typenode_for_spec) Set ts->is_c_interop of ++ C_PTR and C_FUNPTR. ++ (create_fn_spec): Mark argument as escaping if ts->is_c_interop is set. ++ ++2019-03-10 Thomas Koenig <tkoenig@gcc.gnu.org> ++ Steven G. Kargl <kargl@gcc.gnu.org> ++ ++ PR fortran/87734 ++ Backort from trunk ++ * symbol.c (gfc_add_procedure): Only throw an error if the ++ procedure has not been declared either PUBLIC or PRIVATE. ++ * resolve.c (is_illegal_recursion): Remove an assert(). ++ ++2019-03-06 Harald Anlauf <anlauf@gmx.de> ++ ++ Backport from trunk ++ PR fortran/71203 ++ * expr.c (simplify_const_ref): Avoid null pointer dereference. ++ ++2019-03-06 Thomas Koenig <tkoenig@gcc.gnu.org> ++ ++ PR fortran/72714 ++ Backport from trunk ++ * resolve.c (resolve_allocate_expr): Add some tests for coarrays. ++ ++2019-03-03 Harald Anlauf <anlauf@gmx.de> ++ ++ Backport from trunk ++ PR fortran/89077 ++ * decl.c (gfc_set_constant_character_len): Clear original string ++ representation after padding has been performed to target length. ++ * resolve.c (gfc_resolve_substring_charlen): Check substring ++ length for constantness prior to general calculation of length. ++ ++2019-03-03 Harald Anlauf <anlauf@gmx.de> ++ Steven G. Kargl <kargl@gcc.gnu.org> ++ ++ Backport from trunk ++ PR fortran/77583 ++ * symbol.c (check_conflict): Check for valid procedure name ++ passed to error reporting routine. ++ ++2019-03-03 Thomas Koenig <tkoenig@gcc.gnu.org> ++ ++ PR fortran/89174 ++ Backport from trunk ++ * trans-expr.c (gfc_find_and_cut_at_last_class_ref): Add is_mold ++ to garguments. If we are dealing with a MOLD, call ++ gfc_expr_to_initialize(). ++ * trans-stmt.c (gfc_trans_allocate): For MOLD, pass is_mold=true ++ to gfc_find_and_cut_at_last_class_ref. ++ * trans.h (gfc_find_and_cut_at_last_class_ref): Add optional ++ argument is_mold with default false. ++ ++2019-03-03 Thomas Koenig <tkoenig@gcc.gnu.org> ++ ++ PR fortran/87689 ++ Backport from trunk ++ * gfortran.dg/lto/20091028-1_0.f90: Add -Wno-lto-type-mismatch to ++ options. ++ * gfortran.dg/lto/20091028-2_0.f90: Likewise. ++ * gfortran.dg/lto/pr87689_0.f: New file. ++ * gfortran.dg/lto/pr87689_1.f: New file. ++ * gfortran.dg/altreturn_9_0.f90: New file. ++ * gfortran.dg/altreturn_9_1.f90: New file. ++ ++2019-03-02 Jerry DeLisle <jvdelisle@gcc.gnu.org> ++ ++ Backport from trunk ++ PR fortran/84387 ++ * trans-io.c (transfer_expr): Do not return if there are no ++ components to the derived type or class. ++ ++2019-03-02 Harald Anlauf <anlauf@gmx.de> ++ ++ Backport from trunk ++ PR fortran/89516 ++ * check.c (gfc_calculate_transfer_sizes): Correct checks for cases ++ where storage size of elements of MOLD is 0. ++ ++ PR fortran/89492 ++ * check.c (gfc_calculate_transfer_sizes): Handle cases where ++ storage size of elements of MOLD is 0. ++ ++ PR fortran/89266 ++ PR fortran/88326 ++ * target-memory.c (gfc_element_size): Return false if element size ++ cannot be determined; element size is returned separately. ++ (gfc_target_expr_size): Return false if expression size cannot be ++ determined; expression size is returned separately. ++ * target-memory.h: Adjust prototypes. ++ * check.c (gfc_calculate_transfer_sizes): Adjust references to ++ gfc_target_expr_size, gfc_element_size. ++ * arith.c (hollerith2representation): Likewise. ++ * class.c (find_intrinsic_vtab): Likewise. ++ * simplify.c (gfc_simplify_sizeof): Likewise. ++ ++2019-02-23 Thomas Koenig <tkoenig@gcc.gnu.org> ++ ++ PR fortran/86119 ++ Backport from trunk ++ * class.c (gfc_get_len_component): Add argument k for kind. ++ If the kind of the resulting expression is not equal to k, ++ convert it. ++ * gfortran.h (gfc_len_component): Adjust prototype. ++ * simplify.c (gfc_simplify_len): Pass kind to ++ gfc_get_len_component. ++ ++2019-02-23 Paul Thomas <pault@gcc.gnu.org> ++ ++ Backport from trunk ++ PR fortran/88117 ++ * resolve.c (deferred_op_assign): Return if the lhs expression ++ has the pointer attribute. ++ ++2019-02-22 Thomas Koenig <tkoenig@gcc.gnu.org> ++ ++ PR fortran/71066 ++ Backport from trunk ++ * trans-decl.c (generate_coarray_sym_init): For an array ++ constructor in a DATA statement of a coarray variable, set the ++ rank to 1 to avoid confusion later on. If the constructor ++ contains only one value, use that for initiailizig. ++ + 2019-02-22 Release Manager + + * GCC 8.3.0 released. +Index: gcc/fortran/trans-stmt.c +=================================================================== +--- a/src/gcc/fortran/trans-stmt.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/fortran/trans-stmt.c (.../branches/gcc-8-branch) +@@ -1842,7 +1842,8 @@ + { + if (e->symtree + && DECL_LANG_SPECIFIC (e->symtree->n.sym->backend_decl) +- && GFC_DECL_SAVED_DESCRIPTOR (e->symtree->n.sym->backend_decl)) ++ && GFC_DECL_SAVED_DESCRIPTOR (e->symtree->n.sym->backend_decl) ++ && TREE_CODE (target_expr) != COMPONENT_REF) + /* Use the original class descriptor stored in the saved + descriptor to get the target_expr. */ + target_expr = +@@ -6606,7 +6607,7 @@ + /* Use class_init_assign to initialize expr. */ + gfc_code *ini; + ini = gfc_get_code (EXEC_INIT_ASSIGN); +- ini->expr1 = gfc_find_and_cut_at_last_class_ref (expr); ++ ini->expr1 = gfc_find_and_cut_at_last_class_ref (expr, true); + tmp = gfc_trans_class_init_assign (ini); + gfc_free_statements (ini); + gfc_add_expr_to_block (&block, tmp); +Index: gcc/fortran/expr.c +=================================================================== +--- a/src/gcc/fortran/expr.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/fortran/expr.c (.../branches/gcc-8-branch) +@@ -1784,8 +1784,14 @@ + string_len = 0; + + if (!p->ts.u.cl) +- p->ts.u.cl = gfc_new_charlen (p->symtree->n.sym->ns, +- NULL); ++ { ++ if (p->symtree) ++ p->ts.u.cl = gfc_new_charlen (p->symtree->n.sym->ns, ++ NULL); ++ else ++ p->ts.u.cl = gfc_new_charlen (gfc_current_ns, ++ NULL); ++ } + else + gfc_free_expr (p->ts.u.cl->length); + +@@ -2390,6 +2396,8 @@ + + int i = 0; + gfc_actual_arglist *ap; ++ gfc_symbol *sym; ++ gfc_symbol *asym; + + if (!e->value.function.isym + || !e->value.function.isym->inquiry) +@@ -2399,20 +2407,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 = (gfc_option.warn_std & GFC_STD_F2003) + ? inquiry_func_f2003 : inquiry_func_f95; +@@ -2434,41 +2444,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/trans-types.c +=================================================================== +--- a/src/gcc/fortran/trans-types.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/fortran/trans-types.c (.../branches/gcc-8-branch) +@@ -1213,7 +1213,8 @@ + { + spec->type = BT_INTEGER; + spec->kind = gfc_index_integer_kind; +- spec->f90_type = BT_VOID; ++ spec->f90_type = BT_VOID; ++ spec->is_c_interop = 1; /* Mark as escaping later. */ + } + break; + case BT_VOID: +@@ -1230,6 +1231,9 @@ + basetype = pfunc_type_node; + } + break; ++ case BT_PROCEDURE: ++ basetype = pfunc_type_node; ++ break; + default: + gcc_unreachable (); + } +@@ -2978,7 +2982,8 @@ + || f->sym->ts.u.derived->attr.pointer_comp)) + || (f->sym->ts.type == BT_CLASS + && (CLASS_DATA (f->sym)->ts.u.derived->attr.proc_pointer_comp +- || CLASS_DATA (f->sym)->ts.u.derived->attr.pointer_comp))) ++ || CLASS_DATA (f->sym)->ts.u.derived->attr.pointer_comp)) ++ || (f->sym->ts.type == BT_INTEGER && f->sym->ts.is_c_interop)) + spec[spec_len++] = '.'; + else if (f->sym->attr.intent == INTENT_IN) + spec[spec_len++] = 'r'; +@@ -2991,9 +2996,65 @@ + return build_type_attribute_variant (fntype, tmp); + } + ++/* Helper function - if we do not find an interface for a procedure, ++ construct it from the actual arglist. Luckily, this can only ++ happen for call by reference, so the information we actually need ++ to provide (and which would be impossible to guess from the call ++ itself) is not actually needed. */ + ++static void ++get_formal_from_actual_arglist (gfc_symbol *sym, gfc_actual_arglist *actual_args) ++{ ++ gfc_actual_arglist *a; ++ gfc_formal_arglist **f; ++ gfc_symbol *s; ++ char name[GFC_MAX_SYMBOL_LEN + 1]; ++ static int var_num; ++ ++ f = &sym->formal; ++ for (a = actual_args; a != NULL; a = a->next) ++ { ++ (*f) = gfc_get_formal_arglist (); ++ if (a->expr) ++ { ++ snprintf (name, GFC_MAX_SYMBOL_LEN, "_formal_%d", var_num ++); ++ gfc_get_symbol (name, gfc_current_ns, &s); ++ if (a->expr->ts.type == BT_PROCEDURE) ++ { ++ s->attr.flavor = FL_PROCEDURE; ++ } ++ else ++ { ++ s->ts = a->expr->ts; ++ ++ if (s->ts.type == BT_CHARACTER) ++ s->ts.u.cl = gfc_get_charlen (); ++ ++ s->ts.deferred = 0; ++ s->ts.is_iso_c = 0; ++ s->ts.is_c_interop = 0; ++ s->attr.flavor = FL_VARIABLE; ++ if (a->expr->rank > 0) ++ { ++ s->attr.dimension = 1; ++ s->as = gfc_get_array_spec (); ++ s->as->type = AS_ASSUMED_SIZE; ++ } ++ } ++ s->attr.dummy = 1; ++ s->attr.artificial = 1; ++ s->attr.intent = INTENT_UNKNOWN; ++ (*f)->sym = s; ++ } ++ else /* If a->expr is NULL, this is an alternate rerturn. */ ++ (*f)->sym = NULL; ++ ++ f = &((*f)->next); ++ } ++} ++ + tree +-gfc_get_function_type (gfc_symbol * sym) ++gfc_get_function_type (gfc_symbol * sym, gfc_actual_arglist *actual_args) + { + tree type; + vec<tree, va_gc> *typelist = NULL; +@@ -3051,6 +3112,10 @@ + vec_safe_push (typelist, build_pointer_type(gfc_charlen_type_node)); + } + } ++ if (sym->backend_decl == error_mark_node && actual_args != NULL ++ && sym->formal == NULL && (sym->attr.proc == PROC_EXTERNAL ++ || sym->attr.proc == PROC_UNKNOWN)) ++ get_formal_from_actual_arglist (sym, actual_args); + + /* Build the argument types for the function. */ + for (f = gfc_sym_get_dummy_args (sym); f; f = f->next) +Index: gcc/fortran/trans.h +=================================================================== +--- a/src/gcc/fortran/trans.h (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/fortran/trans.h (.../branches/gcc-8-branch) +@@ -412,7 +412,7 @@ + tree gfc_class_vptr_get (tree); + tree gfc_class_len_get (tree); + tree gfc_class_len_or_zero_get (tree); +-gfc_expr * gfc_find_and_cut_at_last_class_ref (gfc_expr *); ++gfc_expr * gfc_find_and_cut_at_last_class_ref (gfc_expr *, bool is_mold = false); + /* Get an accessor to the class' vtab's * field, when a class handle is + available. */ + tree gfc_class_vtab_hash_get (tree); +@@ -579,7 +579,8 @@ + tree gfc_get_label_decl (gfc_st_label *); + + /* Return the decl for an external function. */ +-tree gfc_get_extern_function_decl (gfc_symbol *); ++tree gfc_get_extern_function_decl (gfc_symbol *, ++ gfc_actual_arglist *args = NULL); + + /* Return the decl for a function. */ + tree gfc_get_function_decl (gfc_symbol *); +Index: gcc/fortran/trans-types.h +=================================================================== +--- a/src/gcc/fortran/trans-types.h (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/fortran/trans-types.h (.../branches/gcc-8-branch) +@@ -88,7 +88,7 @@ + tree gfc_typenode_for_spec (gfc_typespec *, int c = 0); + int gfc_copy_dt_decls_ifequal (gfc_symbol *, gfc_symbol *, bool); + +-tree gfc_get_function_type (gfc_symbol *); ++tree gfc_get_function_type (gfc_symbol *, gfc_actual_arglist *args = NULL); + + tree gfc_type_for_size (unsigned, int); + tree gfc_type_for_mode (machine_mode, int); +Index: gcc/fortran/frontend-passes.c +=================================================================== +--- a/src/gcc/fortran/frontend-passes.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/fortran/frontend-passes.c (.../branches/gcc-8-branch) +@@ -2461,7 +2461,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) + { +@@ -2511,6 +2516,7 @@ + bool have_do_start, have_do_end; + bool error_not_proven; + int warn; ++ int sgn; + + dl = lp->c; + if (dl == NULL) +@@ -2539,7 +2545,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; + +@@ -2563,6 +2578,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) +Index: gcc/fortran/resolve.c +=================================================================== +--- a/src/gcc/fortran/resolve.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/fortran/resolve.c (.../branches/gcc-8-branch) +@@ -1045,7 +1045,7 @@ + } + if (!gsym) + { +- gsym = gfc_get_gsymbol (common_root->n.common->name); ++ gsym = gfc_get_gsymbol (common_root->n.common->name, false); + gsym->type = GSYM_COMMON; + gsym->where = common_root->n.common->where; + gsym->defined = 1; +@@ -1067,7 +1067,7 @@ + } + if (!gsym) + { +- gsym = gfc_get_gsymbol (common_root->n.common->binding_label); ++ gsym = gfc_get_gsymbol (common_root->n.common->binding_label, true); + gsym->type = GSYM_COMMON; + gsym->where = common_root->n.common->where; + gsym->defined = 1; +@@ -1681,8 +1681,6 @@ + || gfc_fl_struct (sym->attr.flavor)) + return false; + +- gcc_assert (sym->attr.flavor == FL_PROCEDURE); +- + /* If we've got an ENTRY, find real procedure. */ + if (sym->attr.entry && sym->ns->entries) + proc_sym = sym->ns->entries->sym; +@@ -2484,7 +2482,8 @@ + + type = sub ? GSYM_SUBROUTINE : GSYM_FUNCTION; + +- gsym = gfc_get_gsymbol (sym->binding_label ? sym->binding_label : sym->name); ++ gsym = gfc_get_gsymbol (sym->binding_label ? sym->binding_label : sym->name, ++ sym->binding_label != NULL); + + if ((gsym->type != GSYM_UNKNOWN && gsym->type != type)) + gfc_global_used (gsym, where); +@@ -2494,64 +2493,64 @@ + && gsym->type != GSYM_UNKNOWN + && !gsym->binding_label + && gsym->ns +- && gsym->ns->resolved != -1 + && gsym->ns->proc_name + && not_in_recursive (sym, gsym->ns) + && not_entry_self_reference (sym, gsym->ns)) + { + gfc_symbol *def_sym; ++ def_sym = gsym->ns->proc_name; + + /* Resolve the gsymbol namespace if needed. */ +- if (!gsym->ns->resolved) ++ if (gsym->ns->resolved != -1) + { +- gfc_dt_list *old_dt_list; ++ if (!gsym->ns->resolved) ++ { ++ gfc_dt_list *old_dt_list; + +- /* Stash away derived types so that the backend_decls do not +- get mixed up. */ +- old_dt_list = gfc_derived_types; +- gfc_derived_types = NULL; ++ /* Stash away derived types so that the backend_decls ++ do not get mixed up. */ ++ old_dt_list = gfc_derived_types; ++ gfc_derived_types = NULL; + +- gfc_resolve (gsym->ns); ++ gfc_resolve (gsym->ns); + +- /* Store the new derived types with the global namespace. */ +- if (gfc_derived_types) +- gsym->ns->derived_types = gfc_derived_types; ++ /* Store the new derived types with the global namespace. */ ++ if (gfc_derived_types) ++ gsym->ns->derived_types = gfc_derived_types; + +- /* Restore the derived types of this namespace. */ +- gfc_derived_types = old_dt_list; +- } ++ /* Restore the derived types of this namespace. */ ++ gfc_derived_types = old_dt_list; ++ } + +- /* Make sure that translation for the gsymbol occurs before +- the procedure currently being resolved. */ +- ns = gfc_global_ns_list; +- for (; ns && ns != gsym->ns; ns = ns->sibling) +- { +- if (ns->sibling == gsym->ns) ++ /* Make sure that translation for the gsymbol occurs before ++ the procedure currently being resolved. */ ++ ns = gfc_global_ns_list; ++ for (; ns && ns != gsym->ns; ns = ns->sibling) + { +- ns->sibling = gsym->ns->sibling; +- gsym->ns->sibling = gfc_global_ns_list; +- gfc_global_ns_list = gsym->ns; +- break; ++ if (ns->sibling == gsym->ns) ++ { ++ ns->sibling = gsym->ns->sibling; ++ gsym->ns->sibling = gfc_global_ns_list; ++ gfc_global_ns_list = gsym->ns; ++ break; ++ } + } +- } + +- def_sym = gsym->ns->proc_name; ++ /* This can happen if a binding name has been specified. */ ++ if (gsym->binding_label && gsym->sym_name != def_sym->name) ++ gfc_find_symbol (gsym->sym_name, gsym->ns, 0, &def_sym); + +- /* This can happen if a binding name has been specified. */ +- if (gsym->binding_label && gsym->sym_name != def_sym->name) +- gfc_find_symbol (gsym->sym_name, gsym->ns, 0, &def_sym); +- +- if (def_sym->attr.entry_master) +- { +- gfc_entry_list *entry; +- for (entry = gsym->ns->entries; entry; entry = entry->next) +- if (strcmp (entry->sym->name, sym->name) == 0) +- { +- def_sym = entry->sym; +- break; +- } ++ if (def_sym->attr.entry_master || def_sym->attr.entry) ++ { ++ gfc_entry_list *entry; ++ for (entry = gsym->ns->entries; entry; entry = entry->next) ++ if (strcmp (entry->sym->name, sym->name) == 0) ++ { ++ def_sym = entry->sym; ++ break; ++ } ++ } + } +- + if (sym->attr.function && !gfc_compare_types (&sym->ts, &def_sym->ts)) + { + gfc_error ("Return type mismatch of function %qs at %L (%s/%s)", +@@ -4633,9 +4632,13 @@ + gfc_array_spec *as; + gfc_component *c; + gfc_ref *ref; ++ bool class_as = false; + + if (e->symtree->n.sym->ts.type == BT_CLASS) +- as = CLASS_DATA (e->symtree->n.sym)->as; ++ { ++ as = CLASS_DATA (e->symtree->n.sym)->as; ++ class_as = true; ++ } + else + as = e->symtree->n.sym->as; + +@@ -4654,7 +4657,7 @@ + c = ref->u.c.component; + if (c->attr.dimension) + { +- if (as != NULL) ++ if (as != NULL && !(class_as && as == c->as)) + gfc_internal_error ("find_array_spec(): unused as(1)"); + as = c->as; + } +@@ -4881,6 +4884,7 @@ + gfc_ref *char_ref; + gfc_expr *start, *end; + gfc_typespec *ts = NULL; ++ mpz_t diff; + + for (char_ref = e->ref; char_ref; char_ref = char_ref->next) + { +@@ -4932,12 +4936,26 @@ + return; + } + +- /* Length = (end - start + 1). */ +- e->ts.u.cl->length = gfc_subtract (end, start); +- e->ts.u.cl->length = gfc_add (e->ts.u.cl->length, +- gfc_get_int_expr (gfc_charlen_int_kind, +- NULL, 1)); ++ /* Length = (end - start + 1). ++ Check first whether it has a constant length. */ ++ if (gfc_dep_difference (end, start, &diff)) ++ { ++ gfc_expr *len = gfc_get_constant_expr (BT_INTEGER, gfc_charlen_int_kind, ++ &e->where); + ++ mpz_add_ui (len->value.integer, diff, 1); ++ mpz_clear (diff); ++ e->ts.u.cl->length = len; ++ /* The check for length < 0 is handled below */ ++ } ++ else ++ { ++ e->ts.u.cl->length = gfc_subtract (end, start); ++ e->ts.u.cl->length = gfc_add (e->ts.u.cl->length, ++ gfc_get_int_expr (gfc_charlen_int_kind, ++ NULL, 1)); ++ } ++ + /* F2008, 6.4.1: Both the starting point and the ending point shall + be within the range 1, 2, ..., n unless the starting point exceeds + the ending point, in which case the substring has length zero. */ +@@ -5615,11 +5633,14 @@ + + + /* Checks to see that the correct symbol has been host associated. +- The only situation where this arises is that in which a twice +- contained function is parsed after the host association is made. +- Therefore, on detecting this, change the symbol in the expression +- and convert the array reference into an actual arglist if the old +- symbol is a variable. */ ++ The only situations where this arises are: ++ (i) That in which a twice contained function is parsed after ++ the host association is made. On detecting this, change ++ the symbol in the expression and convert the array reference ++ into an actual arglist if the old symbol is a variable; or ++ (ii) That in which an external function is typed but not declared ++ explcitly to be external. Here, the old symbol is changed ++ from a variable to an external function. */ + static bool + check_host_association (gfc_expr *e) + { +@@ -5709,6 +5730,26 @@ + gfc_resolve_expr (e); + sym->refs++; + } ++ /* This case corresponds to a call, from a block or a contained ++ procedure, to an external function, which has not been declared ++ as being external in the main program but has been typed. */ ++ else if (sym && old_sym != sym ++ && !e->ref ++ && sym->ts.type == BT_UNKNOWN ++ && old_sym->ts.type != BT_UNKNOWN ++ && sym->attr.flavor == FL_PROCEDURE ++ && old_sym->attr.flavor == FL_VARIABLE ++ && sym->ns->parent == old_sym->ns ++ && sym->ns->proc_name ++ && (sym->ns->proc_name->attr.flavor == FL_LABEL ++ || sym->ns->proc_name->attr.flavor == FL_PROCEDURE)) ++ { ++ old_sym->attr.flavor = FL_PROCEDURE; ++ old_sym->attr.external = 1; ++ old_sym->attr.function = 1; ++ old_sym->result = old_sym; ++ gfc_resolve_expr (e); ++ } + } + /* This might have changed! */ + return e->expr_type == EXPR_FUNCTION; +@@ -6888,6 +6929,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 +@@ -6901,19 +6955,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) +@@ -7215,6 +7256,10 @@ + for (ref = result->ref; ref; ref = ref->next) + if (ref->type == REF_ARRAY && ref->next == NULL) + { ++ if (ref->u.ar.dimen == 0 ++ && ref->u.ar.as && ref->u.ar.as->corank) ++ return result; ++ + ref->u.ar.type = AR_FULL; + + for (i = 0; i < ref->u.ar.dimen; i++) +@@ -7640,13 +7685,54 @@ + + if (codimension) + for (i = ar->dimen; i < ar->dimen + ar->codimen; i++) +- if (ar->dimen_type[i] == DIMEN_THIS_IMAGE) +- { +- gfc_error ("Coarray specification required in ALLOCATE statement " +- "at %L", &e->where); +- goto failure; +- } ++ { ++ switch (ar->dimen_type[i]) ++ { ++ case DIMEN_THIS_IMAGE: ++ gfc_error ("Coarray specification required in ALLOCATE statement " ++ "at %L", &e->where); ++ goto failure; + ++ case DIMEN_RANGE: ++ if (ar->start[i] == 0 || ar->end[i] == 0) ++ { ++ /* If ar->stride[i] is NULL, we issued a previous error. */ ++ if (ar->stride[i] == NULL) ++ gfc_error ("Bad array specification in ALLOCATE statement " ++ "at %L", &e->where); ++ goto failure; ++ } ++ else if (gfc_dep_compare_expr (ar->start[i], ar->end[i]) == 1) ++ { ++ gfc_error ("Upper cobound is less than lower cobound at %L", ++ &ar->start[i]->where); ++ goto failure; ++ } ++ break; ++ ++ case DIMEN_ELEMENT: ++ if (ar->start[i]->expr_type == EXPR_CONSTANT) ++ { ++ gcc_assert (ar->start[i]->ts.type == BT_INTEGER); ++ if (mpz_cmp_si (ar->start[i]->value.integer, 1) < 0) ++ { ++ gfc_error ("Upper cobound is less than lower cobound " ++ " of 1 at %L", &ar->start[i]->where); ++ goto failure; ++ } ++ } ++ break; ++ ++ case DIMEN_STAR: ++ break; ++ ++ default: ++ gfc_error ("Bad array specification in ALLOCATE statement at %L", ++ &e->where); ++ goto failure; ++ ++ } ++ } + for (i = 0; i < ar->dimen; i++) + { + if (ar->type == AR_ELEMENT || ar->type == AR_FULL) +@@ -11011,6 +11097,9 @@ + if (!gfc_check_dependency ((*code)->expr1, (*code)->expr2, 1)) + return false; + ++ if (gfc_expr_attr ((*code)->expr1).pointer) ++ return false; ++ + tmp_expr = get_temp_from_expr ((*code)->expr1, ns); + tmp_expr->where = (*code)->loc; + +@@ -11647,7 +11736,7 @@ + && (gsym->type == GSYM_FUNCTION || gsym->type == GSYM_SUBROUTINE))) + { + if (!gsym) +- gsym = gfc_get_gsymbol (sym->binding_label); ++ gsym = gfc_get_gsymbol (sym->binding_label, true); + gsym->where = sym->declared_at; + gsym->sym_name = sym->name; + gsym->binding_label = sym->binding_label; +@@ -16266,8 +16355,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/iresolve.c +=================================================================== +--- a/src/gcc/fortran/iresolve.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/fortran/iresolve.c (.../branches/gcc-8-branch) +@@ -35,6 +35,7 @@ + #include "intrinsic.h" + #include "constructor.h" + #include "arith.h" ++#include "trans.h" + + /* Given printf-like arguments, return a stable version of the result string. + +@@ -2377,6 +2378,10 @@ + a->name = "%VAL"; + + c->resolved_sym = gfc_get_intrinsic_sub_symbol (name); ++ /* We set the backend_decl here because runtime_error is a ++ variadic function and we would use the wrong calling ++ convention otherwise. */ ++ c->resolved_sym->backend_decl = gfor_fndecl_runtime_error; + } + + void +Index: gcc/fortran/trans-decl.c +=================================================================== +--- a/src/gcc/fortran/trans-decl.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/fortran/trans-decl.c (.../branches/gcc-8-branch) +@@ -342,40 +342,45 @@ + } + } + ++/* Return the name of an identifier. */ + ++static const char * ++sym_identifier (gfc_symbol *sym) ++{ ++ if (sym->attr.is_main_program && strcmp (sym->name, "main") == 0) ++ return "MAIN__"; ++ else ++ return sym->name; ++} ++ + /* Convert a gfc_symbol to an identifier of the same name. */ + + static tree + gfc_sym_identifier (gfc_symbol * sym) + { +- if (sym->attr.is_main_program && strcmp (sym->name, "main") == 0) +- return (get_identifier ("MAIN__")); +- else +- return (get_identifier (sym->name)); ++ return get_identifier (sym_identifier (sym)); + } + ++/* Construct mangled name from symbol name. */ + +-/* Construct mangled name from symbol name. */ +- +-static tree +-gfc_sym_mangled_identifier (gfc_symbol * sym) ++static const char * ++mangled_identifier (gfc_symbol *sym) + { +- 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)). */ ++ + if (sym->attr.is_bind_c == 1 && sym->binding_label) +- return get_identifier (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 gfc_sym_identifier (sym); ++ return sym_identifier (sym); + else +- { +- snprintf (name, sizeof name, "__%s_MOD_%s", sym->module, sym->name); +- return get_identifier (name); +- } ++ snprintf (name, sizeof name, "__%s_MOD_%s", sym->module, sym->name); + } + else + { +@@ -382,25 +387,42 @@ + /* 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 get_identifier (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 get_identifier (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 ++ it is not yet already there. */ + ++static tree ++gfc_sym_mangled_identifier (gfc_symbol * sym) ++{ ++ tree result; ++ gfc_gsymbol *gsym; ++ const char *name; ++ ++ name = mangled_identifier (sym); ++ result = get_identifier (name); ++ ++ gsym = gfc_find_gsymbol (gfc_gsym_root, name); ++ if (gsym == NULL) ++ { ++ gsym = gfc_get_gsymbol (name, false); ++ gsym->ns = sym->ns; ++ gsym->sym_name = sym->name; ++ } ++ ++ return result; ++} ++ + /* Construct mangled function name from symbol name. */ + + static tree +@@ -839,7 +861,7 @@ + { + if (!gsym) + { +- gsym = gfc_get_gsymbol (sym->module); ++ gsym = gfc_get_gsymbol (sym->module, false); + gsym->type = GSYM_MODULE; + gsym->ns = gfc_get_namespace (NULL, 0); + } +@@ -1863,10 +1885,19 @@ + if (sym->attr.associate_var) + GFC_DECL_ASSOCIATE_VAR_P (decl) = 1; + +- if (sym->attr.vtab +- || (sym->name[0] == '_' && strncmp ("__def_init", sym->name, 10) == 0)) +- TREE_READONLY (decl) = 1; ++ /* We only mark __def_init as read-only if it actually has an ++ initializer so it does not needlessly take up space in the ++ read-only section and can 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 || strncmp ("__def_init", sym->name, 10) == 0) ++ { ++ DECL_ARTIFICIAL (decl) = 1; ++ if (sym->attr.vtab || sym->value) ++ TREE_READONLY (decl) = 1; ++ } ++ + return decl; + } + +@@ -1905,6 +1936,22 @@ + tree decl; + tree attributes; + ++ if (sym->module || sym->fn_result_spec) ++ { ++ const char *name; ++ gfc_gsymbol *gsym; ++ ++ name = mangled_identifier (sym); ++ gsym = gfc_find_gsymbol (gfc_gsym_root, name); ++ if (gsym != NULL) ++ { ++ gfc_symbol *s; ++ gfc_find_symbol (sym->name, gsym->ns, 0, &s); ++ if (s && s->backend_decl) ++ return s->backend_decl; ++ } ++ } ++ + decl = sym->backend_decl; + if (decl) + return decl; +@@ -1977,7 +2024,7 @@ + /* Get a basic decl for an external function. */ + + tree +-gfc_get_extern_function_decl (gfc_symbol * sym) ++gfc_get_extern_function_decl (gfc_symbol * sym, gfc_actual_arglist *actual_args) + { + tree type; + tree fndecl; +@@ -2002,10 +2049,23 @@ + return get_proc_pointer_decl (sym); + + /* See if this is an external procedure from the same file. If so, +- return the backend_decl. */ +- gsym = gfc_find_gsymbol (gfc_gsym_root, sym->binding_label +- ? sym->binding_label : sym->name); ++ return the backend_decl. If we are looking at a BIND(C) ++ procedure and the symbol is not BIND(C), or vice versa, we ++ haven't found the right procedure. */ + ++ if (sym->binding_label) ++ { ++ gsym = gfc_find_gsymbol (gfc_gsym_root, sym->binding_label); ++ if (gsym && !gsym->bind_c) ++ gsym = NULL; ++ } ++ else ++ { ++ gsym = gfc_find_gsymbol (gfc_gsym_root, sym->name); ++ if (gsym && gsym->bind_c) ++ gsym = NULL; ++ } ++ + if (gsym && !gsym->defined) + gsym = NULL; + +@@ -2150,7 +2210,7 @@ + mangled_name = gfc_sym_mangled_function_id (sym); + } + +- type = gfc_get_function_type (sym); ++ type = gfc_get_function_type (sym, actual_args); + fndecl = build_decl (input_location, + FUNCTION_DECL, name, type); + +@@ -2500,6 +2560,17 @@ + TREE_READONLY (length) = 1; + gfc_finish_decl (length); + ++ /* Marking the length DECL_HIDDEN_STRING_LENGTH will lead ++ to tail calls being disabled. Only do that if we ++ potentially have broken callers. */ ++ if (flag_tail_call_workaround ++ && f->sym->ts.u.cl ++ && f->sym->ts.u.cl->length ++ && f->sym->ts.u.cl->length->expr_type == EXPR_CONSTANT ++ && (flag_tail_call_workaround == 2 ++ || f->sym->ns->implicit_interface_calls)) ++ DECL_HIDDEN_STRING_LENGTH (length) = 1; ++ + /* Remember the passed value. */ + if (!f->sym->ts.u.cl || f->sym->ts.u.cl->passed_length) + { +@@ -5384,6 +5455,33 @@ + /* Handle "static" initializer. */ + if (sym->value) + { ++ if (sym->value->expr_type == EXPR_ARRAY) ++ { ++ gfc_constructor *c, *cnext; ++ ++ /* Test if the array has more than one element. */ ++ c = gfc_constructor_first (sym->value->value.constructor); ++ gcc_assert (c); /* Empty constructor should not happen here. */ ++ cnext = gfc_constructor_next (c); ++ ++ if (cnext) ++ { ++ /* An EXPR_ARRAY with a rank > 1 here has to come from a ++ DATA statement. Set its rank here as not to confuse ++ the following steps. */ ++ sym->value->rank = 1; ++ } ++ else ++ { ++ /* There is only a single value in the constructor, use ++ it directly for the assignment. */ ++ gfc_expr *new_expr; ++ new_expr = gfc_copy_expr (c->expr); ++ gfc_free_expr (sym->value); ++ sym->value = new_expr; ++ } ++ } ++ + sym->attr.pointer = 1; + tmp = gfc_trans_assignment (gfc_lval_expr_from_sym (sym), sym->value, + true, false); +@@ -5628,9 +5726,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; + } +@@ -5722,7 +5822,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; + } +Index: gcc/fortran/target-memory.c +=================================================================== +--- a/src/gcc/fortran/target-memory.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/fortran/target-memory.c (.../branches/gcc-8-branch) +@@ -73,10 +73,10 @@ + + + /* Return the size of a single element of the given expression. +- Identical to gfc_target_expr_size for scalars. */ ++ Equivalent to gfc_target_expr_size for scalars. */ + +-size_t +-gfc_element_size (gfc_expr *e) ++bool ++gfc_element_size (gfc_expr *e, size_t *siz) + { + tree type; + +@@ -83,16 +83,20 @@ + switch (e->ts.type) + { + case BT_INTEGER: +- return size_integer (e->ts.kind); ++ *siz = size_integer (e->ts.kind); ++ return true; + case BT_REAL: +- return size_float (e->ts.kind); ++ *siz = size_float (e->ts.kind); ++ return true; + case BT_COMPLEX: +- return size_complex (e->ts.kind); ++ *siz = size_complex (e->ts.kind); ++ return true; + case BT_LOGICAL: +- return size_logical (e->ts.kind); ++ *siz = size_logical (e->ts.kind); ++ return true; + case BT_CHARACTER: + if (e->expr_type == EXPR_CONSTANT) +- return size_character (e->value.character.length, e->ts.kind); ++ *siz = size_character (e->value.character.length, e->ts.kind); + else if (e->ts.u.cl != NULL && e->ts.u.cl->length != NULL + && e->ts.u.cl->length->expr_type == EXPR_CONSTANT + && e->ts.u.cl->length->ts.type == BT_INTEGER) +@@ -100,17 +104,23 @@ + HOST_WIDE_INT length; + + gfc_extract_hwi (e->ts.u.cl->length, &length); +- return size_character (length, e->ts.kind); ++ *siz = size_character (length, e->ts.kind); + } + else +- return 0; ++ { ++ *siz = 0; ++ return false; ++ } ++ return true; + + case BT_HOLLERITH: +- return e->representation.length; ++ *siz = e->representation.length; ++ return true; + case BT_DERIVED: + case BT_CLASS: + case BT_VOID: + case BT_ASSUMED: ++ case BT_PROCEDURE: + { + /* Determine type size without clobbering the typespec for ISO C + binding types. */ +@@ -120,36 +130,43 @@ + type = gfc_typenode_for_spec (&ts); + size = int_size_in_bytes (type); + gcc_assert (size >= 0); +- return size; ++ *siz = size; + } ++ return true; + default: + gfc_internal_error ("Invalid expression in gfc_element_size."); +- return 0; ++ *siz = 0; ++ return false; + } ++ return true; + } + + + /* Return the size of an expression in its target representation. */ + +-size_t +-gfc_target_expr_size (gfc_expr *e) ++bool ++gfc_target_expr_size (gfc_expr *e, size_t *size) + { + mpz_t tmp; +- size_t asz; ++ size_t asz, el_size; + + gcc_assert (e != NULL); + ++ *size = 0; + if (e->rank) + { + if (gfc_array_size (e, &tmp)) + asz = mpz_get_ui (tmp); + else +- asz = 0; ++ return false; + } + else + asz = 1; + +- return asz * gfc_element_size (e); ++ if (!gfc_element_size (e, &el_size)) ++ return false; ++ *size = asz * el_size; ++ return true; + } + + +@@ -675,7 +692,7 @@ + + /* Otherwise, use the target-memory machinery to write a bitwise image, appropriate + to the target, in a buffer and check off the initialized part of the buffer. */ +- len = gfc_target_expr_size (e); ++ gfc_target_expr_size (e, &len); + buffer = (unsigned char*)alloca (len); + len = gfc_target_encode_expr (e, buffer, len); + +@@ -722,8 +739,10 @@ + for (c = gfc_constructor_first (e->value.constructor); + c; c = gfc_constructor_next (c)) + { +- size_t elt_size = gfc_target_expr_size (c->expr); ++ size_t elt_size; + ++ gfc_target_expr_size (c->expr, &elt_size); ++ + if (mpz_cmp_si (c->offset, 0) != 0) + len = elt_size * (size_t)mpz_get_si (c->offset); + +Index: gcc/fortran/match.c +=================================================================== +--- a/src/gcc/fortran/match.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/fortran/match.c (.../branches/gcc-8-branch) +@@ -2105,8 +2105,6 @@ + ts->type = BT_CHARACTER; + + m = gfc_match_char_spec (ts); +- if (ts->u.cl && ts->u.cl->length) +- gfc_resolve_expr (ts->u.cl->length); + + if (m == MATCH_NO) + m = MATCH_YES; +Index: gcc/fortran/trans-io.c +=================================================================== +--- a/src/gcc/fortran/trans-io.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/fortran/trans-io.c (.../branches/gcc-8-branch) +@@ -2408,8 +2408,6 @@ + + case_bt_struct: + case BT_CLASS: +- if (ts->u.derived->components == NULL) +- return; + if (gfc_bt_struct (ts->type) || ts->type == BT_CLASS) + { + gfc_symbol *derived; +Index: gcc/fortran/target-memory.h +=================================================================== +--- a/src/gcc/fortran/target-memory.h (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/fortran/target-memory.h (.../branches/gcc-8-branch) +@@ -24,8 +24,8 @@ + /* Convert a BOZ to REAL or COMPLEX. */ + bool gfc_convert_boz (gfc_expr *, gfc_typespec *); + +-size_t gfc_element_size (gfc_expr *); +-size_t gfc_target_expr_size (gfc_expr *); ++bool gfc_element_size (gfc_expr *, size_t *); ++bool gfc_target_expr_size (gfc_expr *, size_t *); + + /* Write a constant expression in binary form to a target buffer. */ + size_t gfc_encode_character (int, size_t, const gfc_char_t *, unsigned char *, +Index: gcc/fortran/arith.c +=================================================================== +--- a/src/gcc/fortran/arith.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/fortran/arith.c (.../branches/gcc-8-branch) +@@ -2548,10 +2548,10 @@ + static void + hollerith2representation (gfc_expr *result, gfc_expr *src) + { +- int src_len, result_len; ++ size_t src_len, result_len; + + src_len = src->representation.length - src->ts.u.pad; +- result_len = gfc_target_expr_size (result); ++ gfc_target_expr_size (result, &result_len); + + if (src_len > result_len) + { +Index: gcc/fortran/parse.c +=================================================================== +--- a/src/gcc/fortran/parse.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/fortran/parse.c (.../branches/gcc-8-branch) +@@ -5830,7 +5830,7 @@ + } + else + { +- s = gfc_get_gsymbol (gfc_new_block->name); ++ s = gfc_get_gsymbol (gfc_new_block->name, false); + if (s->defined + || (s->type != GSYM_UNKNOWN && s->type != GSYM_BLOCK_DATA)) + gfc_global_used (s, &gfc_new_block->declared_at); +@@ -5912,7 +5912,7 @@ + gfc_gsymbol *s; + bool error; + +- s = gfc_get_gsymbol (gfc_new_block->name); ++ s = gfc_get_gsymbol (gfc_new_block->name, false); + if (s->defined || (s->type != GSYM_UNKNOWN && s->type != GSYM_MODULE)) + gfc_global_used (s, &gfc_new_block->declared_at); + else +@@ -5976,7 +5976,7 @@ + name is a global identifier. */ + if (!gfc_new_block->binding_label || gfc_notification_std (GFC_STD_F2008)) + { +- s = gfc_get_gsymbol (gfc_new_block->name); ++ s = gfc_get_gsymbol (gfc_new_block->name, false); + + if (s->defined + || (s->type != GSYM_UNKNOWN +@@ -6001,7 +6001,7 @@ + && (!gfc_notification_std (GFC_STD_F2008) + || strcmp (gfc_new_block->name, gfc_new_block->binding_label) != 0)) + { +- s = gfc_get_gsymbol (gfc_new_block->binding_label); ++ s = gfc_get_gsymbol (gfc_new_block->binding_label, true); + + if (s->defined + || (s->type != GSYM_UNKNOWN +@@ -6033,7 +6033,7 @@ + + if (gfc_new_block == NULL) + return; +- s = gfc_get_gsymbol (gfc_new_block->name); ++ s = gfc_get_gsymbol (gfc_new_block->name, false); + + if (s->defined || (s->type != GSYM_UNKNOWN && s->type != GSYM_PROGRAM)) + gfc_global_used (s, &gfc_new_block->declared_at); +Index: gcc/fortran/check.c +=================================================================== +--- a/src/gcc/fortran/check.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/fortran/check.c (.../branches/gcc-8-branch) +@@ -5413,17 +5413,42 @@ + return false; + + /* Calculate the size of the source. */ +- *source_size = gfc_target_expr_size (source); +- if (*source_size == 0) ++ if (!gfc_target_expr_size (source, source_size)) + return false; + + /* Determine the size of the element. */ +- result_elt_size = gfc_element_size (mold); +- if (result_elt_size == 0) ++ if (!gfc_element_size (mold, &result_elt_size)) + return false; + +- if (mold->expr_type == EXPR_ARRAY || mold->rank || size) ++ /* If the storage size of SOURCE is greater than zero and MOLD is an array, ++ * a scalar with the type and type parameters of MOLD shall not have a ++ * storage size equal to zero. ++ * If MOLD is a scalar and SIZE is absent, the result is a scalar. ++ * If MOLD is an array and SIZE is absent, the result is an array and of ++ * rank one. Its size is as small as possible such that its physical ++ * representation is not shorter than that of SOURCE. ++ * If SIZE is present, the result is an array of rank one and size SIZE. ++ */ ++ if (result_elt_size == 0 && *source_size > 0 && !size ++ && mold->expr_type == EXPR_ARRAY) + { ++ gfc_error ("%<MOLD%> argument of %<TRANSFER%> intrinsic at %L is an " ++ "array and shall not have storage size 0 when %<SOURCE%> " ++ "argument has size greater than 0", &mold->where); ++ return false; ++ } ++ ++ if (result_elt_size == 0 && *source_size == 0 && !size) ++ { ++ *result_size = 0; ++ if (result_length_p) ++ *result_length_p = 0; ++ return true; ++ } ++ ++ if ((result_elt_size > 0 && (mold->expr_type == EXPR_ARRAY || mold->rank)) ++ || size) ++ { + int result_length; + + if (size) +@@ -5452,6 +5477,26 @@ + size_t source_size; + size_t result_size; + ++ /* SOURCE shall be a scalar or array of any type. */ ++ if (source->ts.type == BT_PROCEDURE ++ && source->symtree->n.sym->attr.subroutine == 1) ++ { ++ gfc_error ("%<SOURCE%> argument of %<TRANSFER%> intrinsic at %L " ++ "must not be a %s", &source->where, ++ gfc_basic_typename (source->ts.type)); ++ return false; ++ } ++ ++ /* MOLD shall be a scalar or array of any type. */ ++ if (mold->ts.type == BT_PROCEDURE ++ && mold->symtree->n.sym->attr.subroutine == 1) ++ { ++ gfc_error ("%<MOLD%> argument of %<TRANSFER%> intrinsic at %L " ++ "must not be a %s", &mold->where, ++ gfc_basic_typename (mold->ts.type)); ++ return false; ++ } ++ + if (mold->ts.type == BT_HOLLERITH) + { + gfc_error ("%<MOLD%> argument of %<TRANSFER%> intrinsic at %L must not be" +@@ -5459,6 +5504,8 @@ + return false; + } + ++ /* SIZE (optional) shall be an integer scalar. The corresponding actual ++ argument shall not be an optional dummy argument. */ + if (size != NULL) + { + if (!type_check (size, 2, BT_INTEGER)) +Index: gcc/fortran/trans-intrinsic.c +=================================================================== +--- a/src/gcc/fortran/trans-intrinsic.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/fortran/trans-intrinsic.c (.../branches/gcc-8-branch) +@@ -6820,6 +6820,8 @@ + tree fncall0; + tree fncall1; + gfc_se argse; ++ gfc_expr *e; ++ gfc_symbol *sym = NULL; + + gfc_init_se (&argse, NULL); + actual = expr->value.function.actual; +@@ -6827,15 +6829,34 @@ + if (actual->expr->ts.type == BT_CLASS) + gfc_add_class_array_ref (actual->expr); + ++ e = actual->expr; ++ ++ /* These are emerging from the interface mapping, when a class valued ++ function appears as the rhs in a realloc on assign statement, where ++ the size of the result is that of one of the actual arguments. */ ++ if (e->expr_type == EXPR_VARIABLE ++ && e->symtree->n.sym->ns == NULL /* This is distinctive! */ ++ && e->symtree->n.sym->ts.type == BT_CLASS ++ && e->ref && e->ref->type == REF_COMPONENT ++ && strcmp (e->ref->u.c.component->name, "_data") == 0) ++ sym = e->symtree->n.sym; ++ + argse.data_not_needed = 1; +- if (gfc_is_class_array_function (actual->expr)) ++ if (gfc_is_class_array_function (e)) + { + /* For functions that return a class array conv_expr_descriptor is not + able to get the descriptor right. Therefore this special case. */ +- gfc_conv_expr_reference (&argse, actual->expr); ++ gfc_conv_expr_reference (&argse, e); + argse.expr = gfc_build_addr_expr (NULL_TREE, + gfc_class_data_get (argse.expr)); + } ++ else if (sym && sym->backend_decl) ++ { ++ gcc_assert (GFC_CLASS_TYPE_P (TREE_TYPE (sym->backend_decl))); ++ argse.expr = sym->backend_decl; ++ argse.expr = gfc_build_addr_expr (NULL_TREE, ++ gfc_class_data_get (argse.expr)); ++ } + else + { + argse.want_pointer = 1; +Index: gcc/fortran/simplify.c +=================================================================== +--- a/src/gcc/fortran/simplify.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/fortran/simplify.c (.../branches/gcc-8-branch) +@@ -4469,7 +4469,7 @@ + /* The expression in assoc->target points to a ref to the _data component + of the unlimited polymorphic entity. To get the _len component the last + _data ref needs to be stripped and a ref to the _len component added. */ +- return gfc_get_len_component (e->symtree->n.sym->assoc->target); ++ return gfc_get_len_component (e->symtree->n.sym->assoc->target, k); + else + return NULL; + } +@@ -6921,6 +6921,7 @@ + { + gfc_expr *result = NULL; + mpz_t array_size; ++ size_t res_size; + + if (x->ts.type == BT_CLASS || x->ts.deferred) + return NULL; +@@ -6936,7 +6937,8 @@ + + result = gfc_get_constant_expr (BT_INTEGER, gfc_index_integer_kind, + &x->where); +- mpz_set_si (result->value.integer, gfc_target_expr_size (x)); ++ gfc_target_expr_size (x, &res_size); ++ mpz_set_si (result->value.integer, res_size); + + return result; + } +@@ -6950,6 +6952,7 @@ + { + gfc_expr *result = NULL; + int k; ++ size_t siz; + + if (x->ts.type == BT_CLASS || x->ts.deferred) + return NULL; +@@ -6965,7 +6968,8 @@ + + result = gfc_get_constant_expr (BT_INTEGER, k, &x->where); + +- mpz_set_si (result->value.integer, gfc_element_size (x)); ++ gfc_element_size (x, &siz); ++ mpz_set_si (result->value.integer, siz); + mpz_mul_ui (result->value.integer, result->value.integer, BITS_PER_UNIT); + + return range_check (result, "STORAGE_SIZE"); +Index: gcc/configure.ac +=================================================================== +--- a/src/gcc/configure.ac (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/configure.ac (.../branches/gcc-8-branch) +@@ -2595,17 +2595,13 @@ + # + # ld: Software Generation Utilities - Solaris Link Editors: 5.11-1.1701:onnv-ab196087-6931056-03/25/10 + # +- # In Solaris 11.4, this was changed to +- # +- # ld: Solaris ELF Utilities: 11.4-1.3123 +- # + # ld and ld.so.1 are guaranteed to be updated in lockstep, so ld version + # numbers can be used in ld.so.1 feature checks even if a different + # linker is configured. + ld_ver=`$gcc_cv_ld -V 2>&1` +- if echo "$ld_ver" | $EGREP 'Solaris Link Editors|Solaris ELF Utilities' > /dev/null; then ++ if echo "$ld_ver" | grep 'Solaris Link Editors' > /dev/null; then + ld_vers=`echo $ld_ver | sed -n \ +- -e 's,^.*: \(5\|1[0-9]\)\.[0-9][0-9]*-\([0-9]\.[0-9][0-9]*\).*$,\2,p'` ++ -e 's,^.*: 5\.[0-9][0-9]*-\([0-9]\.[0-9][0-9]*\).*$,\1,p'` + ld_vers_major=`expr "$ld_vers" : '\([0-9]*\)'` + ld_vers_minor=`expr "$ld_vers" : '[0-9]*\.\([0-9]*\)'` + fi +@@ -6143,7 +6139,8 @@ + all_languages= + all_compilers= + all_outputs='Makefile' +-# List of language makefile fragments. ++# List of language configure and makefile fragments. ++all_lang_configurefrags= + all_lang_makefrags= + # Additional files for gengtype + all_gtfiles="$target_gtfiles" +@@ -6231,6 +6228,7 @@ + esac + $ok || continue + ++ all_lang_configurefrags="$all_lang_configurefrags \$(srcdir)/$gcc_subdir/config-lang.in" + all_lang_makefrags="$all_lang_makefrags \$(srcdir)/$gcc_subdir/Make-lang.in" + if test -f $srcdir/$gcc_subdir/lang.opt; then + lang_opt_files="$lang_opt_files $srcdir/$gcc_subdir/lang.opt" +@@ -6332,6 +6330,7 @@ + AC_SUBST(srcdir) + AC_SUBST(all_compilers) + AC_SUBST(all_gtfiles) ++AC_SUBST(all_lang_configurefrags) + AC_SUBST(all_lang_makefrags) + AC_SUBST(all_languages) + AC_SUBST(all_selected_languages) +Index: gcc/function.c +=================================================================== +--- a/src/gcc/function.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/function.c (.../branches/gcc-8-branch) +@@ -2477,8 +2477,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)); + +@@ -3098,7 +3097,7 @@ + move_block_from_reg (REGNO (entry_parm), mem, + size_stored / UNITS_PER_WORD); + } +- else if (data->stack_parm == 0) ++ else if (data->stack_parm == 0 && !TYPE_EMPTY_P (data->passed_type)) + { + push_to_sequence2 (all->first_conversion_insn, all->last_conversion_insn); + emit_block_move (stack_parm, data->entry_parm, GEN_INT (size), +@@ -3474,7 +3473,9 @@ + dest = validize_mem (copy_rtx (data->stack_parm)); + src = validize_mem (copy_rtx (data->entry_parm)); + +- if (MEM_P (src)) ++ if (TYPE_EMPTY_P (data->passed_type)) ++ /* Empty types don't really need to be copied. */; ++ else if (MEM_P (src)) + { + /* Use a block move to handle potentially misaligned entry_parm. */ + if (!to_conversion) +@@ -3749,6 +3750,16 @@ + { + assign_parm_find_stack_rtl (parm, &data); + assign_parm_adjust_entry_rtl (&data); ++ /* For arguments that occupy no space in the parameter ++ passing area, have non-zero size and have address taken, ++ force creation of a stack slot so that they have distinct ++ address from other parameters. */ ++ if (TYPE_EMPTY_P (data.passed_type) ++ && TREE_ADDRESSABLE (parm) ++ && data.entry_parm == data.stack_parm ++ && MEM_P (data.entry_parm) ++ && int_size_in_bytes (data.passed_type)) ++ data.stack_parm = NULL_RTX; + } + if (!POINTER_BOUNDS_TYPE_P (data.passed_type)) + { +Index: gcc/gcse.c +=================================================================== +--- a/src/gcc/gcse.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/gcse.c (.../branches/gcc-8-branch) +@@ -1532,7 +1532,8 @@ + 0, regno, hrsi) + record_last_reg_set_info (insn, regno); + +- if (! RTL_CONST_OR_PURE_CALL_P (insn)) ++ if (! RTL_CONST_OR_PURE_CALL_P (insn) ++ || RTL_LOOPING_CONST_OR_PURE_CALL_P (insn)) + record_last_mem_set_info (insn); + } + +Index: gcc/tree-vect-loop.c +=================================================================== +--- a/src/gcc/tree-vect-loop.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/tree-vect-loop.c (.../branches/gcc-8-branch) +@@ -4551,14 +4551,9 @@ + unsigned HOST_WIDE_INT nunits; + unsigned j, number_of_places_left_in_vector; + tree vector_type; +- tree vop; +- int group_size = stmts.length (); +- unsigned int vec_num, i; +- unsigned number_of_copies = 1; +- vec<tree> voprnds; +- voprnds.create (number_of_vectors); ++ unsigned int group_size = stmts.length (); ++ unsigned int i; + struct loop *loop; +- auto_vec<tree, 16> permute_results; + + vector_type = STMT_VINFO_VECTYPE (stmt_vinfo); + +@@ -4589,119 +4584,79 @@ + if (!TYPE_VECTOR_SUBPARTS (vector_type).is_constant (&nunits)) + nunits = group_size; + +- number_of_copies = nunits * number_of_vectors / group_size; +- + number_of_places_left_in_vector = nunits; + bool constant_p = true; + tree_vector_builder elts (vector_type, nunits, 1); + elts.quick_grow (nunits); +- for (j = 0; j < number_of_copies; j++) ++ gimple_seq ctor_seq = NULL; ++ for (j = 0; j < nunits * number_of_vectors; ++j) + { +- for (i = group_size - 1; stmts.iterate (i, &stmt); i--) +- { +- tree op; +- /* Get the def before the loop. In reduction chain we have only +- one initial value. */ +- if ((j != (number_of_copies - 1) +- || (reduc_chain && i != 0)) +- && neutral_op) +- op = neutral_op; +- else +- op = PHI_ARG_DEF_FROM_EDGE (stmt, pe); ++ tree op; ++ i = j % group_size; ++ stmt_vinfo = vinfo_for_stmt (stmts[i]); + +- /* Create 'vect_ = {op0,op1,...,opn}'. */ +- number_of_places_left_in_vector--; +- elts[number_of_places_left_in_vector] = op; +- if (!CONSTANT_CLASS_P (op)) +- constant_p = false; ++ /* Get the def before the loop. In reduction chain we have only ++ one initial value. Else we have as many as PHIs in the group. */ ++ if (reduc_chain) ++ op = j != 0 ? neutral_op : PHI_ARG_DEF_FROM_EDGE (stmt_vinfo->stmt, pe); ++ else if (((vec_oprnds->length () + 1) * nunits ++ - number_of_places_left_in_vector >= group_size) ++ && neutral_op) ++ op = neutral_op; ++ else ++ op = PHI_ARG_DEF_FROM_EDGE (stmt_vinfo->stmt, pe); + +- if (number_of_places_left_in_vector == 0) +- { +- gimple_seq ctor_seq = NULL; +- tree init; +- if (constant_p && !neutral_op +- ? multiple_p (TYPE_VECTOR_SUBPARTS (vector_type), nunits) +- : known_eq (TYPE_VECTOR_SUBPARTS (vector_type), nunits)) +- /* Build the vector directly from ELTS. */ +- init = gimple_build_vector (&ctor_seq, &elts); +- else if (neutral_op) ++ /* Create 'vect_ = {op0,op1,...,opn}'. */ ++ number_of_places_left_in_vector--; ++ elts[nunits - number_of_places_left_in_vector - 1] = op; ++ if (!CONSTANT_CLASS_P (op)) ++ constant_p = false; ++ ++ if (number_of_places_left_in_vector == 0) ++ { ++ tree init; ++ if (constant_p && !neutral_op ++ ? multiple_p (TYPE_VECTOR_SUBPARTS (vector_type), nunits) ++ : known_eq (TYPE_VECTOR_SUBPARTS (vector_type), nunits)) ++ /* Build the vector directly from ELTS. */ ++ init = gimple_build_vector (&ctor_seq, &elts); ++ else if (neutral_op) ++ { ++ /* Build a vector of the neutral value and shift the ++ other elements into place. */ ++ init = gimple_build_vector_from_val (&ctor_seq, vector_type, ++ neutral_op); ++ int k = nunits; ++ while (k > 0 && elts[k - 1] == neutral_op) ++ k -= 1; ++ while (k > 0) + { +- /* Build a vector of the neutral value and shift the +- other elements into place. */ +- init = gimple_build_vector_from_val (&ctor_seq, vector_type, +- neutral_op); +- int k = nunits; +- while (k > 0 && elts[k - 1] == neutral_op) +- k -= 1; +- while (k > 0) +- { +- k -= 1; +- gcall *call = gimple_build_call_internal +- (IFN_VEC_SHL_INSERT, 2, init, elts[k]); +- init = make_ssa_name (vector_type); +- gimple_call_set_lhs (call, init); +- gimple_seq_add_stmt (&ctor_seq, call); +- } ++ k -= 1; ++ gcall *call = gimple_build_call_internal ++ (IFN_VEC_SHL_INSERT, 2, init, elts[k]); ++ init = make_ssa_name (vector_type); ++ gimple_call_set_lhs (call, init); ++ gimple_seq_add_stmt (&ctor_seq, call); + } +- else +- { +- /* First time round, duplicate ELTS to fill the +- required number of vectors, then cherry pick the +- appropriate result for each iteration. */ +- if (vec_oprnds->is_empty ()) +- duplicate_and_interleave (&ctor_seq, vector_type, elts, +- number_of_vectors, +- permute_results); +- init = permute_results[number_of_vectors - j - 1]; +- } +- if (ctor_seq != NULL) +- gsi_insert_seq_on_edge_immediate (pe, ctor_seq); +- voprnds.quick_push (init); +- +- number_of_places_left_in_vector = nunits; +- elts.new_vector (vector_type, nunits, 1); +- elts.quick_grow (nunits); +- constant_p = true; +- } +- } +- } +- +- /* Since the vectors are created in the reverse order, we should invert +- them. */ +- vec_num = voprnds.length (); +- for (j = vec_num; j != 0; j--) +- { +- vop = voprnds[j - 1]; +- vec_oprnds->quick_push (vop); +- } +- +- voprnds.release (); +- +- /* In case that VF is greater than the unrolling factor needed for the SLP +- group of stmts, NUMBER_OF_VECTORS to be created is greater than +- NUMBER_OF_SCALARS/NUNITS or NUNITS/NUMBER_OF_SCALARS, and hence we have +- to replicate the vectors. */ +- tree neutral_vec = NULL; +- while (number_of_vectors > vec_oprnds->length ()) +- { +- if (neutral_op) +- { +- if (!neutral_vec) ++ } ++ else + { +- gimple_seq ctor_seq = NULL; +- neutral_vec = gimple_build_vector_from_val +- (&ctor_seq, vector_type, neutral_op); +- if (ctor_seq != NULL) +- gsi_insert_seq_on_edge_immediate (pe, ctor_seq); ++ /* First time round, duplicate ELTS to fill the ++ required number of vectors. */ ++ duplicate_and_interleave (&ctor_seq, vector_type, elts, ++ number_of_vectors, *vec_oprnds); ++ break; + } +- vec_oprnds->quick_push (neutral_vec); +- } +- else +- { +- for (i = 0; vec_oprnds->iterate (i, &vop) && i < vec_num; i++) +- vec_oprnds->quick_push (vop); +- } ++ vec_oprnds->quick_push (init); ++ ++ number_of_places_left_in_vector = nunits; ++ elts.new_vector (vector_type, nunits, 1); ++ elts.quick_grow (nunits); ++ constant_p = true; ++ } + } ++ if (ctor_seq != NULL) ++ gsi_insert_seq_on_edge_immediate (pe, ctor_seq); + } + + +@@ -6853,10 +6808,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/tree-data-ref.c +=================================================================== +--- a/src/gcc/tree-data-ref.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/tree-data-ref.c (.../branches/gcc-8-branch) +@@ -2230,7 +2230,7 @@ + + bool + dr_may_alias_p (const struct data_reference *a, const struct data_reference *b, +- bool loop_nest) ++ struct loop *loop_nest) + { + tree addr_a = DR_BASE_OBJECT (a); + tree addr_b = DR_BASE_OBJECT (b); +@@ -2254,6 +2254,11 @@ + + if ((TREE_CODE (addr_a) == MEM_REF || TREE_CODE (addr_a) == TARGET_MEM_REF) + && (TREE_CODE (addr_b) == MEM_REF || TREE_CODE (addr_b) == TARGET_MEM_REF) ++ /* For cross-iteration dependences the cliques must be valid for the ++ whole loop, not just individual iterations. */ ++ && (!loop_nest ++ || MR_DEPENDENCE_CLIQUE (addr_a) == 1 ++ || MR_DEPENDENCE_CLIQUE (addr_a) == loop_nest->owned_clique) + && MR_DEPENDENCE_CLIQUE (addr_a) == MR_DEPENDENCE_CLIQUE (addr_b) + && MR_DEPENDENCE_BASE (addr_a) != MR_DEPENDENCE_BASE (addr_b)) + return false; +@@ -2365,7 +2370,7 @@ + } + + /* If the data references do not alias, then they are independent. */ +- if (!dr_may_alias_p (a, b, loop_nest.exists ())) ++ if (!dr_may_alias_p (a, b, loop_nest.exists () ? loop_nest[0] : NULL)) + { + DDR_ARE_DEPENDENT (res) = chrec_known; + return res; +@@ -4048,9 +4053,9 @@ + } + + else if (evolution_function_is_affine_multivariate_p (chrec_a, loop_nest->num) +- && !chrec_contains_symbols (chrec_a) ++ && !chrec_contains_symbols (chrec_a, loop_nest) + && evolution_function_is_affine_multivariate_p (chrec_b, loop_nest->num) +- && !chrec_contains_symbols (chrec_b)) ++ && !chrec_contains_symbols (chrec_b, loop_nest)) + { + /* testsuite/.../ssa-chrec-35.c + {0, +, 1}_2 vs. {0, +, 1}_3 +@@ -4260,6 +4265,7 @@ + { + unsigned i; + lambda_vector init_v = lambda_vector_new (DDR_NB_LOOPS (ddr)); ++ struct loop *loop = DDR_LOOP_NEST (ddr)[0]; + + for (i = 0; i < DDR_NUM_SUBSCRIPTS (ddr); i++) + { +@@ -4290,6 +4296,15 @@ + return false; + } + ++ /* When data references are collected in a loop while data ++ dependences are analyzed in loop nest nested in the loop, we ++ would have more number of access functions than number of ++ loops. Skip access functions of loops not in the loop nest. ++ ++ See PR89725 for more information. */ ++ if (flow_loop_nested_p (get_loop (cfun, var_a), loop)) ++ continue; ++ + dist = int_cst_value (SUB_DISTANCE (subscript)); + index = index_in_loop_nest (var_a, DDR_LOOP_NEST (ddr)); + *index_carry = MIN (index, *index_carry); +@@ -4401,6 +4416,7 @@ + unsigned i; + int index_carry = DDR_NB_LOOPS (ddr); + subscript *sub; ++ struct loop *loop = DDR_LOOP_NEST (ddr)[0]; + + FOR_EACH_VEC_ELT (DDR_SUBSCRIPTS (ddr), i, sub) + { +@@ -4430,6 +4446,16 @@ + return; + } + ++ /* When data references are collected in a loop while data ++ dependences are analyzed in loop nest nested in the loop, we ++ would have more number of access functions than number of ++ loops. Skip access functions of loops not in the loop nest. ++ ++ See PR89725 for more information. */ ++ if (flow_loop_nested_p (get_loop (cfun, CHREC_VARIABLE (access_fun)), ++ loop)) ++ continue; ++ + index_carry = MIN (index_carry, + index_in_loop_nest (CHREC_VARIABLE (access_fun), + DDR_LOOP_NEST (ddr))); +Index: gcc/loop-unroll.c +=================================================================== +--- a/src/gcc/loop-unroll.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/loop-unroll.c (.../branches/gcc-8-branch) +@@ -399,7 +399,7 @@ + { + /* However we cannot unroll completely at the RTL level a loop with + constant number of iterations; it should have been peeled instead. */ +- if ((unsigned) loop->unroll - 1 > desc->niter - 2) ++ if (desc->niter == 0 || (unsigned) loop->unroll > desc->niter - 1) + { + if (dump_file) + fprintf (dump_file, ";; Loop should have been peeled\n"); +@@ -651,7 +651,7 @@ + if (loop->any_likely_upper_bound) + loop->nb_iterations_likely_upper_bound + = wi::udiv_trunc (loop->nb_iterations_likely_upper_bound, max_unroll + 1); +- desc->niter_expr = GEN_INT (desc->niter); ++ desc->niter_expr = gen_int_mode (desc->niter, desc->mode); + + /* Remove the edges. */ + FOR_EACH_VEC_ELT (remove_edges, i, e) +@@ -1019,9 +1019,9 @@ + preheader = split_edge (loop_preheader_edge (loop)); + /* Add in count of edge from switch block. */ + preheader->count += iter_count; +- branch_code = compare_and_jump_seq (copy_rtx (niter), GEN_INT (j), EQ, +- block_label (preheader), p, +- NULL); ++ branch_code = compare_and_jump_seq (copy_rtx (niter), ++ gen_int_mode (j, desc->mode), EQ, ++ block_label (preheader), p, NULL); + + /* We rely on the fact that the compare and jump cannot be optimized out, + and hence the cfg we create is correct. */ +Index: gcc/tree-data-ref.h +=================================================================== +--- a/src/gcc/tree-data-ref.h (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/tree-data-ref.h (.../branches/gcc-8-branch) +@@ -475,7 +475,7 @@ + } + + extern bool dr_may_alias_p (const struct data_reference *, +- const struct data_reference *, bool); ++ const struct data_reference *, struct loop *); + extern bool dr_equal_offsets_p (struct data_reference *, + struct data_reference *); + +Index: gcc/tree-vect-data-refs.c +=================================================================== +--- a/src/gcc/tree-vect-data-refs.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/tree-vect-data-refs.c (.../branches/gcc-8-branch) +@@ -144,6 +144,30 @@ + if (rhs < lhs) + scalar_type = rhs_type; + } ++ else if (gcall *call = dyn_cast <gcall *> (stmt)) ++ { ++ unsigned int i = 0; ++ if (gimple_call_internal_p (call)) ++ { ++ internal_fn ifn = gimple_call_internal_fn (call); ++ if (internal_load_fn_p (ifn) || internal_store_fn_p (ifn)) ++ /* gimple_expr_type already picked the type of the loaded ++ or stored data. */ ++ i = ~0U; ++ else if (internal_fn_mask_index (ifn) == 0) ++ i = 1; ++ } ++ if (i < gimple_call_num_args (call)) ++ { ++ tree rhs_type = TREE_TYPE (gimple_call_arg (call, i)); ++ if (tree_fits_uhwi_p (TYPE_SIZE_UNIT (rhs_type))) ++ { ++ rhs = TREE_INT_CST_LOW (TYPE_SIZE_UNIT (rhs_type)); ++ if (rhs < lhs) ++ scalar_type = rhs_type; ++ } ++ } ++ } + + *lhs_size_unit = lhs; + *rhs_size_unit = rhs; +@@ -206,26 +230,60 @@ + return true; + + /* STMT_A and STMT_B belong to overlapping groups. All loads in a +- group are emitted at the position of the last scalar load and all +- stores in a group are emitted at the position of the last scalar store. ++ SLP group are emitted at the position of the last scalar load and ++ all loads in an interleaving group are emitted at the position ++ of the first scalar load. ++ Stores in a group are emitted at the position of the last scalar store. + Compute that position and check whether the resulting order matches +- the current one. */ +- gimple *last_a = GROUP_FIRST_ELEMENT (stmtinfo_a); ++ the current one. ++ We have not yet decided between SLP and interleaving so we have ++ to conservatively assume both. */ ++ gimple *il_a; ++ gimple *last_a = il_a = GROUP_FIRST_ELEMENT (stmtinfo_a); + if (last_a) +- for (gimple *s = GROUP_NEXT_ELEMENT (vinfo_for_stmt (last_a)); s; +- s = GROUP_NEXT_ELEMENT (vinfo_for_stmt (s))) +- last_a = get_later_stmt (last_a, s); ++ { ++ for (gimple *s = GROUP_NEXT_ELEMENT (vinfo_for_stmt (last_a)); s; ++ s = GROUP_NEXT_ELEMENT (vinfo_for_stmt (s))) ++ last_a = get_later_stmt (last_a, s); ++ if (!DR_IS_WRITE (STMT_VINFO_DATA_REF (stmtinfo_a))) ++ { ++ for (gimple *s = GROUP_NEXT_ELEMENT (vinfo_for_stmt (il_a)); s; ++ s = GROUP_NEXT_ELEMENT (vinfo_for_stmt (s))) ++ if (get_later_stmt (il_a, s) == il_a) ++ il_a = s; ++ } ++ else ++ il_a = last_a; ++ } + else +- last_a = stmt_a; +- gimple *last_b = GROUP_FIRST_ELEMENT (stmtinfo_b); ++ last_a = il_a = stmt_a; ++ gimple *il_b; ++ gimple *last_b = il_b = GROUP_FIRST_ELEMENT (stmtinfo_b); + if (last_b) +- for (gimple *s = GROUP_NEXT_ELEMENT (vinfo_for_stmt (last_b)); s; +- s = GROUP_NEXT_ELEMENT (vinfo_for_stmt (s))) +- last_b = get_later_stmt (last_b, s); ++ { ++ for (gimple *s = GROUP_NEXT_ELEMENT (vinfo_for_stmt (last_b)); s; ++ s = GROUP_NEXT_ELEMENT (vinfo_for_stmt (s))) ++ last_b = get_later_stmt (last_b, s); ++ if (!DR_IS_WRITE (STMT_VINFO_DATA_REF (stmtinfo_b))) ++ { ++ for (gimple *s = GROUP_NEXT_ELEMENT (vinfo_for_stmt (il_b)); s; ++ s = GROUP_NEXT_ELEMENT (vinfo_for_stmt (s))) ++ if (get_later_stmt (il_b, s) == il_b) ++ il_b = s; ++ } ++ else ++ il_b = last_b; ++ } + else +- last_b = stmt_b; +- return ((get_later_stmt (last_a, last_b) == last_a) +- == (get_later_stmt (stmt_a, stmt_b) == stmt_a)); ++ last_b = il_b = stmt_b; ++ bool a_after_b = (get_later_stmt (stmt_a, stmt_b) == stmt_a); ++ return (/* SLP */ ++ (get_later_stmt (last_a, last_b) == last_a) == a_after_b ++ /* Interleaving */ ++ && (get_later_stmt (il_a, il_b) == il_a) == a_after_b ++ /* Mixed */ ++ && (get_later_stmt (il_a, last_b) == il_a) == a_after_b ++ && (get_later_stmt (last_a, il_b) == last_a) == a_after_b); + } + + /* A subroutine of vect_analyze_data_ref_dependence. Handle +@@ -504,8 +562,19 @@ + reversed (to make distance vector positive), and the actual + distance is negative. */ + if (dump_enabled_p ()) +- dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location, ++ dump_printf_loc (MSG_NOTE, vect_location, + "dependence distance negative.\n"); ++ /* When doing outer loop vectorization, we need to check if there is ++ a backward dependence at the inner loop level if the dependence ++ at the outer loop is reversed. See PR81740. */ ++ if (nested_in_vect_loop_p (loop, DR_STMT (dra)) ++ || nested_in_vect_loop_p (loop, DR_STMT (drb))) ++ { ++ unsigned inner_depth = index_in_loop_nest (loop->inner->num, ++ DDR_LOOP_NEST (ddr)); ++ if (dist_v[inner_depth] < 0) ++ return true; ++ } + /* Record a negative dependence distance to later limit the + amount of stmt copying / unrolling we can perform. + Only need to handle read-after-write dependence. */ +@@ -521,7 +590,7 @@ + { + /* The dependence distance requires reduction of the maximal + vectorization factor. */ +- *max_vf = abs (dist); ++ *max_vf = abs_dist; + if (dump_enabled_p ()) + dump_printf_loc (MSG_NOTE, vect_location, + "adjusting maximal vectorization factor to %i\n", +Index: gcc/gimplify.c +=================================================================== +--- a/src/gcc/gimplify.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/gimplify.c (.../branches/gcc-8-branch) +@@ -191,6 +191,7 @@ + bool target_map_scalars_firstprivate; + bool target_map_pointers_as_0len_arrays; + bool target_firstprivatize_array_bases; ++ bool add_safelen1; + }; + + static struct gimplify_ctx *gimplify_ctxp; +@@ -1294,12 +1295,17 @@ + || splay_tree_lookup (ctx->variables, + (splay_tree_key) t) == NULL)) + { ++ int flag = GOVD_LOCAL; + if (ctx->region_type == ORT_SIMD + && TREE_ADDRESSABLE (t) + && !TREE_STATIC (t)) +- omp_add_variable (ctx, t, GOVD_PRIVATE | GOVD_SEEN); +- else +- omp_add_variable (ctx, t, GOVD_LOCAL | GOVD_SEEN); ++ { ++ if (TREE_CODE (DECL_SIZE_UNIT (t)) != INTEGER_CST) ++ ctx->add_safelen1 = true; ++ else ++ flag = GOVD_PRIVATE; ++ } ++ omp_add_variable (ctx, t, flag | GOVD_SEEN); + } + + DECL_SEEN_IN_BIND_EXPR_P (t) = 1; +@@ -4650,6 +4656,7 @@ + otherwise we'd generate a new temporary, and we can as well just + use the decl we already have. */ + else if (!TREE_ADDRESSABLE (decl) ++ && !TREE_THIS_VOLATILE (decl) + && init + && (fallback & fb_lvalue) == 0 + && gimple_test_f (init)) +@@ -4946,7 +4953,7 @@ + one field to assign, initialize the target from a temporary. */ + if (TREE_THIS_VOLATILE (object) + && !TREE_ADDRESSABLE (type) +- && num_nonzero_elements > 0 ++ && (num_nonzero_elements > 0 || !cleared) + && vec_safe_length (elts) > 1) + { + tree temp = create_tmp_var (TYPE_MAIN_VARIANT (type)); +@@ -6144,6 +6151,19 @@ + is_inout = false; + } + ++ /* If we can't make copies, we can only accept memory. */ ++ if (TREE_ADDRESSABLE (TREE_TYPE (TREE_VALUE (link)))) ++ { ++ if (allows_mem) ++ allows_reg = 0; ++ else ++ { ++ error ("impossible constraint in %<asm%>"); ++ error ("non-memory output %d must stay in memory", i); ++ return GS_ERROR; ++ } ++ } ++ + if (!allows_reg && allows_mem) + mark_addressable (TREE_VALUE (link)); + +@@ -6639,6 +6659,7 @@ + } + if (asan_poisoned_variables + && DECL_ALIGN (temp) <= MAX_SUPPORTED_STACK_ALIGNMENT ++ && !TREE_STATIC (temp) + && dbg_cnt (asan_use_after_scope) + && !gimplify_omp_ctxp) + { +@@ -8160,8 +8181,8 @@ + break; + if (scp) + continue; +- gcc_assert (offset == NULL_TREE +- || poly_int_tree_p (offset)); ++ gcc_assert (offset2 == NULL_TREE ++ || poly_int_tree_p (offset2)); + tree d1 = OMP_CLAUSE_DECL (*sc); + tree d2 = OMP_CLAUSE_DECL (c); + while (TREE_CODE (d1) == ARRAY_REF) +@@ -9011,6 +9032,19 @@ + omp_find_stores_op, &wi); + } + } ++ ++ if (ctx->add_safelen1) ++ { ++ /* If there are VLAs in the body of simd loop, prevent ++ vectorization. */ ++ gcc_assert (ctx->region_type == ORT_SIMD); ++ c = build_omp_clause (UNKNOWN_LOCATION, OMP_CLAUSE_SAFELEN); ++ OMP_CLAUSE_SAFELEN_EXPR (c) = integer_one_node; ++ OMP_CLAUSE_CHAIN (c) = *list_p; ++ *list_p = c; ++ list_p = &OMP_CLAUSE_CHAIN (c); ++ } ++ + while ((c = *list_p) != NULL) + { + splay_tree_node n; +Index: gcc/graphite-scop-detection.c +=================================================================== +--- a/src/gcc/graphite-scop-detection.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/graphite-scop-detection.c (.../branches/gcc-8-branch) +@@ -1414,9 +1414,13 @@ + int i, j; + int *all_vertices; + ++ struct loop *nest ++ = find_common_loop (scop->scop_info->region.entry->dest->loop_father, ++ scop->scop_info->region.exit->src->loop_father); ++ + FOR_EACH_VEC_ELT (scop->drs, i, dr1) + for (j = i+1; scop->drs.iterate (j, &dr2); j++) +- if (dr_may_alias_p (dr1->dr, dr2->dr, true)) ++ if (dr_may_alias_p (dr1->dr, dr2->dr, nest)) + { + /* Dependences in the same alias set need to be handled + by just looking at DR_ACCESS_FNs. */ +Index: gcc/lra-constraints.c +=================================================================== +--- a/src/gcc/lra-constraints.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/lra-constraints.c (.../branches/gcc-8-branch) +@@ -1774,14 +1774,24 @@ + return false; + code = GET_CODE (x); + mode = GET_MODE (x); ++ + if (code == SUBREG) + { ++ /* For all SUBREGs we want to check whether the full multi-register ++ overlaps the set. For normal SUBREGs this means 'get_hard_regno' of ++ the inner register, for paradoxical SUBREGs this means the ++ 'get_hard_regno' of the full SUBREG and for complete SUBREGs either is ++ fine. Use the wider mode for all cases. */ ++ rtx subreg = SUBREG_REG (x); + mode = wider_subreg_mode (x); +- x = SUBREG_REG (x); +- code = GET_CODE (x); ++ if (mode == GET_MODE (subreg)) ++ { ++ x = subreg; ++ code = GET_CODE (x); ++ } + } + +- if (REG_P (x)) ++ if (REG_P (x) || SUBREG_P (x)) + { + x_hard_regno = get_hard_regno (x, true); + return (x_hard_regno >= 0 +@@ -2315,6 +2325,8 @@ + break; + + reg: ++ if (mode == BLKmode) ++ break; + this_alternative = reg_class_subunion[this_alternative][cl]; + IOR_HARD_REG_SET (this_alternative_set, + reg_class_contents[cl]); +@@ -2325,8 +2337,6 @@ + IOR_HARD_REG_SET (this_costly_alternative_set, + reg_class_contents[cl]); + } +- if (mode == BLKmode) +- break; + winreg = true; + if (REG_P (op)) + { +@@ -5767,6 +5777,9 @@ + enum rtx_code code; + int i, j; + ++ if (side_effects_p (x)) ++ return false; ++ + code = GET_CODE (x); + mode = GET_MODE (x); + if (code == SUBREG) +@@ -6293,6 +6306,7 @@ + add_to_hard_reg_set (&s, PSEUDO_REGNO_MODE (dst_regno), + reg_renumber[dst_regno]); + AND_COMPL_HARD_REG_SET (live_hard_regs, s); ++ AND_COMPL_HARD_REG_SET (potential_reload_hard_regs, s); + } + /* We should invalidate potential inheritance or + splitting for the current insn usages to the next +Index: gcc/tree-ssa-phiopt.c +=================================================================== +--- a/src/gcc/tree-ssa-phiopt.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/tree-ssa-phiopt.c (.../branches/gcc-8-branch) +@@ -1894,6 +1894,11 @@ + || gimple_has_volatile_ops (assign)) + return false; + ++ /* And no PHI nodes so all uses in the single stmt are also ++ available where we insert to. */ ++ if (!gimple_seq_empty_p (phi_nodes (middle_bb))) ++ return false; ++ + locus = gimple_location (assign); + lhs = gimple_assign_lhs (assign); + rhs = gimple_assign_rhs1 (assign); +Index: gcc/calls.c +=================================================================== +--- a/src/gcc/calls.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/calls.c (.../branches/gcc-8-branch) +@@ -2078,8 +2078,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. +@@ -2873,6 +2872,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 +@@ -2885,11 +2887,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; +@@ -3016,8 +3018,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); + } +@@ -3754,6 +3755,28 @@ + || dbg_cnt (tail_call) == false) + try_tail_call = 0; + ++ /* Workaround buggy C/C++ wrappers around Fortran routines with ++ character(len=constant) arguments if the hidden string length arguments ++ are passed on the stack; if the callers forget to pass those arguments, ++ attempting to tail call in such routines leads to stack corruption. ++ Avoid tail calls in functions where at least one such hidden string ++ length argument is passed (partially or fully) on the stack in the ++ caller and the callee needs to pass any arguments on the stack. ++ See PR90329. */ ++ if (try_tail_call && maybe_ne (args_size.constant, 0)) ++ for (tree arg = DECL_ARGUMENTS (current_function_decl); ++ arg; arg = DECL_CHAIN (arg)) ++ if (DECL_HIDDEN_STRING_LENGTH (arg) && DECL_INCOMING_RTL (arg)) ++ { ++ subrtx_iterator::array_type array; ++ FOR_EACH_SUBRTX (iter, array, DECL_INCOMING_RTL (arg), NONCONST) ++ if (MEM_P (*iter)) ++ { ++ try_tail_call = 0; ++ break; ++ } ++ } ++ + /* If the user has marked the function as requiring tail-call + optimization, attempt it. */ + if (must_tail_call) +Index: gcc/multiple_target.c +=================================================================== +--- a/src/gcc/multiple_target.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/multiple_target.c (.../branches/gcc-8-branch) +@@ -103,10 +103,16 @@ + inode->resolve_alias (cgraph_node::get (resolver_decl)); + + auto_vec<cgraph_edge *> edges_to_redirect; +- auto_vec<ipa_ref *> references_to_redirect; ++ /* We need to capture the references by value rather than just pointers to them ++ and remove them right away, as removing them later would invalidate what ++ some other reference pointers point to. */ ++ auto_vec<ipa_ref> references_to_redirect; + +- for (unsigned i = 0; node->iterate_referring (i, ref); i++) +- references_to_redirect.safe_push (ref); ++ while (node->iterate_referring (0, ref)) ++ { ++ references_to_redirect.safe_push (*ref); ++ ref->remove_reference (); ++ } + + /* We need to remember NEXT_CALLER as it could be modified in the loop. */ + for (cgraph_edge *e = node->callers; e ; e = e->next_caller) +@@ -146,15 +152,14 @@ + } + + symtab_node *source = ref->referring; +- ref->remove_reference (); + source->create_reference (inode, IPA_REF_ADDR); + } + else if (ref->use == IPA_REF_ALIAS) + { + symtab_node *source = ref->referring; +- ref->remove_reference (); + source->create_reference (inode, IPA_REF_ALIAS); +- source->add_to_same_comdat_group (inode); ++ if (inode->get_comdat_group ()) ++ source->add_to_same_comdat_group (inode); + } + else + gcc_unreachable (); +@@ -294,7 +299,8 @@ + /* Creates target clone of NODE. */ + + static cgraph_node * +-create_target_clone (cgraph_node *node, bool definition, char *name) ++create_target_clone (cgraph_node *node, bool definition, char *name, ++ tree attributes) + { + cgraph_node *new_node; + +@@ -303,7 +309,9 @@ + new_node = node->create_version_clone_with_body (vNULL, NULL, + NULL, false, + NULL, NULL, +- name); ++ name, attributes); ++ if (new_node == NULL) ++ return NULL; + new_node->force_output = true; + } + else +@@ -310,6 +318,7 @@ + { + tree new_decl = copy_node (node->decl); + new_node = cgraph_node::get_create (new_decl); ++ DECL_ATTRIBUTES (new_decl) = attributes; + /* Generate a new name for the new version. */ + symtab->change_decl_assembler_name (new_node->decl, + clone_function_name (node->decl, +@@ -399,22 +408,16 @@ + + create_new_asm_name (attr, suffix); + /* Create new target clone. */ +- cgraph_node *new_node = create_target_clone (node, definition, suffix); ++ tree attributes = make_attribute ("target", attr, ++ DECL_ATTRIBUTES (node->decl)); ++ ++ cgraph_node *new_node = create_target_clone (node, definition, suffix, ++ attributes); ++ if (new_node == NULL) ++ return false; + new_node->local.local = false; + XDELETEVEC (suffix); + +- /* Set new attribute for the clone. */ +- tree attributes = make_attribute ("target", attr, +- DECL_ATTRIBUTES (new_node->decl)); +- DECL_ATTRIBUTES (new_node->decl) = attributes; +- location_t saved_loc = input_location; +- input_location = DECL_SOURCE_LOCATION (node->decl); +- if (!targetm.target_option.valid_attribute_p (new_node->decl, NULL, +- TREE_VALUE (attributes), +- 0)) +- return false; +- +- input_location = saved_loc; + decl2_v = new_node->function_version (); + if (decl2_v != NULL) + continue; +@@ -441,13 +444,7 @@ + DECL_ATTRIBUTES (node->decl)); + DECL_ATTRIBUTES (node->decl) = attributes; + node->local.local = false; +- location_t saved_loc = input_location; +- input_location = DECL_SOURCE_LOCATION (node->decl); +- bool ret +- = targetm.target_option.valid_attribute_p (node->decl, NULL, +- TREE_VALUE (attributes), 0); +- input_location = saved_loc; +- return ret; ++ return true; + } + + static unsigned int +Index: gcc/expmed.c +=================================================================== +--- a/src/gcc/expmed.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/expmed.c (.../branches/gcc-8-branch) +@@ -838,6 +838,27 @@ + if (MEM_P (op0)) + op0 = adjust_bitfield_address_size (op0, op0_mode.else_blk (), + 0, MEM_SIZE (op0)); ++ else if (!op0_mode.exists ()) ++ { ++ if (ibitnum == 0 ++ && known_eq (ibitsize, GET_MODE_BITSIZE (GET_MODE (op0))) ++ && MEM_P (value) ++ && !reverse) ++ { ++ value = adjust_address (value, GET_MODE (op0), 0); ++ emit_move_insn (op0, value); ++ return true; ++ } ++ if (!fallback_p) ++ return false; ++ rtx temp = assign_stack_temp (GET_MODE (op0), ++ GET_MODE_SIZE (GET_MODE (op0))); ++ emit_move_insn (temp, op0); ++ store_bit_field_1 (temp, bitsize, bitnum, 0, 0, fieldmode, value, ++ reverse, fallback_p); ++ emit_move_insn (op0, temp); ++ return true; ++ } + else + op0 = gen_lowpart (op0_mode.require (), op0); + } +@@ -3352,13 +3373,20 @@ + tem = gen_lowpart (nmode, op0); + } + +- insn = get_last_insn (); +- wide_int wval_so_far +- = wi::uhwi (val_so_far, +- GET_MODE_PRECISION (as_a <scalar_mode> (nmode))); +- rtx c = immed_wide_int_const (wval_so_far, nmode); +- set_dst_reg_note (insn, REG_EQUAL, gen_rtx_MULT (nmode, tem, c), +- accum_inner); ++ /* Don't add a REG_EQUAL note if tem is a paradoxical SUBREG. ++ In that case, only the low bits of accum would be guaranteed to ++ be equal to the content of the REG_EQUAL note, the upper bits ++ can be anything. */ ++ if (!paradoxical_subreg_p (tem)) ++ { ++ insn = get_last_insn (); ++ wide_int wval_so_far ++ = wi::uhwi (val_so_far, ++ GET_MODE_PRECISION (as_a <scalar_mode> (nmode))); ++ rtx c = immed_wide_int_const (wval_so_far, nmode); ++ set_dst_reg_note (insn, REG_EQUAL, gen_rtx_MULT (nmode, tem, c), ++ accum_inner); ++ } + } + } + +Index: gcc/emit-rtl.c +=================================================================== +--- a/src/gcc/emit-rtl.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/emit-rtl.c (.../branches/gcc-8-branch) +@@ -3940,6 +3940,7 @@ + break; + + case REG_NON_LOCAL_GOTO: ++ case REG_LABEL_TARGET: + for (insn = insn_last; insn != NULL_RTX; insn = PREV_INSN (insn)) + { + if (JUMP_P (insn)) +Index: gcc/gimple-fold.c +=================================================================== +--- a/src/gcc/gimple-fold.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/gimple-fold.c (.../branches/gcc-8-branch) +@@ -3031,11 +3031,10 @@ + gimple_seq stmts = NULL; + gimple *repl = gimple_build_call (fn, 2, dest, fmt); + gimple_seq_add_stmt_without_update (&stmts, repl); +- if (gimple_call_lhs (stmt)) ++ if (tree lhs = gimple_call_lhs (stmt)) + { +- repl = gimple_build_assign (gimple_call_lhs (stmt), +- build_int_cst (integer_type_node, +- strlen (fmt_str))); ++ repl = gimple_build_assign (lhs, build_int_cst (TREE_TYPE (lhs), ++ strlen (fmt_str))); + gimple_seq_add_stmt_without_update (&stmts, repl); + gsi_replace_with_seq_vops (gsi, stmts); + /* gsi now points at the assignment to the lhs, get a +@@ -3079,12 +3078,12 @@ + gimple_seq stmts = NULL; + gimple *repl = gimple_build_call (fn, 2, dest, orig); + gimple_seq_add_stmt_without_update (&stmts, repl); +- if (gimple_call_lhs (stmt)) ++ if (tree lhs = gimple_call_lhs (stmt)) + { +- if (!useless_type_conversion_p (integer_type_node, ++ if (!useless_type_conversion_p (TREE_TYPE (lhs), + TREE_TYPE (orig_len))) +- orig_len = fold_convert (integer_type_node, orig_len); +- repl = gimple_build_assign (gimple_call_lhs (stmt), orig_len); ++ orig_len = fold_convert (TREE_TYPE (lhs), orig_len); ++ repl = gimple_build_assign (lhs, orig_len); + gimple_seq_add_stmt_without_update (&stmts, repl); + gsi_replace_with_seq_vops (gsi, stmts); + /* gsi now points at the assignment to the lhs, get a +@@ -3164,10 +3163,10 @@ + gimple_seq stmts = NULL; + gimple *repl = gimple_build_call (fn, 2, dest, fmt); + gimple_seq_add_stmt_without_update (&stmts, repl); +- if (gimple_call_lhs (stmt)) ++ if (tree lhs = gimple_call_lhs (stmt)) + { +- repl = gimple_build_assign (gimple_call_lhs (stmt), +- build_int_cst (integer_type_node, len)); ++ repl = gimple_build_assign (lhs, ++ build_int_cst (TREE_TYPE (lhs), len)); + gimple_seq_add_stmt_without_update (&stmts, repl); + gsi_replace_with_seq_vops (gsi, stmts); + /* gsi now points at the assignment to the lhs, get a +@@ -3216,12 +3215,12 @@ + gimple_seq stmts = NULL; + gimple *repl = gimple_build_call (fn, 2, dest, orig); + gimple_seq_add_stmt_without_update (&stmts, repl); +- if (gimple_call_lhs (stmt)) ++ if (tree lhs = gimple_call_lhs (stmt)) + { +- if (!useless_type_conversion_p (integer_type_node, ++ if (!useless_type_conversion_p (TREE_TYPE (lhs), + TREE_TYPE (orig_len))) +- orig_len = fold_convert (integer_type_node, orig_len); +- repl = gimple_build_assign (gimple_call_lhs (stmt), orig_len); ++ orig_len = fold_convert (TREE_TYPE (lhs), orig_len); ++ repl = gimple_build_assign (lhs, orig_len); + gimple_seq_add_stmt_without_update (&stmts, repl); + gsi_replace_with_seq_vops (gsi, stmts); + /* gsi now points at the assignment to the lhs, get a +@@ -6721,14 +6720,10 @@ + = wi::sext (wi::to_poly_offset (idx) + - wi::to_poly_offset (low_bound), + TYPE_PRECISION (TREE_TYPE (idx))); +- ++ woffset *= tree_to_uhwi (unit_size); ++ woffset *= BITS_PER_UNIT; + if (woffset.to_shwi (&offset)) + { +- /* TODO: This code seems wrong, multiply then check +- to see if it fits. */ +- offset *= tree_to_uhwi (unit_size); +- offset *= BITS_PER_UNIT; +- + base = TREE_OPERAND (t, 0); + ctor = get_base_constructor (base, &offset, valueize); + /* Empty constructor. Always fold to 0. */ +Index: gcc/cfgexpand.c +=================================================================== +--- a/src/gcc/cfgexpand.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/cfgexpand.c (.../branches/gcc-8-branch) +@@ -4323,7 +4323,11 @@ + op0 = DECL_RTL_IF_SET (exp); + + /* This decl was probably optimized away. */ +- if (!op0) ++ if (!op0 ++ /* At least label RTXen are sometimes replaced by ++ NOTE_INSN_DELETED_LABEL. Any notes here are not ++ handled by copy_rtx. */ ++ || NOTE_P (op0)) + { + if (!VAR_P (exp) + || DECL_EXTERNAL (exp) +Index: gcc/tree-cfgcleanup.c +=================================================================== +--- a/src/gcc/tree-cfgcleanup.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/tree-cfgcleanup.c (.../branches/gcc-8-branch) +@@ -43,6 +43,8 @@ + #include "gimple-match.h" + #include "gimple-fold.h" + #include "tree-ssa-loop-niter.h" ++#include "tree-into-ssa.h" ++#include "tree-cfgcleanup.h" + + + /* The set of blocks in that at least one of the following changes happened: +@@ -761,7 +763,7 @@ + /* Iterate the cfg cleanups, while anything changes. */ + + static bool +-cleanup_tree_cfg_1 (void) ++cleanup_tree_cfg_1 (unsigned ssa_update_flags) + { + bool retval = false; + basic_block bb; +@@ -786,6 +788,8 @@ + + /* After doing the above SSA form should be valid (or an update SSA + should be required). */ ++ if (ssa_update_flags) ++ update_ssa (ssa_update_flags); + + /* Continue by iterating over all basic blocks looking for BB merging + opportunities. */ +@@ -828,7 +832,7 @@ + Return true if the flowgraph was modified, false otherwise. */ + + static bool +-cleanup_tree_cfg_noloop (void) ++cleanup_tree_cfg_noloop (unsigned ssa_update_flags) + { + bool changed; + +@@ -908,7 +912,7 @@ + } + } + +- changed |= cleanup_tree_cfg_1 (); ++ changed |= cleanup_tree_cfg_1 (ssa_update_flags); + + gcc_assert (dom_info_available_p (CDI_DOMINATORS)); + +@@ -966,9 +970,9 @@ + /* Cleanup cfg and repair loop structures. */ + + bool +-cleanup_tree_cfg (void) ++cleanup_tree_cfg (unsigned ssa_update_flags) + { +- bool changed = cleanup_tree_cfg_noloop (); ++ bool changed = cleanup_tree_cfg_noloop (ssa_update_flags); + + if (current_loops != NULL + && loops_state_satisfies_p (LOOPS_NEED_FIXUP)) +Index: gcc/cfgcleanup.c +=================================================================== +--- a/src/gcc/cfgcleanup.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/cfgcleanup.c (.../branches/gcc-8-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) + +@@ -1217,6 +1218,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 +@@ -2705,23 +2714,23 @@ + + if (current_ir_type () == IR_RTL_CFGLAYOUT) + { +- if (BB_FOOTER (b) +- && BARRIER_P (BB_FOOTER (b))) ++ rtx_insn *insn; ++ for (insn = BB_FOOTER (b); ++ insn; insn = NEXT_INSN (insn)) ++ if (BARRIER_P (insn)) ++ break; ++ if (insn) + FOR_EACH_EDGE (e, ei, b->preds) +- if ((e->flags & EDGE_FALLTHRU) +- && BB_FOOTER (e->src) == NULL) ++ if ((e->flags & EDGE_FALLTHRU)) + { +- if (BB_FOOTER (b)) ++ if (BB_FOOTER (b) ++ && BB_FOOTER (e->src) == NULL) + { + BB_FOOTER (e->src) = BB_FOOTER (b); + BB_FOOTER (b) = NULL; + } + else +- { +- start_sequence (); +- BB_FOOTER (e->src) = emit_barrier (); +- end_sequence (); +- } ++ emit_barrier_after_bb (e->src); + } + } + else +Index: gcc/tree-ssa-pre.c +=================================================================== +--- a/src/gcc/tree-ssa-pre.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/tree-ssa-pre.c (.../branches/gcc-8-branch) +@@ -3919,6 +3919,13 @@ + continue; + } + ++ /* If the REFERENCE traps and there was a preceding ++ point in the block that might not return avoid ++ adding the reference to EXP_GEN. */ ++ if (BB_MAY_NOTRETURN (block) ++ && vn_reference_may_trap (ref)) ++ continue; ++ + /* If the value of the reference is not invalidated in + this block until it is computed, add the expression + to EXP_GEN. */ +Index: gcc/tree-cfgcleanup.h +=================================================================== +--- a/src/gcc/tree-cfgcleanup.h (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/tree-cfgcleanup.h (.../branches/gcc-8-branch) +@@ -22,7 +22,7 @@ + + /* In tree-cfgcleanup.c */ + extern bitmap cfgcleanup_altered_bbs; +-extern bool cleanup_tree_cfg (void); ++extern bool cleanup_tree_cfg (unsigned = 0); + extern bool fixup_noreturn_call (gimple *stmt); + + #endif /* GCC_TREE_CFGCLEANUP_H */ +Index: gcc/explow.c +=================================================================== +--- a/src/gcc/explow.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/explow.c (.../branches/gcc-8-branch) +@@ -893,16 +893,7 @@ + + tree type = TREE_TYPE (name); + int unsignedp = TYPE_UNSIGNED (type); +- machine_mode mode = TYPE_MODE (type); +- +- /* Bypass TYPE_MODE when it maps vector modes to BLKmode. */ +- if (mode == BLKmode) +- { +- gcc_assert (VECTOR_TYPE_P (type)); +- mode = type->type_common.mode; +- } +- +- machine_mode pmode = promote_mode (type, mode, &unsignedp); ++ machine_mode pmode = promote_mode (type, TYPE_MODE (type), &unsignedp); + if (punsignedp) + *punsignedp = unsignedp; + +Index: gcc/tree-sra.c +=================================================================== +--- a/src/gcc/tree-sra.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/tree-sra.c (.../branches/gcc-8-branch) +@@ -1150,11 +1150,13 @@ + return false; + } + +-/* Return true if REF contains a VIEW_CONVERT_EXPR or a MEM_REF that performs +- type conversion or a COMPONENT_REF with a bit-field field declaration. */ ++/* Return true if REF contains a VIEW_CONVERT_EXPR or a COMPONENT_REF with a ++ bit-field field declaration. If TYPE_CHANGING_P is non-NULL, set the bool ++ it points to will be set if REF contains any of the above or a MEM_REF ++ expression that effectively performs type conversion. */ + + static bool +-contains_vce_or_bfcref_p (const_tree ref) ++contains_vce_or_bfcref_p (const_tree ref, bool *type_changing_p = NULL) + { + while (handled_component_p (ref)) + { +@@ -1161,11 +1163,16 @@ + if (TREE_CODE (ref) == VIEW_CONVERT_EXPR + || (TREE_CODE (ref) == COMPONENT_REF + && DECL_BIT_FIELD (TREE_OPERAND (ref, 1)))) +- return true; ++ { ++ if (type_changing_p) ++ *type_changing_p = true; ++ return true; ++ } + ref = TREE_OPERAND (ref, 0); + } + +- if (TREE_CODE (ref) != MEM_REF ++ if (!type_changing_p ++ || TREE_CODE (ref) != MEM_REF + || TREE_CODE (TREE_OPERAND (ref, 0)) != ADDR_EXPR) + return false; + +@@ -1172,7 +1179,7 @@ + tree mem = TREE_OPERAND (TREE_OPERAND (ref, 0), 0); + if (TYPE_MAIN_VARIANT (TREE_TYPE (ref)) + != TYPE_MAIN_VARIANT (TREE_TYPE (mem))) +- return true; ++ *type_changing_p = true; + + return false; + } +@@ -1368,15 +1375,26 @@ + lacc->grp_assignment_write = 1; + if (storage_order_barrier_p (rhs)) + lacc->grp_unscalarizable_region = 1; ++ ++ if (should_scalarize_away_bitmap && !is_gimple_reg_type (lacc->type)) ++ { ++ bool type_changing_p = false; ++ contains_vce_or_bfcref_p (lhs, &type_changing_p); ++ if (type_changing_p) ++ bitmap_set_bit (cannot_scalarize_away_bitmap, ++ DECL_UID (lacc->base)); ++ } + } + + if (racc) + { + racc->grp_assignment_read = 1; +- if (should_scalarize_away_bitmap && !gimple_has_volatile_ops (stmt) +- && !is_gimple_reg_type (racc->type)) ++ if (should_scalarize_away_bitmap && !is_gimple_reg_type (racc->type)) + { +- if (contains_vce_or_bfcref_p (rhs)) ++ bool type_changing_p = false; ++ contains_vce_or_bfcref_p (rhs, &type_changing_p); ++ ++ if (type_changing_p || gimple_has_volatile_ops (stmt)) + bitmap_set_bit (cannot_scalarize_away_bitmap, + DECL_UID (racc->base)); + else +@@ -2729,8 +2747,12 @@ + + rchild->grp_hint = 1; + new_acc->grp_hint |= new_acc->grp_read; +- if (rchild->first_child) +- ret |= propagate_subaccesses_across_link (new_acc, rchild); ++ if (rchild->first_child ++ && propagate_subaccesses_across_link (new_acc, rchild)) ++ { ++ ret = 1; ++ add_access_to_work_queue (new_acc); ++ } + } + else + { +Index: gcc/tree-predcom.c +=================================================================== +--- a/src/gcc/tree-predcom.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/tree-predcom.c (.../branches/gcc-8-branch) +@@ -1712,7 +1712,7 @@ + + gcc_assert (!chain->has_max_use_after); + +- /* If loop iterates for unknown times or fewer times than chain->lenght, ++ /* If loop iterates for unknown times or fewer times than chain->length, + we still need to setup root variable and propagate it with PHI node. */ + tree niters = number_of_latch_executions (loop); + if (TREE_CODE (niters) != INTEGER_CST +Index: gcc/tree-streamer-out.c +=================================================================== +--- a/src/gcc/tree-streamer-out.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/tree-streamer-out.c (.../branches/gcc-8-branch) +@@ -212,7 +212,7 @@ + bp_pack_var_len_unsigned (bp, EH_LANDING_PAD_NR (expr)); + } + +- if (TREE_CODE (expr) == FIELD_DECL) ++ else if (TREE_CODE (expr) == FIELD_DECL) + { + bp_pack_value (bp, DECL_PACKED (expr), 1); + bp_pack_value (bp, DECL_NONADDRESSABLE_P (expr), 1); +@@ -220,12 +220,15 @@ + bp_pack_value (bp, expr->decl_common.off_align, 8); + } + +- if (VAR_P (expr)) ++ else if (VAR_P (expr)) + { + bp_pack_value (bp, DECL_HAS_DEBUG_EXPR_P (expr), 1); + bp_pack_value (bp, DECL_NONLOCAL_FRAME (expr), 1); + } + ++ else if (TREE_CODE (expr) == PARM_DECL) ++ bp_pack_value (bp, DECL_HIDDEN_STRING_LENGTH (expr), 1); ++ + if (TREE_CODE (expr) == RESULT_DECL + || TREE_CODE (expr) == PARM_DECL + || VAR_P (expr)) +Index: gcc/tree-ssa-copy.c +=================================================================== +--- a/src/gcc/tree-ssa-copy.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/tree-ssa-copy.c (.../branches/gcc-8-branch) +@@ -545,13 +545,12 @@ + duplicate_ssa_name_ptr_info (copy_of[i].value, + SSA_NAME_PTR_INFO (var)); + /* Points-to information is cfg insensitive, +- but alignment info might be cfg sensitive, if it +- e.g. is derived from VRP derived non-zero bits. +- So, do not copy alignment info if the two SSA_NAMEs +- aren't defined in the same basic block. */ ++ but [E]VRP might record context sensitive alignment ++ info, non-nullness, etc. So reset context sensitive ++ info if the two SSA_NAMEs aren't defined in the same ++ basic block. */ + if (var_bb != copy_of_bb) +- mark_ptr_info_alignment_unknown +- (SSA_NAME_PTR_INFO (copy_of[i].value)); ++ reset_flow_sensitive_info (copy_of[i].value); + } + else if (!POINTER_TYPE_P (TREE_TYPE (var)) + && SSA_NAME_RANGE_INFO (var) +Index: gcc/tree-ssa-forwprop.c +=================================================================== +--- a/src/gcc/tree-ssa-forwprop.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/tree-ssa-forwprop.c (.../branches/gcc-8-branch) +@@ -2481,6 +2481,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_8_3_0_release) ++++ b/src/gcc/ggc-page.c (.../branches/gcc-8-branch) +@@ -2555,6 +2555,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 (); +@@ -2583,8 +2586,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/varasm.c +=================================================================== +--- a/src/gcc/varasm.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/varasm.c (.../branches/gcc-8-branch) +@@ -1857,21 +1857,13 @@ + tree pp_val = TREE_VALUE (patchable_function_entry_attr); + tree patchable_function_entry_value1 = TREE_VALUE (pp_val); + +- if (tree_fits_uhwi_p (patchable_function_entry_value1)) +- patch_area_size = tree_to_uhwi (patchable_function_entry_value1); +- else +- gcc_unreachable (); +- ++ patch_area_size = tree_to_uhwi (patchable_function_entry_value1); + patch_area_entry = 0; +- if (list_length (pp_val) > 1) ++ if (TREE_CHAIN (pp_val) != NULL_TREE) + { +- tree patchable_function_entry_value2 = +- TREE_VALUE (TREE_CHAIN (pp_val)); +- +- if (tree_fits_uhwi_p (patchable_function_entry_value2)) +- patch_area_entry = tree_to_uhwi (patchable_function_entry_value2); +- else +- gcc_unreachable (); ++ tree patchable_function_entry_value2 ++ = TREE_VALUE (TREE_CHAIN (pp_val)); ++ patch_area_entry = tree_to_uhwi (patchable_function_entry_value2); + } + } + +@@ -1878,7 +1870,7 @@ + if (patch_area_entry > patch_area_size) + { + if (patch_area_size > 0) +- warning (OPT_Wattributes, "Patchable function entry > size"); ++ warning (OPT_Wattributes, "patchable function entry > size"); + patch_area_entry = 0; + } + +@@ -1898,7 +1890,8 @@ + /* And the area after the label. Record it if we haven't done so yet. */ + if (patch_area_size > patch_area_entry) + targetm.asm_out.print_patchable_function_entry (asm_out_file, +- patch_area_size-patch_area_entry, ++ patch_area_size ++ - patch_area_entry, + patch_area_entry == 0); + + if (lookup_attribute ("no_split_stack", DECL_ATTRIBUTES (decl))) +@@ -5292,7 +5285,7 @@ + { + int this_time; + int shift; +- HOST_WIDE_INT value; ++ unsigned HOST_WIDE_INT value; + HOST_WIDE_INT next_byte = next_offset / BITS_PER_UNIT; + HOST_WIDE_INT next_bit = next_offset % BITS_PER_UNIT; + +@@ -5324,15 +5317,13 @@ + this_time = end - shift + 1; + } + +- /* Now get the bits from the appropriate constant word. */ +- value = TREE_INT_CST_ELT (local->val, shift / HOST_BITS_PER_WIDE_INT); +- shift = shift & (HOST_BITS_PER_WIDE_INT - 1); ++ /* Now get the bits we want to insert. */ ++ value = wi::extract_uhwi (wi::to_widest (local->val), ++ shift, this_time); + + /* Get the result. This works only when: + 1 <= this_time <= HOST_BITS_PER_WIDE_INT. */ +- local->byte |= (((value >> shift) +- & (((HOST_WIDE_INT) 2 << (this_time - 1)) - 1)) +- << (BITS_PER_UNIT - this_time - next_bit)); ++ local->byte |= value << (BITS_PER_UNIT - this_time - next_bit); + } + else + { +@@ -5349,15 +5340,13 @@ + this_time + = HOST_BITS_PER_WIDE_INT - (shift & (HOST_BITS_PER_WIDE_INT - 1)); + +- /* Now get the bits from the appropriate constant word. */ +- value = TREE_INT_CST_ELT (local->val, shift / HOST_BITS_PER_WIDE_INT); +- shift = shift & (HOST_BITS_PER_WIDE_INT - 1); ++ /* Now get the bits we want to insert. */ ++ value = wi::extract_uhwi (wi::to_widest (local->val), ++ shift, this_time); + + /* Get the result. This works only when: + 1 <= this_time <= HOST_BITS_PER_WIDE_INT. */ +- local->byte |= (((value >> shift) +- & (((HOST_WIDE_INT) 2 << (this_time - 1)) - 1)) +- << next_bit); ++ local->byte |= value << next_bit; + } + + next_offset += this_time; +Index: gcc/ira.c +=================================================================== +--- a/src/gcc/ira.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/ira.c (.../branches/gcc-8-branch) +@@ -5147,6 +5147,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 (); + +@@ -5162,12 +5164,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/rtl.c +=================================================================== +--- a/src/gcc/rtl.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/rtl.c (.../branches/gcc-8-branch) +@@ -731,6 +731,8 @@ + return CALL_INSN; + if (ANY_RETURN_P (x)) + return JUMP_INSN; ++ if (GET_CODE (x) == ASM_OPERANDS && ASM_OPERANDS_LABEL_VEC (x)) ++ return JUMP_INSN; + if (GET_CODE (x) == SET) + { + if (GET_CODE (SET_DEST (x)) == PC) +@@ -757,6 +759,9 @@ + return CALL_INSN; + if (has_return_p) + return JUMP_INSN; ++ if (GET_CODE (XVECEXP (x, 0, 0)) == ASM_OPERANDS ++ && ASM_OPERANDS_LABEL_VEC (XVECEXP (x, 0, 0))) ++ return JUMP_INSN; + } + #ifdef GENERATOR_FILE + if (GET_CODE (x) == MATCH_OPERAND +Index: gcc/rtl.h +=================================================================== +--- a/src/gcc/rtl.h (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/rtl.h (.../branches/gcc-8-branch) +@@ -4355,6 +4355,7 @@ + { + switch (GET_CODE (x)) + { ++ case CONST_INT: + case ROTATE: + case ROTATERT: + case SIGN_EXTRACT: +Index: gcc/dwarf2cfi.c +=================================================================== +--- a/src/gcc/dwarf2cfi.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/dwarf2cfi.c (.../branches/gcc-8-branch) +@@ -1762,7 +1762,7 @@ + + /* Rule 6 */ + case CONST_INT: +- case POLY_INT_CST: ++ case CONST_POLY_INT: + cur_trace->cfa_temp.reg = dwf_regno (dest); + cur_trace->cfa_temp.offset = rtx_to_poly_int64 (src); + break; +Index: gcc/tree-inline.c +=================================================================== +--- a/src/gcc/tree-inline.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/tree-inline.c (.../branches/gcc-8-branch) +@@ -578,6 +578,92 @@ + return new_tree; + } + ++/* Helper function for remap_type_2, called through walk_tree. */ ++ ++static tree ++remap_type_3 (tree *tp, int *walk_subtrees, void *data) ++{ ++ copy_body_data *id = (copy_body_data *) data; ++ ++ if (TYPE_P (*tp)) ++ *walk_subtrees = 0; ++ ++ else if (DECL_P (*tp) && remap_decl (*tp, id) != *tp) ++ return *tp; ++ ++ return NULL_TREE; ++} ++ ++/* Return true if TYPE needs to be remapped because remap_decl on any ++ needed embedded decl returns something other than that decl. */ ++ ++static bool ++remap_type_2 (tree type, copy_body_data *id) ++{ ++ tree t; ++ ++#define RETURN_TRUE_IF_VAR(T) \ ++ do \ ++ { \ ++ tree _t = (T); \ ++ if (_t) \ ++ { \ ++ if (DECL_P (_t) && remap_decl (_t, id) != _t) \ ++ return true; \ ++ if (!TYPE_SIZES_GIMPLIFIED (type) \ ++ && walk_tree (&_t, remap_type_3, id, NULL)) \ ++ return true; \ ++ } \ ++ } \ ++ while (0) ++ ++ switch (TREE_CODE (type)) ++ { ++ case POINTER_TYPE: ++ case REFERENCE_TYPE: ++ case FUNCTION_TYPE: ++ case METHOD_TYPE: ++ return remap_type_2 (TREE_TYPE (type), id); ++ ++ case INTEGER_TYPE: ++ case REAL_TYPE: ++ case FIXED_POINT_TYPE: ++ case ENUMERAL_TYPE: ++ case BOOLEAN_TYPE: ++ RETURN_TRUE_IF_VAR (TYPE_MIN_VALUE (type)); ++ RETURN_TRUE_IF_VAR (TYPE_MAX_VALUE (type)); ++ return false; ++ ++ case ARRAY_TYPE: ++ if (remap_type_2 (TREE_TYPE (type), id) ++ || (TYPE_DOMAIN (type) && remap_type_2 (TYPE_DOMAIN (type), id))) ++ return true; ++ break; ++ ++ case RECORD_TYPE: ++ case UNION_TYPE: ++ case QUAL_UNION_TYPE: ++ for (t = TYPE_FIELDS (type); t; t = DECL_CHAIN (t)) ++ if (TREE_CODE (t) == FIELD_DECL) ++ { ++ RETURN_TRUE_IF_VAR (DECL_FIELD_OFFSET (t)); ++ RETURN_TRUE_IF_VAR (DECL_SIZE (t)); ++ RETURN_TRUE_IF_VAR (DECL_SIZE_UNIT (t)); ++ if (TREE_CODE (type) == QUAL_UNION_TYPE) ++ RETURN_TRUE_IF_VAR (DECL_QUALIFIER (t)); ++ } ++ break; ++ ++ default: ++ return false; ++ } ++ ++ RETURN_TRUE_IF_VAR (TYPE_SIZE (type)); ++ RETURN_TRUE_IF_VAR (TYPE_SIZE_UNIT (type)); ++ return false; ++#undef RETURN_TRUE_IF_VAR ++} ++ + tree + remap_type (tree type, copy_body_data *id) + { +@@ -593,7 +679,10 @@ + return *node; + + /* The type only needs remapping if it's variably modified. */ +- if (! variably_modified_type_p (type, id->src_fn)) ++ if (! variably_modified_type_p (type, id->src_fn) ++ /* Don't remap if copy_decl method doesn't always return a new ++ decl and for all embedded decls returns the passed in decl. */ ++ || (id->dont_remap_vla_if_no_change && !remap_type_2 (type, id))) + { + insert_decl_map (id, type, type); + return type; +@@ -868,7 +957,12 @@ + bool existed; + unsigned short &newc = id->dependence_map->get_or_insert (clique, &existed); + if (!existed) +- newc = ++cfun->last_clique; ++ { ++ /* Clique 1 is reserved for local ones set by PTA. */ ++ if (cfun->last_clique == 0) ++ cfun->last_clique = 1; ++ newc = ++cfun->last_clique; ++ } + return newc; + } + +@@ -2651,7 +2745,11 @@ + dest_loop->simduid = remap_decl (src_loop->simduid, id); + cfun->has_simduid_loops = true; + } +- ++ if (id->src_cfun->last_clique != 0) ++ dest_loop->owned_clique ++ = remap_dependence_clique (id, ++ src_loop->owned_clique ++ ? src_loop->owned_clique : 1); + /* Recurse. */ + copy_loops (id, dest_loop, src_loop); + } +@@ -5539,6 +5637,10 @@ + if (CODE_CONTAINS_STRUCT (TREE_CODE (copy), TS_DECL_WRTL) + && !TREE_STATIC (copy) && !DECL_EXTERNAL (copy)) + SET_DECL_RTL (copy, 0); ++ /* For vector typed decls make sure to update DECL_MODE according ++ to the new function context. */ ++ if (VECTOR_TYPE_P (TREE_TYPE (copy))) ++ SET_DECL_MODE (copy, TYPE_MODE (TREE_TYPE (copy))); + + /* These args would always appear unused, if not for this. */ + TREE_USED (copy) = 1; +Index: gcc/tree-inline.h +=================================================================== +--- a/src/gcc/tree-inline.h (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/tree-inline.h (.../branches/gcc-8-branch) +@@ -119,6 +119,13 @@ + /* > 0 if we are remapping a type currently. */ + int remapping_type_depth; + ++ /* Usually copy_decl callback always creates new decls, in that case ++ we want to remap all variably_modified_type_p types. If this flag ++ is set, remap_type will do further checks to see if remap_decl ++ of any decls mentioned in the type will remap to anything but itself ++ and only in that case will actually remap the type. */ ++ bool dont_remap_vla_if_no_change; ++ + /* A function to be called when duplicating BLOCK nodes. */ + void (*transform_lang_insert_block) (tree); + +Index: gcc/omp-simd-clone.c +=================================================================== +--- a/src/gcc/omp-simd-clone.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/omp-simd-clone.c (.../branches/gcc-8-branch) +@@ -868,6 +868,18 @@ + + if (tp != orig_tp) + { ++ if (gimple_code (info->stmt) == GIMPLE_PHI ++ && cand ++ && TREE_CODE (*orig_tp) == ADDR_EXPR ++ && TREE_CODE (TREE_OPERAND (*orig_tp, 0)) == PARM_DECL ++ && cand->alias_ptr_type) ++ { ++ gcc_assert (TREE_CODE (cand->alias_ptr_type) == SSA_NAME); ++ *orig_tp = cand->alias_ptr_type; ++ info->modified = true; ++ return NULL_TREE; ++ } ++ + repl = build_fold_addr_expr (repl); + gimple *stmt; + if (is_gimple_debug (info->stmt)) +@@ -884,7 +896,18 @@ + stmt = gimple_build_assign (make_ssa_name (TREE_TYPE (repl)), repl); + repl = gimple_assign_lhs (stmt); + } +- gimple_stmt_iterator gsi = gsi_for_stmt (info->stmt); ++ gimple_stmt_iterator gsi; ++ if (gimple_code (info->stmt) == GIMPLE_PHI) ++ { ++ gsi = gsi_after_labels (single_succ (ENTRY_BLOCK_PTR_FOR_FN (cfun))); ++ /* Cache SSA_NAME for next time. */ ++ if (cand ++ && TREE_CODE (*orig_tp) == ADDR_EXPR ++ && TREE_CODE (TREE_OPERAND (*orig_tp, 0)) == PARM_DECL) ++ cand->alias_ptr_type = repl; ++ } ++ else ++ gsi = gsi_for_stmt (info->stmt); + gsi_insert_before (&gsi, stmt, GSI_SAME_STMT); + *orig_tp = repl; + } +@@ -985,6 +1008,31 @@ + { + gimple_stmt_iterator gsi; + ++ for (gsi = gsi_start_phis (bb); !gsi_end_p (gsi); gsi_next (&gsi)) ++ { ++ gphi *phi = as_a <gphi *> (gsi_stmt (gsi)); ++ int i, n = gimple_phi_num_args (phi); ++ info.stmt = phi; ++ struct walk_stmt_info wi; ++ memset (&wi, 0, sizeof (wi)); ++ info.modified = false; ++ wi.info = &info; ++ for (i = 0; i < n; ++i) ++ { ++ int walk_subtrees = 1; ++ tree arg = gimple_phi_arg_def (phi, i); ++ tree op = arg; ++ ipa_simd_modify_stmt_ops (&op, &walk_subtrees, &wi); ++ if (op != arg) ++ { ++ SET_PHI_ARG_DEF (phi, i, op); ++ gcc_assert (TREE_CODE (op) == SSA_NAME); ++ if (gimple_phi_arg_edge (phi, i)->flags & EDGE_ABNORMAL) ++ SSA_NAME_OCCURS_IN_ABNORMAL_PHI (op) = 1; ++ } ++ } ++ } ++ + gsi = gsi_start_bb (bb); + while (!gsi_end_p (gsi)) + { +Index: gcc/tree-streamer-in.c +=================================================================== +--- a/src/gcc/tree-streamer-in.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/tree-streamer-in.c (.../branches/gcc-8-branch) +@@ -252,7 +252,7 @@ + LABEL_DECL_UID (expr) = -1; + } + +- if (TREE_CODE (expr) == FIELD_DECL) ++ else if (TREE_CODE (expr) == FIELD_DECL) + { + DECL_PACKED (expr) = (unsigned) bp_unpack_value (bp, 1); + DECL_NONADDRESSABLE_P (expr) = (unsigned) bp_unpack_value (bp, 1); +@@ -260,12 +260,15 @@ + expr->decl_common.off_align = bp_unpack_value (bp, 8); + } + +- if (VAR_P (expr)) ++ else if (VAR_P (expr)) + { + DECL_HAS_DEBUG_EXPR_P (expr) = (unsigned) bp_unpack_value (bp, 1); + DECL_NONLOCAL_FRAME (expr) = (unsigned) bp_unpack_value (bp, 1); + } + ++ else if (TREE_CODE (expr) == PARM_DECL) ++ DECL_HIDDEN_STRING_LENGTH (expr) = (unsigned) bp_unpack_value (bp, 1); ++ + if (TREE_CODE (expr) == RESULT_DECL + || TREE_CODE (expr) == PARM_DECL + || VAR_P (expr)) +Index: gcc/symtab.c +=================================================================== +--- a/src/gcc/symtab.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/symtab.c (.../branches/gcc-8-branch) +@@ -1546,7 +1546,7 @@ + void + symtab_node::set_section (const char *section) + { +- gcc_assert (!this->alias); ++ gcc_assert (!this->alias || !this->analyzed); + call_for_symbol_and_aliases + (symtab_node::set_section, const_cast<char *>(section), true); + } +Index: gcc/tree-ssa-phiprop.c +=================================================================== +--- a/src/gcc/tree-ssa-phiprop.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/tree-ssa-phiprop.c (.../branches/gcc-8-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 (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 (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_8_3_0_release) ++++ b/src/gcc/tree-object-size.c (.../branches/gcc-8-branch) +@@ -899,6 +899,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/tree-outof-ssa.c +=================================================================== +--- a/src/gcc/tree-outof-ssa.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/tree-outof-ssa.c (.../branches/gcc-8-branch) +@@ -651,6 +651,8 @@ + tree type = TREE_TYPE (name); + int unsignedp; + machine_mode reg_mode = promote_ssa_mode (name, &unsignedp); ++ if (reg_mode == BLKmode) ++ return assign_temp (type, 0, 0); + rtx x = gen_reg_rtx (reg_mode); + if (POINTER_TYPE_P (type)) + mark_reg_pointer (x, TYPE_ALIGN (TREE_TYPE (type))); +Index: gcc/vr-values.c +=================================================================== +--- a/src/gcc/vr-values.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/vr-values.c (.../branches/gcc-8-branch) +@@ -211,8 +211,13 @@ + the same. We may not have is_new when transitioning to + UNDEFINED. If old_vr->type is VARYING, we shouldn't be + called. */ +- if (new_vr->type == VR_UNDEFINED) ++ if (old_vr->type == VR_VARYING) + { ++ set_value_range_to_varying (new_vr); ++ is_new = false; ++ } ++ else if (new_vr->type == VR_UNDEFINED) ++ { + BITMAP_FREE (new_vr->equiv); + set_value_range_to_varying (old_vr); + set_value_range_to_varying (new_vr); +Index: gcc/resource.c +=================================================================== +--- a/src/gcc/resource.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/resource.c (.../branches/gcc-8-branch) +@@ -969,9 +969,13 @@ + { + regset regs_live = DF_LR_IN (BASIC_BLOCK_FOR_FN (cfun, b)); + rtx_insn *start_insn, *stop_insn; ++ df_ref def; + + /* Compute hard regs live at start of block. */ + REG_SET_TO_HARD_REG_SET (current_live_regs, regs_live); ++ FOR_EACH_ARTIFICIAL_DEF (def, b) ++ if (DF_REF_FLAGS (def) & DF_REF_AT_TOP) ++ SET_HARD_REG_BIT (current_live_regs, DF_REF_REGNO (def)); + + /* Get starting and ending insn, handling the case where each might + be a SEQUENCE. */ +Index: gcc/var-tracking.c +=================================================================== +--- a/src/gcc/var-tracking.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/var-tracking.c (.../branches/gcc-8-branch) +@@ -8491,7 +8491,7 @@ + + /* Invalid SUBREGs are ok in debug info. ??? We could try + alternate expansions for the VALUE as well. */ +- if (!result) ++ if (!result && GET_MODE (subreg) != VOIDmode) + result = gen_rtx_raw_SUBREG (GET_MODE (x), subreg, SUBREG_BYTE (x)); + + return result; +Index: gcc/cfgloop.h +=================================================================== +--- a/src/gcc/cfgloop.h (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/cfgloop.h (.../branches/gcc-8-branch) +@@ -227,6 +227,10 @@ + Other values means unroll with the given unrolling factor. */ + unsigned short unroll; + ++ /* If this loop was inlined the main clique of the callee which does ++ not need remapping when copying the loop body. */ ++ unsigned short owned_clique; ++ + /* For SIMD loops, this is a unique identifier of the loop, referenced + by IFN_GOMP_SIMD_VF, IFN_GOMP_SIMD_LANE and IFN_GOMP_SIMD_LAST_LANE + builtins. */ +Index: gcc/config.gcc +=================================================================== +--- a/src/gcc/config.gcc (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/config.gcc (.../branches/gcc-8-branch) +@@ -647,7 +647,7 @@ + # Common parts for widely ported systems. + case ${target} in + *-*-darwin*) +- tmake_file="t-darwin ${cpu_type}/t-darwin" ++ tmake_file="t-darwin " + tm_file="${tm_file} darwin.h" + case ${target} in + *-*-darwin9*) +@@ -1479,16 +1479,25 @@ + dwarf2=no + fi + ;; ++i[34567]86-*-darwin1[89]*) ++ echo "Error: 32bit target is not supported after Darwin17" 1>&2 ++ ;; + i[34567]86-*-darwin*) + need_64bit_isa=yes + # Baseline choice for a machine that allows m64 support. + with_cpu=${with_cpu:-core2} ++ tmake_file="${tmake_file} ${cpu_type}/t-darwin32-biarch t-slibgcc" ++ tm_file="${tm_file} ${cpu_type}/darwin32-biarch.h" ++ ;; ++x86_64-*-darwin1[89]* | x86_64-*-darwin2[01]*) ++ # Only 64b from now ++ with_cpu=${with_cpu:-core2} + tmake_file="${tmake_file} t-slibgcc" + ;; + x86_64-*-darwin*) + with_cpu=${with_cpu:-core2} +- tmake_file="${tmake_file} ${cpu_type}/t-darwin64 t-slibgcc" +- tm_file="${tm_file} ${cpu_type}/darwin64.h" ++ tmake_file="${tmake_file} ${cpu_type}/t-darwin64-biarch t-slibgcc" ++ tm_file="${tm_file} ${cpu_type}/darwin64-biarch.h" + ;; + i[34567]86-*-elfiamcu) + tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h newlib-stdint.h i386/iamcu.h" +@@ -2386,16 +2395,23 @@ + # extra_headers= + # ;; + powerpc-*-darwin*) +- extra_options="${extra_options} rs6000/darwin.opt" ++ extra_options="${extra_options} ${cpu_type}/darwin.opt" + case ${target} in +- *-darwin1[0-9]* | *-darwin[8-9]*) +- tmake_file="${tmake_file} rs6000/t-darwin8" +- tm_file="${tm_file} rs6000/darwin8.h" ++ *-darwin1[0-9]* | *-darwin9*) ++ tmake_file="${tmake_file} ${cpu_type}/t-darwin32-biarch" ++ tm_file="${tm_file} ${cpu_type}/darwin32-biarch.h" + ;; ++ *-darwin8*) ++ tmake_file="${tmake_file} ${cpu_type}/t-darwin32-biarch" ++ tm_file="${tm_file} ${cpu_type}/darwin32-biarch.h" ++ tm_file="${tm_file} ${cpu_type}/darwin8.h" ++ ;; + *-darwin7*) +- tm_file="${tm_file} rs6000/darwin7.h" ++ tm_file="${tm_file} ${cpu_type}/darwin7.h" + ;; +- *-darwin[0-6]*) ++ *-darwin[456]*) ++ # Earlier - ingle arch, with 32b only ++ # OS X 10.0, the first edition is Darwin4 + ;; + esac + tmake_file="${tmake_file} t-slibgcc" +@@ -2403,8 +2419,8 @@ + ;; + powerpc64-*-darwin*) + extra_options="${extra_options} ${cpu_type}/darwin.opt" +- tmake_file="${tmake_file} ${cpu_type}/t-darwin64 t-slibgcc" +- tm_file="${tm_file} ${cpu_type}/darwin8.h ${cpu_type}/darwin64.h" ++ tmake_file="${tmake_file} ${cpu_type}/t-darwin64-biarch t-slibgcc" ++ tm_file="${tm_file} ${cpu_type}/darwin64-biarch.h" + extra_headers=altivec.h + ;; + powerpc*-*-freebsd*) +@@ -4447,14 +4463,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" \ +@@ -4467,7 +4481,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" +@@ -4676,8 +4693,11 @@ + ;; + i[34567]86-*-dragonfly* | x86_64-*-dragonfly*) + ;; +- i[34567]86-*-freebsd* | x86_64-*-freebsd*) ++ i[34567]86-*-freebsd*) + ;; ++ x86_64-*-freebsd*) ++ tmake_file="${tmake_file} i386/t-freebsd64" ++ ;; + ia64*-*-linux*) + ;; + +Index: gcc/opts-global.c +=================================================================== +--- a/src/gcc/opts-global.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/opts-global.c (.../branches/gcc-8-branch) +@@ -103,10 +103,14 @@ + text, bad_lang); + else if (lang_mask == CL_DRIVER) + gcc_unreachable (); +- else ++ else if (ok_langs[0] != '\0') + /* Eventually this should become a hard error IMO. */ + warning (0, "command line option %qs is valid for %s but not for %s", + text, ok_langs, bad_lang); ++ else ++ /* Happens for -Werror=warning_name. */ ++ warning (0, "%<-Werror=%> argument %qs is not valid for %s", ++ text, bad_lang); + + free (ok_langs); + free (bad_lang); +Index: gcc/Makefile.in +=================================================================== +--- a/src/gcc/Makefile.in (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/Makefile.in (.../branches/gcc-8-branch) +@@ -1114,6 +1114,7 @@ + # Support for additional languages (other than C). + # C can be supported this way too (leave for later). + ++LANG_CONFIGUREFRAGS = @all_lang_configurefrags@ + LANG_MAKEFRAGS = @all_lang_makefrags@ + + # Used by gcc/jit/Make-lang.in +@@ -1877,7 +1878,7 @@ + # Really, really stupid make features, such as SUN's KEEP_STATE, may force + # a target to build even if it is up-to-date. So we must verify that + # config.status does not exist before failing. +-config.status: $(srcdir)/configure $(srcdir)/config.gcc ++config.status: $(srcdir)/configure $(srcdir)/config.gcc $(LANG_CONFIGUREFRAGS) + @if [ ! -f config.status ] ; then \ + echo You must configure gcc. Look at http://gcc.gnu.org/install/ for details.; \ + false; \ +Index: gcc/tree-ssa-structalias.c +=================================================================== +--- a/src/gcc/tree-ssa-structalias.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/tree-ssa-structalias.c (.../branches/gcc-8-branch) +@@ -3232,9 +3232,29 @@ + return; + } + +- /* Pretend to take the address of the base, we'll take care of +- adding the required subset of sub-fields below. */ +- get_constraint_for_1 (t, results, true, lhs_p); ++ /* Avoid creating pointer-offset constraints, so handle MEM_REF ++ offsets directly. Pretend to take the address of the base, ++ we'll take care of adding the required subset of sub-fields below. */ ++ if (TREE_CODE (t) == MEM_REF ++ && !integer_zerop (TREE_OPERAND (t, 0))) ++ { ++ poly_offset_int off = mem_ref_offset (t); ++ off <<= LOG2_BITS_PER_UNIT; ++ off += bitpos; ++ poly_int64 off_hwi; ++ if (off.to_shwi (&off_hwi)) ++ bitpos = off_hwi; ++ else ++ { ++ bitpos = 0; ++ bitmaxsize = -1; ++ } ++ get_constraint_for_1 (TREE_OPERAND (t, 0), results, false, lhs_p); ++ do_deref (results); ++ } ++ else ++ get_constraint_for_1 (t, results, true, lhs_p); ++ + /* Strip off nothing_id. */ + if (results->length () == 2) + { +@@ -7461,7 +7481,11 @@ + if (MR_DEPENDENCE_CLIQUE (ref) == 0) + { + if (clique == 0) +- clique = ++cfun->last_clique; ++ { ++ if (cfun->last_clique == 0) ++ cfun->last_clique = 1; ++ clique = 1; ++ } + if (restrict_var->ruid == 0) + restrict_var->ruid = ++last_ruid; + MR_DEPENDENCE_CLIQUE (ref) = clique; +@@ -7472,6 +7496,23 @@ + return false; + } + ++/* Clear dependence info for the clique DATA. */ ++ ++static bool ++clear_dependence_clique (gimple *, tree base, tree, void *data) ++{ ++ unsigned short clique = (uintptr_t)data; ++ if ((TREE_CODE (base) == MEM_REF ++ || TREE_CODE (base) == TARGET_MEM_REF) ++ && MR_DEPENDENCE_CLIQUE (base) == clique) ++ { ++ MR_DEPENDENCE_CLIQUE (base) = 0; ++ MR_DEPENDENCE_BASE (base) = 0; ++ } ++ ++ return false; ++} ++ + /* Compute the set of independend memory references based on restrict + tags and their conservative propagation to the points-to sets. */ + +@@ -7478,6 +7519,19 @@ + static void + compute_dependence_clique (void) + { ++ /* First clear the special "local" clique. */ ++ basic_block bb; ++ if (cfun->last_clique != 0) ++ FOR_EACH_BB_FN (bb, cfun) ++ for (gimple_stmt_iterator gsi = gsi_start_bb (bb); ++ !gsi_end_p (gsi); gsi_next (&gsi)) ++ { ++ gimple *stmt = gsi_stmt (gsi); ++ walk_stmt_load_store_ops (stmt, (void *)(uintptr_t) 1, ++ clear_dependence_clique, ++ clear_dependence_clique); ++ } ++ + unsigned short clique = 0; + unsigned short last_ruid = 0; + bitmap rvars = BITMAP_ALLOC (NULL); +@@ -7552,7 +7606,10 @@ + } + if (used) + { +- bitmap_set_bit (rvars, restrict_var->id); ++ /* Add all subvars to the set of restrict pointed-to set. */ ++ for (unsigned sv = restrict_var->head; sv != 0; ++ sv = get_varinfo (sv)->next) ++ bitmap_set_bit (rvars, sv); + varinfo_t escaped = get_varinfo (find (escaped_id)); + if (bitmap_bit_p (escaped->solution, restrict_var->id)) + escaped_p = true; +Index: gcc/tree-core.h +=================================================================== +--- a/src/gcc/tree-core.h (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/tree-core.h (.../branches/gcc-8-branch) +@@ -997,7 +997,9 @@ + expression trees and specify known data non-dependences. For + two memory references in a function they are known to not + alias if dependence_info.clique are equal and dependence_info.base +- are distinct. */ ++ are distinct. Clique number zero means there is no information, ++ clique number one is populated from function global information ++ and thus needs no remapping on transforms like loop unrolling. */ + struct { + unsigned short clique; + unsigned short base; +@@ -1644,6 +1646,7 @@ + /* In a VAR_DECL and PARM_DECL, this is DECL_READ_P. */ + unsigned decl_read_flag : 1; + /* In a VAR_DECL or RESULT_DECL, this is DECL_NONSHAREABLE. */ ++ /* In a PARM_DECL, this is DECL_HIDDEN_STRING_LENGTH. */ + unsigned decl_nonshareable_flag : 1; + + /* DECL_OFFSET_ALIGN, used only for FIELD_DECLs. */ +Index: gcc/tree-cfg.c +=================================================================== +--- a/src/gcc/tree-cfg.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/tree-cfg.c (.../branches/gcc-8-branch) +@@ -2307,7 +2307,7 @@ + new_bb = single_succ (new_bb); + gcc_assert (new_bb != bb); + } +- new_gsi = gsi_start_bb (new_bb); ++ new_gsi = gsi_after_labels (new_bb); + gsi_remove (&i, false); + gsi_insert_before (&new_gsi, stmt, GSI_NEW_STMT); + } +@@ -6308,7 +6308,7 @@ + preserve SSA form. */ + + static basic_block +-gimple_duplicate_bb (basic_block bb) ++gimple_duplicate_bb (basic_block bb, copy_bb_data *id) + { + basic_block new_bb; + gimple_stmt_iterator gsi_tgt; +@@ -6372,6 +6372,39 @@ + && (!VAR_P (base) || !DECL_HAS_VALUE_EXPR_P (base))) + DECL_NONSHAREABLE (base) = 1; + } ++ ++ /* If requested remap dependence info of cliques brought in ++ via inlining. */ ++ if (id) ++ for (unsigned i = 0; i < gimple_num_ops (copy); ++i) ++ { ++ tree op = gimple_op (copy, i); ++ if (!op) ++ continue; ++ if (TREE_CODE (op) == ADDR_EXPR ++ || TREE_CODE (op) == WITH_SIZE_EXPR) ++ op = TREE_OPERAND (op, 0); ++ while (handled_component_p (op)) ++ op = TREE_OPERAND (op, 0); ++ if ((TREE_CODE (op) == MEM_REF ++ || TREE_CODE (op) == TARGET_MEM_REF) ++ && MR_DEPENDENCE_CLIQUE (op) > 1 ++ && MR_DEPENDENCE_CLIQUE (op) != bb->loop_father->owned_clique) ++ { ++ if (!id->dependence_map) ++ id->dependence_map = new hash_map<dependence_hash, ++ unsigned short>; ++ bool existed; ++ unsigned short &newc = id->dependence_map->get_or_insert ++ (MR_DEPENDENCE_CLIQUE (op), &existed); ++ if (!existed) ++ { ++ gcc_assert (MR_DEPENDENCE_CLIQUE (op) <= cfun->last_clique); ++ newc = ++cfun->last_clique; ++ } ++ MR_DEPENDENCE_CLIQUE (op) = newc; ++ } ++ } + + /* Create new names for all the definitions created by COPY and + add replacement mappings for each new name. */ +@@ -7199,7 +7232,14 @@ + if (virtual_operand_p (op)) + { + /* Remove the phi nodes for virtual operands (alias analysis will be +- run for the new function, anyway). */ ++ run for the new function, anyway). But replace all uses that ++ might be outside of the region we move. */ ++ use_operand_p use_p; ++ imm_use_iterator iter; ++ gimple *use_stmt; ++ FOR_EACH_IMM_USE_STMT (use_stmt, iter, op) ++ FOR_EACH_IMM_USE_ON_STMT (use_p, iter) ++ SET_USE (use_p, SSA_NAME_VAR (op)); + remove_phi_node (&psi, true); + continue; + } +Index: gcc/passes.c +=================================================================== +--- a/src/gcc/passes.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/passes.c (.../branches/gcc-8-branch) +@@ -1944,7 +1944,7 @@ + /* Always cleanup the CFG before trying to update SSA. */ + if (flags & TODO_cleanup_cfg) + { +- cleanup_tree_cfg (); ++ cleanup_tree_cfg (flags & TODO_update_ssa_any); + + /* When cleanup_tree_cfg merges consecutive blocks, it may + perform some simplistic propagation when removing single +Index: gcc/tree-ssa-reassoc.c +=================================================================== +--- a/src/gcc/tree-ssa-reassoc.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/tree-ssa-reassoc.c (.../branches/gcc-8-branch) +@@ -2143,7 +2143,8 @@ + exp_type = boolean_type_node; + } + +- if (TREE_CODE (arg0) != SSA_NAME) ++ if (TREE_CODE (arg0) != SSA_NAME ++ || SSA_NAME_OCCURS_IN_ABNORMAL_PHI (arg0)) + break; + loc = gimple_location (stmt); + switch (code) +@@ -4768,6 +4769,7 @@ + else + { + stmts[i] = build_and_add_sum (TREE_TYPE (last_rhs1), op1, op2, opcode); ++ gimple_set_visited (stmts[i], true); + } + if (dump_file && (dump_flags & TDF_DETAILS)) + { +Index: gcc/config/nvptx/nvptx.c +=================================================================== +--- a/src/gcc/config/nvptx/nvptx.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/config/nvptx/nvptx.c (.../branches/gcc-8-branch) +@@ -1377,7 +1377,7 @@ + fputs (";\n", file); + if (!CONST_INT_P (size) || UINTVAL (align) > GET_MODE_SIZE (DImode)) + fprintf (file, +- "\t\tand.u%d %%r%d, %%r%d, -" HOST_WIDE_INT_PRINT_DEC ";\n", ++ "\t\tand.b%d %%r%d, %%r%d, -" HOST_WIDE_INT_PRINT_DEC ";\n", + bits, regno, regno, UINTVAL (align)); + } + if (cfun->machine->has_softstack) +Index: gcc/config/alpha/alpha.c +=================================================================== +--- a/src/gcc/config/alpha/alpha.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/config/alpha/alpha.c (.../branches/gcc-8-branch) +@@ -8835,6 +8835,9 @@ + case CODE_LABEL: + goto close_shadow; + ++ case DEBUG_INSN: ++ break; ++ + default: + gcc_unreachable (); + } +Index: gcc/config/alpha/alpha.h +=================================================================== +--- a/src/gcc/config/alpha/alpha.h (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/config/alpha/alpha.h (.../branches/gcc-8-branch) +@@ -678,7 +678,7 @@ + + #define CONSTANT_ADDRESS_P(X) \ + (CONST_INT_P (X) \ +- && (unsigned HOST_WIDE_INT) (INTVAL (X) + 0x8000) < 0x10000) ++ && (UINTVAL (X) + 0x8000) < 0x10000) + + /* The macros REG_OK_FOR..._P assume that the arg is a REG rtx + and check its validity for a certain class. +Index: gcc/config/s390/s390-c.c +=================================================================== +--- a/src/gcc/config/s390/s390-c.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/config/s390/s390-c.c (.../branches/gcc-8-branch) +@@ -477,16 +477,30 @@ + case S390_OVERLOADED_BUILTIN_s390_vec_xl: + case S390_OVERLOADED_BUILTIN_s390_vec_xld2: + case S390_OVERLOADED_BUILTIN_s390_vec_xlw4: +- return build2 (MEM_REF, return_type, +- fold_build_pointer_plus ((*arglist)[1], (*arglist)[0]), +- build_int_cst (TREE_TYPE ((*arglist)[1]), 0)); ++ { ++ /* Build a vector type with the alignment of the source ++ location in order to enable correct alignment hints to be ++ generated for vl. */ ++ tree mem_type = build_aligned_type (return_type, ++ TYPE_ALIGN (TREE_TYPE (TREE_TYPE ((*arglist)[1])))); ++ return build2 (MEM_REF, mem_type, ++ fold_build_pointer_plus ((*arglist)[1], (*arglist)[0]), ++ build_int_cst (TREE_TYPE ((*arglist)[1]), 0)); ++ } + case S390_OVERLOADED_BUILTIN_s390_vec_xst: + case S390_OVERLOADED_BUILTIN_s390_vec_xstd2: + case S390_OVERLOADED_BUILTIN_s390_vec_xstw4: +- return build2 (MODIFY_EXPR, TREE_TYPE((*arglist)[0]), +- build1 (INDIRECT_REF, TREE_TYPE((*arglist)[0]), +- fold_build_pointer_plus ((*arglist)[2], (*arglist)[1])), +- (*arglist)[0]); ++ { ++ /* Build a vector type with the alignment of the target ++ location in order to enable correct alignment hints to be ++ generated for vst. */ ++ tree mem_type = build_aligned_type (TREE_TYPE((*arglist)[0]), ++ TYPE_ALIGN (TREE_TYPE (TREE_TYPE ((*arglist)[2])))); ++ return build2 (MODIFY_EXPR, mem_type, ++ build1 (INDIRECT_REF, mem_type, ++ fold_build_pointer_plus ((*arglist)[2], (*arglist)[1])), ++ (*arglist)[0]); ++ } + case S390_OVERLOADED_BUILTIN_s390_vec_load_pair: + return build_constructor_va (return_type, 2, + NULL_TREE, (*arglist)[0], +Index: gcc/config/s390/s390-builtin-types.def +=================================================================== +--- a/src/gcc/config/s390/s390-builtin-types.def (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/config/s390/s390-builtin-types.def (.../branches/gcc-8-branch) +@@ -260,6 +260,7 @@ + DEF_FN_TYPE_2 (BT_FN_V4SF_V4SF_UCHAR, BT_V4SF, BT_V4SF, BT_UCHAR) + DEF_FN_TYPE_2 (BT_FN_V4SF_V4SF_V4SF, BT_V4SF, BT_V4SF, BT_V4SF) + DEF_FN_TYPE_2 (BT_FN_V4SI_BV4SI_V4SI, BT_V4SI, BT_BV4SI, BT_V4SI) ++DEF_FN_TYPE_2 (BT_FN_V4SI_INT_VOIDCONSTPTR, BT_V4SI, BT_INT, BT_VOIDCONSTPTR) + DEF_FN_TYPE_2 (BT_FN_V4SI_INT_VOIDPTR, BT_V4SI, BT_INT, BT_VOIDPTR) + DEF_FN_TYPE_2 (BT_FN_V4SI_UV4SI_UV4SI, BT_V4SI, BT_UV4SI, BT_UV4SI) + DEF_FN_TYPE_2 (BT_FN_V4SI_V2DI_V2DI, BT_V4SI, BT_V2DI, BT_V2DI) +@@ -492,6 +493,7 @@ + DEF_OV_TYPE (BT_OV_UV16QI_BV16QI_BV16QI, BT_UV16QI, BT_BV16QI, BT_BV16QI) + DEF_OV_TYPE (BT_OV_UV16QI_BV16QI_BV16QI_INTPTR, BT_UV16QI, BT_BV16QI, BT_BV16QI, BT_INTPTR) + DEF_OV_TYPE (BT_OV_UV16QI_BV16QI_UV16QI, BT_UV16QI, BT_BV16QI, BT_UV16QI) ++DEF_OV_TYPE (BT_OV_UV16QI_LONG_UCHARCONSTPTR, BT_UV16QI, BT_LONG, BT_UCHARCONSTPTR) + DEF_OV_TYPE (BT_OV_UV16QI_LONG_UCHARPTR, BT_UV16QI, BT_LONG, BT_UCHARPTR) + DEF_OV_TYPE (BT_OV_UV16QI_UCHAR, BT_UV16QI, BT_UCHAR) + DEF_OV_TYPE (BT_OV_UV16QI_UCHARCONSTPTR, BT_UV16QI, BT_UCHARCONSTPTR) +@@ -523,6 +525,7 @@ + DEF_OV_TYPE (BT_OV_UV16QI_V16QI, BT_UV16QI, BT_V16QI) + DEF_OV_TYPE (BT_OV_UV16QI_V8HI_V8HI, BT_UV16QI, BT_V8HI, BT_V8HI) + DEF_OV_TYPE (BT_OV_UV2DI_BV2DI_UV2DI, BT_UV2DI, BT_BV2DI, BT_UV2DI) ++DEF_OV_TYPE (BT_OV_UV2DI_LONG_ULONGLONGCONSTPTR, BT_UV2DI, BT_LONG, BT_ULONGLONGCONSTPTR) + DEF_OV_TYPE (BT_OV_UV2DI_LONG_ULONGLONGPTR, BT_UV2DI, BT_LONG, BT_ULONGLONGPTR) + DEF_OV_TYPE (BT_OV_UV2DI_ULONGLONG, BT_UV2DI, BT_ULONGLONG) + DEF_OV_TYPE (BT_OV_UV2DI_ULONGLONGCONSTPTR, BT_UV2DI, BT_ULONGLONGCONSTPTR) +@@ -556,6 +559,8 @@ + DEF_OV_TYPE (BT_OV_UV4SI_BV4SI_BV4SI, BT_UV4SI, BT_BV4SI, BT_BV4SI) + DEF_OV_TYPE (BT_OV_UV4SI_BV4SI_BV4SI_INTPTR, BT_UV4SI, BT_BV4SI, BT_BV4SI, BT_INTPTR) + DEF_OV_TYPE (BT_OV_UV4SI_BV4SI_UV4SI, BT_UV4SI, BT_BV4SI, BT_UV4SI) ++DEF_OV_TYPE (BT_OV_UV4SI_LONG_FLTPTR, BT_UV4SI, BT_LONG, BT_FLTPTR) ++DEF_OV_TYPE (BT_OV_UV4SI_LONG_UINTCONSTPTR, BT_UV4SI, BT_LONG, BT_UINTCONSTPTR) + DEF_OV_TYPE (BT_OV_UV4SI_LONG_UINTPTR, BT_UV4SI, BT_LONG, BT_UINTPTR) + DEF_OV_TYPE (BT_OV_UV4SI_UINT, BT_UV4SI, BT_UINT) + DEF_OV_TYPE (BT_OV_UV4SI_UINTCONSTPTR, BT_UV4SI, BT_UINTCONSTPTR) +@@ -593,6 +598,7 @@ + DEF_OV_TYPE (BT_OV_UV8HI_BV8HI_BV8HI, BT_UV8HI, BT_BV8HI, BT_BV8HI) + DEF_OV_TYPE (BT_OV_UV8HI_BV8HI_BV8HI_INTPTR, BT_UV8HI, BT_BV8HI, BT_BV8HI, BT_INTPTR) + DEF_OV_TYPE (BT_OV_UV8HI_BV8HI_UV8HI, BT_UV8HI, BT_BV8HI, BT_UV8HI) ++DEF_OV_TYPE (BT_OV_UV8HI_LONG_USHORTCONSTPTR, BT_UV8HI, BT_LONG, BT_USHORTCONSTPTR) + DEF_OV_TYPE (BT_OV_UV8HI_LONG_USHORTPTR, BT_UV8HI, BT_LONG, BT_USHORTPTR) + DEF_OV_TYPE (BT_OV_UV8HI_USHORT, BT_UV8HI, BT_USHORT) + DEF_OV_TYPE (BT_OV_UV8HI_USHORTCONSTPTR, BT_UV8HI, BT_USHORTCONSTPTR) +@@ -626,6 +632,7 @@ + DEF_OV_TYPE (BT_OV_UV8HI_V4SI_V4SI, BT_UV8HI, BT_V4SI, BT_V4SI) + DEF_OV_TYPE (BT_OV_UV8HI_V8HI, BT_UV8HI, BT_V8HI) + DEF_OV_TYPE (BT_OV_V16QI_BV16QI_V16QI, BT_V16QI, BT_BV16QI, BT_V16QI) ++DEF_OV_TYPE (BT_OV_V16QI_LONG_SCHARCONSTPTR, BT_V16QI, BT_LONG, BT_SCHARCONSTPTR) + DEF_OV_TYPE (BT_OV_V16QI_LONG_SCHARPTR, BT_V16QI, BT_LONG, BT_SCHARPTR) + DEF_OV_TYPE (BT_OV_V16QI_SCHAR, BT_V16QI, BT_SCHAR) + DEF_OV_TYPE (BT_OV_V16QI_SCHARCONSTPTR, BT_V16QI, BT_SCHARCONSTPTR) +@@ -660,6 +667,7 @@ + DEF_OV_TYPE (BT_OV_V2DF_DBLCONSTPTR_USHORT, BT_V2DF, BT_DBLCONSTPTR, BT_USHORT) + DEF_OV_TYPE (BT_OV_V2DF_DBL_INT, BT_V2DF, BT_DBL, BT_INT) + DEF_OV_TYPE (BT_OV_V2DF_DBL_V2DF_INT, BT_V2DF, BT_DBL, BT_V2DF, BT_INT) ++DEF_OV_TYPE (BT_OV_V2DF_LONG_DBLCONSTPTR, BT_V2DF, BT_LONG, BT_DBLCONSTPTR) + DEF_OV_TYPE (BT_OV_V2DF_LONG_DBLPTR, BT_V2DF, BT_LONG, BT_DBLPTR) + DEF_OV_TYPE (BT_OV_V2DF_UV2DI, BT_V2DF, BT_UV2DI) + DEF_OV_TYPE (BT_OV_V2DF_UV2DI_INT, BT_V2DF, BT_UV2DI, BT_INT) +@@ -687,6 +695,7 @@ + DEF_OV_TYPE (BT_OV_V2DI_LONGLONG_INT, BT_V2DI, BT_LONGLONG, BT_INT) + DEF_OV_TYPE (BT_OV_V2DI_LONGLONG_LONGLONG, BT_V2DI, BT_LONGLONG, BT_LONGLONG) + DEF_OV_TYPE (BT_OV_V2DI_LONGLONG_V2DI_INT, BT_V2DI, BT_LONGLONG, BT_V2DI, BT_INT) ++DEF_OV_TYPE (BT_OV_V2DI_LONG_LONGLONGCONSTPTR, BT_V2DI, BT_LONG, BT_LONGLONGCONSTPTR) + DEF_OV_TYPE (BT_OV_V2DI_LONG_LONGLONGPTR, BT_V2DI, BT_LONG, BT_LONGLONGPTR) + DEF_OV_TYPE (BT_OV_V2DI_V16QI, BT_V2DI, BT_V16QI) + DEF_OV_TYPE (BT_OV_V2DI_V2DI, BT_V2DI, BT_V2DI) +@@ -716,7 +725,7 @@ + DEF_OV_TYPE (BT_OV_V4SF_FLTCONSTPTR_USHORT, BT_V4SF, BT_FLTCONSTPTR, BT_USHORT) + DEF_OV_TYPE (BT_OV_V4SF_FLT_INT, BT_V4SF, BT_FLT, BT_INT) + DEF_OV_TYPE (BT_OV_V4SF_FLT_V4SF_INT, BT_V4SF, BT_FLT, BT_V4SF, BT_INT) +-DEF_OV_TYPE (BT_OV_V4SF_LONG_FLTPTR, BT_V4SF, BT_LONG, BT_FLTPTR) ++DEF_OV_TYPE (BT_OV_V4SF_LONG_FLTCONSTPTR, BT_V4SF, BT_LONG, BT_FLTCONSTPTR) + DEF_OV_TYPE (BT_OV_V4SF_V4SF, BT_V4SF, BT_V4SF) + DEF_OV_TYPE (BT_OV_V4SF_V4SF_BV4SI, BT_V4SF, BT_V4SF, BT_BV4SI) + DEF_OV_TYPE (BT_OV_V4SF_V4SF_UCHAR, BT_V4SF, BT_V4SF, BT_UCHAR) +@@ -737,6 +746,7 @@ + DEF_OV_TYPE (BT_OV_V4SI_INTCONSTPTR_USHORT, BT_V4SI, BT_INTCONSTPTR, BT_USHORT) + DEF_OV_TYPE (BT_OV_V4SI_INT_INT, BT_V4SI, BT_INT, BT_INT) + DEF_OV_TYPE (BT_OV_V4SI_INT_V4SI_INT, BT_V4SI, BT_INT, BT_V4SI, BT_INT) ++DEF_OV_TYPE (BT_OV_V4SI_LONG_INTCONSTPTR, BT_V4SI, BT_LONG, BT_INTCONSTPTR) + DEF_OV_TYPE (BT_OV_V4SI_LONG_INTPTR, BT_V4SI, BT_LONG, BT_INTPTR) + DEF_OV_TYPE (BT_OV_V4SI_UV4SI_V4SI_V4SI, BT_V4SI, BT_UV4SI, BT_V4SI, BT_V4SI) + DEF_OV_TYPE (BT_OV_V4SI_V2DI_V2DI, BT_V4SI, BT_V2DI, BT_V2DI) +@@ -764,6 +774,7 @@ + DEF_OV_TYPE (BT_OV_V4SI_V8HI_V8HI, BT_V4SI, BT_V8HI, BT_V8HI) + DEF_OV_TYPE (BT_OV_V4SI_V8HI_V8HI_V4SI, BT_V4SI, BT_V8HI, BT_V8HI, BT_V4SI) + DEF_OV_TYPE (BT_OV_V8HI_BV8HI_V8HI, BT_V8HI, BT_BV8HI, BT_V8HI) ++DEF_OV_TYPE (BT_OV_V8HI_LONG_SHORTCONSTPTR, BT_V8HI, BT_LONG, BT_SHORTCONSTPTR) + DEF_OV_TYPE (BT_OV_V8HI_LONG_SHORTPTR, BT_V8HI, BT_LONG, BT_SHORTPTR) + DEF_OV_TYPE (BT_OV_V8HI_SHORT, BT_V8HI, BT_SHORT) + DEF_OV_TYPE (BT_OV_V8HI_SHORTCONSTPTR, BT_V8HI, BT_SHORTCONSTPTR) +@@ -802,6 +813,7 @@ + DEF_OV_TYPE (BT_OV_VOID_UV2DI_LONG_ULONGLONGPTR, BT_VOID, BT_UV2DI, BT_LONG, BT_ULONGLONGPTR) + DEF_OV_TYPE (BT_OV_VOID_UV2DI_ULONGLONGPTR_UINT, BT_VOID, BT_UV2DI, BT_ULONGLONGPTR, BT_UINT) + DEF_OV_TYPE (BT_OV_VOID_UV2DI_UV2DI_ULONGLONGPTR_ULONGLONG, BT_VOID, BT_UV2DI, BT_UV2DI, BT_ULONGLONGPTR, BT_ULONGLONG) ++DEF_OV_TYPE (BT_OV_VOID_UV4SI_LONG_FLTPTR, BT_VOID, BT_UV4SI, BT_LONG, BT_FLTPTR) + DEF_OV_TYPE (BT_OV_VOID_UV4SI_LONG_UINTPTR, BT_VOID, BT_UV4SI, BT_LONG, BT_UINTPTR) + DEF_OV_TYPE (BT_OV_VOID_UV4SI_UINTPTR_UINT, BT_VOID, BT_UV4SI, BT_UINTPTR, BT_UINT) + DEF_OV_TYPE (BT_OV_VOID_UV4SI_UV4SI_UINTPTR_ULONGLONG, BT_VOID, BT_UV4SI, BT_UV4SI, BT_UINTPTR, BT_ULONGLONG) +Index: gcc/config/s390/vector.md +=================================================================== +--- a/src/gcc/config/s390/vector.md (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/config/s390/vector.md (.../branches/gcc-8-branch) +@@ -944,7 +944,7 @@ + (VEC_SHIFTS:VI (match_operand:VI 1 "register_operand" "v") + (match_operand:SI 2 "nonmemory_operand" "an")))] + "TARGET_VX" +- "<vec_shifts_mnem><bhfgq>\t%v0,%v1,%Y2" ++ "<vec_shifts_mnem><bhfgq>\t%v0,%v1,<addr_style_op_ops>" + [(set_attr "op_type" "VRS")]) + + ; Shift each element by corresponding vector element +Index: gcc/config/s390/s390.c +=================================================================== +--- a/src/gcc/config/s390/s390.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/config/s390/s390.c (.../branches/gcc-8-branch) +@@ -937,6 +937,8 @@ + continue; + } + ++ /* A memory operand is rejected by the memory_operand predicate. ++ Try making the address legal by copying it into a register. */ + if (MEM_P (op[arity]) + && insn_op->predicate == memory_operand + && (GET_MODE (XEXP (op[arity], 0)) == Pmode +@@ -960,10 +962,14 @@ + { + op[arity] = tmp_rtx; + } +- else if (GET_MODE (op[arity]) == insn_op->mode +- || GET_MODE (op[arity]) == VOIDmode +- || (insn_op->predicate == address_operand +- && GET_MODE (op[arity]) == Pmode)) ++ ++ /* The predicate rejects the operand although the mode is fine. ++ Copy the operand to register. */ ++ if (!insn_op->predicate (op[arity], insn_op->mode) ++ && (GET_MODE (op[arity]) == insn_op->mode ++ || GET_MODE (op[arity]) == VOIDmode ++ || (insn_op->predicate == address_operand ++ && GET_MODE (op[arity]) == Pmode))) + { + /* An address_operand usually has VOIDmode in the expander + so we cannot use this. */ +@@ -10106,6 +10112,21 @@ + s390_register_info_stdarg_gpr (); + } + ++/* Return true if REGNO is a global register, but not one ++ of the special ones that need to be saved/restored in anyway. */ ++ ++static inline bool ++global_not_special_regno_p (int regno) ++{ ++ return (global_regs[regno] ++ /* These registers are special and need to be ++ restored in any case. */ ++ && !(regno == STACK_POINTER_REGNUM ++ || regno == RETURN_REGNUM ++ || regno == BASE_REGNUM ++ || (flag_pic && regno == (int)PIC_OFFSET_TABLE_REGNUM))); ++} ++ + /* This function is called by s390_optimize_prologue in order to get + rid of unnecessary GPR save/restore instructions. The register info + for the GPRs is re-computed and the ranges are re-calculated. */ +@@ -10121,8 +10142,10 @@ + + s390_regs_ever_clobbered (clobbered_regs); + ++ /* Global registers do not need to be saved and restored unless it ++ is one of our special regs. (r12, r13, r14, or r15). */ + for (i = 0; i < 32; i++) +- clobbered_regs[i] = clobbered_regs[i] && !global_regs[i]; ++ clobbered_regs[i] = clobbered_regs[i] && !global_not_special_regno_p (i); + + /* There is still special treatment needed for cases invisible to + s390_regs_ever_clobbered. */ +@@ -10876,21 +10899,6 @@ + return emit_move_insn (gen_rtx_REG (DFmode, regnum), addr); + } + +-/* Return true if REGNO is a global register, but not one +- of the special ones that need to be saved/restored in anyway. */ +- +-static inline bool +-global_not_special_regno_p (int regno) +-{ +- return (global_regs[regno] +- /* These registers are special and need to be +- restored in any case. */ +- && !(regno == STACK_POINTER_REGNUM +- || regno == RETURN_REGNUM +- || regno == BASE_REGNUM +- || (flag_pic && regno == (int)PIC_OFFSET_TABLE_REGNUM))); +-} +- + /* Generate insn to save registers FIRST to LAST into + the register save area located at offset OFFSET + relative to register BASE. */ +@@ -16039,6 +16047,7 @@ + + return ret; + } ++#endif + + /* Set VAL to correct enum value according to the indirect-branch or + function-return attribute in ATTR. */ +@@ -16112,6 +16121,7 @@ + s390_indirect_branch_attrvalue (attr, &cfun->machine->function_return_mem); + } + ++#if S390_USE_TARGET_ATTRIBUTE + /* Restore targets globals from NEW_TREE and invalidate s390_previous_fndecl + cache. */ + +@@ -16127,6 +16137,7 @@ + TREE_TARGET_GLOBALS (new_tree) = save_target_globals_default_opts (); + s390_previous_fndecl = NULL_TREE; + } ++#endif + + /* Establish appropriate back-end context for processing the function + FNDECL. The argument might be NULL to indicate processing at top +@@ -16134,6 +16145,7 @@ + static void + s390_set_current_function (tree fndecl) + { ++#if S390_USE_TARGET_ATTRIBUTE + /* Only change the context if the function changes. This hook is called + several times in the course of compiling a function, and we don't want to + slow things down too much or call target_reinit when it isn't safe. */ +@@ -16165,10 +16177,9 @@ + if (old_tree != new_tree) + s390_activate_target_options (new_tree); + s390_previous_fndecl = fndecl; +- ++#endif + s390_indirect_branch_settings (fndecl); + } +-#endif + + /* Implement TARGET_USE_BY_PIECES_INFRASTRUCTURE_P. */ + +@@ -16907,10 +16918,10 @@ + #undef TARGET_ASM_FILE_END + #define TARGET_ASM_FILE_END s390_asm_file_end + +-#if S390_USE_TARGET_ATTRIBUTE + #undef TARGET_SET_CURRENT_FUNCTION + #define TARGET_SET_CURRENT_FUNCTION s390_set_current_function + ++#if S390_USE_TARGET_ATTRIBUTE + #undef TARGET_OPTION_VALID_ATTRIBUTE_P + #define TARGET_OPTION_VALID_ATTRIBUTE_P s390_valid_target_attribute_p + +Index: gcc/config/s390/s390-builtins.def +=================================================================== +--- a/src/gcc/config/s390/s390-builtins.def (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/config/s390/s390-builtins.def (.../branches/gcc-8-branch) +@@ -328,36 +328,38 @@ + B_DEF (s390_vgmf, vec_genmaskv4si, 0, B_VX, O1_U8 | O2_U8, BT_FN_UV4SI_UCHAR_UCHAR) + B_DEF (s390_vgmg, vec_genmaskv2di, 0, B_VX, O1_U8 | O2_U8, BT_FN_UV2DI_UCHAR_UCHAR) + +-OB_DEF (s390_vec_xl, s390_vec_xl_s8, s390_vec_xl_dbl, B_VX, BT_FN_V4SI_INT_VOIDPTR) +-OB_DEF_VAR (s390_vec_xl_s8, MAX, 0, O1_LIT, BT_OV_V16QI_LONG_SCHARPTR) /* vl */ +-OB_DEF_VAR (s390_vec_xl_u8, MAX, 0, O1_LIT, BT_OV_UV16QI_LONG_UCHARPTR) /* vl */ +-OB_DEF_VAR (s390_vec_xl_s16, MAX, 0, O1_LIT, BT_OV_V8HI_LONG_SHORTPTR) /* vl */ +-OB_DEF_VAR (s390_vec_xl_u16, MAX, 0, O1_LIT, BT_OV_UV8HI_LONG_USHORTPTR) /* vl */ +-OB_DEF_VAR (s390_vec_xl_s32, MAX, 0, O1_LIT, BT_OV_V4SI_LONG_INTPTR) /* vl */ +-OB_DEF_VAR (s390_vec_xl_u32, MAX, 0, O1_LIT, BT_OV_UV4SI_LONG_UINTPTR) /* vl */ +-OB_DEF_VAR (s390_vec_xl_s64, MAX, 0, O1_LIT, BT_OV_V2DI_LONG_LONGLONGPTR) /* vl */ +-OB_DEF_VAR (s390_vec_xl_u64, MAX, 0, O1_LIT, BT_OV_UV2DI_LONG_ULONGLONGPTR) /* vl */ +-OB_DEF_VAR (s390_vec_xl_flt, MAX, 0, O1_LIT, BT_OV_V4SF_LONG_FLTPTR) /* vl */ +-OB_DEF_VAR (s390_vec_xl_dbl, MAX, 0, O1_LIT, BT_OV_V2DF_LONG_DBLPTR) /* vl */ ++OB_DEF (s390_vec_xl, s390_vec_xl_s8, s390_vec_xl_dbl, B_VX, BT_FN_V4SI_INT_VOIDCONSTPTR) ++OB_DEF_VAR (s390_vec_xl_s8, MAX, 0, O1_LIT, BT_OV_V16QI_LONG_SCHARCONSTPTR) /* vl */ ++OB_DEF_VAR (s390_vec_xl_u8, MAX, 0, O1_LIT, BT_OV_UV16QI_LONG_UCHARCONSTPTR) /* vl */ ++OB_DEF_VAR (s390_vec_xl_s16, MAX, 0, O1_LIT, BT_OV_V8HI_LONG_SHORTCONSTPTR) /* vl */ ++OB_DEF_VAR (s390_vec_xl_u16, MAX, 0, O1_LIT, BT_OV_UV8HI_LONG_USHORTCONSTPTR) /* vl */ ++OB_DEF_VAR (s390_vec_xl_s32, MAX, 0, O1_LIT, BT_OV_V4SI_LONG_INTCONSTPTR) /* vl */ ++OB_DEF_VAR (s390_vec_xl_u32, MAX, 0, O1_LIT, BT_OV_UV4SI_LONG_UINTCONSTPTR) /* vl */ ++OB_DEF_VAR (s390_vec_xl_s64, MAX, 0, O1_LIT, BT_OV_V2DI_LONG_LONGLONGCONSTPTR) /* vl */ ++OB_DEF_VAR (s390_vec_xl_u64, MAX, 0, O1_LIT, BT_OV_UV2DI_LONG_ULONGLONGCONSTPTR) /* vl */ ++OB_DEF_VAR (s390_vec_xl_flt, MAX, 0, O1_LIT, BT_OV_V4SF_LONG_FLTCONSTPTR) /* vl */ ++OB_DEF_VAR (s390_vec_xl_dbl, MAX, 0, O1_LIT, BT_OV_V2DF_LONG_DBLCONSTPTR) /* vl */ + +-OB_DEF (s390_vec_xld2, s390_vec_xld2_s8, s390_vec_xld2_dbl, B_DEP | B_VX, BT_FN_V4SI_INT_VOIDPTR) +-OB_DEF_VAR (s390_vec_xld2_s8, MAX, 0, O1_LIT, BT_OV_V16QI_LONG_SCHARPTR) /* vl */ +-OB_DEF_VAR (s390_vec_xld2_u8, MAX, 0, O1_LIT, BT_OV_UV16QI_LONG_UCHARPTR) /* vl */ +-OB_DEF_VAR (s390_vec_xld2_s16, MAX, 0, O1_LIT, BT_OV_V8HI_LONG_SHORTPTR) /* vl */ +-OB_DEF_VAR (s390_vec_xld2_u16, MAX, 0, O1_LIT, BT_OV_UV8HI_LONG_USHORTPTR) /* vl */ +-OB_DEF_VAR (s390_vec_xld2_s32, MAX, 0, O1_LIT, BT_OV_V4SI_LONG_INTPTR) /* vl */ +-OB_DEF_VAR (s390_vec_xld2_u32, MAX, 0, O1_LIT, BT_OV_UV4SI_LONG_UINTPTR) /* vl */ +-OB_DEF_VAR (s390_vec_xld2_s64, MAX, 0, O1_LIT, BT_OV_V2DI_LONG_LONGLONGPTR) /* vl */ +-OB_DEF_VAR (s390_vec_xld2_u64, MAX, 0, O1_LIT, BT_OV_UV2DI_LONG_ULONGLONGPTR) /* vl */ +-OB_DEF_VAR (s390_vec_xld2_dbl, MAX, 0, O1_LIT, BT_OV_V2DF_LONG_DBLPTR) /* vl */ ++OB_DEF (s390_vec_xld2, s390_vec_xld2_s8, s390_vec_xld2_dbl, B_DEP | B_VX, BT_FN_V4SI_INT_VOIDCONSTPTR) ++OB_DEF_VAR (s390_vec_xld2_s8, MAX, 0, O1_LIT, BT_OV_V16QI_LONG_SCHARCONSTPTR) /* vl */ ++OB_DEF_VAR (s390_vec_xld2_u8, MAX, 0, O1_LIT, BT_OV_UV16QI_LONG_UCHARCONSTPTR) /* vl */ ++OB_DEF_VAR (s390_vec_xld2_s16, MAX, 0, O1_LIT, BT_OV_V8HI_LONG_SHORTCONSTPTR) /* vl */ ++OB_DEF_VAR (s390_vec_xld2_u16, MAX, 0, O1_LIT, BT_OV_UV8HI_LONG_USHORTCONSTPTR) /* vl */ ++OB_DEF_VAR (s390_vec_xld2_s32, MAX, 0, O1_LIT, BT_OV_V4SI_LONG_INTCONSTPTR) /* vl */ ++OB_DEF_VAR (s390_vec_xld2_u32, MAX, 0, O1_LIT, BT_OV_UV4SI_LONG_UINTCONSTPTR) /* vl */ ++OB_DEF_VAR (s390_vec_xld2_s64, MAX, 0, O1_LIT, BT_OV_V2DI_LONG_LONGLONGCONSTPTR) /* vl */ ++OB_DEF_VAR (s390_vec_xld2_u64, MAX, 0, O1_LIT, BT_OV_UV2DI_LONG_ULONGLONGCONSTPTR) /* vl */ ++OB_DEF_VAR (s390_vec_xld2_flt, MAX, B_VXE, O1_LIT, BT_OV_V4SF_LONG_FLTCONSTPTR) /* vl */ ++OB_DEF_VAR (s390_vec_xld2_dbl, MAX, 0, O1_LIT, BT_OV_V2DF_LONG_DBLCONSTPTR) /* vl */ + +-OB_DEF (s390_vec_xlw4, s390_vec_xlw4_s8, s390_vec_xlw4_u32, B_DEP | B_VX, BT_FN_V4SI_INT_VOIDPTR) +-OB_DEF_VAR (s390_vec_xlw4_s8, MAX, 0, O1_LIT, BT_OV_V16QI_LONG_SCHARPTR) /* vl */ +-OB_DEF_VAR (s390_vec_xlw4_u8, MAX, 0, O1_LIT, BT_OV_UV16QI_LONG_UCHARPTR) /* vl */ +-OB_DEF_VAR (s390_vec_xlw4_s16, MAX, 0, O1_LIT, BT_OV_V8HI_LONG_SHORTPTR) /* vl */ +-OB_DEF_VAR (s390_vec_xlw4_u16, MAX, 0, O1_LIT, BT_OV_UV8HI_LONG_USHORTPTR) /* vl */ +-OB_DEF_VAR (s390_vec_xlw4_s32, MAX, 0, O1_LIT, BT_OV_V4SI_LONG_INTPTR) /* vl */ +-OB_DEF_VAR (s390_vec_xlw4_u32, MAX, 0, O1_LIT, BT_OV_UV4SI_LONG_UINTPTR) /* vl */ ++OB_DEF (s390_vec_xlw4, s390_vec_xlw4_s8, s390_vec_xlw4_flt, B_DEP | B_VX, BT_FN_V4SI_INT_VOIDCONSTPTR) ++OB_DEF_VAR (s390_vec_xlw4_s8, MAX, 0, O1_LIT, BT_OV_V16QI_LONG_SCHARCONSTPTR) /* vl */ ++OB_DEF_VAR (s390_vec_xlw4_u8, MAX, 0, O1_LIT, BT_OV_UV16QI_LONG_UCHARCONSTPTR) /* vl */ ++OB_DEF_VAR (s390_vec_xlw4_s16, MAX, 0, O1_LIT, BT_OV_V8HI_LONG_SHORTCONSTPTR) /* vl */ ++OB_DEF_VAR (s390_vec_xlw4_u16, MAX, 0, O1_LIT, BT_OV_UV8HI_LONG_USHORTCONSTPTR) /* vl */ ++OB_DEF_VAR (s390_vec_xlw4_s32, MAX, 0, O1_LIT, BT_OV_V4SI_LONG_INTCONSTPTR) /* vl */ ++OB_DEF_VAR (s390_vec_xlw4_u32, MAX, 0, O1_LIT, BT_OV_UV4SI_LONG_UINTCONSTPTR) /* vl */ ++OB_DEF_VAR (s390_vec_xlw4_flt, MAX, B_VXE, O1_LIT, BT_OV_V4SF_LONG_FLTCONSTPTR) /* vl */ + + OB_DEF (s390_vec_splats, s390_vec_splats_s8, s390_vec_splats_dbl,B_VX, BT_FN_OV4SI_INT) + OB_DEF_VAR (s390_vec_splats_s8, s390_vlrepb, 0, 0, BT_OV_V16QI_SCHAR) +@@ -746,7 +748,7 @@ + OB_DEF_VAR (s390_vec_xstd2_u64, MAX, 0, O2_LIT, BT_OV_VOID_UV2DI_LONG_ULONGLONGPTR) /* vst */ + OB_DEF_VAR (s390_vec_xstd2_dbl, MAX, 0, O2_LIT, BT_OV_VOID_V2DF_LONG_DBLPTR) /* vst */ + +-OB_DEF (s390_vec_xstw4, s390_vec_xstw4_s8, s390_vec_xstw4_u32, B_DEP | B_VX, BT_FN_VOID_OV4SI_INT_VOIDPTR) ++OB_DEF (s390_vec_xstw4, s390_vec_xstw4_s8, s390_vec_xstw4_flt, B_DEP | B_VX, BT_FN_VOID_OV4SI_INT_VOIDPTR) + OB_DEF_VAR (s390_vec_xstw4_s8, MAX, 0, O2_LIT, BT_OV_VOID_V16QI_LONG_SCHARPTR) /* vst */ + OB_DEF_VAR (s390_vec_xstw4_u8, MAX, 0, O2_LIT, BT_OV_VOID_UV16QI_LONG_UCHARPTR) /* vst */ + OB_DEF_VAR (s390_vec_xstw4_s16, MAX, 0, O2_LIT, BT_OV_VOID_V8HI_LONG_SHORTPTR) /* vst */ +@@ -753,6 +755,7 @@ + OB_DEF_VAR (s390_vec_xstw4_u16, MAX, 0, O2_LIT, BT_OV_VOID_UV8HI_LONG_USHORTPTR) /* vst */ + OB_DEF_VAR (s390_vec_xstw4_s32, MAX, 0, O2_LIT, BT_OV_VOID_V4SI_LONG_INTPTR) /* vst */ + OB_DEF_VAR (s390_vec_xstw4_u32, MAX, 0, O2_LIT, BT_OV_VOID_UV4SI_LONG_UINTPTR) /* vst */ ++OB_DEF_VAR (s390_vec_xstw4_flt, MAX, B_VXE, O2_LIT, BT_OV_VOID_V4SF_LONG_FLTPTR) /* vst */ + + OB_DEF (s390_vec_store_len, s390_vec_store_len_s8,s390_vec_store_len_dbl,B_VX, BT_FN_VOID_OV4SI_VOIDPTR_UINT) + OB_DEF_VAR (s390_vec_store_len_s8, s390_vstl, 0, 0, BT_OV_VOID_V16QI_SCHARPTR_UINT) +Index: gcc/config/sparc/sparc.md +=================================================================== +--- a/src/gcc/config/sparc/sparc.md (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/config/sparc/sparc.md (.../branches/gcc-8-branch) +@@ -1601,10 +1601,7 @@ + (clobber (reg:P O7_REG))] + "REGNO (operands[0]) == INTVAL (operands[3])" + { +- if (flag_delayed_branch) +- return "sethi\t%%hi(%a1-4), %0\n\tcall\t%a2\n\t add\t%0, %%lo(%a1+4), %0"; +- else +- return "sethi\t%%hi(%a1-8), %0\n\tadd\t%0, %%lo(%a1-4), %0\n\tcall\t%a2\n\t nop"; ++ return output_load_pcrel_sym (operands); + } + [(set (attr "type") (const_string "multi")) + (set (attr "length") +Index: gcc/config/sparc/sparc-protos.h +=================================================================== +--- a/src/gcc/config/sparc/sparc-protos.h (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/config/sparc/sparc-protos.h (.../branches/gcc-8-branch) +@@ -69,6 +69,7 @@ + extern void sparc_split_mem_reg (rtx, rtx, machine_mode); + extern int sparc_split_reg_reg_legitimate (rtx, rtx); + extern void sparc_split_reg_reg (rtx, rtx, machine_mode); ++extern const char *output_load_pcrel_sym (rtx *); + extern const char *output_ubranch (rtx, rtx_insn *); + extern const char *output_cbranch (rtx, rtx, int, int, int, rtx_insn *); + extern const char *output_return (rtx_insn *); +Index: gcc/config/sparc/sparc.c +=================================================================== +--- a/src/gcc/config/sparc/sparc.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/config/sparc/sparc.c (.../branches/gcc-8-branch) +@@ -4238,10 +4238,12 @@ + } + + /* Global Offset Table support. */ ++static GTY(()) rtx got_symbol_rtx = NULL_RTX; ++static GTY(()) rtx got_register_rtx = NULL_RTX; + static GTY(()) rtx got_helper_rtx = NULL_RTX; +-static GTY(()) rtx got_register_rtx = NULL_RTX; +-static GTY(()) rtx got_symbol_rtx = NULL_RTX; + ++static GTY(()) bool got_helper_needed = false; ++ + /* Return the SYMBOL_REF for the Global Offset Table. */ + + static rtx +@@ -4253,27 +4255,6 @@ + return got_symbol_rtx; + } + +-#ifdef HAVE_GAS_HIDDEN +-# define USE_HIDDEN_LINKONCE 1 +-#else +-# define USE_HIDDEN_LINKONCE 0 +-#endif +- +-static void +-get_pc_thunk_name (char name[32], unsigned int regno) +-{ +- const char *reg_name = reg_names[regno]; +- +- /* Skip the leading '%' as that cannot be used in a +- symbol name. */ +- reg_name += 1; +- +- if (USE_HIDDEN_LINKONCE) +- sprintf (name, "__sparc_get_pc_thunk.%s", reg_name); +- else +- ASM_GENERATE_INTERNAL_LABEL (name, "LADDPC", regno); +-} +- + /* Wrapper around the load_pcrel_sym{si,di} patterns. */ + + static rtx +@@ -4293,30 +4274,78 @@ + return insn; + } + ++/* Output the load_pcrel_sym{si,di} patterns. */ ++ ++const char * ++output_load_pcrel_sym (rtx *operands) ++{ ++ if (flag_delayed_branch) ++ { ++ output_asm_insn ("sethi\t%%hi(%a1-4), %0", operands); ++ output_asm_insn ("call\t%a2", operands); ++ output_asm_insn (" add\t%0, %%lo(%a1+4), %0", operands); ++ } ++ else ++ { ++ output_asm_insn ("sethi\t%%hi(%a1-8), %0", operands); ++ output_asm_insn ("add\t%0, %%lo(%a1-4), %0", operands); ++ output_asm_insn ("call\t%a2", operands); ++ output_asm_insn (" nop", NULL); ++ } ++ ++ if (operands[2] == got_helper_rtx) ++ got_helper_needed = true; ++ ++ return ""; ++} ++ ++#ifdef HAVE_GAS_HIDDEN ++# define USE_HIDDEN_LINKONCE 1 ++#else ++# define USE_HIDDEN_LINKONCE 0 ++#endif ++ + /* Emit code to load the GOT register. */ + + void + load_got_register (void) + { +- if (!got_register_rtx) +- got_register_rtx = gen_rtx_REG (Pmode, GLOBAL_OFFSET_TABLE_REGNUM); ++ rtx insn; + + if (TARGET_VXWORKS_RTP) +- emit_insn (gen_vxworks_load_got ()); ++ { ++ if (!got_register_rtx) ++ got_register_rtx = pic_offset_table_rtx; ++ ++ insn = gen_vxworks_load_got (); ++ } + else + { ++ if (!got_register_rtx) ++ got_register_rtx = gen_rtx_REG (Pmode, GLOBAL_OFFSET_TABLE_REGNUM); ++ + /* The GOT symbol is subject to a PC-relative relocation so we need a + helper function to add the PC value and thus get the final value. */ + if (!got_helper_rtx) + { + char name[32]; +- get_pc_thunk_name (name, GLOBAL_OFFSET_TABLE_REGNUM); ++ ++ /* Skip the leading '%' as that cannot be used in a symbol name. */ ++ if (USE_HIDDEN_LINKONCE) ++ sprintf (name, "__sparc_get_pc_thunk.%s", ++ reg_names[REGNO (got_register_rtx)] + 1); ++ else ++ ASM_GENERATE_INTERNAL_LABEL (name, "LADDPC", ++ REGNO (got_register_rtx)); ++ + got_helper_rtx = gen_rtx_SYMBOL_REF (Pmode, ggc_strdup (name)); + } + +- emit_insn (gen_load_pcrel_sym (got_register_rtx, sparc_got (), +- got_helper_rtx)); ++ insn ++ = gen_load_pcrel_sym (got_register_rtx, sparc_got (), got_helper_rtx); + } ++ ++ emit_insn (insn); + } + + /* Ensure that we are not using patterns that are not OK with PIC. */ +@@ -4452,7 +4481,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; + +@@ -5468,7 +5497,7 @@ + return true; + + /* GOT register (%l7) if needed. */ +- if (regno == GLOBAL_OFFSET_TABLE_REGNUM && got_register_rtx) ++ if (got_register_rtx && regno == REGNO (got_register_rtx)) + return true; + + /* If the function accesses prior frames, the frame pointer and the return +@@ -12449,10 +12478,9 @@ + sparc_file_end (void) + { + /* If we need to emit the special GOT helper function, do so now. */ +- if (got_helper_rtx) ++ if (got_helper_needed) + { + const char *name = XSTR (got_helper_rtx, 0); +- const char *reg_name = reg_names[GLOBAL_OFFSET_TABLE_REGNUM]; + #ifdef DWARF2_UNWIND_INFO + bool do_cfi; + #endif +@@ -12489,17 +12517,22 @@ + #ifdef DWARF2_UNWIND_INFO + do_cfi = dwarf2out_do_cfi_asm (); + if (do_cfi) +- fprintf (asm_out_file, "\t.cfi_startproc\n"); ++ output_asm_insn (".cfi_startproc", NULL); + #endif + if (flag_delayed_branch) +- fprintf (asm_out_file, "\tjmp\t%%o7+8\n\t add\t%%o7, %s, %s\n", +- reg_name, reg_name); ++ { ++ output_asm_insn ("jmp\t%%o7+8", NULL); ++ output_asm_insn (" add\t%%o7, %0, %0", &got_register_rtx); ++ } + else +- fprintf (asm_out_file, "\tadd\t%%o7, %s, %s\n\tjmp\t%%o7+8\n\t nop\n", +- reg_name, reg_name); ++ { ++ output_asm_insn ("add\t%%o7, %0, %0", &got_register_rtx); ++ output_asm_insn ("jmp\t%%o7+8", NULL); ++ output_asm_insn (" nop", NULL); ++ } + #ifdef DWARF2_UNWIND_INFO + if (do_cfi) +- fprintf (asm_out_file, "\t.cfi_endproc\n"); ++ output_asm_insn (".cfi_endproc", NULL); + #endif + } + +@@ -13005,7 +13038,10 @@ + edge entry_edge; + rtx_insn *seq; + +- if (!crtl->uses_pic_offset_table) ++ /* In PIC mode, we need to always initialize the PIC register if optimization ++ is enabled, because we are called from IRA and LRA may later force things ++ to the constant pool for optimization purposes. */ ++ if (!flag_pic || (!crtl->uses_pic_offset_table && !optimize)) + return; + + start_sequence (); +Index: gcc/config/sparc/sparc.h +=================================================================== +--- a/src/gcc/config/sparc/sparc.h (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/config/sparc/sparc.h (.../branches/gcc-8-branch) +@@ -748,6 +748,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_8_3_0_release) ++++ b/src/gcc/config/darwin.opt (.../branches/gcc-8-branch) +@@ -18,241 +18,383 @@ + ; along with GCC; see the file COPYING3. If not see + ; <http://www.gnu.org/licenses/>. + +-; 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 <dir> Add <dir> 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 <name> The output dylib is private to the client(s) named + + arch + Driver RejectNegative Separate ++-arch <name> 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 <executable> 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 <name> Enable the executable being built to link against a private dylib (using allowable_client) ++ ++compatibility_version ++Driver RejectNegative Separate ++-compatibility_version <number> 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 <number> 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 <path> 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 <filename> 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 <name> 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 <address> Choose a base address for a dylib or bundle. + + init +-Driver Separate Alias(Zinit) ++Driver RejectNegative Separate Alias(Zinit) ++-init <symbol_name> 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 <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 <treatment> 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 <treatment> 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 <treatment> This will allow relocs in read-only pages (not advisable). ++ ++sectalign ++Driver RejectNegative Separate Args(3) ++-sectalign <segname> <sectname> <value> 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 <segname> <sectname> <file> Create section \"sectname\" in segment \"segname\" from the contents of \"file\". ++ ++sectobjectsymbols ++Driver RejectNegative Separate Args(2) ++(Obsolete) -sectobjectsymbols <segname> <sectname> Setting a local symbol at the start of a section is no longer supported. ++ ++sectorder ++Driver RejectNegative Separate Args(3) ++(Obsolete) -sectorder <segname> <sectname> 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 <file> 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 <path> + ++seg1addr ++Driver RejectNegative Separate ++Synonym for \"image_base\" ++ + segaddr +-Driver Separate Args(2) Alias(Zsegaddr) ++Driver RejectNegative Separate Args(2) Alias(Zsegaddr) ++-segaddr <name> <address> 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 <segname> 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 <name> Library named \"name\" will be re-exported (only useful for dylibs). ++ ++sub_umbrella ++Driver RejectNegative Separate ++-sub_umbrella <name> 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 <framework> The specified framework will be re-exported. + ++undefined ++Driver RejectNegative Separate ++-undefined <treatment> 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 <filename> 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 <treatment> 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 <dir> Add <dir> 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/darwin-c.c +=================================================================== +--- a/src/gcc/config/darwin-c.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/config/darwin-c.c (.../branches/gcc-8-branch) +@@ -463,41 +463,32 @@ + /* Register the GNU objective-C runtime include path if STDINC. */ + + void +-darwin_register_objc_includes (const char *sysroot, const char *iprefix, +- int stdinc) ++darwin_register_objc_includes (const char *sysroot ATTRIBUTE_UNUSED, ++ const char *iprefix, int stdinc) + { +- const char *fname; +- size_t len; +- /* We do not do anything if we do not want the standard includes. */ +- if (!stdinc) +- return; ++ /* If we want standard includes; Register the GNU OBJC runtime include ++ path if we are compiling OBJC with GNU-runtime. ++ This path is compiler-relative, we don't want to prepend the sysroot ++ since it's not expected to find the headers there. */ + +- fname = GCC_INCLUDE_DIR "-gnu-runtime"; +- +- /* Register the GNU OBJC runtime include path if we are compiling OBJC +- with GNU-runtime. */ +- +- if (c_dialect_objc () && !flag_next_runtime) ++ if (stdinc && c_dialect_objc () && !flag_next_runtime) + { ++ const char *fname = GCC_INCLUDE_DIR "-gnu-runtime"; + char *str; +- /* See if our directory starts with the standard prefix. ++ size_t len; ++ ++ /* See if our directory starts with the standard prefix. + "Translate" them, i.e. replace /usr/local/lib/gcc... with + IPREFIX and search them first. */ +- if (iprefix && (len = cpp_GCC_INCLUDE_DIR_len) != 0 && !sysroot ++ if (iprefix && (len = cpp_GCC_INCLUDE_DIR_len) != 0 + && !strncmp (fname, cpp_GCC_INCLUDE_DIR, len)) + { + str = concat (iprefix, fname + len, NULL); +- /* FIXME: wrap the headers for C++awareness. */ +- add_path (str, INC_SYSTEM, /*c++aware=*/false, false); ++ add_path (str, INC_SYSTEM, /*c++aware=*/true, false); + } + +- /* Should this directory start with the sysroot? */ +- if (sysroot) +- str = concat (sysroot, fname, NULL); +- else +- str = update_path (fname, ""); +- +- add_path (str, INC_SYSTEM, /*c++aware=*/false, false); ++ str = update_path (fname, ""); ++ add_path (str, INC_SYSTEM, /*c++aware=*/true, false); + } + } + +Index: gcc/config/i386/t-darwin +=================================================================== +--- a/src/gcc/config/i386/t-darwin (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/config/i386/t-darwin (.../branches/gcc-8-branch) +@@ -1,2 +0,0 @@ +-MULTILIB_OPTIONS = m64 +-MULTILIB_DIRNAMES = x86_64 +Index: gcc/config/i386/darwin64.h +=================================================================== +--- a/src/gcc/config/i386/darwin64.h (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/config/i386/darwin64.h (.../branches/gcc-8-branch) +@@ -1,58 +0,0 @@ +-/* Target definitions for x86_64 running Darwin. +- Copyright (C) 2006-2018 Free Software Foundation, Inc. +- Contributed by Apple Computer 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. +- +-You should have received a copy of the GNU General Public License +-along with GCC; see the file COPYING3. If not see +-<http://www.gnu.org/licenses/>. */ +- +-#undef DARWIN_ARCH_SPEC +-#define DARWIN_ARCH_SPEC "%{m32:i386;:x86_64}" +- +-/* WORKAROUND pr80556: +- For x86_64 Darwin10 and later, the unwinder is in libunwind (redirected +- from libSystem). This doesn't use the keymgr (see keymgr.c) and therefore +- the calls that libgcc makes to obtain the KEYMGR_GCC3_DW2_OBJ_LIST are not +- updated to include new images, and might not even be valid for a single +- image. +- Therefore, for 64b exes at least, we must use the libunwind implementation, +- even when static-libgcc is specified. We put libSystem first so that +- unwinder symbols are satisfied from there. */ +-#undef REAL_LIBGCC_SPEC +-#define REAL_LIBGCC_SPEC \ +- "%{static-libgcc|static: \ +- %{!m32:%:version-compare(>= 10.6 mmacosx-version-min= -lSystem)} \ +- -lgcc_eh -lgcc; \ +- shared-libgcc|fexceptions|fgnu-runtime: \ +- %:version-compare(!> 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.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.5 mmacosx-version-min= -lgcc_ext.10.5) \ +- -lgcc }" +- +-#undef DARWIN_SUBARCH_SPEC +-#define DARWIN_SUBARCH_SPEC DARWIN_ARCH_SPEC +- +-#undef SUBTARGET_EXTRA_SPECS +-#define SUBTARGET_EXTRA_SPECS \ +- DARWIN_EXTRA_SPECS \ +- { "darwin_arch", DARWIN_ARCH_SPEC }, \ +- { "darwin_crt2", "" }, \ +- { "darwin_subarch", DARWIN_SUBARCH_SPEC }, +Index: gcc/config/i386/t-darwin64 +=================================================================== +--- a/src/gcc/config/i386/t-darwin64 (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/config/i386/t-darwin64 (.../branches/gcc-8-branch) +@@ -1,2 +0,0 @@ +-MULTILIB_OPTIONS = m32 +-MULTILIB_DIRNAMES = i386 +Index: gcc/config/i386/i386.h +=================================================================== +--- a/src/gcc/config/i386/i386.h (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/config/i386/i386.h (.../branches/gcc-8-branch) +@@ -621,7 +621,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/t-darwin64-biarch +=================================================================== +--- a/src/gcc/config/i386/t-darwin64-biarch (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/config/i386/t-darwin64-biarch (.../branches/gcc-8-branch) +@@ -0,0 +1,2 @@ ++MULTILIB_OPTIONS = m32 ++MULTILIB_DIRNAMES = i386 +Index: gcc/config/i386/t-freebsd64 +=================================================================== +--- a/src/gcc/config/i386/t-freebsd64 (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/config/i386/t-freebsd64 (.../branches/gcc-8-branch) +@@ -0,0 +1,30 @@ ++# Copyright (C) 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. ++# ++# You should have received a copy of the GNU General Public License ++# along with GCC; see the file COPYING3. If not see ++# <http://www.gnu.org/licenses/>. ++ ++# The 32-bit libraries are found in /usr/lib32 ++ ++# To support i386 and x86-64, the directory structrue ++# should be: ++# ++# /lib has x86-64 libraries. ++# /lib32 has i386 libraries. ++# ++ ++MULTILIB_OPTIONS = m32 ++MULTILIB_DIRNAMES = 32 ++MULTILIB_OSDIRNAMES = ../lib32 +Index: gcc/config/i386/i386.md +=================================================================== +--- a/src/gcc/config/i386/i386.md (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/config/i386/i386.md (.../branches/gcc-8-branch) +@@ -8942,7 +8942,24 @@ + [(parallel [(set (match_dup 0) + (zero_extend:DI (and:SI (match_dup 1) (match_dup 2)))) + (clobber (reg:CC FLAGS_REG))])] +- "operands[2] = gen_lowpart (SImode, operands[2]);") ++{ ++ if (GET_CODE (operands[2]) == SYMBOL_REF ++ || GET_CODE (operands[2]) == LABEL_REF) ++ { ++ operands[2] = shallow_copy_rtx (operands[2]); ++ PUT_MODE (operands[2], SImode); ++ } ++ else if (GET_CODE (operands[2]) == CONST) ++ { ++ /* (const:DI (plus:DI (symbol_ref:DI ("...")) (const_int N))) */ ++ operands[2] = copy_rtx (operands[2]); ++ PUT_MODE (operands[2], SImode); ++ PUT_MODE (XEXP (operands[2], 0), SImode); ++ PUT_MODE (XEXP (XEXP (operands[2], 0), 0), SImode); ++ } ++ else ++ operands[2] = gen_lowpart (SImode, operands[2]); ++}) + + ;; See comment for addsi_1_zext why we do use nonimmediate_operand + (define_insn "*andsi_1_zext" +Index: gcc/config/i386/avx2intrin.h +=================================================================== +--- a/src/gcc/config/i386/avx2intrin.h (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/config/i386/avx2intrin.h (.../branches/gcc-8-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/t-darwin32-biarch +=================================================================== +--- a/src/gcc/config/i386/t-darwin32-biarch (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/config/i386/t-darwin32-biarch (.../branches/gcc-8-branch) +@@ -0,0 +1,2 @@ ++MULTILIB_OPTIONS = m64 ++MULTILIB_DIRNAMES = x86_64 +Index: gcc/config/i386/freebsd64.h +=================================================================== +--- a/src/gcc/config/i386/freebsd64.h (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/config/i386/freebsd64.h (.../branches/gcc-8-branch) +@@ -31,7 +31,7 @@ + + #undef LINK_SPEC + #define LINK_SPEC "\ +- %{m32:-m elf_i386_fbsd} \ ++ %{m32:-m elf_i386_fbsd}%{!m32:-m elf_x86_64_fbsd} \ + %{p:%nconsider using '-pg' instead of '-p' with gprof(1)} \ + %{v:-V} \ + %{assert*} %{R*} %{rpath*} %{defsym*} \ +@@ -42,3 +42,6 @@ + -dynamic-linker %(fbsd_dynamic_linker) } \ + %{static:-Bstatic}} \ + %{symbolic:-Bsymbolic}" ++ ++#undef MULTILIB_DEFAULTS ++#define MULTILIB_DEFAULTS { "m64" } +Index: gcc/config/i386/cpuid.h +=================================================================== +--- a/src/gcc/config/i386/cpuid.h (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/config/i386/cpuid.h (.../branches/gcc-8-branch) +@@ -178,10 +178,27 @@ + #define signature_VORTEX_ecx 0x436f5320 + #define signature_VORTEX_edx 0x36387865 + ++#ifndef __x86_64__ ++/* At least one cpu (Winchip 2) does not set %ebx and %ecx ++ for cpuid leaf 1. Forcibly zero the two registers before ++ calling cpuid as a precaution. */ + #define __cpuid(level, a, b, c, d) \ ++ do { \ ++ if (__builtin_constant_p (level) && (level) != 1) \ ++ __asm__ ("cpuid\n\t" \ ++ : "=a" (a), "=b" (b), "=c" (c), "=d" (d) \ ++ : "0" (level)); \ ++ else \ ++ __asm__ ("cpuid\n\t" \ ++ : "=a" (a), "=b" (b), "=c" (c), "=d" (d) \ ++ : "0" (level), "1" (0), "2" (0)); \ ++ } while (0) ++#else ++#define __cpuid(level, a, b, c, d) \ + __asm__ ("cpuid\n\t" \ + : "=a" (a), "=b" (b), "=c" (c), "=d" (d) \ + : "0" (level)) ++#endif + + #define __cpuid_count(level, count, a, b, c, d) \ + __asm__ ("cpuid\n\t" \ +Index: gcc/config/i386/darwin32-biarch.h +=================================================================== +--- a/src/gcc/config/i386/darwin32-biarch.h (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/config/i386/darwin32-biarch.h (.../branches/gcc-8-branch) +@@ -0,0 +1,58 @@ ++/* Target definitions for i386 running Darwin with a 32b host and supporting ++ a 64b multilib. ++ Copyright (C) 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. ++ ++You should have received a copy of the GNU General Public License ++along with GCC; see the file COPYING3. If not see ++<http://www.gnu.org/licenses/>. */ ++ ++#undef DARWIN_ARCH_SPEC ++#define DARWIN_ARCH_SPEC "%{m64:x86_64;:i386}" ++ ++/* WORKAROUND pr80556: ++ For x86_64 Darwin10 and later, the unwinder is in libunwind (redirected ++ from libSystem). This doesn't use the keymgr (see keymgr.c) and therefore ++ the calls that libgcc makes to obtain the KEYMGR_GCC3_DW2_OBJ_LIST are not ++ updated to include new images, and might not even be valid for a single ++ image. ++ Therefore, for 64b exes at least, we must use the libunwind implementation, ++ even when static-libgcc is specified. We put libSystem first so that ++ unwinder symbols are satisfied from there. */ ++#undef REAL_LIBGCC_SPEC ++#define REAL_LIBGCC_SPEC \ ++ "%{static-libgcc|static: \ ++ %{m64:%:version-compare(>= 10.6 mmacosx-version-min= -lSystem)} \ ++ -lgcc_eh -lgcc; \ ++ shared-libgcc|fexceptions|fgnu-runtime: \ ++ %:version-compare(!> 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.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.5 mmacosx-version-min= -lgcc_ext.10.5) \ ++ -lgcc }" ++ ++#undef DARWIN_SUBARCH_SPEC ++#define DARWIN_SUBARCH_SPEC DARWIN_ARCH_SPEC ++ ++#undef SUBTARGET_EXTRA_SPECS ++#define SUBTARGET_EXTRA_SPECS \ ++ DARWIN_EXTRA_SPECS \ ++ { "darwin_arch", DARWIN_ARCH_SPEC }, \ ++ { "darwin_crt2", "" }, \ ++ { "darwin_subarch", DARWIN_SUBARCH_SPEC }, +Index: gcc/config/i386/darwin64-biarch.h +=================================================================== +--- a/src/gcc/config/i386/darwin64-biarch.h (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/config/i386/darwin64-biarch.h (.../branches/gcc-8-branch) +@@ -0,0 +1,59 @@ ++/* Target definitions for x86_64 running Darwin with a 64b host supporting a ++ 32b multilib. ++ Copyright (C) 2006-2019 Free Software Foundation, Inc. ++ Contributed by Apple Computer 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. ++ ++You should have received a copy of the GNU General Public License ++along with GCC; see the file COPYING3. If not see ++<http://www.gnu.org/licenses/>. */ ++ ++#undef DARWIN_ARCH_SPEC ++#define DARWIN_ARCH_SPEC "%{m32:i386;:x86_64}" ++ ++/* WORKAROUND pr80556: ++ For x86_64 Darwin10 and later, the unwinder is in libunwind (redirected ++ from libSystem). This doesn't use the keymgr (see keymgr.c) and therefore ++ the calls that libgcc makes to obtain the KEYMGR_GCC3_DW2_OBJ_LIST are not ++ updated to include new images, and might not even be valid for a single ++ image. ++ Therefore, for 64b exes at least, we must use the libunwind implementation, ++ even when static-libgcc is specified. We put libSystem first so that ++ unwinder symbols are satisfied from there. */ ++#undef REAL_LIBGCC_SPEC ++#define REAL_LIBGCC_SPEC \ ++ "%{static-libgcc|static: \ ++ %{!m32:%:version-compare(>= 10.6 mmacosx-version-min= -lSystem)} \ ++ -lgcc_eh -lgcc; \ ++ shared-libgcc|fexceptions|fgnu-runtime: \ ++ %:version-compare(!> 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.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.5 mmacosx-version-min= -lgcc_ext.10.5) \ ++ -lgcc }" ++ ++#undef DARWIN_SUBARCH_SPEC ++#define DARWIN_SUBARCH_SPEC DARWIN_ARCH_SPEC ++ ++#undef SUBTARGET_EXTRA_SPECS ++#define SUBTARGET_EXTRA_SPECS \ ++ DARWIN_EXTRA_SPECS \ ++ { "darwin_arch", DARWIN_ARCH_SPEC }, \ ++ { "darwin_crt2", "" }, \ ++ { "darwin_subarch", DARWIN_SUBARCH_SPEC }, +Index: gcc/config/i386/sse.md +=================================================================== +--- a/src/gcc/config/i386/sse.md (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/config/i386/sse.md (.../branches/gcc-8-branch) +@@ -1908,7 +1908,7 @@ + [(set (match_operand:VF1_128_256 0 "register_operand") + (unspec:VF1_128_256 + [(match_operand:VF1_128_256 1 "vector_operand")] UNSPEC_RSQRT))] +- "TARGET_SSE_MATH" ++ "TARGET_SSE && TARGET_SSE_MATH" + { + ix86_emit_swsqrtsf (operands[0], operands[1], <MODE>mode, true); + DONE; +@@ -15172,7 +15172,7 @@ + } + }) + +-(define_insn "abs<mode>2" ++(define_insn "ssse3_abs<mode>2" + [(set (match_operand:MMXMODEI 0 "register_operand" "=y") + (abs:MMXMODEI + (match_operand:MMXMODEI 1 "nonimmediate_operand" "ym")))] +@@ -16271,9 +16271,9 @@ + case 3: + /* %X5 so that we don't emit any *WORD PTR for -masm=intel, as + gas changed what it requires incompatibly. */ +- return "vgatherpf0<ssemodesuffix>ps\t{%5%{%0%}|%X5%{%0%}}"; ++ return "%M2vgatherpf0<ssemodesuffix>ps\t{%5%{%0%}|%X5%{%0%}}"; + case 2: +- return "vgatherpf1<ssemodesuffix>ps\t{%5%{%0%}|%X5%{%0%}}"; ++ return "%M2vgatherpf1<ssemodesuffix>ps\t{%5%{%0%}|%X5%{%0%}}"; + default: + gcc_unreachable (); + } +@@ -16318,9 +16318,9 @@ + case 3: + /* %X5 so that we don't emit any *WORD PTR for -masm=intel, as + gas changed what it requires incompatibly. */ +- return "vgatherpf0<ssemodesuffix>pd\t{%5%{%0%}|%X5%{%0%}}"; ++ return "%M2vgatherpf0<ssemodesuffix>pd\t{%5%{%0%}|%X5%{%0%}}"; + case 2: +- return "vgatherpf1<ssemodesuffix>pd\t{%5%{%0%}|%X5%{%0%}}"; ++ return "%M2vgatherpf1<ssemodesuffix>pd\t{%5%{%0%}|%X5%{%0%}}"; + default: + gcc_unreachable (); + } +@@ -16366,10 +16366,10 @@ + case 7: + /* %X5 so that we don't emit any *WORD PTR for -masm=intel, as + gas changed what it requires incompatibly. */ +- return "vscatterpf0<ssemodesuffix>ps\t{%5%{%0%}|%X5%{%0%}}"; ++ return "%M2vscatterpf0<ssemodesuffix>ps\t{%5%{%0%}|%X5%{%0%}}"; + case 2: + case 6: +- return "vscatterpf1<ssemodesuffix>ps\t{%5%{%0%}|%X5%{%0%}}"; ++ return "%M2vscatterpf1<ssemodesuffix>ps\t{%5%{%0%}|%X5%{%0%}}"; + default: + gcc_unreachable (); + } +@@ -16415,10 +16415,10 @@ + case 7: + /* %X5 so that we don't emit any *WORD PTR for -masm=intel, as + gas changed what it requires incompatibly. */ +- return "vscatterpf0<ssemodesuffix>pd\t{%5%{%0%}|%X5%{%0%}}"; ++ return "%M2vscatterpf0<ssemodesuffix>pd\t{%5%{%0%}|%X5%{%0%}}"; + case 2: + case 6: +- return "vscatterpf1<ssemodesuffix>pd\t{%5%{%0%}|%X5%{%0%}}"; ++ return "%M2vscatterpf1<ssemodesuffix>pd\t{%5%{%0%}|%X5%{%0%}}"; + default: + gcc_unreachable (); + } +@@ -19157,7 +19157,7 @@ + UNSPEC_GATHER)) + (clobber (match_scratch:VEC_GATHER_MODE 1 "=&x"))] + "TARGET_AVX2" +- "v<sseintprefix>gatherd<ssemodesuffix>\t{%1, %7, %0|%0, %7, %1}" ++ "%M3v<sseintprefix>gatherd<ssemodesuffix>\t{%1, %7, %0|%0, %7, %1}" + [(set_attr "type" "ssemov") + (set_attr "prefix" "vex") + (set_attr "mode" "<sseinsnmode>")]) +@@ -19177,7 +19177,7 @@ + UNSPEC_GATHER)) + (clobber (match_scratch:VEC_GATHER_MODE 1 "=&x"))] + "TARGET_AVX2" +- "v<sseintprefix>gatherd<ssemodesuffix>\t{%1, %6, %0|%0, %6, %1}" ++ "%M2v<sseintprefix>gatherd<ssemodesuffix>\t{%1, %6, %0|%0, %6, %1}" + [(set_attr "type" "ssemov") + (set_attr "prefix" "vex") + (set_attr "mode" "<sseinsnmode>")]) +@@ -19218,7 +19218,7 @@ + UNSPEC_GATHER)) + (clobber (match_scratch:VEC_GATHER_MODE 1 "=&x"))] + "TARGET_AVX2" +- "v<sseintprefix>gatherq<ssemodesuffix>\t{%5, %7, %2|%2, %7, %5}" ++ "%M3v<sseintprefix>gatherq<ssemodesuffix>\t{%5, %7, %2|%2, %7, %5}" + [(set_attr "type" "ssemov") + (set_attr "prefix" "vex") + (set_attr "mode" "<sseinsnmode>")]) +@@ -19240,8 +19240,8 @@ + "TARGET_AVX2" + { + if (<MODE>mode != <VEC_GATHER_SRCDI>mode) +- return "v<sseintprefix>gatherq<ssemodesuffix>\t{%4, %6, %x0|%x0, %6, %4}"; +- return "v<sseintprefix>gatherq<ssemodesuffix>\t{%4, %6, %0|%0, %6, %4}"; ++ return "%M2v<sseintprefix>gatherq<ssemodesuffix>\t{%4, %6, %x0|%x0, %6, %4}"; ++ return "%M2v<sseintprefix>gatherq<ssemodesuffix>\t{%4, %6, %0|%0, %6, %4}"; + } + [(set_attr "type" "ssemov") + (set_attr "prefix" "vex") +@@ -19265,7 +19265,7 @@ + (const_int 2) (const_int 3)]))) + (clobber (match_scratch:VI4F_256 1 "=&x"))] + "TARGET_AVX2" +- "v<sseintprefix>gatherq<ssemodesuffix>\t{%5, %7, %0|%0, %7, %5}" ++ "%M3v<sseintprefix>gatherq<ssemodesuffix>\t{%5, %7, %0|%0, %7, %5}" + [(set_attr "type" "ssemov") + (set_attr "prefix" "vex") + (set_attr "mode" "<sseinsnmode>")]) +@@ -19288,7 +19288,7 @@ + (const_int 2) (const_int 3)]))) + (clobber (match_scratch:VI4F_256 1 "=&x"))] + "TARGET_AVX2" +- "v<sseintprefix>gatherq<ssemodesuffix>\t{%4, %6, %0|%0, %6, %4}" ++ "%M2v<sseintprefix>gatherq<ssemodesuffix>\t{%4, %6, %0|%0, %6, %4}" + [(set_attr "type" "ssemov") + (set_attr "prefix" "vex") + (set_attr "mode" "<sseinsnmode>")]) +@@ -19328,7 +19328,7 @@ + "TARGET_AVX512F" + ;; %X6 so that we don't emit any *WORD PTR for -masm=intel, as + ;; gas changed what it requires incompatibly. +- "v<sseintprefix>gatherd<ssemodesuffix>\t{%6, %0%{%2%}|%0%{%2%}, %X6}" ++ "%M4v<sseintprefix>gatherd<ssemodesuffix>\t{%6, %0%{%2%}|%0%{%2%}, %X6}" + [(set_attr "type" "ssemov") + (set_attr "prefix" "evex") + (set_attr "mode" "<sseinsnmode>")]) +@@ -19349,7 +19349,7 @@ + "TARGET_AVX512F" + ;; %X5 so that we don't emit any *WORD PTR for -masm=intel, as + ;; gas changed what it requires incompatibly. +- "v<sseintprefix>gatherd<ssemodesuffix>\t{%5, %0%{%1%}|%0%{%1%}, %X5}" ++ "%M3v<sseintprefix>gatherd<ssemodesuffix>\t{%5, %0%{%1%}|%0%{%1%}, %X5}" + [(set_attr "type" "ssemov") + (set_attr "prefix" "evex") + (set_attr "mode" "<sseinsnmode>")]) +@@ -19390,7 +19390,7 @@ + "TARGET_AVX512F" + ;; %X6 so that we don't emit any *WORD PTR for -masm=intel, as + ;; gas changed what it requires incompatibly. +- "v<sseintprefix>gatherq<ssemodesuffix>\t{%6, %1%{%2%}|%1%{%2%}, %X6}" ++ "%M4v<sseintprefix>gatherq<ssemodesuffix>\t{%6, %1%{%2%}|%1%{%2%}, %X6}" + [(set_attr "type" "ssemov") + (set_attr "prefix" "evex") + (set_attr "mode" "<sseinsnmode>")]) +@@ -19415,11 +19415,11 @@ + if (<MODE>mode != <VEC_GATHER_SRCDI>mode) + { + if (<MODE_SIZE> != 64) +- return "v<sseintprefix>gatherq<ssemodesuffix>\t{%5, %x0%{%1%}|%x0%{%1%}, %X5}"; ++ return "%M3v<sseintprefix>gatherq<ssemodesuffix>\t{%5, %x0%{%1%}|%x0%{%1%}, %X5}"; + else +- return "v<sseintprefix>gatherq<ssemodesuffix>\t{%5, %t0%{%1%}|%t0%{%1%}, %X5}"; ++ return "%M3v<sseintprefix>gatherq<ssemodesuffix>\t{%5, %t0%{%1%}|%t0%{%1%}, %X5}"; + } +- return "v<sseintprefix>gatherq<ssemodesuffix>\t{%5, %0%{%1%}|%0%{%1%}, %X5}"; ++ return "%M3v<sseintprefix>gatherq<ssemodesuffix>\t{%5, %0%{%1%}|%0%{%1%}, %X5}"; + } + [(set_attr "type" "ssemov") + (set_attr "prefix" "evex") +@@ -19458,7 +19458,7 @@ + "TARGET_AVX512F" + ;; %X5 so that we don't emit any *WORD PTR for -masm=intel, as + ;; gas changed what it requires incompatibly. +- "v<sseintprefix>scatterd<ssemodesuffix>\t{%3, %5%{%1%}|%X5%{%1%}, %3}" ++ "%M0v<sseintprefix>scatterd<ssemodesuffix>\t{%3, %5%{%1%}|%X5%{%1%}, %3}" + [(set_attr "type" "ssemov") + (set_attr "prefix" "evex") + (set_attr "mode" "<sseinsnmode>")]) +@@ -19496,7 +19496,7 @@ + "TARGET_AVX512F" + ;; %X5 so that we don't emit any *WORD PTR for -masm=intel, as + ;; gas changed what it requires incompatibly. +- "v<sseintprefix>scatterq<ssemodesuffix>\t{%3, %5%{%1%}|%X5%{%1%}, %3}" ++ "%M0v<sseintprefix>scatterq<ssemodesuffix>\t{%3, %5%{%1%}|%X5%{%1%}, %3}" + [(set_attr "type" "ssemov") + (set_attr "prefix" "evex") + (set_attr "mode" "<sseinsnmode>")]) +Index: gcc/config/i386/i386-builtin.def +=================================================================== +--- a/src/gcc/config/i386/i386-builtin.def (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/config/i386/i386-builtin.def (.../branches/gcc-8-branch) +@@ -806,11 +806,11 @@ + + /* SSSE3 */ + BDESC (OPTION_MASK_ISA_SSSE3, CODE_FOR_absv16qi2, "__builtin_ia32_pabsb128", IX86_BUILTIN_PABSB128, UNKNOWN, (int) V16QI_FTYPE_V16QI) +-BDESC (OPTION_MASK_ISA_SSSE3 | OPTION_MASK_ISA_MMX, CODE_FOR_absv8qi2, "__builtin_ia32_pabsb", IX86_BUILTIN_PABSB, UNKNOWN, (int) V8QI_FTYPE_V8QI) ++BDESC (OPTION_MASK_ISA_SSSE3 | OPTION_MASK_ISA_MMX, CODE_FOR_ssse3_absv8qi2, "__builtin_ia32_pabsb", IX86_BUILTIN_PABSB, UNKNOWN, (int) V8QI_FTYPE_V8QI) + BDESC (OPTION_MASK_ISA_SSSE3, CODE_FOR_absv8hi2, "__builtin_ia32_pabsw128", IX86_BUILTIN_PABSW128, UNKNOWN, (int) V8HI_FTYPE_V8HI) +-BDESC (OPTION_MASK_ISA_SSSE3 | OPTION_MASK_ISA_MMX, CODE_FOR_absv4hi2, "__builtin_ia32_pabsw", IX86_BUILTIN_PABSW, UNKNOWN, (int) V4HI_FTYPE_V4HI) ++BDESC (OPTION_MASK_ISA_SSSE3 | OPTION_MASK_ISA_MMX, CODE_FOR_ssse3_absv4hi2, "__builtin_ia32_pabsw", IX86_BUILTIN_PABSW, UNKNOWN, (int) V4HI_FTYPE_V4HI) + BDESC (OPTION_MASK_ISA_SSSE3, CODE_FOR_absv4si2, "__builtin_ia32_pabsd128", IX86_BUILTIN_PABSD128, UNKNOWN, (int) V4SI_FTYPE_V4SI) +-BDESC (OPTION_MASK_ISA_SSSE3 | OPTION_MASK_ISA_MMX, CODE_FOR_absv2si2, "__builtin_ia32_pabsd", IX86_BUILTIN_PABSD, UNKNOWN, (int) V2SI_FTYPE_V2SI) ++BDESC (OPTION_MASK_ISA_SSSE3 | OPTION_MASK_ISA_MMX, CODE_FOR_ssse3_absv2si2, "__builtin_ia32_pabsd", IX86_BUILTIN_PABSD, UNKNOWN, (int) V2SI_FTYPE_V2SI) + + BDESC (OPTION_MASK_ISA_SSSE3, 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, 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_8_3_0_release) ++++ b/src/gcc/config/i386/darwin.h (.../branches/gcc-8-branch) +@@ -47,12 +47,13 @@ + image. + Therefore, for 64b exes at least, we must use the libunwind implementation, + even when static-libgcc is specified. We put libSystem first so that +- unwinder symbols are satisfied from there. */ ++ unwinder symbols are satisfied from there. ++ We default to 64b for single-arch builds, so apply this unconditionally. */ + #undef REAL_LIBGCC_SPEC + #define REAL_LIBGCC_SPEC \ + "%{static-libgcc|static: \ +- %{m64:%:version-compare(>= 10.6 mmacosx-version-min= -lSystem)} \ +- -lgcc_eh -lgcc; \ ++ %:version-compare(>= 10.6 mmacosx-version-min= -lSystem) \ ++ -lgcc_eh -lgcc; \ + shared-libgcc|fexceptions|fgnu-runtime: \ + %:version-compare(!> 10.5 mmacosx-version-min= -lgcc_s.10.4) \ + %:version-compare(>< 10.5 10.6 mmacosx-version-min= -lgcc_s.10.5) \ +@@ -88,14 +89,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) + +@@ -130,7 +129,8 @@ + #undef CC1_SPEC + #define CC1_SPEC "%(cc1_cpu) \ + %{!mkernel:%{!static:%{!mdynamic-no-pic:-fPIC}}} \ +- %{g: %{!fno-eliminate-unused-debug-symbols: -feliminate-unused-debug-symbols }} " \ ++ %{g: %{!fno-eliminate-unused-debug-symbols: -feliminate-unused-debug-symbols }} \ ++ %{mx32:%eDarwin is not an mx32 platform}" \ + DARWIN_CC1_SPEC + + #undef ASM_SPEC +@@ -138,9 +138,6 @@ + " ASM_OPTIONS " -force_cpusubtype_ALL \ + %{static}" ASM_MMACOSX_VERSION_MIN_SPEC + +-#define DARWIN_ARCH_SPEC "%{m64:x86_64;:i386}" +-#define DARWIN_SUBARCH_SPEC DARWIN_ARCH_SPEC +- + #undef ENDFILE_SPEC + #define ENDFILE_SPEC \ + "%{Ofast|ffast-math|funsafe-math-optimizations:crtfastmath.o%s} \ +@@ -148,12 +145,15 @@ + %{mpc64:crtprec64.o%s} \ + %{mpc80:crtprec80.o%s}" TM_DESTRUCTOR + ++/* We default to x86_64 for single-arch builds, bi-arch overrides. */ ++#define DARWIN_ARCH_SPEC "x86_64" ++ + #undef SUBTARGET_EXTRA_SPECS + #define SUBTARGET_EXTRA_SPECS \ + DARWIN_EXTRA_SPECS \ +- { "darwin_arch", DARWIN_ARCH_SPEC }, \ ++ { "darwin_arch", DARWIN_ARCH_SPEC }, \ + { "darwin_crt2", "" }, \ +- { "darwin_subarch", DARWIN_SUBARCH_SPEC }, ++ { "darwin_subarch", DARWIN_ARCH_SPEC }, + + /* The Darwin assembler mostly follows AT&T syntax. */ + #undef ASSEMBLER_DIALECT +@@ -219,19 +219,36 @@ + } \ + } while (0) + ++#ifdef HAVE_GAS_MAX_SKIP_P2ALIGN ++#define ASM_OUTPUT_MAX_SKIP_ALIGN(FILE,LOG,MAX_SKIP) \ ++ do { \ ++ if ((LOG) != 0) { \ ++ if ((MAX_SKIP) == 0 || (MAX_SKIP) >= (1 << (LOG)) - 1) \ ++ fprintf ((FILE), "\t.p2align %d\n", (LOG)); \ ++ else \ ++ fprintf ((FILE), "\t.p2align %d,,%d\n", (LOG), (MAX_SKIP)); \ ++ } \ ++ } while (0) ++#endif ++ ++/* Darwin x86 assemblers support the .ident directive. */ ++ ++#undef TARGET_ASM_OUTPUT_IDENT ++#define TARGET_ASM_OUTPUT_IDENT default_asm_output_ident_directive ++ + /* Darwin profiling -- call mcount. */ + #undef FUNCTION_PROFILER + #define FUNCTION_PROFILER(FILE, LABELNO) \ +- do { \ +- if (TARGET_MACHO_BRANCH_ISLANDS \ +- && MACHOPIC_INDIRECT && !TARGET_64BIT) \ +- { \ +- const char *name = machopic_mcount_stub_name (); \ +- fprintf (FILE, "\tcall %s\n", name+1); /* skip '&' */ \ +- machopic_validate_stub_or_non_lazy_ptr (name); \ +- } \ +- else fprintf (FILE, "\tcall mcount\n"); \ +- } while (0) ++ do { \ ++ if (TARGET_MACHO_SYMBOL_STUBS \ ++ && MACHOPIC_INDIRECT && !TARGET_64BIT) \ ++ { \ ++ const char *name = machopic_mcount_stub_name (); \ ++ fprintf (FILE, "\tcall %s\n", name+1); /* skip '&' */ \ ++ machopic_validate_stub_or_non_lazy_ptr (name); \ ++ } \ ++ else fprintf (FILE, "\tcall mcount\n"); \ ++ } while (0) + + #define C_COMMON_OVERRIDE_OPTIONS \ + do { \ +@@ -304,10 +321,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_8_3_0_release) ++++ b/src/gcc/config/i386/emmintrin.h (.../branches/gcc-8-branch) +@@ -1296,7 +1296,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/intelmic-mkoffload.c +=================================================================== +--- a/src/gcc/config/i386/intelmic-mkoffload.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/config/i386/intelmic-mkoffload.c (.../branches/gcc-8-branch) +@@ -453,8 +453,6 @@ + if (verbose) + obstack_ptr_grow (&argv_obstack, "-v"); + obstack_ptr_grow (&argv_obstack, "-xlto"); +- obstack_ptr_grow (&argv_obstack, "-shared"); +- obstack_ptr_grow (&argv_obstack, "-fPIC"); + obstack_ptr_grow (&argv_obstack, opt1); + for (int i = 1; i < argc; i++) + { +@@ -466,6 +464,9 @@ + if (!out_obj_filename) + fatal_error (input_location, "output file not specified"); + obstack_ptr_grow (&argv_obstack, opt2); ++ /* NB: Put -fPIC and -shared the last to create shared library. */ ++ obstack_ptr_grow (&argv_obstack, "-fPIC"); ++ obstack_ptr_grow (&argv_obstack, "-shared"); + obstack_ptr_grow (&argv_obstack, "-o"); + obstack_ptr_grow (&argv_obstack, target_so_filename); + compile_for_target (&argv_obstack); +Index: gcc/config/i386/avxintrin.h +=================================================================== +--- a/src/gcc/config/i386/avxintrin.h (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/config/i386/avxintrin.h (.../branches/gcc-8-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_8_3_0_release) ++++ b/src/gcc/config/i386/i386.c (.../branches/gcc-8-branch) +@@ -1024,17 +1024,9 @@ + + case ASHIFT: + case LSHIFTRT: +- if (!REG_P (XEXP (src, 1)) +- && (!SUBREG_P (XEXP (src, 1)) +- || SUBREG_BYTE (XEXP (src, 1)) != 0 +- || !REG_P (SUBREG_REG (XEXP (src, 1)))) +- && (!CONST_INT_P (XEXP (src, 1)) +- || !IN_RANGE (INTVAL (XEXP (src, 1)), 0, 63))) ++ if (!CONST_INT_P (XEXP (src, 1)) ++ || !IN_RANGE (INTVAL (XEXP (src, 1)), 0, 63)) + return false; +- +- if (GET_MODE (XEXP (src, 1)) != QImode +- && !CONST_INT_P (XEXP (src, 1))) +- return false; + break; + + case PLUS: +@@ -1630,15 +1622,10 @@ + { + if (CONST_INT_P (XEXP (src, 0))) + gain -= vector_const_cost (XEXP (src, 0)); +- if (CONST_INT_P (XEXP (src, 1))) +- { +- gain += ix86_cost->shift_const; +- if (INTVAL (XEXP (src, 1)) >= 32) +- gain -= COSTS_N_INSNS (1); +- } +- else +- /* Additional gain for omitting two CMOVs. */ +- gain += ix86_cost->shift_var + COSTS_N_INSNS (2); ++ ++ gain += ix86_cost->shift_const; ++ if (INTVAL (XEXP (src, 1)) >= 32) ++ gain -= COSTS_N_INSNS (1); + } + else if (GET_CODE (src) == PLUS + || GET_CODE (src) == MINUS +@@ -1754,60 +1741,14 @@ + { + rtx reg = regno_reg_rtx[regno]; + rtx vreg = gen_reg_rtx (DImode); +- bool count_reg = false; + df_ref ref; + + for (ref = DF_REG_DEF_CHAIN (regno); ref; ref = DF_REF_NEXT_REG (ref)) + if (!bitmap_bit_p (insns, DF_REF_INSN_UID (ref))) + { +- df_ref use; +- +- /* Detect the count register of a shift instruction. */ +- for (use = DF_REG_USE_CHAIN (regno); use; use = DF_REF_NEXT_REG (use)) +- if (bitmap_bit_p (insns, DF_REF_INSN_UID (use))) +- { +- rtx_insn *insn = DF_REF_INSN (use); +- rtx def_set = single_set (insn); +- +- gcc_assert (def_set); +- +- rtx src = SET_SRC (def_set); +- +- if ((GET_CODE (src) == ASHIFT +- || GET_CODE (src) == ASHIFTRT +- || GET_CODE (src) == LSHIFTRT) +- && !CONST_INT_P (XEXP (src, 1)) +- && reg_or_subregno (XEXP (src, 1)) == regno) +- count_reg = true; +- } +- + start_sequence (); +- if (count_reg) +- { +- rtx qreg = gen_lowpart (QImode, reg); +- rtx tmp = gen_reg_rtx (SImode); + +- if (TARGET_ZERO_EXTEND_WITH_AND +- && optimize_function_for_speed_p (cfun)) +- { +- emit_move_insn (tmp, const0_rtx); +- emit_insn (gen_movstrictqi +- (gen_lowpart (QImode, tmp), qreg)); +- } +- else +- emit_insn (gen_rtx_SET +- (tmp, gen_rtx_ZERO_EXTEND (SImode, qreg))); +- +- if (!TARGET_INTER_UNIT_MOVES_TO_VEC) +- { +- rtx slot = assign_386_stack_local (SImode, SLOT_STV_TEMP); +- emit_move_insn (slot, tmp); +- tmp = copy_rtx (slot); +- } +- +- emit_insn (gen_zero_extendsidi2 (vreg, tmp)); +- } +- else if (!TARGET_INTER_UNIT_MOVES_TO_VEC) ++ if (!TARGET_INTER_UNIT_MOVES_TO_VEC) + { + rtx tmp = assign_386_stack_local (DImode, SLOT_STV_TEMP); + emit_move_insn (adjust_address (tmp, SImode, 0), +@@ -1855,23 +1796,9 @@ + if (bitmap_bit_p (insns, DF_REF_INSN_UID (ref))) + { + rtx_insn *insn = DF_REF_INSN (ref); +- if (count_reg) +- { +- rtx def_set = single_set (insn); +- gcc_assert (def_set); + +- rtx src = SET_SRC (def_set); ++ replace_with_subreg_in_insn (insn, reg, vreg); + +- if ((GET_CODE (src) == ASHIFT +- || GET_CODE (src) == ASHIFTRT +- || GET_CODE (src) == LSHIFTRT) +- && !CONST_INT_P (XEXP (src, 1)) +- && reg_or_subregno (XEXP (src, 1)) == regno) +- XEXP (src, 1) = vreg; +- } +- else +- replace_with_subreg_in_insn (insn, reg, vreg); +- + if (dump_file) + fprintf (dump_file, " Replaced r%d with r%d in insn %d\n", + regno, REGNO (vreg), INSN_UID (insn)); +@@ -1973,42 +1900,7 @@ + rtx src = SET_SRC (def_set); + rtx dst = SET_DEST (def_set); + +- if ((GET_CODE (src) == ASHIFT +- || GET_CODE (src) == ASHIFTRT +- || GET_CODE (src) == LSHIFTRT) +- && !CONST_INT_P (XEXP (src, 1)) +- && reg_or_subregno (XEXP (src, 1)) == regno) +- { +- rtx tmp2 = gen_reg_rtx (V2DImode); +- +- start_sequence (); +- +- if (TARGET_SSE4_1) +- emit_insn (gen_sse4_1_zero_extendv2qiv2di2 +- (tmp2, gen_rtx_SUBREG (V16QImode, reg, 0))); +- else +- { +- rtx vec_cst +- = gen_rtx_CONST_VECTOR (V2DImode, +- gen_rtvec (2, GEN_INT (0xff), +- const0_rtx)); +- vec_cst +- = validize_mem (force_const_mem (V2DImode, vec_cst)); +- +- emit_insn (gen_rtx_SET +- (tmp2, +- gen_rtx_AND (V2DImode, +- gen_rtx_SUBREG (V2DImode, reg, 0), +- vec_cst))); +- } +- rtx_insn *seq = get_insns (); +- end_sequence (); +- +- emit_insn_before (seq, insn); +- +- XEXP (src, 1) = gen_rtx_SUBREG (DImode, tmp2, 0); +- } +- else if (!MEM_P (dst) || !REG_P (src)) ++ if (!MEM_P (dst) || !REG_P (src)) + replace_with_subreg_in_insn (insn, reg, reg); + + bitmap_clear_bit (conv, INSN_UID (insn)); +@@ -3488,7 +3380,7 @@ + | PTA_AVX512VBMI | PTA_AVX512IFMA | PTA_SHA; + const wide_int_bitmask PTA_ICELAKE_CLIENT = PTA_CANNONLAKE | PTA_AVX512VNNI + | PTA_GFNI | PTA_VAES | PTA_AVX512VBMI2 | PTA_VPCLMULQDQ | PTA_AVX512BITALG +- | PTA_RDPID | PTA_CLWB; ++ | PTA_RDPID | PTA_CLWB | PTA_AVX512VPOPCNTDQ; + const wide_int_bitmask PTA_ICELAKE_SERVER = PTA_ICELAKE_CLIENT | PTA_PCONFIG + | PTA_WBNOINVD; + const wide_int_bitmask PTA_KNL = PTA_BROADWELL | PTA_AVX512PF | PTA_AVX512ER +@@ -4958,6 +4850,12 @@ + opts->x_param_values, + opts_set->x_param_values); + ++ /* PR86952: jump table usage with retpolines is slow. ++ The PR provides some numbers about the slowness. */ ++ if (ix86_indirect_branch != indirect_branch_keep ++ && !opts_set->x_flag_jump_tables) ++ opts->x_flag_jump_tables = 0; ++ + return true; + } + +@@ -5552,7 +5450,25 @@ + ret = false; + } + else +- p_strings[opt] = xstrdup (p + opt_len); ++ { ++ p_strings[opt] = xstrdup (p + opt_len); ++ if (opt == IX86_FUNCTION_SPECIFIC_ARCH) ++ { ++ /* If arch= is set, clear all bits in x_ix86_isa_flags, ++ except for ISA_64BIT, ABI_64, ABI_X32, and CODE16 ++ and all bits in x_ix86_isa_flags2. */ ++ opts->x_ix86_isa_flags &= (OPTION_MASK_ISA_64BIT ++ | OPTION_MASK_ABI_64 ++ | OPTION_MASK_ABI_X32 ++ | OPTION_MASK_CODE16); ++ opts->x_ix86_isa_flags_explicit &= (OPTION_MASK_ISA_64BIT ++ | OPTION_MASK_ABI_64 ++ | OPTION_MASK_ABI_X32 ++ | OPTION_MASK_CODE16); ++ opts->x_ix86_isa_flags2 = 0; ++ opts->x_ix86_isa_flags2_explicit = 0; ++ } ++ } + } + + else if (type == ix86_opt_enum) +@@ -5627,18 +5543,8 @@ + /* If we are using the default tune= or arch=, undo the string assigned, + and use the default. */ + if (option_strings[IX86_FUNCTION_SPECIFIC_ARCH]) +- { +- opts->x_ix86_arch_string +- = ggc_strdup (option_strings[IX86_FUNCTION_SPECIFIC_ARCH]); +- +- /* If arch= is set, clear all bits in x_ix86_isa_flags, +- except for ISA_64BIT, ABI_64, ABI_X32, and CODE16. */ +- opts->x_ix86_isa_flags &= (OPTION_MASK_ISA_64BIT +- | OPTION_MASK_ABI_64 +- | OPTION_MASK_ABI_X32 +- | OPTION_MASK_CODE16); +- opts->x_ix86_isa_flags2 = 0; +- } ++ opts->x_ix86_arch_string ++ = ggc_strdup (option_strings[IX86_FUNCTION_SPECIFIC_ARCH]); + else if (!orig_arch_specified) + opts->x_ix86_arch_string = NULL; + +@@ -17313,7 +17219,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 + { +@@ -18121,6 +18027,7 @@ + ; -- print a semicolon (after prefixes due to bug in older gas). + ~ -- print "i" if TARGET_AVX2, "f" otherwise. + ^ -- print addr32 prefix if TARGET_64BIT and Pmode != word_mode ++ M -- print addr32 prefix for TARGET_X32 with VSIB address. + ! -- print MPX prefix for jxx/call/ret instructions if required. + */ + +@@ -18668,6 +18575,26 @@ + putc (TARGET_AVX2 ? 'i' : 'f', file); + return; + ++ case 'M': ++ if (TARGET_X32) ++ { ++ /* NB: 32-bit indices in VSIB address are sign-extended ++ to 64 bits. In x32, if 32-bit address 0xf7fa3010 is ++ sign-extended to 0xfffffffff7fa3010 which is invalid ++ address. Add addr32 prefix if there is no base ++ register nor symbol. */ ++ bool ok; ++ struct ix86_address parts; ++ ok = ix86_decompose_address (x, &parts); ++ gcc_assert (ok && parts.index == NULL_RTX); ++ if (parts.base == NULL_RTX ++ && (parts.disp == NULL_RTX ++ || !symbolic_operand (parts.disp, ++ GET_MODE (parts.disp)))) ++ fputs ("addr32 ", file); ++ } ++ return; ++ + case '^': + if (TARGET_64BIT && Pmode != word_mode) + fputs ("addr32 ", file); +@@ -24062,6 +23989,8 @@ + else + { + code = is_min ? SMIN : SMAX; ++ if (MEM_P (if_true) && MEM_P (if_false)) ++ if_true = force_reg (mode, if_true); + tmp = gen_rtx_fmt_ee (code, mode, if_true, if_false); + } + +@@ -28757,6 +28686,25 @@ + return false; + } + ++/* Helper to output the jmp/call. */ ++static void ++ix86_output_jmp_thunk_or_indirect (const char *thunk_name, ++ enum indirect_thunk_prefix need_prefix, ++ const int regno) ++{ ++ if (thunk_name != NULL) ++ { ++ if (need_prefix == indirect_thunk_prefix_bnd) ++ fprintf (asm_out_file, "\tbnd jmp\t"); ++ else ++ fprintf (asm_out_file, "\tjmp\t"); ++ assemble_name (asm_out_file, thunk_name); ++ putc ('\n', asm_out_file); ++ } ++ else ++ output_indirect_thunk (need_prefix, regno); ++} ++ + /* Output indirect branch via a call and return thunk. CALL_OP is a + register which contains the branch target. XASM is the assembly + template for CALL_OP. Branch is a tail call if SIBCALL_P is true. +@@ -28798,25 +28746,17 @@ + thunk_name = NULL; + + if (sibcall_p) +- { +- if (thunk_name != NULL) +- { +- if (need_prefix == indirect_thunk_prefix_bnd) +- fprintf (asm_out_file, "\tbnd jmp\t%s\n", thunk_name); +- else +- fprintf (asm_out_file, "\tjmp\t%s\n", thunk_name); +- } +- else +- output_indirect_thunk (need_prefix, regno); +- } ++ ix86_output_jmp_thunk_or_indirect (thunk_name, need_prefix, regno); + else + { + if (thunk_name != NULL) + { + if (need_prefix == indirect_thunk_prefix_bnd) +- fprintf (asm_out_file, "\tbnd call\t%s\n", thunk_name); ++ fprintf (asm_out_file, "\tbnd call\t"); + else +- fprintf (asm_out_file, "\tcall\t%s\n", thunk_name); ++ fprintf (asm_out_file, "\tcall\t"); ++ assemble_name (asm_out_file, thunk_name); ++ putc ('\n', asm_out_file); + return; + } + +@@ -28840,15 +28780,7 @@ + + ASM_OUTPUT_INTERNAL_LABEL (asm_out_file, indirectlabel1); + +- if (thunk_name != NULL) +- { +- if (need_prefix == indirect_thunk_prefix_bnd) +- fprintf (asm_out_file, "\tbnd jmp\t%s\n", thunk_name); +- else +- fprintf (asm_out_file, "\tjmp\t%s\n", thunk_name); +- } +- else +- output_indirect_thunk (need_prefix, regno); ++ ix86_output_jmp_thunk_or_indirect (thunk_name, need_prefix, regno); + + ASM_OUTPUT_INTERNAL_LABEL (asm_out_file, indirectlabel2); + +@@ -28913,15 +28845,7 @@ + if (sibcall_p) + { + output_asm_insn (push_buf, &call_op); +- if (thunk_name != NULL) +- { +- if (need_prefix == indirect_thunk_prefix_bnd) +- fprintf (asm_out_file, "\tbnd jmp\t%s\n", thunk_name); +- else +- fprintf (asm_out_file, "\tjmp\t%s\n", thunk_name); +- } +- else +- output_indirect_thunk (need_prefix, regno); ++ ix86_output_jmp_thunk_or_indirect (thunk_name, need_prefix, regno); + } + else + { +@@ -28980,15 +28904,7 @@ + + output_asm_insn (push_buf, &call_op); + +- if (thunk_name != NULL) +- { +- if (need_prefix == indirect_thunk_prefix_bnd) +- fprintf (asm_out_file, "\tbnd jmp\t%s\n", thunk_name); +- else +- fprintf (asm_out_file, "\tjmp\t%s\n", thunk_name); +- } +- else +- output_indirect_thunk (need_prefix, regno); ++ ix86_output_jmp_thunk_or_indirect (thunk_name, need_prefix, regno); + + ASM_OUTPUT_INTERNAL_LABEL (asm_out_file, indirectlabel2); + +@@ -29057,13 +28973,15 @@ + if (need_prefix == indirect_thunk_prefix_bnd) + { + indirect_return_bnd_needed |= need_thunk; +- fprintf (asm_out_file, "\tbnd jmp\t%s\n", thunk_name); ++ fprintf (asm_out_file, "\tbnd jmp\t"); + } + else + { + indirect_return_needed |= need_thunk; +- fprintf (asm_out_file, "\tjmp\t%s\n", thunk_name); ++ fprintf (asm_out_file, "\tjmp\t"); + } ++ assemble_name (asm_out_file, thunk_name); ++ putc ('\n', asm_out_file); + } + else + output_indirect_thunk (need_prefix, INVALID_REGNUM); +@@ -29104,7 +29022,7 @@ + indirect_return_via_cx_bnd = true; + indirect_thunks_bnd_used |= 1 << CX_REG; + } +- fprintf (asm_out_file, "\tbnd jmp\t%s\n", thunk_name); ++ fprintf (asm_out_file, "\tbnd jmp\t"); + } + else + { +@@ -29113,8 +29031,10 @@ + indirect_return_via_cx = true; + indirect_thunks_used |= 1 << CX_REG; + } +- fprintf (asm_out_file, "\tjmp\t%s\n", thunk_name); ++ fprintf (asm_out_file, "\tjmp\t"); + } ++ assemble_name (asm_out_file, thunk_name); ++ putc ('\n', asm_out_file); + } + else + output_indirect_thunk (need_prefix, regno); +@@ -32923,6 +32843,7 @@ + } + /* Build result decl and add to function_decl. */ + t = build_decl (UNKNOWN_LOCATION, RESULT_DECL, NULL_TREE, ptr_type_node); ++ DECL_CONTEXT (t) = decl; + DECL_ARTIFICIAL (t) = 1; + DECL_IGNORED_P (t) = 1; + DECL_RESULT (decl) = t; +@@ -39641,7 +39562,7 @@ + static bool + use_rsqrt_p () + { +- return (TARGET_SSE_MATH ++ return (TARGET_SSE && TARGET_SSE_MATH + && flag_finite_math_only + && !flag_trapping_math + && flag_unsafe_math_optimizations); +@@ -45705,8 +45626,10 @@ + x2 -= 1; + Compensate. Ceil: + if (x2 < x) +- x2 -= -1; +- return x2; ++ x2 += 1; ++ if (HONOR_SIGNED_ZEROS (mode)) ++ x2 = copysign (x2, x); ++ return x2; + */ + machine_mode mode = GET_MODE (operand0); + rtx xa, TWO52, tmp, one, res, mask; +@@ -45732,17 +45655,16 @@ + /* xa = copysign (xa, operand1) */ + ix86_sse_copysign_to_positive (xa, xa, res, mask); + +- /* generate 1.0 or -1.0 */ +- one = force_reg (mode, +- const_double_from_real_value (do_floor +- ? dconst1 : dconstm1, mode)); ++ /* generate 1.0 */ ++ one = force_reg (mode, const_double_from_real_value (dconst1, mode)); + + /* Compensate: xa = xa - (xa > operand1 ? 1 : 0) */ + tmp = ix86_expand_sse_compare_mask (UNGT, xa, res, !do_floor); + emit_insn (gen_rtx_SET (tmp, gen_rtx_AND (mode, one, tmp))); +- /* We always need to subtract here to preserve signed zero. */ +- tmp = expand_simple_binop (mode, MINUS, ++ tmp = expand_simple_binop (mode, do_floor ? MINUS : PLUS, + xa, tmp, NULL_RTX, 0, OPTAB_DIRECT); ++ if (!do_floor && HONOR_SIGNED_ZEROS (mode)) ++ ix86_sse_copysign_to_positive (tmp, tmp, res, mask); + emit_move_insn (res, tmp); + + emit_label (label); +@@ -46379,7 +46301,8 @@ + expand_vec_perm_blend (struct expand_vec_perm_d *d) + { + machine_mode mmode, vmode = d->vmode; +- unsigned i, mask, nelt = d->nelt; ++ unsigned i, nelt = d->nelt; ++ unsigned HOST_WIDE_INT mask; + rtx target, op0, op1, maskop, x; + rtx rperm[32], vperm; + +@@ -46433,7 +46356,7 @@ + case E_V16SImode: + case E_V8DImode: + for (i = 0; i < nelt; ++i) +- mask |= (d->perm[i] >= nelt) << i; ++ mask |= ((unsigned HOST_WIDE_INT) (d->perm[i] >= nelt)) << i; + break; + + case E_V2DImode: +@@ -50999,7 +50922,7 @@ + there is no adddf3 pattern (since x87 floating point only has + XFmode operations) so the default hook implementation gets this + wrong. */ +- return TARGET_80387 || TARGET_SSE_MATH; ++ return TARGET_80387 || (TARGET_SSE && TARGET_SSE_MATH); + } + + /* Implement TARGET_ATOMIC_ASSIGN_EXPAND_FENV. */ +@@ -51007,7 +50930,7 @@ + static void + ix86_atomic_assign_expand_fenv (tree *hold, tree *clear, tree *update) + { +- if (!TARGET_80387 && !TARGET_SSE_MATH) ++ if (!TARGET_80387 && !(TARGET_SSE && TARGET_SSE_MATH)) + return; + tree exceptions_var = create_tmp_var_raw (integer_type_node); + if (TARGET_80387) +@@ -51042,7 +50965,7 @@ + tree update_fldenv = build_call_expr (fldenv, 1, fenv_addr); + *update = build2 (COMPOUND_EXPR, void_type_node, *update, update_fldenv); + } +- if (TARGET_SSE_MATH) ++ if (TARGET_SSE && TARGET_SSE_MATH) + { + tree mxcsr_orig_var = create_tmp_var_raw (unsigned_type_node); + tree mxcsr_mod_var = create_tmp_var_raw (unsigned_type_node); +@@ -51399,7 +51322,7 @@ + return FLT_EVAL_METHOD_PROMOTE_TO_FLOAT; + else if (!TARGET_MIX_SSE_I387) + { +- if (!TARGET_SSE_MATH) ++ if (!(TARGET_SSE && TARGET_SSE_MATH)) + return FLT_EVAL_METHOD_PROMOTE_TO_LONG_DOUBLE; + else if (TARGET_SSE2) + return FLT_EVAL_METHOD_PROMOTE_TO_FLOAT; +Index: gcc/config/darwin-protos.h +=================================================================== +--- a/src/gcc/config/darwin-protos.h (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/config/darwin-protos.h (.../branches/gcc-8-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_8_3_0_release) ++++ b/src/gcc/config/sh/sh.c (.../branches/gcc-8-branch) +@@ -736,7 +736,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 ()); +@@ -957,11 +957,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; + } + +@@ -10875,12 +10877,6 @@ + emit_insn (gen_add2_insn (scratch0, GEN_INT (vcall_offset))); + offset_addr = scratch0; + } +- else if (scratch0 != scratch1) +- { +- emit_move_insn (scratch1, GEN_INT (vcall_offset)); +- emit_insn (gen_add2_insn (scratch0, scratch1)); +- offset_addr = scratch0; +- } + else + gcc_unreachable (); /* FIXME */ + emit_load_ptr (scratch0, offset_addr); +@@ -12077,9 +12073,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 (); + +@@ -12497,7 +12495,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_8_3_0_release) ++++ b/src/gcc/config/sh/sh.h (.../branches/gcc-8-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_8_3_0_release) ++++ b/src/gcc/config/sh/sh.md (.../branches/gcc-8-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_8_3_0_release) ++++ b/src/gcc/config/avr/avr.c (.../branches/gcc-8-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_8_3_0_release) ++++ b/src/gcc/config/xtensa/xtensa.c (.../branches/gcc-8-branch) +@@ -2862,7 +2862,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.c +=================================================================== +--- a/src/gcc/config/riscv/riscv.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/config/riscv/riscv.c (.../branches/gcc-8-branch) +@@ -4389,6 +4389,32 @@ + return align; + } + ++/* Implement TARGET_PROMOTE_FUNCTION_MODE. */ ++ ++/* This function is equivalent to default_promote_function_mode_always_promote ++ except that it returns a promoted mode even if type is NULL_TREE. This is ++ needed by libcalls which have no type (only a mode) such as fixed conversion ++ routines that take a signed or unsigned char/short/int argument and convert ++ it to a fixed type. */ ++ ++static machine_mode ++riscv_promote_function_mode (const_tree type ATTRIBUTE_UNUSED, ++ machine_mode mode, ++ int *punsignedp ATTRIBUTE_UNUSED, ++ const_tree fntype ATTRIBUTE_UNUSED, ++ int for_return ATTRIBUTE_UNUSED) ++{ ++ int unsignedp; ++ ++ if (type != NULL_TREE) ++ return promote_mode (type, mode, punsignedp); ++ ++ unsignedp = *punsignedp; ++ PROMOTE_MODE (mode, unsignedp, type); ++ *punsignedp = unsignedp; ++ return mode; ++} ++ + /* Initialize the GCC target structure. */ + #undef TARGET_ASM_ALIGNED_HI_OP + #define TARGET_ASM_ALIGNED_HI_OP "\t.half\t" +@@ -4430,7 +4456,7 @@ + #define TARGET_EXPAND_BUILTIN_VA_START riscv_va_start + + #undef TARGET_PROMOTE_FUNCTION_MODE +-#define TARGET_PROMOTE_FUNCTION_MODE default_promote_function_mode_always_promote ++#define TARGET_PROMOTE_FUNCTION_MODE riscv_promote_function_mode + + #undef TARGET_RETURN_IN_MEMORY + #define TARGET_RETURN_IN_MEMORY riscv_return_in_memory +Index: gcc/config/aarch64/driver-aarch64.c +=================================================================== +--- a/src/gcc/config/aarch64/driver-aarch64.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/config/aarch64/driver-aarch64.c (.../branches/gcc-8-branch) +@@ -36,7 +36,8 @@ + const char *feat_string; + }; + +-#define AARCH64_OPT_EXTENSION(EXT_NAME, FLAG_CANONICAL, FLAGS_ON, FLAGS_OFF, FEATURE_STRING) \ ++#define AARCH64_OPT_EXTENSION(EXT_NAME, FLAG_CANONICAL, FLAGS_ON, FLAGS_OFF, \ ++ SYNTHETIC, FEATURE_STRING) \ + { EXT_NAME, FLAG_CANONICAL, FEATURE_STRING }, + static struct aarch64_arch_extension aarch64_extensions[] = + { +@@ -249,19 +250,24 @@ + { + for (i = 0; i < num_exts; i++) + { +- char *p = NULL; +- char *feat_string +- = concat (aarch64_extensions[i].feat_string, NULL); ++ const char *p = aarch64_extensions[i].feat_string; ++ ++ /* If the feature contains no HWCAPS string then ignore it for the ++ auto detection. */ ++ if (*p == '\0') ++ continue; ++ + bool enabled = true; + + /* This may be a multi-token feature string. We need +- to match all parts, which could be in any order. +- If this isn't a multi-token feature string, strtok is +- just going to return a pointer to feat_string. */ +- p = strtok (feat_string, " "); +- while (p != NULL) ++ to match all parts, which could be in any order. */ ++ size_t len = strlen (buf); ++ do + { +- if (strstr (buf, p) == NULL) ++ const char *end = strchr (p, ' '); ++ if (end == NULL) ++ end = strchr (p, '\0'); ++ if (memmem (buf, len, p, end - p) == NULL) + { + /* Failed to match this token. Turn off the + features we'd otherwise enable. */ +@@ -268,8 +274,11 @@ + enabled = false; + break; + } +- p = strtok (NULL, " "); ++ if (*end == '\0') ++ break; ++ p = end + 1; + } ++ while (1); + + if (enabled) + extension_flags |= aarch64_extensions[i].flag; +@@ -359,12 +368,12 @@ + not_found: + { + /* If detection fails we ignore the option. +- Clean up and return empty string. */ ++ Clean up and return NULL. */ + + if (f) + fclose (f); + +- return ""; ++ return NULL; + } + } + +Index: gcc/config/aarch64/iterators.md +=================================================================== +--- a/src/gcc/config/aarch64/iterators.md (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/config/aarch64/iterators.md (.../branches/gcc-8-branch) +@@ -578,7 +578,8 @@ + (define_mode_attr sizen [(QI "8") (HI "16") (SI "32") (DI "64")]) + + ;; Give the ordinal of the MSB in the mode +-(define_mode_attr sizem1 [(QI "#7") (HI "#15") (SI "#31") (DI "#63")]) ++(define_mode_attr sizem1 [(QI "#7") (HI "#15") (SI "#31") (DI "#63") ++ (HF "#15") (SF "#31") (DF "#63")]) + + ;; Attribute to describe constants acceptable in logical operations + (define_mode_attr lconst [(SI "K") (DI "L")]) +@@ -664,7 +665,7 @@ + (V8HF "16b") (V2SF "8b") + (V4SF "16b") (V2DF "16b") + (DI "8b") (DF "8b") +- (SI "8b")]) ++ (SI "8b") (SF "8b")]) + + ;; Define element mode for each vector mode. + (define_mode_attr VEL [(V8QI "QI") (V16QI "QI") (VNx16QI "QI") +Index: gcc/config/aarch64/aarch64.md +=================================================================== +--- a/src/gcc/config/aarch64/aarch64.md (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/config/aarch64/aarch64.md (.../branches/gcc-8-branch) +@@ -189,6 +189,7 @@ + UNSPEC_CLASTB + UNSPEC_FADDA + UNSPEC_REV_SUBREG ++ UNSPEC_COPYSIGN + ]) + + (define_c_enum "unspecv" [ +@@ -974,8 +975,8 @@ + (match_operand:GPI 1 "general_operand" ""))] + "" + " +- if (MEM_P (operands[0]) && CONST_INT_P (operands[1]) +- && <MODE>mode == DImode ++ if (MEM_P (operands[0]) && !MEM_VOLATILE_P (operands[0]) ++ && CONST_INT_P (operands[1]) && <MODE>mode == DImode + && aarch64_split_dimode_const_store (operands[0], operands[1])) + DONE; + +@@ -5412,7 +5413,7 @@ + [(match_operand:GPI 0 "register_operand") + (match_operand:GPF 1 "register_operand")] + "TARGET_FLOAT +- && ((GET_MODE_SIZE (<GPF:MODE>mode) <= GET_MODE_SIZE (<GPI:MODE>mode)) ++ && ((GET_MODE_BITSIZE (<GPF:MODE>mode) <= LONG_TYPE_SIZE) + || !flag_trapping_math || flag_fp_int_builtin_inexact)" + { + rtx cvt = gen_reg_rtx (<GPF:MODE>mode); +@@ -5427,49 +5428,48 @@ + ;; LDR d2, #(1 << 63) + ;; BSL v2.8b, [y], [x] + ;; +-;; or another, equivalent, sequence using one of BSL/BIT/BIF. +-;; aarch64_simd_bsldf will select the best suited of these instructions +-;; to generate based on register allocation, and knows how to partially +-;; constant fold based on the values of X and Y, so expand through that. ++;; or another, equivalent, sequence using one of BSL/BIT/BIF. Because ++;; we expect these operations to nearly always operate on ++;; floating-point values, we do not want the operation to be ++;; simplified into a bit-field insert operation that operates on the ++;; integer side, since typically that would involve three inter-bank ++;; register copies. As we do not expect copysign to be followed by ++;; other logical operations on the result, it seems preferable to keep ++;; this as an unspec operation, rather than exposing the underlying ++;; logic to the compiler. + +-(define_expand "copysigndf3" +- [(match_operand:DF 0 "register_operand") +- (match_operand:DF 1 "register_operand") +- (match_operand:DF 2 "register_operand")] ++(define_expand "copysign<GPF:mode>3" ++ [(match_operand:GPF 0 "register_operand") ++ (match_operand:GPF 1 "register_operand") ++ (match_operand:GPF 2 "register_operand")] + "TARGET_FLOAT && TARGET_SIMD" + { +- rtx mask = gen_reg_rtx (DImode); +- emit_move_insn (mask, GEN_INT (HOST_WIDE_INT_1U << 63)); +- emit_insn (gen_aarch64_simd_bsldf (operands[0], mask, +- operands[2], operands[1])); ++ rtx bitmask = gen_reg_rtx (<V_INT_EQUIV>mode); ++ emit_move_insn (bitmask, GEN_INT (HOST_WIDE_INT_M1U ++ << (GET_MODE_BITSIZE (<MODE>mode) - 1))); ++ emit_insn (gen_copysign<mode>3_insn (operands[0], operands[1], operands[2], ++ bitmask)); + DONE; + } + ) + +-;; As above, but we must first get to a 64-bit value if we wish to use +-;; aarch64_simd_bslv2sf. +- +-(define_expand "copysignsf3" +- [(match_operand:SF 0 "register_operand") +- (match_operand:SF 1 "register_operand") +- (match_operand:SF 2 "register_operand")] ++(define_insn "copysign<GPF:mode>3_insn" ++ [(set (match_operand:GPF 0 "register_operand" "=w,w,w,r") ++ (unspec:GPF [(match_operand:GPF 1 "register_operand" "w,0,w,r") ++ (match_operand:GPF 2 "register_operand" "w,w,0,0") ++ (match_operand:<V_INT_EQUIV> 3 "register_operand" ++ "0,w,w,X")] ++ UNSPEC_COPYSIGN))] + "TARGET_FLOAT && TARGET_SIMD" +-{ +- rtx v_bitmask = gen_reg_rtx (V2SImode); +- +- /* Juggle modes to get us in to a vector mode for BSL. */ +- rtx op1 = lowpart_subreg (DImode, operands[1], SFmode); +- rtx op2 = lowpart_subreg (V2SFmode, operands[2], SFmode); +- rtx tmp = gen_reg_rtx (V2SFmode); +- emit_move_insn (v_bitmask, +- aarch64_simd_gen_const_vector_dup (V2SImode, +- HOST_WIDE_INT_M1U << 31)); +- emit_insn (gen_aarch64_simd_bslv2sf (tmp, v_bitmask, op2, op1)); +- emit_move_insn (operands[0], lowpart_subreg (SFmode, tmp, V2SFmode)); +- DONE; +-} ++ "@ ++ bsl\\t%0.<Vbtype>, %2.<Vbtype>, %1.<Vbtype> ++ bit\\t%0.<Vbtype>, %2.<Vbtype>, %3.<Vbtype> ++ bif\\t%0.<Vbtype>, %1.<Vbtype>, %3.<Vbtype> ++ bfxil\\t%<w1>0, %<w1>1, #0, <sizem1>" ++ [(set_attr "type" "neon_bsl<q>,neon_bsl<q>,neon_bsl<q>,bfm")] + ) + ++ + ;; For xorsign (x, y), we want to generate: + ;; + ;; LDR d2, #1<<63 +Index: gcc/config/aarch64/aarch64-option-extensions.def +=================================================================== +--- a/src/gcc/config/aarch64/aarch64-option-extensions.def (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/config/aarch64/aarch64-option-extensions.def (.../branches/gcc-8-branch) +@@ -21,88 +21,97 @@ + + Before using #include to read this file, define a macro: + +- AARCH64_OPT_EXTENSION(EXT_NAME, FLAG_CANONICAL, FLAGS_ON, FLAGS_OFF, FEATURE_STRING) ++ AARCH64_OPT_EXTENSION(EXT_NAME, FLAG_CANONICAL, FLAGS_ON, FLAGS_OFF, ++ SYNTHETIC, FEATURE_STRING) + +- EXT_NAME is the name of the extension, represented as a string constant. +- FLAGS_CANONICAL is the canonical internal name for this flag. +- FLAGS_ON are the bitwise-or of the features that enabling the extension +- adds, or zero if enabling this extension has no effect on other features. +- FLAGS_OFF are the bitwise-or of the features that disabling the extension +- removes, or zero if disabling this extension has no effect on other +- features. +- FEAT_STRING is a string containing the entries in the 'Features' field of +- /proc/cpuinfo on a GNU/Linux system that correspond to this architecture +- extension being available. Sometimes multiple entries are needed to enable +- the extension (for example, the 'crypto' extension depends on four +- entries: aes, pmull, sha1, sha2 being present). In that case this field +- should contain a space (" ") separated list of the strings in 'Features' +- that are required. Their order is not important. */ ++ - EXT_NAME is the name of the extension, represented as a string constant. ++ - FLAGS_CANONICAL is the canonical internal name for this flag. ++ - FLAGS_ON are the bitwise-or of the features that enabling the extension ++ adds, or zero if enabling this extension has no effect on other features. ++ - FLAGS_OFF are the bitwise-or of the features that disabling the extension ++ removes, or zero if disabling this extension has no effect on other ++ features. ++ - SYNTHETIC is a boolean to indicate whether the option is a purely synthetic ++ grouping of options and that the option itself has no feature bit (e.g. ++ crypto). This is used to determine when sum of the individual options in ++ FLAGS_ON can be replaced by FLAG_CANONICAL in options minimization. If the ++ group is synthetic then they can be replaced when all options in FLAGS_ON ++ are enabled, otherwise they can only be replaced when ++ FLAGS_ON | FLAG_CANONICAL are enabled. ++ - FEAT_STRING is a string containing the entries in the 'Features' field of ++ /proc/cpuinfo on a GNU/Linux system that correspond to this architecture ++ extension being available. Sometimes multiple entries are needed to enable ++ the extension (for example, the 'crypto' extension depends on four ++ entries: aes, pmull, sha1, sha2 being present). In that case this field ++ should contain a space (" ") separated list of the strings in 'Features' ++ that are required. Their order is not important. An empty string means ++ do not detect this feature during auto detection. */ + ++/* NOTE: This file is being parsed by config.gcc and so the ++ AARCH64_OPT_EXTENSION must adhere to a strict format: ++ 1) No space between the AARCH64_OPT_EXTENSION and the opening (. ++ 2) No space between the opening ( and the extension name. ++ 3) No space after the extension name before the ,. ++ 4) Spaces are only allowed after a , and around |. ++ 5) Everything must be on one line. */ ++ + /* Enabling "fp" just enables "fp". + Disabling "fp" also disables "simd", "crypto", "fp16", "aes", "sha2", + "sha3", sm3/sm4 and "sve". */ +-AARCH64_OPT_EXTENSION("fp", AARCH64_FL_FP, 0, AARCH64_FL_SIMD | AARCH64_FL_CRYPTO |\ +- AARCH64_FL_F16 | AARCH64_FL_AES | AARCH64_FL_SHA2 |\ +- AARCH64_FL_SHA3 | AARCH64_FL_SM4 | AARCH64_FL_SVE, "fp") ++AARCH64_OPT_EXTENSION("fp", AARCH64_FL_FP, 0, AARCH64_FL_SIMD | AARCH64_FL_CRYPTO | AARCH64_FL_F16 | AARCH64_FL_AES | AARCH64_FL_SHA2 | AARCH64_FL_SHA3 | AARCH64_FL_SM4 | AARCH64_FL_SVE, false, "fp") + + /* Enabling "simd" also enables "fp". + Disabling "simd" also disables "crypto", "dotprod", "aes", "sha2", "sha3", + "sm3/sm4" and "sve". */ +-AARCH64_OPT_EXTENSION("simd", AARCH64_FL_SIMD, AARCH64_FL_FP, AARCH64_FL_CRYPTO |\ +- AARCH64_FL_DOTPROD | AARCH64_FL_AES | AARCH64_FL_SHA2 |\ +- AARCH64_FL_SHA3 | AARCH64_FL_SM4 | AARCH64_FL_SVE, +- "asimd") ++AARCH64_OPT_EXTENSION("simd", AARCH64_FL_SIMD, AARCH64_FL_FP, AARCH64_FL_CRYPTO | AARCH64_FL_DOTPROD | AARCH64_FL_AES | AARCH64_FL_SHA2 | AARCH64_FL_SHA3 | AARCH64_FL_SM4 | AARCH64_FL_SVE, false, "asimd") + +-/* Enabling "crypto" also enables "fp" and "simd". ++/* Enabling "crypto" also enables "fp", "simd", "aes" and "sha2". + Disabling "crypto" disables "crypto", "aes", "sha2", "sha3" and "sm3/sm4". */ +-AARCH64_OPT_EXTENSION("crypto", AARCH64_FL_CRYPTO, AARCH64_FL_FP | AARCH64_FL_SIMD,\ +- AARCH64_FL_AES | AARCH64_FL_SHA2 |AARCH64_FL_SHA3 | AARCH64_FL_SM4,\ +- "aes pmull sha1 sha2") ++AARCH64_OPT_EXTENSION("crypto", AARCH64_FL_CRYPTO, AARCH64_FL_FP | AARCH64_FL_SIMD | AARCH64_FL_AES | AARCH64_FL_SHA2, AARCH64_FL_AES | AARCH64_FL_SHA2 |AARCH64_FL_SHA3 | AARCH64_FL_SM4, true, "aes pmull sha1 sha2") + + /* Enabling or disabling "crc" only changes "crc". */ +-AARCH64_OPT_EXTENSION("crc", AARCH64_FL_CRC, 0, 0, "crc32") ++AARCH64_OPT_EXTENSION("crc", AARCH64_FL_CRC, 0, 0, false, "crc32") + + /* Enabling or disabling "lse" only changes "lse". */ +-AARCH64_OPT_EXTENSION("lse", AARCH64_FL_LSE, 0, 0, "atomics") ++AARCH64_OPT_EXTENSION("lse", AARCH64_FL_LSE, 0, 0, false, "atomics") + + /* Enabling "fp16" also enables "fp". + Disabling "fp16" disables "fp16", "fp16fml" and "sve". */ +-AARCH64_OPT_EXTENSION("fp16", AARCH64_FL_F16, AARCH64_FL_FP, +- AARCH64_FL_F16FML | AARCH64_FL_SVE, "fphp asimdhp") ++AARCH64_OPT_EXTENSION("fp16", AARCH64_FL_F16, AARCH64_FL_FP, AARCH64_FL_F16FML | AARCH64_FL_SVE, false, "fphp asimdhp") + + /* Enabling or disabling "rcpc" only changes "rcpc". */ +-AARCH64_OPT_EXTENSION("rcpc", AARCH64_FL_RCPC, 0, 0, "lrcpc") ++AARCH64_OPT_EXTENSION("rcpc", AARCH64_FL_RCPC, 0, 0, false, "lrcpc") + + /* Enabling "rdma" also enables "fp", "simd". + Disabling "rdma" just disables "rdma". */ +-AARCH64_OPT_EXTENSION("rdma", AARCH64_FL_RDMA, AARCH64_FL_FP | AARCH64_FL_SIMD, 0, "asimdrdm") ++AARCH64_OPT_EXTENSION("rdma", AARCH64_FL_RDMA, AARCH64_FL_FP | AARCH64_FL_SIMD, 0, false, "asimdrdm") + + /* Enabling "dotprod" also enables "simd". + Disabling "dotprod" only disables "dotprod". */ +-AARCH64_OPT_EXTENSION("dotprod", AARCH64_FL_DOTPROD, AARCH64_FL_SIMD, 0, "asimddp") ++AARCH64_OPT_EXTENSION("dotprod", AARCH64_FL_DOTPROD, AARCH64_FL_SIMD, 0, false, "asimddp") + + /* Enabling "aes" also enables "simd". + Disabling "aes" just disables "aes". */ +-AARCH64_OPT_EXTENSION("aes", AARCH64_FL_AES, AARCH64_FL_SIMD, 0, "aes") ++AARCH64_OPT_EXTENSION("aes", AARCH64_FL_AES, AARCH64_FL_SIMD, 0, false, "aes") + + /* Enabling "sha2" also enables "simd". + Disabling "sha2" just disables "sha2". */ +-AARCH64_OPT_EXTENSION("sha2", AARCH64_FL_SHA2, AARCH64_FL_SIMD, 0, "sha1 sha2") ++AARCH64_OPT_EXTENSION("sha2", AARCH64_FL_SHA2, AARCH64_FL_SIMD, 0, false, "sha1 sha2") + + /* Enabling "sha3" enables "simd" and "sha2". + Disabling "sha3" just disables "sha3". */ +-AARCH64_OPT_EXTENSION("sha3", AARCH64_FL_SHA3, AARCH64_FL_SIMD | AARCH64_FL_SHA2, 0, "sha3 sha512") ++AARCH64_OPT_EXTENSION("sha3", AARCH64_FL_SHA3, AARCH64_FL_SIMD | AARCH64_FL_SHA2, 0, false, "sha3 sha512") + + /* Enabling "sm4" also enables "simd". + Disabling "sm4" just disables "sm4". */ +-AARCH64_OPT_EXTENSION("sm4", AARCH64_FL_SM4, AARCH64_FL_SIMD, 0, "sm3 sm4") ++AARCH64_OPT_EXTENSION("sm4", AARCH64_FL_SM4, AARCH64_FL_SIMD, 0, false, "sm3 sm4") + + /* Enabling "fp16fml" also enables "fp" and "fp16". + Disabling "fp16fml" just disables "fp16fml". */ +-AARCH64_OPT_EXTENSION("fp16fml", AARCH64_FL_F16FML, AARCH64_FL_FP | AARCH64_FL_F16, 0, "asimdfml") ++AARCH64_OPT_EXTENSION("fp16fml", AARCH64_FL_F16FML, AARCH64_FL_FP | AARCH64_FL_F16, 0, false, "asimdfml") + + /* Enabling "sve" also enables "fp16", "fp" and "simd". + Disabling "sve" just disables "sve". */ +-AARCH64_OPT_EXTENSION("sve", AARCH64_FL_SVE, AARCH64_FL_FP | AARCH64_FL_SIMD | AARCH64_FL_F16, 0, "sve") ++AARCH64_OPT_EXTENSION("sve", AARCH64_FL_SVE, AARCH64_FL_FP | AARCH64_FL_SIMD | AARCH64_FL_F16, 0, false, "sve") + + #undef AARCH64_OPT_EXTENSION +Index: gcc/config/aarch64/aarch64-c.c +=================================================================== +--- a/src/gcc/config/aarch64/aarch64-c.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/config/aarch64/aarch64-c.c (.../branches/gcc-8-branch) +@@ -146,6 +146,7 @@ + builtin_define_with_int_value ("__ARM_FEATURE_SVE_BITS", bits); + } + ++ aarch64_def_or_undef (TARGET_LSE, "__ARM_FEATURE_ATOMICS", pfile); + aarch64_def_or_undef (TARGET_AES, "__ARM_FEATURE_AES", pfile); + aarch64_def_or_undef (TARGET_SHA2, "__ARM_FEATURE_SHA2", pfile); + aarch64_def_or_undef (TARGET_SHA3, "__ARM_FEATURE_SHA3", pfile); +Index: gcc/config/aarch64/aarch64.c +=================================================================== +--- a/src/gcc/config/aarch64/aarch64.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/config/aarch64/aarch64.c (.../branches/gcc-8-branch) +@@ -15623,7 +15623,7 @@ + return true; + if (d->vec_flags == VEC_SVE_DATA) + return aarch64_evpc_sve_tbl (d); +- else if (d->vec_flags == VEC_SVE_DATA) ++ else if (d->vec_flags == VEC_ADVSIMD) + return aarch64_evpc_tbl (d); + } + return false; +Index: gcc/config/rs6000/darwin64.h +=================================================================== +--- a/src/gcc/config/rs6000/darwin64.h (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/config/rs6000/darwin64.h (.../branches/gcc-8-branch) +@@ -1,32 +0,0 @@ +-/* Target definitions for PowerPC running Darwin (Mac OS X). +- Copyright (C) 2006-2018 Free Software Foundation, Inc. +- Contributed by Apple Computer 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. +- +- You should have received a copy of the GNU General Public License +- along with GCC; see the file COPYING3. If not see +- <http://www.gnu.org/licenses/>. */ +- +-#undef TARGET_DEFAULT +-#define TARGET_DEFAULT (MASK_POWERPC64 | MASK_64BIT \ +- | MASK_MULTIPLE | MASK_PPC_GFXOPT) +- +-#undef DARWIN_ARCH_SPEC +-#define DARWIN_ARCH_SPEC "%{m32:ppc;:ppc64}" +- +-#undef DARWIN_SUBARCH_SPEC +-#define DARWIN_SUBARCH_SPEC DARWIN_ARCH_SPEC +- +-#undef DARWIN_CRT2_SPEC +-#define DARWIN_CRT2_SPEC "" +Index: gcc/config/rs6000/t-darwin64 +=================================================================== +--- a/src/gcc/config/rs6000/t-darwin64 (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/config/rs6000/t-darwin64 (.../branches/gcc-8-branch) +@@ -1,2 +0,0 @@ +-MULTILIB_OPTIONS = m32 +-MULTILIB_DIRNAMES = ppc +Index: gcc/config/rs6000/t-darwin8 +=================================================================== +--- a/src/gcc/config/rs6000/t-darwin8 (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/config/rs6000/t-darwin8 (.../branches/gcc-8-branch) +@@ -1,3 +0,0 @@ +-# 64-bit libraries can only be built in Darwin 8.x or later. +-MULTILIB_OPTIONS = m64 +-MULTILIB_DIRNAMES = ppc64 +Index: gcc/config/rs6000/t-darwin64-biarch +=================================================================== +--- a/src/gcc/config/rs6000/t-darwin64-biarch (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/config/rs6000/t-darwin64-biarch (.../branches/gcc-8-branch) +@@ -0,0 +1,2 @@ ++MULTILIB_OPTIONS = m32 ++MULTILIB_DIRNAMES = ppc +Index: gcc/config/rs6000/darwin.md +=================================================================== +--- a/src/gcc/config/rs6000/darwin.md (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/config/rs6000/darwin.md (.../branches/gcc-8-branch) +@@ -137,38 +137,6 @@ + [(set_attr "type" "store") + (set_attr "length" "4")]) + +-;; 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") +- (set_attr "length" "4")]) +- +-(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") +- (set_attr "length" "4")]) +- +-(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") +- (set_attr "length" "4")]) +- + ;; Mach-O PIC trickery. + (define_expand "macho_high" + [(set (match_operand 0 "") +Index: gcc/config/rs6000/mmintrin.h +=================================================================== +--- a/src/gcc/config/rs6000/mmintrin.h (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/config/rs6000/mmintrin.h (.../branches/gcc-8-branch) +@@ -581,7 +581,7 @@ + extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__)) + _m_psubd (__m64 __m1, __m64 __m2) + { +- return _mm_add_pi32 (__m1, __m2); ++ return _mm_sub_pi32 (__m1, __m2); + } + + extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__)) +Index: gcc/config/rs6000/t-darwin32-biarch +=================================================================== +--- a/src/gcc/config/rs6000/t-darwin32-biarch (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/config/rs6000/t-darwin32-biarch (.../branches/gcc-8-branch) +@@ -0,0 +1,3 @@ ++# 64-bit libraries can only be built in Darwin 8.x or later. ++MULTILIB_OPTIONS = m64 ++MULTILIB_DIRNAMES = ppc64 +Index: gcc/config/rs6000/predicates.md +=================================================================== +--- a/src/gcc/config/rs6000/predicates.md (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/config/rs6000/predicates.md (.../branches/gcc-8-branch) +@@ -1085,8 +1085,7 @@ + return 1; + + /* Allow any integer constant. */ +- if (GET_MODE_CLASS (mode) == MODE_INT +- && CONST_SCALAR_INT_P (op)) ++ if (SCALAR_INT_MODE_P (mode) && CONST_SCALAR_INT_P (op)) + return 1; + + /* Allow easy vector constants. */ +Index: gcc/config/rs6000/power9.md +=================================================================== +--- a/src/gcc/config/rs6000/power9.md (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/config/rs6000/power9.md (.../branches/gcc-8-branch) +@@ -236,6 +236,9 @@ + (eq_attr "cpu" "power9")) + "DU_super_power9,LSU_pair_power9") + ++; Store forwarding latency is 6 ++(define_bypass 6 "power9-*store*" "power9-*load*") ++ + (define_insn_reservation "power9-larx" 4 + (and (eq_attr "type" "load_l") + (eq_attr "cpu" "power9")) +Index: gcc/config/rs6000/t-linux +=================================================================== +--- a/src/gcc/config/rs6000/t-linux (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/config/rs6000/t-linux (.../branches/gcc-8-branch) +@@ -4,7 +4,7 @@ + ifneq (,$(findstring powerpc64,$(target))) + MULTILIB_OSDIRNAMES := .=../lib64$(call if_multiarch,:powerpc64-linux-gnu) + else +-MULTIARCH_DIRNAME := powerpc-linux-gnu ++MULTIARCH_DIRNAME := $(call if_multiarch,powerpc-linux-gnu) + endif + ifneq (,$(findstring powerpcle,$(target))) + MULTIARCH_DIRNAME := $(subst -linux,le-linux,$(MULTIARCH_DIRNAME)) +Index: gcc/config/rs6000/darwin32-biarch.h +=================================================================== +--- a/src/gcc/config/rs6000/darwin32-biarch.h (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/config/rs6000/darwin32-biarch.h (.../branches/gcc-8-branch) +@@ -0,0 +1,49 @@ ++/* Target definitions for PowerPC running Darwin (Mac OS X) for a 32b host ++ with a 64b miultilib. ++ Copyright (C) 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. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ <http://www.gnu.org/licenses/>. */ ++ ++#undef DARWIN_ARCH_SPEC ++#define DARWIN_ARCH_SPEC "%{m64:ppc64;:ppc}" ++ ++#undef DARWIN_SUBARCH_SPEC ++#define DARWIN_SUBARCH_SPEC " \ ++ %{m64: ppc64} \ ++ %{!m64: \ ++ %{mcpu=601:ppc601; \ ++ mcpu=603:ppc603; \ ++ mcpu=603e:ppc603; \ ++ mcpu=604:ppc604; \ ++ mcpu=604e:ppc604e; \ ++ mcpu=740:ppc750; \ ++ mcpu=750:ppc750; \ ++ mcpu=G3:ppc750; \ ++ mcpu=7400:ppc7400; \ ++ mcpu=G4:ppc7400; \ ++ mcpu=7450:ppc7450; \ ++ mcpu=970:ppc970; \ ++ mcpu=power4:ppc970; \ ++ mcpu=G5:ppc970; \ ++ :ppc}}" ++ ++#undef SUBTARGET_EXTRA_SPECS ++#define SUBTARGET_EXTRA_SPECS \ ++ DARWIN_EXTRA_SPECS \ ++ { "darwin_arch", DARWIN_ARCH_SPEC }, \ ++ { "darwin_crt2", DARWIN_CRT2_SPEC }, \ ++ { "darwin_subarch", DARWIN_SUBARCH_SPEC }, +Index: gcc/config/rs6000/darwin64-biarch.h +=================================================================== +--- a/src/gcc/config/rs6000/darwin64-biarch.h (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/config/rs6000/darwin64-biarch.h (.../branches/gcc-8-branch) +@@ -0,0 +1,38 @@ ++/* Target definitions for PowerPC64 running Darwin (Mac OS X) for a 64b host ++ supporting a 32b multilib. ++ Copyright (C) 2006-2019 Free Software Foundation, Inc. ++ Contributed by Apple Computer 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. ++ ++ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ <http://www.gnu.org/licenses/>. */ ++ ++#undef TARGET_DEFAULT ++#define TARGET_DEFAULT (MASK_POWERPC64 | MASK_64BIT \ ++ | MASK_MULTIPLE | MASK_PPC_GFXOPT) ++ ++#undef DARWIN_ARCH_SPEC ++#define DARWIN_ARCH_SPEC "%{m32:ppc;:ppc64}" ++ ++/* Actually, there's really only 970 as an active option. */ ++#undef DARWIN_SUBARCH_SPEC ++#define DARWIN_SUBARCH_SPEC DARWIN_ARCH_SPEC ++ ++#undef SUBTARGET_EXTRA_SPECS ++#define SUBTARGET_EXTRA_SPECS \ ++ DARWIN_EXTRA_SPECS \ ++ { "darwin_arch", DARWIN_ARCH_SPEC }, \ ++ { "darwin_crt2", "" }, \ ++ { "darwin_subarch", DARWIN_SUBARCH_SPEC }, +Index: gcc/config/rs6000/rs6000-builtin.def +=================================================================== +--- a/src/gcc/config/rs6000/rs6000-builtin.def (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/config/rs6000/rs6000-builtin.def (.../branches/gcc-8-branch) +@@ -1048,12 +1048,12 @@ + BU_ALTIVEC_2 (VADDSWS, "vaddsws", CONST, altivec_vaddsws) + BU_ALTIVEC_2 (VAND, "vand", CONST, andv4si3) + BU_ALTIVEC_2 (VANDC, "vandc", CONST, andcv4si3) +-BU_ALTIVEC_2 (VAVGUB, "vavgub", CONST, altivec_vavgub) +-BU_ALTIVEC_2 (VAVGSB, "vavgsb", CONST, altivec_vavgsb) +-BU_ALTIVEC_2 (VAVGUH, "vavguh", CONST, altivec_vavguh) +-BU_ALTIVEC_2 (VAVGSH, "vavgsh", CONST, altivec_vavgsh) +-BU_ALTIVEC_2 (VAVGUW, "vavguw", CONST, altivec_vavguw) +-BU_ALTIVEC_2 (VAVGSW, "vavgsw", CONST, altivec_vavgsw) ++BU_ALTIVEC_2 (VAVGUB, "vavgub", CONST, uavgv16qi3_ceil) ++BU_ALTIVEC_2 (VAVGSB, "vavgsb", CONST, avgv16qi3_ceil) ++BU_ALTIVEC_2 (VAVGUH, "vavguh", CONST, uavgv8hi3_ceil) ++BU_ALTIVEC_2 (VAVGSH, "vavgsh", CONST, avgv8hi3_ceil) ++BU_ALTIVEC_2 (VAVGUW, "vavguw", CONST, uavgv4si3_ceil) ++BU_ALTIVEC_2 (VAVGSW, "vavgsw", CONST, avgv4si3_ceil) + BU_ALTIVEC_2 (VCFUX, "vcfux", CONST, altivec_vcfux) + BU_ALTIVEC_2 (VCFSX, "vcfsx", CONST, altivec_vcfsx) + BU_ALTIVEC_2 (VCMPBFP, "vcmpbfp", CONST, altivec_vcmpbfp) +@@ -1223,26 +1223,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) +@@ -1250,10 +1250,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) +@@ -1764,15 +1764,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) +@@ -1781,13 +1781,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) +@@ -2442,13 +2442,22 @@ + BU_P9_OVERLOAD_2 (CMPEQB, "byte_in_set") + + /* 1 argument crypto functions. */ +-BU_CRYPTO_1 (VSBOX, "vsbox", CONST, crypto_vsbox) ++BU_CRYPTO_1 (VSBOX, "vsbox", CONST, crypto_vsbox_v2di) ++BU_CRYPTO_1 (VSBOX_BE, "vsbox_be", CONST, crypto_vsbox_v16qi) + + /* 2 argument crypto functions. */ +-BU_CRYPTO_2 (VCIPHER, "vcipher", CONST, crypto_vcipher) +-BU_CRYPTO_2 (VCIPHERLAST, "vcipherlast", CONST, crypto_vcipherlast) +-BU_CRYPTO_2 (VNCIPHER, "vncipher", CONST, crypto_vncipher) +-BU_CRYPTO_2 (VNCIPHERLAST, "vncipherlast", CONST, crypto_vncipherlast) ++BU_CRYPTO_2 (VCIPHER, "vcipher", CONST, crypto_vcipher_v2di) ++BU_CRYPTO_2 (VCIPHER_BE, "vcipher_be", CONST, crypto_vcipher_v16qi) ++BU_CRYPTO_2 (VCIPHERLAST, "vcipherlast", ++ CONST, crypto_vcipherlast_v2di) ++BU_CRYPTO_2 (VCIPHERLAST_BE, "vcipherlast_be", ++ CONST, crypto_vcipherlast_v16qi) ++BU_CRYPTO_2 (VNCIPHER, "vncipher", CONST, crypto_vncipher_v2di) ++BU_CRYPTO_2 (VNCIPHER_BE, "vncipher_be", CONST, crypto_vncipher_v16qi) ++BU_CRYPTO_2 (VNCIPHERLAST, "vncipherlast", ++ CONST, crypto_vncipherlast_v2di) ++BU_CRYPTO_2 (VNCIPHERLAST_BE, "vncipherlast_be", ++ CONST, crypto_vncipherlast_v16qi) + BU_CRYPTO_2A (VPMSUMB, "vpmsumb", CONST, crypto_vpmsumb) + BU_CRYPTO_2A (VPMSUMH, "vpmsumh", CONST, crypto_vpmsumh) + BU_CRYPTO_2A (VPMSUMW, "vpmsumw", CONST, crypto_vpmsumw) +Index: gcc/config/rs6000/rs6000-c.c +=================================================================== +--- a/src/gcc/config/rs6000/rs6000-c.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/config/rs6000/rs6000-c.c (.../branches/gcc-8-branch) +@@ -6605,12 +6605,14 @@ + + arg2 = fold_for_warn (arg2); + +- /* If the second argument is an integer constant, if the value is in +- the expected range, generate the built-in code if we can. We need +- 64-bit and direct move to extract the small integer vectors. */ +- if (TREE_CODE (arg2) == INTEGER_CST +- && wi::ltu_p (wi::to_wide (arg2), nunits)) ++ /* If the second argument is an integer constant, generate ++ the built-in code if we can. We need 64-bit and direct ++ move to extract the small integer vectors. */ ++ if (TREE_CODE (arg2) == INTEGER_CST) + { ++ wide_int selector = wi::to_wide (arg2); ++ selector = wi::umod_trunc (selector, nunits); ++ arg2 = wide_int_to_tree (TREE_TYPE (arg2), selector); + switch (mode) + { + default: +@@ -6785,11 +6787,13 @@ + /* If we can use the VSX xxpermdi instruction, use that for insert. */ + mode = TYPE_MODE (arg1_type); + if ((mode == V2DFmode || mode == V2DImode) && VECTOR_UNIT_VSX_P (mode) +- && TREE_CODE (arg2) == INTEGER_CST +- && wi::ltu_p (wi::to_wide (arg2), 2)) ++ && TREE_CODE (arg2) == INTEGER_CST) + { ++ wide_int selector = wi::to_wide (arg2); ++ selector = wi::umod_trunc (selector, 2); + tree call = NULL_TREE; + ++ arg2 = wide_int_to_tree (TREE_TYPE (arg2), selector); + if (mode == V2DFmode) + call = rs6000_builtin_decls[VSX_BUILTIN_VEC_SET_V2DF]; + else if (mode == V2DImode) +@@ -6801,11 +6805,12 @@ + return build_call_expr (call, 3, arg1, arg0, arg2); + } + else if (mode == V1TImode && VECTOR_UNIT_VSX_P (mode) +- && TREE_CODE (arg2) == INTEGER_CST +- && wi::eq_p (wi::to_wide (arg2), 0)) ++ && TREE_CODE (arg2) == INTEGER_CST) + { + tree call = rs6000_builtin_decls[VSX_BUILTIN_VEC_SET_V1TI]; ++ wide_int selector = wi::zero(32); + ++ arg2 = wide_int_to_tree (TREE_TYPE (arg2), selector); + /* Note, __builtin_vec_insert_<xxx> has vector and scalar types + reversed. */ + return build_call_expr (call, 3, arg1, arg0, arg2); +@@ -6813,10 +6818,13 @@ + + /* Build *(((arg1_inner_type*)&(vector type){arg1})+arg2) = arg0. */ + arg1_inner_type = TREE_TYPE (arg1_type); +- arg2 = build_binary_op (loc, BIT_AND_EXPR, arg2, +- build_int_cst (TREE_TYPE (arg2), +- TYPE_VECTOR_SUBPARTS (arg1_type) +- - 1), 0); ++ if (TYPE_VECTOR_SUBPARTS (arg1_type) == 1) ++ arg2 = build_int_cst (TREE_TYPE (arg2), 0); ++ else ++ arg2 = build_binary_op (loc, BIT_AND_EXPR, arg2, ++ build_int_cst (TREE_TYPE (arg2), ++ TYPE_VECTOR_SUBPARTS (arg1_type) ++ - 1), 0); + decl = build_decl (loc, VAR_DECL, NULL_TREE, arg1_type); + DECL_EXTERNAL (decl) = 0; + TREE_PUBLIC (decl) = 0; +Index: gcc/config/rs6000/rs6000-p8swap.c +=================================================================== +--- a/src/gcc/config/rs6000/rs6000-p8swap.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/config/rs6000/rs6000-p8swap.c (.../branches/gcc-8-branch) +@@ -792,6 +792,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; + } + } + +@@ -2317,7 +2322,14 @@ + + /* Pre-pass to recombine lvx and stvx patterns so we don't lose info. */ + recombine_lvx_stvx_patterns (fun); ++ ++ /* Rebuild ud- and du-chains. */ ++ df_remove_problem (df_chain); + df_process_deferred_rescans (); ++ df_set_flags (DF_RD_PRUNE_DEAD_DEFS); ++ df_chain_add_problem (DF_DU_CHAIN | DF_UD_CHAIN); ++ df_analyze (); ++ df_set_flags (DF_DEFER_INSN_RESCAN); + + /* Allocate structure to represent webs of insns. */ + insn_entry = XCNEWVEC (swap_web_entry, get_max_uid ()); +Index: gcc/config/rs6000/darwin.h +=================================================================== +--- a/src/gcc/config/rs6000/darwin.h (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/config/rs6000/darwin.h (.../branches/gcc-8-branch) +@@ -53,17 +53,28 @@ + #define TARGET_OS_CPP_BUILTINS() \ + do \ + { \ +- if (!TARGET_64BIT) builtin_define ("__ppc__"); \ +- 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 { \ +@@ -98,11 +109,10 @@ + %<faltivec %<fno-altivec " \ + DARWIN_CC1_SPEC + +-#define DARWIN_ARCH_SPEC "%{m64:ppc64;:ppc}" ++/* Default to PPC for single arch builds. */ ++#define DARWIN_ARCH_SPEC "ppc" + + #define DARWIN_SUBARCH_SPEC " \ +- %{m64: ppc64} \ +- %{!m64: \ + %{mcpu=601:ppc601; \ + mcpu=603:ppc603; \ + mcpu=603e:ppc603; \ +@@ -117,12 +127,40 @@ + mcpu=970:ppc970; \ + mcpu=power4:ppc970; \ + mcpu=G5:ppc970; \ +- :ppc}}" ++ :ppc}" + +-/* crt2.o is at least partially required for 10.3.x and earlier. */ ++/* We need to jam the crt to 10.5 for 10.6 (Rosetta) use. */ ++#undef DARWIN_CRT1_SPEC ++#define DARWIN_CRT1_SPEC \ ++ "%:version-compare(!> 10.5 mmacosx-version-min= -lcrt1.o) \ ++ %: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. ++ 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 \ +@@ -265,9 +303,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)); \ +@@ -382,6 +420,7 @@ + do \ + { \ + DARWIN_REGISTER_TARGET_PRAGMAS(); \ ++ targetm.target_option.pragma_parse = rs6000_pragma_target_parse; \ + targetm.resolve_overloaded_builtin = altivec_resolve_overloaded_builtin; \ + } \ + while (0) +@@ -441,6 +480,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_8_3_0_release) ++++ b/src/gcc/config/rs6000/rs6000.c (.../branches/gcc-8-branch) +@@ -3880,10 +3880,22 @@ + rs6000_isa_flags |= OPTION_MASK_POWERPC64; + warning (0, "%qs requires PowerPC64 architecture, enabling", "-m64"); + } ++ ++ /* The linkers [ld64] that support 64Bit do not need the JBSR longcall ++ optimisation, and will not work with the most generic case (where the ++ symbol is undefined external, but there is no symbl stub). */ ++ if (TARGET_64BIT) ++ rs6000_default_long_calls = 0; ++ ++ /* ld_classic is (so far) still used for kernel (static) code, and supports ++ the JBSR longcall / branch islands. */ + if (flag_mkernel) + { + rs6000_default_long_calls = 1; +- rs6000_isa_flags |= OPTION_MASK_SOFT_FLOAT; ++ ++ /* Allow a kext author to do -mkernel -mhard-float. */ ++ if (! (rs6000_isa_flags_explicit & OPTION_MASK_SOFT_FLOAT)) ++ rs6000_isa_flags |= OPTION_MASK_SOFT_FLOAT; + } + + /* Make -m64 imply -maltivec. Darwin's 64-bit ABI includes +@@ -7374,7 +7386,6 @@ + default: + break; + case E_V1TImode: +- gcc_assert (INTVAL (elt) == 0 && inner_mode == TImode); + emit_move_insn (target, gen_lowpart (TImode, vec)); + break; + case E_V2DFmode: +@@ -7425,6 +7436,10 @@ + + switch (mode) + { ++ case E_V1TImode: ++ emit_move_insn (target, gen_lowpart (TImode, vec)); ++ return; ++ + case E_V2DFmode: + emit_insn (gen_vsx_extract_v2df_var (target, vec, elt)); + return; +@@ -7454,18 +7469,32 @@ + } + } + +- gcc_assert (CONST_INT_P (elt)); +- + /* Allocate mode-sized buffer. */ + mem = assign_stack_temp (mode, GET_MODE_SIZE (mode)); + + emit_move_insn (mem, vec); ++ if (CONST_INT_P (elt)) ++ { ++ int modulo_elt = INTVAL (elt) % GET_MODE_NUNITS (mode); + +- /* Add offset to field within buffer matching vector element. */ +- mem = adjust_address_nv (mem, inner_mode, +- INTVAL (elt) * GET_MODE_SIZE (inner_mode)); ++ /* Add offset to field within buffer matching vector element. */ ++ mem = adjust_address_nv (mem, inner_mode, ++ modulo_elt * GET_MODE_SIZE (inner_mode)); ++ emit_move_insn (target, adjust_address_nv (mem, inner_mode, 0)); ++ } ++ else ++ { ++ unsigned int ele_size = GET_MODE_SIZE (inner_mode); ++ rtx num_ele_m1 = GEN_INT (GET_MODE_NUNITS (mode) - 1); ++ rtx new_addr = gen_reg_rtx (Pmode); + +- emit_move_insn (target, adjust_address_nv (mem, inner_mode, 0)); ++ elt = gen_rtx_AND (Pmode, elt, num_ele_m1); ++ if (ele_size > 1) ++ elt = gen_rtx_MULT (Pmode, elt, GEN_INT (ele_size)); ++ new_addr = gen_rtx_PLUS (Pmode, XEXP (mem, 0), elt); ++ new_addr = change_address (mem, inner_mode, new_addr); ++ emit_move_insn (target, new_addr); ++ } + } + + /* Helper function to return the register number of a RTX. */ +@@ -7646,7 +7675,7 @@ + rtx tmp_altivec) + { + machine_mode mode = GET_MODE (src); +- machine_mode scalar_mode = GET_MODE (dest); ++ machine_mode scalar_mode = GET_MODE_INNER (GET_MODE (src)); + unsigned scalar_size = GET_MODE_SIZE (scalar_mode); + int byte_shift = exact_log2 (scalar_size); + +@@ -7657,6 +7686,10 @@ + systems. */ + if (MEM_P (src)) + { ++ int num_elements = GET_MODE_NUNITS (mode); ++ rtx num_ele_m1 = GEN_INT (num_elements - 1); ++ ++ emit_insn (gen_anddi3 (element, element, num_ele_m1)); + gcc_assert (REG_P (tmp_gpr)); + emit_move_insn (dest, rs6000_adjust_vec_address (dest, src, element, + tmp_gpr, scalar_mode)); +@@ -7665,7 +7698,9 @@ + + else if (REG_P (src) || SUBREG_P (src)) + { +- int bit_shift = byte_shift + 3; ++ int num_elements = GET_MODE_NUNITS (mode); ++ int bits_in_element = mode_to_bits (GET_MODE_INNER (mode)); ++ int bit_shift = 7 - exact_log2 (num_elements); + rtx element2; + int dest_regno = regno_or_subregno (dest); + int src_regno = regno_or_subregno (src); +@@ -7741,7 +7776,7 @@ + { + if (!VECTOR_ELT_ORDER_BIG) + { +- rtx num_ele_m1 = GEN_INT (GET_MODE_NUNITS (mode) - 1); ++ rtx num_ele_m1 = GEN_INT (num_elements - 1); + + emit_insn (gen_anddi3 (tmp_gpr, element, num_ele_m1)); + emit_insn (gen_subdi3 (tmp_gpr, num_ele_m1, tmp_gpr)); +@@ -7799,8 +7834,8 @@ + emit_insn (gen_vsx_vslo_v2di (tmp_altivec_di, src_v2di, + tmp_altivec)); + emit_move_insn (tmp_gpr_di, tmp_altivec_di); +- emit_insn (gen_ashrdi3 (tmp_gpr_di, tmp_gpr_di, +- GEN_INT (64 - (8 * scalar_size)))); ++ emit_insn (gen_lshrdi3 (tmp_gpr_di, tmp_gpr_di, ++ GEN_INT (64 - bits_in_element))); + return; + } + +@@ -8223,6 +8258,101 @@ + 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) ++{ ++ 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. +@@ -8257,7 +8387,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; + +@@ -12592,7 +12728,9 @@ + if (elt_mode == TDmode && (cum->fregno % 2) == 1) + cum->fregno++; + +- if (USE_FP_FOR_ARG_P (cum, elt_mode)) ++ if (USE_FP_FOR_ARG_P (cum, elt_mode) ++ && !(TARGET_AIX && !TARGET_ELF ++ && type != NULL && AGGREGATE_TYPE_P (type))) + { + rtx rvec[GP_ARG_NUM_REG + AGGR_ARG_NUM_REG + 1]; + rtx r, off; +@@ -12728,7 +12866,9 @@ + + align_words = rs6000_parm_start (mode, type, cum->words); + +- if (USE_FP_FOR_ARG_P (cum, elt_mode)) ++ if (USE_FP_FOR_ARG_P (cum, elt_mode) ++ && !(TARGET_AIX && !TARGET_ELF ++ && type != NULL && AGGREGATE_TYPE_P (type))) + { + unsigned long n_fpreg = (GET_MODE_SIZE (elt_mode) + 7) >> 3; + +@@ -15417,9 +15557,17 @@ + op0 = expand_normal (arg0); + op1 = expand_normal (arg1); + +- /* Call get_element_number to validate arg1 if it is a constant. */ + if (TREE_CODE (arg1) == INTEGER_CST) +- (void) get_element_number (TREE_TYPE (arg0), arg1); ++ { ++ unsigned HOST_WIDE_INT elt; ++ unsigned HOST_WIDE_INT size = TYPE_VECTOR_SUBPARTS (TREE_TYPE (arg0)); ++ unsigned int truncated_selector; ++ /* Even if !tree_fits_uhwi_p (arg1)), TREE_INT_CST_LOW (arg0) ++ returns low-order bits of INTEGER_CST for modulo indexing. */ ++ elt = TREE_INT_CST_LOW (arg1); ++ truncated_selector = elt % size; ++ op1 = GEN_INT (truncated_selector); ++ } + + tmode = TYPE_MODE (TREE_TYPE (TREE_TYPE (arg0))); + mode0 = TYPE_MODE (TREE_TYPE (arg0)); +@@ -16765,15 +16913,6 @@ + case ALTIVEC_BUILTIN_VSPLTISH: + case ALTIVEC_BUILTIN_VSPLTISW: + { +- int size; +- +- if (fn_code == ALTIVEC_BUILTIN_VSPLTISB) +- size = 8; +- else if (fn_code == ALTIVEC_BUILTIN_VSPLTISH) +- size = 16; +- else +- size = 32; +- + arg0 = gimple_call_arg (stmt, 0); + lhs = gimple_call_lhs (stmt); + +@@ -16780,8 +16919,7 @@ + /* Only fold the vec_splat_*() if the lower bits of arg 0 is a + 5-bit signed constant in range -16 to +15. */ + if (TREE_CODE (arg0) != INTEGER_CST +- || !IN_RANGE (sext_hwi(TREE_INT_CST_LOW (arg0), size), +- -16, 15)) ++ || !IN_RANGE (TREE_INT_CST_LOW (arg0), -16, 15)) + return false; + gimple_seq stmts = NULL; + location_t loc = gimple_location (stmt); +@@ -18261,6 +18399,7 @@ + { + /* unsigned 1 argument functions. */ + case CRYPTO_BUILTIN_VSBOX: ++ case CRYPTO_BUILTIN_VSBOX_BE: + case P8V_BUILTIN_VGBBD: + case MISC_BUILTIN_CDTBCD: + case MISC_BUILTIN_CBCDTD: +@@ -18276,9 +18415,13 @@ + case ALTIVEC_BUILTIN_VMULOUH: + case P8V_BUILTIN_VMULOUW: + case CRYPTO_BUILTIN_VCIPHER: ++ case CRYPTO_BUILTIN_VCIPHER_BE: + case CRYPTO_BUILTIN_VCIPHERLAST: ++ case CRYPTO_BUILTIN_VCIPHERLAST_BE: + case CRYPTO_BUILTIN_VNCIPHER: ++ case CRYPTO_BUILTIN_VNCIPHER_BE: + case CRYPTO_BUILTIN_VNCIPHERLAST: ++ case CRYPTO_BUILTIN_VNCIPHERLAST_BE: + case CRYPTO_BUILTIN_VPMSUMB: + case CRYPTO_BUILTIN_VPMSUMH: + case CRYPTO_BUILTIN_VPMSUMW: +@@ -21883,7 +22026,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); +@@ -25996,10 +26139,14 @@ + stack_limit_rtx, + GEN_INT (size))); + +- emit_insn (gen_elf_high (tmp_reg, toload)); +- emit_insn (gen_elf_low (tmp_reg, tmp_reg, toload)); +- emit_insn (gen_cond_trap (LTU, stack_reg, tmp_reg, +- const0_rtx)); ++ /* We cannot use r0 with elf_low. Lamely solve this problem by ++ moving registers around. */ ++ rtx r11_reg = gen_rtx_REG (Pmode, 11); ++ emit_move_insn (tmp_reg, r11_reg); ++ emit_insn (gen_elf_high (r11_reg, toload)); ++ emit_insn (gen_elf_low (r11_reg, r11_reg, toload)); ++ emit_insn (gen_cond_trap (LTU, stack_reg, r11_reg, const0_rtx)); ++ emit_move_insn (r11_reg, tmp_reg); + } + else + warning (0, "stack limit expression is not supported"); +@@ -33632,7 +33779,7 @@ + int cookie_operand_number) + { + static char buf[256]; +- if (darwin_emit_branch_islands ++ if (darwin_symbol_stubs + && GET_CODE (operands[dest_operand_number]) == SYMBOL_REF + && (INTVAL (operands[cookie_operand_number]) & CALL_LONG)) + { +@@ -34192,6 +34339,10 @@ + rs6000_xcoff_output_readwrite_section_asm_op, + &xcoff_private_data_section_name); + ++ read_only_private_data_section ++ = get_unnamed_section (0, rs6000_xcoff_output_readonly_section_asm_op, ++ &xcoff_private_rodata_section_name); ++ + tls_data_section + = get_unnamed_section (SECTION_TLS, + rs6000_xcoff_output_tls_section_asm_op, +@@ -34202,10 +34353,6 @@ + rs6000_xcoff_output_tls_section_asm_op, + &xcoff_private_data_section_name); + +- read_only_private_data_section +- = get_unnamed_section (0, rs6000_xcoff_output_readonly_section_asm_op, +- &xcoff_private_data_section_name); +- + toc_section + = get_unnamed_section (0, rs6000_xcoff_output_toc_section_asm_op, NULL); + +@@ -34386,6 +34533,8 @@ + main_input_filename, ".bss_"); + rs6000_gen_section_name (&xcoff_private_data_section_name, + main_input_filename, ".rw_"); ++ rs6000_gen_section_name (&xcoff_private_rodata_section_name, ++ main_input_filename, ".rop_"); + rs6000_gen_section_name (&xcoff_read_only_section_name, + main_input_filename, ".ro_"); + rs6000_gen_section_name (&xcoff_tls_data_section_name, +@@ -36605,11 +36754,21 @@ + unsigned int + rs6000_dbx_register_number (unsigned int regno, unsigned int format) + { +- /* Except for the above, we use the internal number for non-DWARF +- debug information, and also for .eh_frame. */ ++ /* We use the GCC 7 (and before) internal number for non-DWARF debug ++ information, and also for .eh_frame. */ + if ((format == 0 && write_symbols != DWARF2_DEBUG) || format == 2) +- return regno; ++ { ++ /* Translate the regnos to their numbers in GCC 7 (and before). */ ++ if (regno == TFHAR_REGNO) ++ regno = 114; ++ else if (regno == TFIAR_REGNO) ++ regno = 115; ++ else if (regno == TEXASR_REGNO) ++ regno = 116; + ++ return regno; ++ } ++ + /* On some platforms, we use the standard DWARF register + numbering for .debug_info and .debug_frame. */ + #ifdef RS6000_USE_DWARF_NUMBERING +@@ -36635,6 +36794,12 @@ + return 356; + if (regno == VSCR_REGNO) + return 67; ++ if (regno == TFHAR_REGNO) ++ return 228; ++ if (regno == TFIAR_REGNO) ++ return 229; ++ if (regno == TEXASR_REGNO) ++ return 230; + #endif + return regno; + } +@@ -37840,6 +38005,7 @@ + + /* Build result decl and add to function_decl. */ + tree t = build_decl (UNKNOWN_LOCATION, RESULT_DECL, NULL_TREE, ptr_type_node); ++ DECL_CONTEXT (t) = decl; + DECL_ARTIFICIAL (t) = 1; + DECL_IGNORED_P (t) = 1; + DECL_RESULT (decl) = t; +@@ -38061,25 +38227,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; + } + +Index: gcc/config/rs6000/vsx.md +=================================================================== +--- a/src/gcc/config/rs6000/vsx.md (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/config/rs6000/vsx.md (.../branches/gcc-8-branch) +@@ -3756,9 +3756,9 @@ + DONE; + }) + +-(define_insn_and_split "*vsx_extract_<VSX_EXTRACT_I:mode>_<SDI:mode>_var" +- [(set (match_operand:SDI 0 "gpc_reg_operand" "=r,r,r") +- (zero_extend:SDI ++(define_insn_and_split "*vsx_extract_<mode>_<VS_scalar>mode_var" ++ [(set (match_operand:<VS_scalar> 0 "gpc_reg_operand" "=r,r,r") ++ (zero_extend:<VS_scalar> + (unspec:<VSX_EXTRACT_I:VS_scalar> + [(match_operand:VSX_EXTRACT_I 1 "input_operand" "wK,v,m") + (match_operand:DI 2 "gpc_reg_operand" "r,r,r")] +@@ -3770,7 +3770,7 @@ + "&& reload_completed" + [(const_int 0)] + { +- machine_mode smode = <VSX_EXTRACT_I:MODE>mode; ++ machine_mode smode = <VS_scalar>mode; + rs6000_split_vec_extract_var (gen_rtx_REG (smode, REGNO (operands[0])), + operands[1], operands[2], + operands[3], operands[4]); +Index: gcc/config/rs6000/altivec.md +=================================================================== +--- a/src/gcc/config/rs6000/altivec.md (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/config/rs6000/altivec.md (.../branches/gcc-8-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 + ]) +@@ -581,7 +575,7 @@ + [(set_attr "type" "vecsimple")]) + + ;; +-(define_insn "altivec_vavgu<VI_char>" ++(define_insn "uavg<mode>3_ceil" + [(set (match_operand:VI 0 "register_operand" "=v") + (unspec:VI [(match_operand:VI 1 "register_operand" "v") + (match_operand:VI 2 "register_operand" "v")] +@@ -590,7 +584,7 @@ + "vavgu<VI_char> %0,%1,%2" + [(set_attr "type" "vecsimple")]) + +-(define_insn "altivec_vavgs<VI_char>" ++(define_insn "avg<mode>3_ceil" + [(set (match_operand:VI 0 "register_operand" "=v") + (unspec:VI [(match_operand:VI 1 "register_operand" "v") + (match_operand:VI 2 "register_operand" "v")] +@@ -4317,223 +4311,6 @@ + [(set_attr "length" "4") + (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<bcd_add_sub>_<code>" + [(parallel [(set (reg:CCFP CR6_REGNO) + (compare:CCFP +Index: gcc/config/rs6000/crypto.md +=================================================================== +--- a/src/gcc/config/rs6000/crypto.md (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/config/rs6000/crypto.md (.../branches/gcc-8-branch) +@@ -48,6 +48,9 @@ + ;; Iterator for VSHASIGMAD/VSHASIGMAW + (define_mode_iterator CR_hash [V4SI V2DI]) + ++;; Iterator for VSBOX/VCIPHER/VNCIPHER/VCIPHERLAST/VNCIPHERLAST ++(define_mode_iterator CR_vqdi [V16QI V2DI]) ++ + ;; Iterator for the other crypto functions + (define_int_iterator CR_code [UNSPEC_VCIPHER + UNSPEC_VNCIPHER +@@ -60,10 +63,10 @@ + (UNSPEC_VNCIPHERLAST "vncipherlast")]) + + ;; 2 operand crypto instructions +-(define_insn "crypto_<CR_insn>" +- [(set (match_operand:V2DI 0 "register_operand" "=v") +- (unspec:V2DI [(match_operand:V2DI 1 "register_operand" "v") +- (match_operand:V2DI 2 "register_operand" "v")] ++(define_insn "crypto_<CR_insn>_<mode>" ++ [(set (match_operand:CR_vqdi 0 "register_operand" "=v") ++ (unspec:CR_vqdi [(match_operand:CR_vqdi 1 "register_operand" "v") ++ (match_operand:CR_vqdi 2 "register_operand" "v")] + CR_code))] + "TARGET_CRYPTO" + "<CR_insn> %0,%1,%2" +@@ -90,9 +93,9 @@ + [(set_attr "type" "vecperm")]) + + ;; 1 operand crypto instruction +-(define_insn "crypto_vsbox" +- [(set (match_operand:V2DI 0 "register_operand" "=v") +- (unspec:V2DI [(match_operand:V2DI 1 "register_operand" "v")] ++(define_insn "crypto_vsbox_<mode>" ++ [(set (match_operand:CR_vqdi 0 "register_operand" "=v") ++ (unspec:CR_vqdi [(match_operand:CR_vqdi 1 "register_operand" "v")] + UNSPEC_VSBOX))] + "TARGET_CRYPTO" + "vsbox %0,%1" +Index: gcc/config/rs6000/rs6000.md +=================================================================== +--- a/src/gcc/config/rs6000/rs6000.md (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/config/rs6000/rs6000.md (.../branches/gcc-8-branch) +@@ -136,6 +136,9 @@ + UNSPEC_LSQ + UNSPEC_FUSION_GPR + UNSPEC_STACK_CHECK ++ UNSPEC_CMPRB ++ UNSPEC_CMPRB2 ++ UNSPEC_CMPEQB + UNSPEC_FUSION_P9 + UNSPEC_FUSION_ADDIS + UNSPEC_ADD_ROUND_TO_ODD +@@ -162,6 +165,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_MTFSF ; Move to FPSCR Fields +@@ -6692,14 +6698,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") +- (set_attr "length" "4")]) + + ;; MR LA LWZ LFIWZX LXSIWZX + ;; STW STFIWX STXSIWX LI LIS +@@ -12594,15 +12592,18 @@ + [(unspec [(const_int 0)] UNSPEC_GRP_END_NOP)] + "" + { +- if (rs6000_tune == PROCESSOR_POWER6) +- return "ori 1,1,0"; +- return "ori 2,2,0"; ++ operands[0] = gen_rtx_REG (Pmode, ++ rs6000_tune == PROCESSOR_POWER6 ? 1 : 2); ++ return "ori %0,%0,0"; + }) + + (define_insn "rs6000_speculation_barrier" + [(unspec_volatile:BLK [(const_int 0)] UNSPECV_SPEC_BARRIER)] + "" +- "ori 31,31,0") ++{ ++ operands[0] = gen_rtx_REG (Pmode, 31); ++ return "ori %0,%0,0"; ++}) + + ;; Define the subtract-one-and-jump insns, starting with the template + ;; so loop.c knows what to generate. +@@ -12699,7 +12700,7 @@ + const0_rtx); + emit_insn (gen_rtx_SET (operands[3], + gen_rtx_COMPARE (CCmode, operands[1], const1_rtx))); +- if (gpc_reg_operand (operands[0], <MODE>mode)) ++ if (int_reg_operand (operands[0], <MODE>mode)) + emit_insn (gen_add<mode>3 (operands[0], operands[1], constm1_rtx)); + else + { +@@ -12768,7 +12769,7 @@ + (const_int 0)])) + (match_operand 4) + (match_operand 5))) +- (set (match_operand:P 6 "int_reg_operand") ++ (set (match_operand:P 6 "nonimmediate_operand") + (plus:P (match_dup 0) + (const_int -1))) + (clobber (match_scratch:P 7)) +@@ -12801,7 +12802,7 @@ + else + emit_insn (gen_cceq_ior_compare_complement (operands[9], andexpr, ctrcmpcc, + operands[8], cccmp, ccin)); +- if (gpc_reg_operand (operands[0], <MODE>mode)) ++ if (int_reg_operand (ctrout, <MODE>mode)) + emit_insn (gen_add<mode>3 (ctrout, ctr, constm1_rtx)); + else + { +@@ -14597,7 +14598,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/rs6000/altivec.h +=================================================================== +--- a/src/gcc/config/rs6000/altivec.h (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/config/rs6000/altivec.h (.../branches/gcc-8-branch) +@@ -418,6 +418,11 @@ + #define vec_vupkhsw __builtin_vec_vupkhsw + #define vec_vupklsw __builtin_vec_vupklsw + #define vec_revb __builtin_vec_revb ++#define vec_sbox_be __builtin_crypto_vsbox_be ++#define vec_cipher_be __builtin_crypto_vcipher_be ++#define vec_cipherlast_be __builtin_crypto_vcipherlast_be ++#define vec_ncipher_be __builtin_crypto_vncipher_be ++#define vec_ncipherlast_be __builtin_crypto_vncipherlast_be + #endif + + #ifdef __POWER9_VECTOR__ +Index: gcc/config/darwin.c +=================================================================== +--- a/src/gcc/config/darwin.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/config/darwin.c (.../branches/gcc-8-branch) +@@ -74,15 +74,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 */ +@@ -104,6 +98,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]; + +@@ -249,7 +247,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 +@@ -258,7 +256,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) +@@ -454,6 +452,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<machopic_indirection> +@@ -488,7 +493,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: + .... +@@ -497,36 +502,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; +@@ -534,43 +525,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<indirection_hasher>::create_ggc (37); +@@ -579,10 +574,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<machopic_indirection> (); +@@ -590,6 +584,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; + } + +@@ -665,7 +660,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) +@@ -707,6 +702,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); +@@ -789,7 +785,7 @@ + rtx + machopic_indirect_call_target (rtx target) + { +- if (! darwin_emit_branch_islands) ++ if (! darwin_symbol_stubs) + return target; + + if (GET_CODE (target) != MEM) +@@ -797,8 +793,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, +@@ -807,6 +802,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, +@@ -1075,129 +1071,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<FILE *, machopic_output_indirection> (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 ++ <FILE *, machopic_output_data_section_indirection> (asm_out_file); ++ ++ machopic_indirections->traverse_noresize ++ <FILE *, machopic_output_stub_indirection> (asm_out_file); ++ ++ machopic_indirections->traverse_noresize ++ <FILE *, machopic_output_indirection> (asm_out_file); + } + + int +@@ -1212,25 +1239,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)) +@@ -1241,7 +1294,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 +@@ -1258,12 +1317,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 * +@@ -1556,7 +1616,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: +@@ -2092,11 +2152,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 +@@ -2945,12 +3005,10 @@ + if (flag_objc_abi >= 2) + { + flags = 16; +- output_section_asm_op +- (darwin_sections[objc2_image_info_section]->unnamed.data); ++ switch_to_section (darwin_sections[objc2_image_info_section]); + } + else +- output_section_asm_op +- (darwin_sections[objc_image_info_section]->unnamed.data); ++ switch_to_section (darwin_sections[objc_image_info_section]); + + ASM_OUTPUT_ALIGN (asm_out_file, 2); + fputs ("L_OBJC_ImageInfo:\n", asm_out_file); +@@ -3156,17 +3214,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 +@@ -3242,8 +3302,6 @@ + /* so no tables either.. */ + flag_unwind_tables = 0; + flag_asynchronous_unwind_tables = 0; +- /* We still need to emit branch islands for kernel context. */ +- darwin_emit_branch_islands = true; + } + + if (flag_var_tracking_uninit == 0 +@@ -3253,6 +3311,8 @@ + && write_symbols == DWARF2_DEBUG) + flag_var_tracking_uninit = flag_var_tracking; + ++ /* Final check on PCI options; for Darwin these are not dependent on the PIE ++ ones, although PIE does require PIC to support it. */ + if (MACHO_DYNAMIC_NO_PIC_P) + { + if (flag_pic) +@@ -3261,18 +3321,53 @@ + " %<-fpie%> or %<-fPIE%>"); + flag_pic = 0; + } +- else if (flag_pic == 1) ++ else if (flag_pic == 1 ++ || (flag_pic == 0 && !(flag_mkernel || flag_apple_kext))) + { +- /* Darwin's -fpic is -fPIC. */ ++ /* Darwin's -fpic is -fPIC. ++ We only support "static" code in the kernel and kernel exts. */ + 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_8_3_0_release) ++++ b/src/gcc/config/darwin.h (.../branches/gcc-8-branch) +@@ -129,6 +129,24 @@ + "%{gsplit-dwarf:%ngsplit-dwarf is not supported on this platform } \ + %<gsplit-dwarf" + ++#if LD64_HAS_EXPORT_DYNAMIC ++#define DARWIN_RDYNAMIC "%{rdynamic:-export_dynamic}" ++#else ++#define DARWIN_RDYNAMIC "%{rdynamic:%nrdynamic is not supported}" ++#endif ++ ++/* FIXME: we should check that the linker supports the -pie and -no_pie. ++ options. */ ++#define DARWIN_PIE_SPEC \ ++"%{pie|fpie|fPIE:\ ++ %{mdynamic-no-pic: \ ++ %n'-mdynamic-no-pic' overrides '-pie', '-fpie' or '-fPIE'; \ ++ :%:version-compare(>= 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} %<findirect-virtual-calls " \ + "%{fterminated-vtables: -fapple-kext} %<fterminated-vtables " \ +@@ -159,26 +177,37 @@ + #define CPP_SPEC "%{static:%{!dynamic:-D__STATIC__}}%{!static:-D__DYNAMIC__}" \ + " %{pthread:-D_REENTRANT}" + +-/* This is mostly a clone of the standard LINK_COMMAND_SPEC, plus +- precomp, libtool, and fat build additions. ++/* This is a fix for PR41260 by passing -no_compact_unwind on darwin10 and ++ later until the assembler, linker and libunwind are able to deal with the ++ output from GCC. + ++ FIXME: we should check that the linker supports the option. ++*/ ++ ++#define DARWIN_NOCOMPACT_UNWIND \ ++" %:version-compare(>= 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)" \ + LINK_PLUGIN_SPEC \ + "%{flto*:%<fcompare-debug*} \ +- %{flto*} \ ++ %{flto} %{fno-lto} %{flto=*} \ + %l " LINK_COMPRESS_DEBUG_SPEC \ + "%X %{s} %{t} %{Z} %{u*} \ + %{e*} %{r} \ +@@ -193,10 +222,14 @@ + %{%:sanitize(address): -lasan } \ + %{%:sanitize(undefined): -lubsan } \ + %(link_ssp) \ +- " DARWIN_EXPORT_DYNAMIC " %<rdynamic \ + %(link_gcc_c_sequence) \ + }}\ +- %{!nostdlib:%{!nostartfiles:%E}} %{T*} %{F*} }}}}}}}" ++ %{!nostdlib:%{!r:%{!nostartfiles:%E}}} %{T*} %{F*} "\ ++ DARWIN_PIE_SPEC \ ++ DARWIN_NOPIE_SPEC \ ++ DARWIN_RDYNAMIC \ ++ DARWIN_NOCOMPACT_UNWIND \ ++ "}}}}}}} %<pie %<no-pie %<rdynamic " + + #define DSYMUTIL "\ndsymutil" + +@@ -233,8 +266,6 @@ + #define STANDARD_STARTFILE_PREFIX_1 "" + #define STANDARD_STARTFILE_PREFIX_2 "" + +-#define DARWIN_PIE_SPEC "%{fpie|pie|fPIE:}" +- + /* Please keep the random linker options in alphabetical order (modulo + 'Z' and 'no' prefixes). Note that options taking arguments may appear + multiple times on a command line with different arguments each time, +@@ -298,7 +329,6 @@ + %:version-compare(< 10.5 mmacosx-version-min= -multiply_defined) \ + %:version-compare(< 10.5 mmacosx-version-min= suppress)}} \ + %{Zmultiplydefinedunused*:-multiply_defined_unused %*} \ +- " DARWIN_PIE_SPEC " \ + %{prebind} %{noprebind} %{nofixprebinding} %{prebind_all_twolevel_modules} \ + %{read_only_relocs} \ + %{sectcreate*} %{sectorder*} %{seg1addr*} %{segprot*} \ +@@ -330,43 +360,42 @@ + + /* Support -mmacosx-version-min by supplying different (stub) libgcc_s.dylib + libraries to link against, and by not linking against libgcc_s on +- earlier-than-10.3.9. ++ earlier-than-10.3.9. If we need exceptions, prior to 10.3.9, then we have ++ to link the static eh lib, since there's no shared version on the system. + +- Note that by default, -lgcc_eh is not linked against! This is +- because in a future version of Darwin the EH frame information may +- be in a new format, or the fallback routine might be changed; if +- you want to explicitly link against the static version of those +- routines, because you know you don't need to unwind through system +- libraries, you need to explicitly say -static-libgcc. ++ Note that by default, except as above, -lgcc_eh is not linked against. ++ This is because,in general, we need to unwind through system libraries that ++ are linked with the shared unwinder in libunwind (or libgcc_s for 10.4/5). + +- If it is linked against, it has to be before -lgcc, because it may ++ The static version of the current libgcc unwinder (which differs from the ++ implementation in libunwind.dylib on systems Darwin10 [10.6]+) can be used ++ by specifying -static-libgcc. ++ ++ If libgcc_eh is linked against, it has to be before -lgcc, because it might + need symbols from -lgcc. */ ++ + #undef REAL_LIBGCC_SPEC + #define REAL_LIBGCC_SPEC \ + "%{static-libgcc|static: -lgcc_eh -lgcc; \ +- shared-libgcc|fexceptions|fgnu-runtime: \ +- %:version-compare(!> 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} \ +@@ -380,7 +409,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}" +@@ -388,12 +417,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) \ +@@ -400,6 +427,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 \ +@@ -765,21 +806,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. */ + +@@ -972,8 +1044,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_8_3_0_release) ++++ b/src/gcc/config/darwin10.h (.../branches/gcc-8-branch) +@@ -18,17 +18,13 @@ + along with GCC; see the file COPYING3. If not see + <http://www.gnu.org/licenses/>. */ + +-/* 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: \ +- %: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) } %G %L" ++"%{!static:%{!static-libgcc: \ ++ %:version-compare(>= 10.6 mmacosx-version-min= -lSystem) } } \ ++ %G %L" + + #undef DEF_MIN_OSX_VERSION + #define DEF_MIN_OSX_VERSION "10.6" +Index: gcc/config/arm/arm.c +=================================================================== +--- a/src/gcc/config/arm/arm.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/config/arm/arm.c (.../branches/gcc-8-branch) +@@ -8879,11 +8879,16 @@ + arm_cannot_force_const_mem (machine_mode mode ATTRIBUTE_UNUSED, rtx x) + { + rtx base, offset; ++ split_const (x, &base, &offset); + +- if (ARM_OFFSETS_MUST_BE_WITHIN_SECTIONS_P) ++ if (SYMBOL_REF_P (base)) + { +- split_const (x, &base, &offset); +- if (GET_CODE (base) == SYMBOL_REF ++ /* Function symbols cannot have an offset due to the Thumb bit. */ ++ if ((SYMBOL_REF_FLAGS (base) & SYMBOL_FLAG_FUNCTION) ++ && INTVAL (offset) != 0) ++ return true; ++ ++ if (ARM_OFFSETS_MUST_BE_WITHIN_SECTIONS_P + && !offset_within_block_p (base, INTVAL (offset))) + return true; + } +@@ -11930,8 +11935,7 @@ + else + { + n_elts = 1; +- if (mode == VOIDmode) +- mode = DImode; ++ gcc_assert (mode != VOIDmode); + } + + innersize = GET_MODE_UNIT_SIZE (mode); +@@ -13095,6 +13099,9 @@ + if (load && (REGNO (reg) == SP_REGNUM) && (REGNO (addr) != SP_REGNUM)) + return false; + ++ if (regno == REGNO (addr)) ++ addr_reg_in_reglist = true; ++ + for (; i < count; i++) + { + elt = XVECEXP (op, 0, i); +@@ -13289,7 +13296,6 @@ + int unsorted_regs[MAX_LDM_STM_OPS]; + HOST_WIDE_INT unsorted_offsets[MAX_LDM_STM_OPS]; + int order[MAX_LDM_STM_OPS]; +- rtx base_reg_rtx = NULL; + int base_reg = -1; + int i, ldm_case; + +@@ -13334,7 +13340,6 @@ + if (i == 0) + { + base_reg = REGNO (reg); +- base_reg_rtx = reg; + if (TARGET_THUMB1 && base_reg > LAST_LO_REGNUM) + return 0; + } +@@ -13393,10 +13398,6 @@ + *load_offset = unsorted_offsets[order[0]]; + } + +- if (TARGET_THUMB1 +- && !peep2_reg_dead_p (nops, base_reg_rtx)) +- return 0; +- + if (unsorted_offsets[order[0]] == 0) + ldm_case = 1; /* ldmia */ + else if (TARGET_ARM && unsorted_offsets[order[0]] == 4) +@@ -13772,9 +13773,17 @@ + + if (TARGET_THUMB1) + { +- gcc_assert (peep2_reg_dead_p (nops, base_reg_rtx)); + gcc_assert (ldm_case == 1 || ldm_case == 5); +- write_back = TRUE; ++ ++ /* Thumb-1 ldm uses writeback except if the base is loaded. */ ++ write_back = true; ++ for (i = 0; i < nops; i++) ++ if (base_reg == regs[i]) ++ write_back = false; ++ ++ /* Ensure the base is dead if it is updated. */ ++ if (write_back && !peep2_reg_dead_p (nops, base_reg_rtx)) ++ return false; + } + + if (ldm_case == 5) +@@ -13782,8 +13791,7 @@ + rtx newbase = TARGET_THUMB1 ? base_reg_rtx : gen_rtx_REG (SImode, regs[0]); + emit_insn (gen_addsi3 (newbase, base_reg_rtx, GEN_INT (offset))); + offset = 0; +- if (!TARGET_THUMB1) +- base_reg_rtx = newbase; ++ base_reg_rtx = newbase; + } + + for (i = 0; i < nops; i++) +@@ -19508,6 +19516,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 +@@ -19539,10 +19576,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 +@@ -24768,12 +24814,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 +@@ -24781,7 +24822,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; + +@@ -24789,7 +24830,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--; +@@ -24797,13 +24838,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)) + { +@@ -24810,7 +24852,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; + } +@@ -25192,10 +25235,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) +@@ -25236,6 +25289,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/arm.h +=================================================================== +--- a/src/gcc/config/arm/arm.h (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/config/arm/arm.h (.../branches/gcc-8-branch) +@@ -191,7 +191,7 @@ + /* FPU supports converting between HFmode and DFmode in a single hardware + step. */ + #define TARGET_FP16_TO_DOUBLE \ +- (TARGET_HARD_FLOAT && (TARGET_FP16 && TARGET_VFP5)) ++ (TARGET_HARD_FLOAT && TARGET_FP16 && TARGET_VFP5 && TARGET_VFP_DOUBLE) + + /* FPU supports fused-multiply-add operations. */ + #define TARGET_FMA (bitmap_bit_p (arm_active_target.isa, isa_bit_vfpv4)) +Index: gcc/config/arm/arm_acle.h +=================================================================== +--- a/src/gcc/config/arm/arm_acle.h (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/config/arm/arm_acle.h (.../branches/gcc-8-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/neon.md +=================================================================== +--- a/src/gcc/config/arm/neon.md (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/config/arm/neon.md (.../branches/gcc-8-branch) +@@ -25,14 +25,14 @@ + + (define_insn "*neon_mov<mode>" + [(set (match_operand:VDX 0 "nonimmediate_operand" +- "=w,Un,w, w, ?r,?w,?r,?r, ?Us") ++ "=w,Un,w, w, w, ?r,?w,?r,?r, ?Us") + (match_operand:VDX 1 "general_operand" +- " w,w, Dn,Uni, w, r, r, Usi,r"))] ++ " w,w, Dm,Dn,Uni, w, r, r, Usi,r"))] + "TARGET_NEON + && (register_operand (operands[0], <MODE>mode) + || register_operand (operands[1], <MODE>mode))" + { +- if (which_alternative == 2) ++ if (which_alternative == 2 || which_alternative == 3) + { + int width, is_valid; + static char templ[40]; +@@ -53,31 +53,32 @@ + switch (which_alternative) + { + case 0: return "vmov\t%P0, %P1 @ <mode>"; +- case 1: case 3: return output_move_neon (operands); +- case 2: gcc_unreachable (); +- case 4: return "vmov\t%Q0, %R0, %P1 @ <mode>"; +- case 5: return "vmov\t%P0, %Q1, %R1 @ <mode>"; ++ case 1: case 4: return output_move_neon (operands); ++ case 2: case 3: gcc_unreachable (); ++ case 5: return "vmov\t%Q0, %R0, %P1 @ <mode>"; ++ case 6: return "vmov\t%P0, %Q1, %R1 @ <mode>"; + default: return output_move_double (operands, true, NULL); + } + } + [(set_attr "type" "neon_move<q>,neon_store1_1reg,neon_move<q>,\ +- neon_load1_1reg, neon_to_gp<q>,neon_from_gp<q>,mov_reg,\ +- neon_load1_2reg, neon_store1_2reg") +- (set_attr "length" "4,4,4,4,4,4,8,8,8") +- (set_attr "arm_pool_range" "*,*,*,1020,*,*,*,1020,*") +- (set_attr "thumb2_pool_range" "*,*,*,1018,*,*,*,1018,*") +- (set_attr "neg_pool_range" "*,*,*,1004,*,*,*,1004,*")]) ++ neon_move<q>,neon_load1_1reg, neon_to_gp<q>,\ ++ neon_from_gp<q>,mov_reg,neon_load1_2reg,\ ++ neon_store1_2reg") ++ (set_attr "length" "4,4,4,4,4,4,4,8,8,8") ++ (set_attr "arm_pool_range" "*,*,*,*,1020,*,*,*,1020,*") ++ (set_attr "thumb2_pool_range" "*,*,*,*,1018,*,*,*,1018,*") ++ (set_attr "neg_pool_range" "*,*,*,*,1004,*,*,*,1004,*")]) + + (define_insn "*neon_mov<mode>" + [(set (match_operand:VQXMOV 0 "nonimmediate_operand" +- "=w,Un,w, w, ?r,?w,?r,?r, ?Us") ++ "=w,Un,w, w, w, ?r,?w,?r,?r, ?Us") + (match_operand:VQXMOV 1 "general_operand" +- " w,w, Dn,Uni, w, r, r, Usi, r"))] ++ " w,w, Dm,DN,Uni, w, r, r, Usi, r"))] + "TARGET_NEON + && (register_operand (operands[0], <MODE>mode) + || register_operand (operands[1], <MODE>mode))" + { +- if (which_alternative == 2) ++ if (which_alternative == 2 || which_alternative == 3) + { + int width, is_valid; + static char templ[40]; +@@ -98,20 +99,20 @@ + switch (which_alternative) + { + case 0: return "vmov\t%q0, %q1 @ <mode>"; +- case 1: case 3: return output_move_neon (operands); +- case 2: gcc_unreachable (); +- case 4: return "vmov\t%Q0, %R0, %e1 @ <mode>\;vmov\t%J0, %K0, %f1"; +- case 5: return "vmov\t%e0, %Q1, %R1 @ <mode>\;vmov\t%f0, %J1, %K1"; ++ case 1: case 4: return output_move_neon (operands); ++ case 2: case 3: gcc_unreachable (); ++ case 5: return "vmov\t%Q0, %R0, %e1 @ <mode>\;vmov\t%J0, %K0, %f1"; ++ case 6: return "vmov\t%e0, %Q1, %R1 @ <mode>\;vmov\t%f0, %J1, %K1"; + default: return output_move_quad (operands); + } + } + [(set_attr "type" "neon_move_q,neon_store2_2reg_q,neon_move_q,\ +- neon_load2_2reg_q,neon_to_gp_q,neon_from_gp_q,\ +- mov_reg,neon_load1_4reg,neon_store1_4reg") +- (set_attr "length" "4,8,4,8,8,8,16,8,16") +- (set_attr "arm_pool_range" "*,*,*,1020,*,*,*,1020,*") +- (set_attr "thumb2_pool_range" "*,*,*,1018,*,*,*,1018,*") +- (set_attr "neg_pool_range" "*,*,*,996,*,*,*,996,*")]) ++ neon_move_q,neon_load2_2reg_q,neon_to_gp_q,\ ++ neon_from_gp_q,mov_reg,neon_load1_4reg,neon_store1_4reg") ++ (set_attr "length" "4,8,4,4,8,8,8,16,8,16") ++ (set_attr "arm_pool_range" "*,*,*,*,1020,*,*,*,1020,*") ++ (set_attr "thumb2_pool_range" "*,*,*,*,1018,*,*,*,1018,*") ++ (set_attr "neg_pool_range" "*,*,*,*,996,*,*,*,996,*")]) + + /* We define these mov expanders to match the standard mov$a optab to prevent + the mid-end from trying to do a subreg for these modes which is the most +@@ -1033,7 +1034,7 @@ + (define_insn "vashl<mode>3" + [(set (match_operand:VDQIW 0 "s_register_operand" "=w,w") + (ashift:VDQIW (match_operand:VDQIW 1 "s_register_operand" "w,w") +- (match_operand:VDQIW 2 "imm_lshift_or_reg_neon" "w,Dn")))] ++ (match_operand:VDQIW 2 "imm_lshift_or_reg_neon" "w,Dm")))] + "TARGET_NEON" + { + switch (which_alternative) +@@ -1052,7 +1053,7 @@ + (define_insn "vashr<mode>3_imm" + [(set (match_operand:VDQIW 0 "s_register_operand" "=w") + (ashiftrt:VDQIW (match_operand:VDQIW 1 "s_register_operand" "w") +- (match_operand:VDQIW 2 "imm_for_neon_rshift_operand" "Dn")))] ++ (match_operand:VDQIW 2 "imm_for_neon_rshift_operand" "Dm")))] + "TARGET_NEON" + { + return neon_output_shift_immediate ("vshr", 's', &operands[2], +@@ -1065,7 +1066,7 @@ + (define_insn "vlshr<mode>3_imm" + [(set (match_operand:VDQIW 0 "s_register_operand" "=w") + (lshiftrt:VDQIW (match_operand:VDQIW 1 "s_register_operand" "w") +- (match_operand:VDQIW 2 "imm_for_neon_rshift_operand" "Dn")))] ++ (match_operand:VDQIW 2 "imm_for_neon_rshift_operand" "Dm")))] + "TARGET_NEON" + { + return neon_output_shift_immediate ("vshr", 'u', &operands[2], +Index: gcc/config/arm/constraints.md +=================================================================== +--- a/src/gcc/config/arm/constraints.md (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/config/arm/constraints.md (.../branches/gcc-8-branch) +@@ -31,7 +31,8 @@ + ;; 'H' was previously used for FPA. + + ;; The following multi-letter normal constraints have been used: +-;; in ARM/Thumb-2 state: Da, Db, Dc, Dd, Dn, Dl, DL, Do, Dv, Dy, Di, Dt, Dp, Dz ++;; in ARM/Thumb-2 state: Da, Db, Dc, Dd, Dn, DN, Dm, Dl, DL, Do, Dv, Dy, Di, ++;; Dt, Dp, Dz + ;; in Thumb-1 state: Pa, Pb, Pc, Pd, Pe + ;; in Thumb-2 state: Pj, PJ, Ps, Pt, Pu, Pv, Pw, Px, Py + ;; in all states: Pf +@@ -294,14 +295,28 @@ + (and (match_code "const_double,const_int") + (match_test "TARGET_32BIT && arm_const_double_by_immediates (op)"))) + +-(define_constraint "Dn" ++(define_constraint "Dm" + "@internal +- In ARM/Thumb-2 state a const_vector or const_int which can be loaded with a +- Neon vmov immediate instruction." +- (and (match_code "const_vector,const_int") ++ In ARM/Thumb-2 state a const_vector which can be loaded with a Neon vmov ++ immediate instruction." ++ (and (match_code "const_vector") + (match_test "TARGET_32BIT + && imm_for_neon_mov_operand (op, GET_MODE (op))"))) + ++(define_constraint "Dn" ++ "@internal ++ In ARM/Thumb-2 state a DImode const_int which can be loaded with a Neon vmov ++ immediate instruction." ++ (and (match_code "const_int") ++ (match_test "TARGET_32BIT && imm_for_neon_mov_operand (op, DImode)"))) ++ ++(define_constraint "DN" ++ "@internal ++ In ARM/Thumb-2 state a TImode const_int which can be loaded with a Neon vmov ++ immediate instruction." ++ (and (match_code "const_int") ++ (match_test "TARGET_32BIT && imm_for_neon_mov_operand (op, TImode)"))) ++ + (define_constraint "Dl" + "@internal + In ARM/Thumb-2 state a const_vector which can be used with a Neon vorr or +Index: gcc/config/arm/t-rtems +=================================================================== +--- a/src/gcc/config/arm/t-rtems (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/config/arm/t-rtems (.../branches/gcc-8-branch) +@@ -17,8 +17,8 @@ + MULTILIB_OPTIONS += mthumb + MULTILIB_DIRNAMES += thumb + +-MULTILIB_OPTIONS += march=armv5te+fp/march=armv6-m/march=armv7-a/march=armv7-a+simd/march=armv7-r/march=armv7-r+fp/march=armv7-m/march=armv7e-m+fp/march=armv7e-m+fp.dp +-MULTILIB_DIRNAMES += armv5te+fp armv6-m armv7-a armv7-a+simd armv7-r armv7-r+fp armv7-m armv7e-m+fp armv7e-m+fp.dp ++MULTILIB_OPTIONS += march=armv5te+fp/march=armv6-m/march=armv7-a/march=armv7-a+simd/march=armv7-r/march=armv7-r+fp/mcpu=cortex-m3/mcpu=cortex-m4/mcpu=cortex-m4+nofp/mcpu=cortex-m7 ++MULTILIB_DIRNAMES += armv5te+fp armv6-m armv7-a armv7-a+simd armv7-r armv7-r+fp cortex-m3 cortex-m4 cortex-m4+nofp cortex-m7 + + MULTILIB_OPTIONS += mfloat-abi=hard + MULTILIB_DIRNAMES += hard +@@ -31,7 +31,8 @@ + MULTILIB_REQUIRED += mthumb/march=armv7-a + MULTILIB_REQUIRED += mthumb/march=armv7-r+fp/mfloat-abi=hard + MULTILIB_REQUIRED += mthumb/march=armv7-r +-MULTILIB_REQUIRED += mthumb/march=armv7e-m+fp/mfloat-abi=hard +-MULTILIB_REQUIRED += mthumb/march=armv7e-m+fp.dp/mfloat-abi=hard +-MULTILIB_REQUIRED += mthumb/march=armv7-m ++MULTILIB_REQUIRED += mthumb/mcpu=cortex-m3 ++MULTILIB_REQUIRED += mthumb/mcpu=cortex-m4/mfloat-abi=hard ++MULTILIB_REQUIRED += mthumb/mcpu=cortex-m4+nofp ++MULTILIB_REQUIRED += mthumb/mcpu=cortex-m7/mfloat-abi=hard + MULTILIB_REQUIRED += mthumb +Index: gcc/config/arm/arm.md +=================================================================== +--- a/src/gcc/config/arm/arm.md (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/config/arm/arm.md (.../branches/gcc-8-branch) +@@ -4448,62 +4448,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")]) + + +@@ -5976,52 +5992,29 @@ + } + } + +- if (ARM_OFFSETS_MUST_BE_WITHIN_SECTIONS_P) ++ split_const (operands[1], &base, &offset); ++ if (INTVAL (offset) != 0 ++ && targetm.cannot_force_const_mem (SImode, operands[1])) + { +- split_const (operands[1], &base, &offset); +- if (GET_CODE (base) == SYMBOL_REF +- && !offset_within_block_p (base, INTVAL (offset))) +- { +- tmp = can_create_pseudo_p () ? gen_reg_rtx (SImode) : operands[0]; +- emit_move_insn (tmp, base); +- emit_insn (gen_addsi3 (operands[0], tmp, offset)); +- DONE; +- } ++ tmp = can_create_pseudo_p () ? gen_reg_rtx (SImode) : operands[0]; ++ emit_move_insn (tmp, base); ++ emit_insn (gen_addsi3 (operands[0], tmp, offset)); ++ DONE; + } + ++ tmp = can_create_pseudo_p () ? NULL_RTX : operands[0]; ++ + /* Recognize the case where operand[1] is a reference to thread-local +- data and load its address to a register. */ ++ data and load its address to a register. Offsets have been split off ++ already. */ + if (arm_tls_referenced_p (operands[1])) +- { +- rtx tmp = operands[1]; +- rtx addend = NULL; +- +- if (GET_CODE (tmp) == CONST && GET_CODE (XEXP (tmp, 0)) == PLUS) +- { +- addend = XEXP (XEXP (tmp, 0), 1); +- tmp = XEXP (XEXP (tmp, 0), 0); +- } +- +- gcc_assert (GET_CODE (tmp) == SYMBOL_REF); +- gcc_assert (SYMBOL_REF_TLS_MODEL (tmp) != 0); +- +- tmp = legitimize_tls_address (tmp, +- !can_create_pseudo_p () ? operands[0] : 0); +- if (addend) +- { +- tmp = gen_rtx_PLUS (SImode, tmp, addend); +- tmp = force_operand (tmp, operands[0]); +- } +- operands[1] = tmp; +- } ++ operands[1] = legitimize_tls_address (operands[1], tmp); + else if (flag_pic + && (CONSTANT_P (operands[1]) + || symbol_mentioned_p (operands[1]) + || label_mentioned_p (operands[1]))) +- operands[1] = legitimize_pic_address (operands[1], SImode, +- (!can_create_pseudo_p () +- ? operands[0] +- : 0)); ++ operands[1] = ++ legitimize_pic_address (operands[1], SImode, tmp); + } + " + ) +Index: gcc/config/darwin-driver.c +=================================================================== +--- a/src/gcc/config/darwin-driver.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/config/darwin-driver.c (.../branches/gcc-8-branch) +@@ -26,6 +26,91 @@ + #include "opts.h" + #include "diagnostic-core.h" + ++/* Validate a version string (either given on the command line or, perhaps ++ as MACOSX_DEPLOYMENT_TARGET). ++ ++ The specs %version-compare() function doesn't accept leading '0' on ++ numbers so strip them out. Do sanity checking here too. ++ ++ Return: ++ * original string means it was OK and we didn't want to change it. ++ * new string means it was OK but we rewrote it to avoid possible format ++ problems. ++ * NULL means we didn't like what we saw. ++*/ ++ ++static const char * ++validate_macosx_version_min (const char *version_str) ++{ ++ size_t version_len; ++ unsigned long major, minor, tiny = 0; ++ char *end; ++ const char *old_version = version_str; ++ bool need_rewrite = false; ++ ++ version_len = strlen (version_str); ++ if (version_len < 4) /* The minimum would be 10.x */ ++ return NULL; ++ ++ /* Version string must consist of digits and periods only. */ ++ if (strspn (version_str, "0123456789.") != version_len) ++ return NULL; ++ ++ if (!ISDIGIT (version_str[0]) || !ISDIGIT (version_str[version_len - 1])) ++ return NULL; ++ ++ if (version_str[0] == '0') ++ need_rewrite = true; ++ ++ major = strtoul (version_str, &end, 10); ++ version_str = end + ((*end == '.') ? 1 : 0); ++ ++ if (major != 10) /* So far .. all MacOS 10 ... */ ++ return NULL; ++ ++ /* Version string components must be present and numeric. */ ++ if (!ISDIGIT (version_str[0])) ++ return NULL; ++ ++ /* If we have one or more leading zeros on a component, then rewrite the ++ version string. */ ++ if (version_str[0] == '0' && version_str[1] != '\0' ++ && version_str[1] != '.') ++ need_rewrite = true; ++ ++ minor = strtoul (version_str, &end, 10); ++ version_str = end + ((*end == '.') ? 1 : 0); ++ if (minor > 99) ++ return NULL; ++ ++ /* If 'tiny' is present it must be numeric. */ ++ if (*end != '\0' && !ISDIGIT (version_str[0])) ++ return NULL; ++ ++ /* If we have one or more leading zeros on a component, then rewrite the ++ version string. */ ++ if (*end != '\0' && version_str[0] == '0' ++ && version_str[1] != '\0') ++ need_rewrite = true; ++ ++ tiny = strtoul (version_str, &end, 10); ++ if (tiny > 99) ++ return NULL; ++ ++ /* Version string must contain no more than three tokens. */ ++ if (*end != '\0') ++ return NULL; ++ ++ if (need_rewrite) ++ { ++ char *new_version; ++ asprintf (&new_version, "10.%lu.%lu", minor, tiny); ++ return new_version; ++ } ++ ++ return old_version; ++} ++ + #ifndef CROSS_DIRECTORY_STRUCTURE + #include <sys/sysctl.h> + #include "xregex.h" +@@ -114,16 +199,39 @@ + + if (new_flag != NULL) + { +- size_t len = strlen (new_flag); +- if (len > 128) { /* Arbitrary limit, number should be like xx.yy.zz */ +- warning (0, "couldn%'t understand version %s\n", new_flag); +- return NULL; +- } +- new_flag = xstrndup (new_flag, len); ++ const char *checked = validate_macosx_version_min (new_flag); ++ if (checked == NULL) ++ { ++ warning (0, "couldn%'t understand version %s\n", new_flag); ++ return NULL; ++ } ++ new_flag = xstrndup (checked, strlen (checked)); + } + 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 +@@ -148,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++) + { +@@ -175,7 +284,7 @@ + if (*decoded_options_count > i) { + memmove (*decoded_options + i, + *decoded_options + i + 1, +- ((*decoded_options_count - i) ++ ((*decoded_options_count - i - 1) + * sizeof (struct cl_decoded_option))); + } + --i; +@@ -209,8 +318,30 @@ + + case OPT_mmacosx_version_min_: + seen_version_min = true; +- vers_string = xstrndup ((*decoded_options)[i].arg, 32); ++ vers_string = ++ validate_macosx_version_min ((*decoded_options)[i].arg); ++ if (vers_string == NULL) ++ warning (0, "%qs is not valid for %<mmacosx-version-min%>\n", ++ (*decoded_options)[i].arg); ++ else if (vers_string == (*decoded_options)[i].arg) ++ vers_string = xstrndup ((*decoded_options)[i].arg, 32); ++ /* Now we've examined it, and verified/re-written, put it to ++ one side and append later. */ ++ if (*decoded_options_count > i) { ++ memmove (*decoded_options + i, ++ *decoded_options + i + 1, ++ ((*decoded_options_count - i - 1) ++ * sizeof (struct cl_decoded_option))); ++ } ++ --i; ++ --*decoded_options_count; ++ break; + ++ case OPT__sysroot_: ++ case OPT_isysroot: ++ seen_sysroot_p = true; ++ break; ++ + default: + break; + } +@@ -272,26 +403,40 @@ + &(*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. */ +- if (! seen_version_min && *decoded_options_count > 1) ++ if (! seen_sysroot_p) + { +- /* Not set by the User, try to figure it out. */ +- vers_string = darwin_default_min_version (); +- if (vers_string != NULL) ++ /* 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_mmacosx_version_min_, vers_string, 1, CL_DRIVER, +- &(*decoded_options)[*decoded_options_count - 1]); ++ generate_option (OPT__sysroot_, sdkroot, 1, CL_DRIVER, ++ &(*decoded_options)[*decoded_options_count - 1]); + } + } +- /* Create and push the major version for assemblers that need it. */ ++ ++ /* 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. */ ++ if (! seen_version_min && *decoded_options_count > 1) ++ /* Not set by the User, try to figure it out. */ ++ vers_string = darwin_default_min_version (); ++ ++ /* Create and push a cleaned up version, plus the major version for ++ assemblers and other cases that need it. */ + if (vers_string != NULL) + { ++ ++*decoded_options_count; ++ *decoded_options = XRESIZEVEC (struct cl_decoded_option, ++ *decoded_options, ++ *decoded_options_count); ++ generate_option (OPT_mmacosx_version_min_, vers_string, 1, CL_DRIVER, ++ &(*decoded_options)[*decoded_options_count - 1]); ++ + char *asm_major = NULL; + const char *first_period = strchr(vers_string, '.'); + if (first_period != NULL) +Index: gcc/config/pa/pa.md +=================================================================== +--- a/src/gcc/config/pa/pa.md (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/config/pa/pa.md (.../branches/gcc-8-branch) +@@ -5319,8 +5319,8 @@ + + (define_insn "umulsidi3" + [(set (match_operand:DI 0 "register_operand" "=f") +- (mult:DI (zero_extend:DI (match_operand:SI 1 "nonimmediate_operand" "f")) +- (zero_extend:DI (match_operand:SI 2 "nonimmediate_operand" "f"))))] ++ (mult:DI (zero_extend:DI (match_operand:SI 1 "register_operand" "f")) ++ (zero_extend:DI (match_operand:SI 2 "register_operand" "f"))))] + "TARGET_PA_11 && ! TARGET_DISABLE_FPREGS && ! TARGET_SOFT_FLOAT" + "xmpyu %1,%2,%0" + [(set_attr "type" "fpmuldbl") +@@ -5328,7 +5328,7 @@ + + (define_insn "" + [(set (match_operand:DI 0 "register_operand" "=f") +- (mult:DI (zero_extend:DI (match_operand:SI 1 "nonimmediate_operand" "f")) ++ (mult:DI (zero_extend:DI (match_operand:SI 1 "register_operand" "f")) + (match_operand:DI 2 "uint32_operand" "f")))] + "TARGET_PA_11 && ! TARGET_DISABLE_FPREGS && ! TARGET_SOFT_FLOAT && !TARGET_64BIT" + "xmpyu %1,%R2,%0" +@@ -5337,7 +5337,7 @@ + + (define_insn "" + [(set (match_operand:DI 0 "register_operand" "=f") +- (mult:DI (zero_extend:DI (match_operand:SI 1 "nonimmediate_operand" "f")) ++ (mult:DI (zero_extend:DI (match_operand:SI 1 "register_operand" "f")) + (match_operand:DI 2 "uint32_operand" "f")))] + "TARGET_PA_11 && ! TARGET_DISABLE_FPREGS && ! TARGET_SOFT_FLOAT && TARGET_64BIT" + "xmpyu %1,%2R,%0" +@@ -6904,21 +6904,24 @@ + rtx stack = operands[2]; + rtx fp = operands[3]; + +- lab = copy_to_reg (lab); +- + emit_clobber (gen_rtx_MEM (BLKmode, gen_rtx_SCRATCH (VOIDmode))); + emit_clobber (gen_rtx_MEM (BLKmode, hard_frame_pointer_rtx)); + +- /* Restore the frame pointer. The virtual_stack_vars_rtx is saved +- instead of the hard_frame_pointer_rtx in the save area. As a +- result, an extra instruction is needed to adjust for the offset ++ lab = copy_to_reg (lab); ++ ++ /* Restore the stack and frame pointers. The virtual_stack_vars_rtx ++ is saved instead of the hard_frame_pointer_rtx in the save area. ++ As a result, an extra instruction is needed to adjust for the offset + of the virtual stack variables and the hard frame pointer. */ +- if (GET_CODE (fp) != REG) +- fp = force_reg (Pmode, fp); ++ fp = copy_to_reg (fp); ++ emit_stack_restore (SAVE_NONLOCAL, stack); ++ ++ /* Ensure the frame pointer move is not optimized. */ ++ emit_insn (gen_blockage ()); ++ emit_clobber (hard_frame_pointer_rtx); ++ emit_clobber (frame_pointer_rtx); + emit_move_insn (hard_frame_pointer_rtx, plus_constant (Pmode, fp, -8)); + +- emit_stack_restore (SAVE_NONLOCAL, stack); +- + emit_use (hard_frame_pointer_rtx); + emit_use (stack_pointer_rtx); + +@@ -8695,23 +8698,26 @@ + emit_clobber (gen_rtx_MEM (BLKmode, gen_rtx_SCRATCH (VOIDmode))); + emit_clobber (gen_rtx_MEM (BLKmode, hard_frame_pointer_rtx)); + +- /* Restore the frame pointer. The virtual_stack_vars_rtx is saved +- instead of the hard_frame_pointer_rtx in the save area. We need +- to adjust for the offset between these two values. */ +- if (GET_CODE (fp) != REG) +- fp = force_reg (Pmode, fp); ++ /* Load the label we are jumping through into r1 so that we know ++ where to look for it when we get back to setjmp's function for ++ restoring the gp. */ ++ emit_move_insn (pv, lab); ++ ++ /* Restore the stack and frame pointers. The virtual_stack_vars_rtx ++ is saved instead of the hard_frame_pointer_rtx in the save area. ++ We need to adjust for the offset between these two values. */ ++ fp = copy_to_reg (fp); ++ emit_stack_restore (SAVE_NONLOCAL, stack); ++ ++ /* Ensure the frame pointer move is not optimized. */ ++ emit_insn (gen_blockage ()); ++ emit_clobber (hard_frame_pointer_rtx); ++ emit_clobber (frame_pointer_rtx); + emit_move_insn (hard_frame_pointer_rtx, plus_constant (Pmode, fp, -8)); + +- /* This bit is the same as expand_builtin_longjmp. */ +- emit_stack_restore (SAVE_NONLOCAL, stack); + emit_use (hard_frame_pointer_rtx); + emit_use (stack_pointer_rtx); + +- /* Load the label we are jumping through into r1 so that we know +- where to look for it when we get back to setjmp's function for +- restoring the gp. */ +- emit_move_insn (pv, lab); +- + /* Prevent the insns above from being scheduled into the delay slot + of the interspace jump because the space register could change. */ + emit_insn (gen_blockage ()); +@@ -10085,23 +10091,55 @@ + (set_attr "length" "4,16")]) + + ;; PA 2.0 hardware supports out-of-order execution of loads and stores, so +-;; we need a memory barrier to enforce program order for memory references. +-;; Since we want PA 1.x code to be PA 2.0 compatible, we also need the +-;; barrier when generating PA 1.x code. ++;; we need memory barriers to enforce program order for memory references ++;; when the TLB and PSW O bits are not set. We assume all PA 2.0 systems ++;; are weakly ordered since neither HP-UX or Linux set the PSW O bit. Since ++;; we want PA 1.x code to be PA 2.0 compatible, we also need barriers when ++;; generating PA 1.x code even though all PA 1.x systems are strongly ordered. + ++;; When barriers are needed, we use a strongly ordered ldcw instruction as ++;; the barrier. Most PA 2.0 targets are cache coherent. In that case, we ++;; can use the coherent cache control hint and avoid aligning the ldcw ++;; address. In spite of its description, it is not clear that the sync ++;; instruction works as a barrier. ++ + (define_expand "memory_barrier" +- [(set (match_dup 0) +- (unspec:BLK [(match_dup 0)] UNSPEC_MEMORY_BARRIER))] ++ [(parallel ++ [(set (match_dup 0) (unspec:BLK [(match_dup 0)] UNSPEC_MEMORY_BARRIER)) ++ (clobber (match_dup 1))])] + "" + { +- operands[0] = gen_rtx_MEM (BLKmode, gen_rtx_SCRATCH (Pmode)); ++ /* We don't need a barrier if the target uses ordered memory references. */ ++ if (TARGET_ORDERED) ++ FAIL; ++ operands[1] = gen_reg_rtx (Pmode); ++ operands[0] = gen_rtx_MEM (BLKmode, operands[1]); + MEM_VOLATILE_P (operands[0]) = 1; + }) + +-(define_insn "*memory_barrier" ++(define_insn "*memory_barrier_coherent" + [(set (match_operand:BLK 0 "" "") +- (unspec:BLK [(match_dup 0)] UNSPEC_MEMORY_BARRIER))] ++ (unspec:BLK [(match_dup 0)] UNSPEC_MEMORY_BARRIER)) ++ (clobber (match_operand 1 "pmode_register_operand" "=r"))] ++ "TARGET_PA_20 && TARGET_COHERENT_LDCW" ++ "ldcw,co 0(%%sp),%1" ++ [(set_attr "type" "binary") ++ (set_attr "length" "4")]) ++ ++(define_insn "*memory_barrier_64" ++ [(set (match_operand:BLK 0 "" "") ++ (unspec:BLK [(match_dup 0)] UNSPEC_MEMORY_BARRIER)) ++ (clobber (match_operand 1 "pmode_register_operand" "=&r"))] ++ "TARGET_64BIT" ++ "ldo 15(%%sp),%1\n\tdepd %%r0,63,3,%1\n\tldcw 0(%1),%1" ++ [(set_attr "type" "binary") ++ (set_attr "length" "12")]) ++ ++(define_insn "*memory_barrier_32" ++ [(set (match_operand:BLK 0 "" "") ++ (unspec:BLK [(match_dup 0)] UNSPEC_MEMORY_BARRIER)) ++ (clobber (match_operand 1 "pmode_register_operand" "=&r"))] + "" +- "sync" ++ "ldo 15(%%sp),%1\n\t{dep|depw} %%r0,31,3,%1\n\tldcw 0(%1),%1" + [(set_attr "type" "binary") +- (set_attr "length" "4")]) ++ (set_attr "length" "12")]) +Index: gcc/config/pa/pa.opt +=================================================================== +--- a/src/gcc/config/pa/pa.opt (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/config/pa/pa.opt (.../branches/gcc-8-branch) +@@ -45,6 +45,10 @@ + Target Report Mask(CALLER_COPIES) + Caller copies function arguments passed by hidden reference. + ++mcoherent-ldcw ++Target Report Var(TARGET_COHERENT_LDCW) Init(1) ++Use ldcw/ldcd coherent cache-control hint. ++ + mdisable-fpregs + Target Report Mask(DISABLE_FPREGS) + Disable FP regs. +@@ -90,6 +94,10 @@ + Target RejectNegative Report Mask(NO_SPACE_REGS) + Disable space regs. + ++mordered ++Target Report Var(TARGET_ORDERED) Init(0) ++Assume memory references are ordered and barriers are not needed. ++ + mpa-risc-1-0 + Target RejectNegative + Generate PA1.0 code. +Index: gcc/config/pa/pa-protos.h +=================================================================== +--- a/src/gcc/config/pa/pa-protos.h (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/config/pa/pa-protos.h (.../branches/gcc-8-branch) +@@ -108,5 +108,6 @@ + extern void pa_hpux_asm_output_external (FILE *, tree, const char *); + extern HOST_WIDE_INT pa_initial_elimination_offset (int, int); + extern HOST_WIDE_INT pa_function_arg_size (machine_mode, const_tree); ++extern void pa_output_function_label (FILE *); + + extern const int pa_magic_milli[]; +Index: gcc/config/pa/pa.c +=================================================================== +--- a/src/gcc/config/pa/pa.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/config/pa/pa.c (.../branches/gcc-8-branch) +@@ -118,11 +118,11 @@ + static rtx pa_function_value (const_tree, const_tree, bool); + static rtx pa_libcall_value (machine_mode, const_rtx); + static bool pa_function_value_regno_p (const unsigned int); +-static void pa_output_function_prologue (FILE *); ++static void pa_output_function_prologue (FILE *) ATTRIBUTE_UNUSED; ++static void pa_linux_output_function_prologue (FILE *) ATTRIBUTE_UNUSED; + static void update_total_code_bytes (unsigned int); + static void pa_output_function_epilogue (FILE *); + static int pa_adjust_cost (rtx_insn *, int, rtx_insn *, int, unsigned int); +-static int pa_adjust_priority (rtx_insn *, int); + static int pa_issue_rate (void); + static int pa_reloc_rw_mask (void); + static void pa_som_asm_init_sections (void) ATTRIBUTE_UNUSED; +@@ -263,8 +263,6 @@ + #undef TARGET_ASM_INTEGER + #define TARGET_ASM_INTEGER pa_assemble_integer + +-#undef TARGET_ASM_FUNCTION_PROLOGUE +-#define TARGET_ASM_FUNCTION_PROLOGUE pa_output_function_prologue + #undef TARGET_ASM_FUNCTION_EPILOGUE + #define TARGET_ASM_FUNCTION_EPILOGUE pa_output_function_epilogue + +@@ -280,8 +278,6 @@ + + #undef TARGET_SCHED_ADJUST_COST + #define TARGET_SCHED_ADJUST_COST pa_adjust_cost +-#undef TARGET_SCHED_ADJUST_PRIORITY +-#define TARGET_SCHED_ADJUST_PRIORITY pa_adjust_priority + #undef TARGET_SCHED_ISSUE_RATE + #define TARGET_SCHED_ISSUE_RATE pa_issue_rate + +@@ -3842,16 +3838,10 @@ + & ~(PREFERRED_STACK_BOUNDARY / BITS_PER_UNIT - 1)); + } + +-/* On HP-PA, move-double insns between fpu and cpu need an 8-byte block +- of memory. If any fpu reg is used in the function, we allocate +- such a block here, at the bottom of the frame, just in case it's needed. ++/* Output function label, and associated .PROC and .CALLINFO statements. */ + +- If this function is a leaf procedure, then we may choose not +- to do a "save" insn. The decision about whether or not +- to do this is made in regclass.c. */ +- +-static void +-pa_output_function_prologue (FILE *file) ++void ++pa_output_function_label (FILE *file) + { + /* The function's label and associated .PROC must never be + separated and must be output *after* any profiling declarations +@@ -3897,10 +3887,25 @@ + fprintf (file, ",ENTRY_FR=%d", fr_saved + 11); + + fputs ("\n\t.ENTRY\n", file); ++} + ++/* Output function prologue. */ ++ ++static void ++pa_output_function_prologue (FILE *file) ++{ ++ pa_output_function_label (file); + remove_useless_addtr_insns (0); + } + ++/* The label is output by ASM_DECLARE_FUNCTION_NAME on linux. */ ++ ++static void ++pa_linux_output_function_prologue (FILE *file ATTRIBUTE_UNUSED) ++{ ++ remove_useless_addtr_insns (0); ++} ++ + void + pa_expand_prologue (void) + { +@@ -4569,10 +4574,6 @@ + void + hppa_profile_hook (int label_no) + { +- /* We use SImode for the address of the function in both 32 and +- 64-bit code to avoid having to provide DImode versions of the +- lcla2 and load_offset_label_address insn patterns. */ +- rtx reg = gen_reg_rtx (SImode); + rtx_code_label *label_rtx = gen_label_rtx (); + int reg_parm_stack_space = REG_PARM_STACK_SPACE (NULL_TREE); + rtx arg_bytes, begin_label_rtx, mcount, sym; +@@ -4604,18 +4605,13 @@ + if (!use_mcount_pcrel_call) + { + /* The address of the function is loaded into %r25 with an instruction- +- relative sequence that avoids the use of relocations. The sequence +- is split so that the load_offset_label_address instruction can +- occupy the delay slot of the call to _mcount. */ ++ relative sequence that avoids the use of relocations. We use SImode ++ for the address of the function in both 32 and 64-bit code to avoid ++ having to provide DImode versions of the lcla2 pattern. */ + if (TARGET_PA_20) +- emit_insn (gen_lcla2 (reg, label_rtx)); ++ emit_insn (gen_lcla2 (gen_rtx_REG (SImode, 25), label_rtx)); + else +- emit_insn (gen_lcla1 (reg, label_rtx)); +- +- emit_insn (gen_load_offset_label_address (gen_rtx_REG (SImode, 25), +- reg, +- begin_label_rtx, +- label_rtx)); ++ emit_insn (gen_lcla1 (gen_rtx_REG (SImode, 25), label_rtx)); + } + + if (!NO_DEFERRED_PROFILE_COUNTERS) +@@ -4992,37 +4988,6 @@ + } + } + +-/* Adjust scheduling priorities. We use this to try and keep addil +- and the next use of %r1 close together. */ +-static int +-pa_adjust_priority (rtx_insn *insn, int priority) +-{ +- rtx set = single_set (insn); +- rtx src, dest; +- if (set) +- { +- src = SET_SRC (set); +- dest = SET_DEST (set); +- if (GET_CODE (src) == LO_SUM +- && symbolic_operand (XEXP (src, 1), VOIDmode) +- && ! read_only_operand (XEXP (src, 1), VOIDmode)) +- priority >>= 3; +- +- else if (GET_CODE (src) == MEM +- && GET_CODE (XEXP (src, 0)) == LO_SUM +- && symbolic_operand (XEXP (XEXP (src, 0), 1), VOIDmode) +- && ! read_only_operand (XEXP (XEXP (src, 0), 1), VOIDmode)) +- priority >>= 1; +- +- else if (GET_CODE (dest) == MEM +- && GET_CODE (XEXP (dest, 0)) == LO_SUM +- && symbolic_operand (XEXP (XEXP (dest, 0), 1), VOIDmode) +- && ! read_only_operand (XEXP (XEXP (dest, 0), 1), VOIDmode)) +- priority >>= 3; +- } +- return priority; +-} +- + /* The 700 can only issue a single insn at a time. + The 7XXX processors can issue two insns at a time. + The 8000 can issue 4 insns at a time. */ +@@ -7888,7 +7853,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) +@@ -7960,12 +7925,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); +@@ -7972,26 +7934,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 + { +@@ -8084,20 +8035,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) + { +@@ -8190,10 +8143,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)) +@@ -8203,13 +8152,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; + } +@@ -8246,22 +8198,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. + +@@ -8290,35 +8226,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); +@@ -10039,10 +9980,11 @@ + /* There is no way to load QImode or HImode values directly from memory + to a FP register. SImode loads to the FP registers are not zero + extended. On the 64-bit target, this conflicts with the definition +- of LOAD_EXTEND_OP. Thus, we can't allow changing between modes with +- different sizes in the floating-point registers. */ ++ of LOAD_EXTEND_OP. Thus, we reject all mode changes in the FP registers ++ except for DImode to SImode on the 64-bit target. It is handled by ++ register renaming in pa_print_operand. */ + if (MAYBE_FP_REG_CLASS_P (rclass)) +- return false; ++ return TARGET_64BIT && from == DImode && to == SImode; + + /* TARGET_HARD_REGNO_MODE_OK places modes with sizes larger than a word + in specific sets of registers. Thus, we cannot allow changing +@@ -10076,7 +10018,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 +@@ -10097,27 +10039,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); +@@ -10131,11 +10092,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); + } +@@ -10145,10 +10106,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 +@@ -10174,15 +10135,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, +@@ -10234,7 +10195,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 + } +@@ -10241,13 +10202,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-linux.h +=================================================================== +--- a/src/gcc/config/pa/pa-linux.h (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/config/pa/pa-linux.h (.../branches/gcc-8-branch) +@@ -101,7 +101,7 @@ + + /* FIXME: Hacked from the <elfos.h> one so that we avoid multiple + labels in a function declaration (since pa.c seems determined to do +- it differently) */ ++ it differently). */ + + #undef ASM_DECLARE_FUNCTION_NAME + #define ASM_DECLARE_FUNCTION_NAME(FILE, NAME, DECL) \ +@@ -109,9 +109,14 @@ + { \ + ASM_OUTPUT_TYPE_DIRECTIVE (FILE, NAME, "function"); \ + ASM_DECLARE_RESULT (FILE, DECL_RESULT (DECL)); \ ++ pa_output_function_label (FILE); \ + } \ + while (0) + ++/* Output function prologue for linux. */ ++#undef TARGET_ASM_FUNCTION_PROLOGUE ++#define TARGET_ASM_FUNCTION_PROLOGUE pa_linux_output_function_prologue ++ + /* As well as globalizing the label, we need to encode the label + to ensure a plabel is generated in an indirect call. */ + +Index: gcc/config/pa/pa.h +=================================================================== +--- a/src/gcc/config/pa/pa.h (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/config/pa/pa.h (.../branches/gcc-8-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,12 +1293,14 @@ + #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 ++ ++/* Output default function prologue for hpux. */ ++#define TARGET_ASM_FUNCTION_PROLOGUE pa_output_function_prologue +Index: gcc/config/darwin9.h +=================================================================== +--- a/src/gcc/config/darwin9.h (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/config/darwin9.h (.../branches/gcc-8-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_8_3_0_release) ++++ b/src/gcc/config/mips/mips.md (.../branches/gcc-8-branch) +@@ -5772,8 +5772,8 @@ + "ISA_HAS_ROR" + { + if (CONST_INT_P (operands[2])) +- gcc_assert (INTVAL (operands[2]) >= 0 +- && INTVAL (operands[2]) < GET_MODE_BITSIZE (<MODE>mode)); ++ operands[2] = GEN_INT (INTVAL (operands[2]) ++ & (GET_MODE_BITSIZE (<MODE>mode) - 1)); + + return "<d>ror\t%0,%1,%2"; + } +@@ -7502,7 +7502,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) +@@ -7514,7 +7514,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_8_3_0_release) ++++ b/src/gcc/config/mips/mips.c (.../branches/gcc-8-branch) +@@ -9532,7 +9532,7 @@ + { + machine_mode mode = default_dwarf_frame_reg_mode (regno); + +- if (FP_REG_P (regno) && mips_abi == ABI_32 && TARGET_FLOAT64) ++ if (FP_REG_P (regno) && mips_abi == ABI_32 && !TARGET_FLOAT32) + mode = SImode; + + return mode; +@@ -16788,6 +16788,19 @@ + std::swap (ops[1], ops[2]); + break; + ++ case CODE_FOR_msa_maddv_b: ++ case CODE_FOR_msa_maddv_h: ++ case CODE_FOR_msa_maddv_w: ++ case CODE_FOR_msa_maddv_d: ++ case CODE_FOR_msa_fmadd_w: ++ case CODE_FOR_msa_fmadd_d: ++ case CODE_FOR_msa_fmsub_w: ++ case CODE_FOR_msa_fmsub_d: ++ /* fma(a, b, c) results into (a * b + c), however builtin_msa_fmadd expects ++ it to be (a + b * c). Swap the 1st and 3rd operands. */ ++ std::swap (ops[1], ops[3]); ++ break; ++ + case CODE_FOR_msa_slli_b: + case CODE_FOR_msa_slli_h: + case CODE_FOR_msa_slli_w: +Index: gcc/tree-vect-slp.c +=================================================================== +--- a/src/gcc/tree-vect-slp.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/tree-vect-slp.c (.../branches/gcc-8-branch) +@@ -1308,6 +1308,9 @@ + && nops == 2 + && oprnds_info[1]->first_dt == vect_internal_def + && is_gimple_assign (stmt) ++ /* Swapping operands for reductions breaks assumptions later on. */ ++ && STMT_VINFO_DEF_TYPE (vinfo_for_stmt (stmt)) != vect_reduction_def ++ && STMT_VINFO_DEF_TYPE (vinfo_for_stmt (stmt)) != vect_double_reduction_def + /* Do so only if the number of not successful permutes was nor more + than a cut-ff as re-trying the recursive match on + possibly each level of the tree would expose exponential +Index: gcc/cfgrtl.c +=================================================================== +--- a/src/gcc/cfgrtl.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/cfgrtl.c (.../branches/gcc-8-branch) +@@ -4233,7 +4233,7 @@ + /* Create a duplicate of the basic block BB. */ + + static basic_block +-cfg_layout_duplicate_bb (basic_block bb) ++cfg_layout_duplicate_bb (basic_block bb, copy_bb_data *) + { + rtx_insn *insn; + basic_block new_bb; +@@ -5059,9 +5059,9 @@ + } + + static basic_block +-rtl_duplicate_bb (basic_block bb) ++rtl_duplicate_bb (basic_block bb, copy_bb_data *id) + { +- bb = cfg_layout_duplicate_bb (bb); ++ bb = cfg_layout_duplicate_bb (bb, id); + bb->aux = NULL; + return bb; + } +Index: gcc/dce.c +=================================================================== +--- a/src/gcc/dce.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/dce.c (.../branches/gcc-8-branch) +@@ -35,6 +35,7 @@ + #include "valtrack.h" + #include "tree-pass.h" + #include "dbgcnt.h" ++#include "rtl-iter.h" + + + /* ------------------------------------------------------------------------- +@@ -86,7 +87,33 @@ + } + } + ++/* Don't delete calls that may throw if we cannot do so. */ + ++static bool ++can_delete_call (rtx_insn *insn) ++{ ++ if (cfun->can_delete_dead_exceptions && can_alter_cfg) ++ return true; ++ if (!insn_nothrow_p (insn)) ++ return false; ++ if (can_alter_cfg) ++ return true; ++ /* If we can't alter cfg, even when the call can't throw exceptions, it ++ might have EDGE_ABNORMAL_CALL edges and so we shouldn't delete such ++ calls. */ ++ gcc_assert (CALL_P (insn)); ++ if (BLOCK_FOR_INSN (insn) && BB_END (BLOCK_FOR_INSN (insn)) == insn) ++ { ++ edge e; ++ edge_iterator ei; ++ ++ FOR_EACH_EDGE (e, ei, BLOCK_FOR_INSN (insn)->succs) ++ if ((e->flags & EDGE_ABNORMAL_CALL) != 0) ++ return false; ++ } ++ return true; ++} ++ + /* Return true if INSN is a normal instruction that can be deleted by + the DCE pass. */ + +@@ -110,8 +137,7 @@ + && (RTL_CONST_OR_PURE_CALL_P (insn) + && !RTL_LOOPING_CONST_OR_PURE_CALL_P (insn)) + /* Don't delete calls that may throw if we cannot do so. */ +- && ((cfun->can_delete_dead_exceptions && can_alter_cfg) +- || insn_nothrow_p (insn))) ++ && can_delete_call (insn)) + return find_call_stack_args (as_a <rtx_call_insn *> (insn), false, + fast, arg_stores); + +@@ -204,8 +230,7 @@ + && !SIBLING_CALL_P (insn) + && (RTL_CONST_OR_PURE_CALL_P (insn) + && !RTL_LOOPING_CONST_OR_PURE_CALL_P (insn)) +- && ((cfun->can_delete_dead_exceptions && can_alter_cfg) +- || insn_nothrow_p (insn))) ++ && can_delete_call (insn)) + find_call_stack_args (as_a <rtx_call_insn *> (insn), true, fast, NULL); + } + } +@@ -265,7 +290,101 @@ + return true; + } + ++/* If MEM has sp address, return 0, if it has sp + const address, ++ return that const, if it has reg address where reg is set to sp + const ++ and FAST is false, return const, otherwise return ++ INTTYPE_MINUMUM (HOST_WIDE_INT). */ + ++static HOST_WIDE_INT ++sp_based_mem_offset (rtx_call_insn *call_insn, const_rtx mem, bool fast) ++{ ++ HOST_WIDE_INT off = 0; ++ rtx addr = XEXP (mem, 0); ++ if (GET_CODE (addr) == PLUS ++ && REG_P (XEXP (addr, 0)) ++ && CONST_INT_P (XEXP (addr, 1))) ++ { ++ off = INTVAL (XEXP (addr, 1)); ++ addr = XEXP (addr, 0); ++ } ++ if (addr == stack_pointer_rtx) ++ return off; ++ ++ if (!REG_P (addr) || fast) ++ return INTTYPE_MINIMUM (HOST_WIDE_INT); ++ ++ /* If not fast, use chains to see if addr wasn't set to sp + offset. */ ++ df_ref use; ++ FOR_EACH_INSN_USE (use, call_insn) ++ if (rtx_equal_p (addr, DF_REF_REG (use))) ++ break; ++ ++ if (use == NULL) ++ return INTTYPE_MINIMUM (HOST_WIDE_INT); ++ ++ struct df_link *defs; ++ for (defs = DF_REF_CHAIN (use); defs; defs = defs->next) ++ if (! DF_REF_IS_ARTIFICIAL (defs->ref)) ++ break; ++ ++ if (defs == NULL) ++ return INTTYPE_MINIMUM (HOST_WIDE_INT); ++ ++ rtx set = single_set (DF_REF_INSN (defs->ref)); ++ if (!set) ++ return INTTYPE_MINIMUM (HOST_WIDE_INT); ++ ++ if (GET_CODE (SET_SRC (set)) != PLUS ++ || XEXP (SET_SRC (set), 0) != stack_pointer_rtx ++ || !CONST_INT_P (XEXP (SET_SRC (set), 1))) ++ return INTTYPE_MINIMUM (HOST_WIDE_INT); ++ ++ off += INTVAL (XEXP (SET_SRC (set), 1)); ++ return off; ++} ++ ++/* Data for check_argument_load called via note_uses. */ ++struct check_argument_load_data { ++ bitmap sp_bytes; ++ HOST_WIDE_INT min_sp_off, max_sp_off; ++ rtx_call_insn *call_insn; ++ bool fast; ++ bool load_found; ++}; ++ ++/* Helper function for find_call_stack_args. Check if there are ++ any loads from the argument slots in between the const/pure call ++ and store to the argument slot, set LOAD_FOUND if any is found. */ ++ ++static void ++check_argument_load (rtx *loc, void *data) ++{ ++ struct check_argument_load_data *d ++ = (struct check_argument_load_data *) data; ++ subrtx_iterator::array_type array; ++ FOR_EACH_SUBRTX (iter, array, *loc, NONCONST) ++ { ++ const_rtx mem = *iter; ++ HOST_WIDE_INT size; ++ if (MEM_P (mem) ++ && MEM_SIZE_KNOWN_P (mem) ++ && MEM_SIZE (mem).is_constant (&size)) ++ { ++ HOST_WIDE_INT off = sp_based_mem_offset (d->call_insn, mem, d->fast); ++ if (off != INTTYPE_MINIMUM (HOST_WIDE_INT) ++ && off < d->max_sp_off ++ && off + size > d->min_sp_off) ++ for (HOST_WIDE_INT byte = MAX (off, d->min_sp_off); ++ byte < MIN (off + size, d->max_sp_off); byte++) ++ if (bitmap_bit_p (d->sp_bytes, byte - d->min_sp_off)) ++ { ++ d->load_found = true; ++ return; ++ } ++ } ++ } ++} ++ + /* Try to find all stack stores of CALL_INSN arguments if + ACCUMULATE_OUTGOING_ARGS. If all stack stores have been found + and it is therefore safe to eliminate the call, return true, +@@ -302,58 +421,13 @@ + if (GET_CODE (XEXP (p, 0)) == USE + && MEM_P (XEXP (XEXP (p, 0), 0))) + { +- rtx mem = XEXP (XEXP (p, 0), 0), addr; +- HOST_WIDE_INT off = 0, size; ++ rtx mem = XEXP (XEXP (p, 0), 0); ++ HOST_WIDE_INT size; + if (!MEM_SIZE_KNOWN_P (mem) || !MEM_SIZE (mem).is_constant (&size)) + return false; +- addr = XEXP (mem, 0); +- if (GET_CODE (addr) == PLUS +- && REG_P (XEXP (addr, 0)) +- && CONST_INT_P (XEXP (addr, 1))) +- { +- off = INTVAL (XEXP (addr, 1)); +- addr = XEXP (addr, 0); +- } +- if (addr != stack_pointer_rtx) +- { +- if (!REG_P (addr)) +- return false; +- /* If not fast, use chains to see if addr wasn't set to +- sp + offset. */ +- if (!fast) +- { +- df_ref use; +- struct df_link *defs; +- rtx set; +- +- FOR_EACH_INSN_USE (use, call_insn) +- if (rtx_equal_p (addr, DF_REF_REG (use))) +- break; +- +- if (use == NULL) +- return false; +- +- for (defs = DF_REF_CHAIN (use); defs; defs = defs->next) +- if (! DF_REF_IS_ARTIFICIAL (defs->ref)) +- break; +- +- if (defs == NULL) +- return false; +- +- set = single_set (DF_REF_INSN (defs->ref)); +- if (!set) +- return false; +- +- if (GET_CODE (SET_SRC (set)) != PLUS +- || XEXP (SET_SRC (set), 0) != stack_pointer_rtx +- || !CONST_INT_P (XEXP (SET_SRC (set), 1))) +- return false; +- +- off += INTVAL (XEXP (SET_SRC (set), 1)); +- } +- else +- return false; +- } ++ HOST_WIDE_INT off = sp_based_mem_offset (call_insn, mem, fast); ++ if (off == INTTYPE_MINIMUM (HOST_WIDE_INT)) ++ return false; + min_sp_off = MIN (min_sp_off, off); + max_sp_off = MAX (max_sp_off, off + size); + } +@@ -369,51 +443,24 @@ + if (GET_CODE (XEXP (p, 0)) == USE + && MEM_P (XEXP (XEXP (p, 0), 0))) + { +- rtx mem = XEXP (XEXP (p, 0), 0), addr; +- HOST_WIDE_INT off = 0, byte, size; ++ rtx mem = XEXP (XEXP (p, 0), 0); + /* Checked in the previous iteration. */ +- size = MEM_SIZE (mem).to_constant (); +- addr = XEXP (mem, 0); +- if (GET_CODE (addr) == PLUS +- && REG_P (XEXP (addr, 0)) +- && CONST_INT_P (XEXP (addr, 1))) +- { +- off = INTVAL (XEXP (addr, 1)); +- addr = XEXP (addr, 0); +- } +- if (addr != stack_pointer_rtx) +- { +- df_ref use; +- struct df_link *defs; +- rtx set; +- +- FOR_EACH_INSN_USE (use, call_insn) +- if (rtx_equal_p (addr, DF_REF_REG (use))) +- break; +- +- for (defs = DF_REF_CHAIN (use); defs; defs = defs->next) +- if (! DF_REF_IS_ARTIFICIAL (defs->ref)) +- break; +- +- set = single_set (DF_REF_INSN (defs->ref)); +- off += INTVAL (XEXP (SET_SRC (set), 1)); +- } +- for (byte = off; byte < off + size; byte++) +- { +- if (!bitmap_set_bit (sp_bytes, byte - min_sp_off)) +- gcc_unreachable (); +- } ++ HOST_WIDE_INT size = MEM_SIZE (mem).to_constant (); ++ HOST_WIDE_INT off = sp_based_mem_offset (call_insn, mem, fast); ++ gcc_checking_assert (off != INTTYPE_MINIMUM (HOST_WIDE_INT)); ++ for (HOST_WIDE_INT byte = off; byte < off + size; byte++) ++ if (!bitmap_set_bit (sp_bytes, byte - min_sp_off)) ++ gcc_unreachable (); + } + + /* Walk backwards, looking for argument stores. The search stops +- when seeing another call, sp adjustment or memory store other than +- argument store. */ ++ when seeing another call, sp adjustment, memory store other than ++ argument store or a read from an argument stack slot. */ ++ struct check_argument_load_data data ++ = { sp_bytes, min_sp_off, max_sp_off, call_insn, fast, false }; + ret = false; + for (insn = PREV_INSN (call_insn); insn; insn = prev_insn) + { +- rtx set, mem, addr; +- HOST_WIDE_INT off; +- + if (insn == BB_HEAD (BLOCK_FOR_INSN (call_insn))) + prev_insn = NULL; + else +@@ -425,62 +472,22 @@ + if (!NONDEBUG_INSN_P (insn)) + continue; + +- set = single_set (insn); ++ rtx set = single_set (insn); + if (!set || SET_DEST (set) == stack_pointer_rtx) + break; + ++ note_uses (&PATTERN (insn), check_argument_load, &data); ++ if (data.load_found) ++ break; ++ + if (!MEM_P (SET_DEST (set))) + continue; + +- mem = SET_DEST (set); +- addr = XEXP (mem, 0); +- off = 0; +- if (GET_CODE (addr) == PLUS +- && REG_P (XEXP (addr, 0)) +- && CONST_INT_P (XEXP (addr, 1))) +- { +- off = INTVAL (XEXP (addr, 1)); +- addr = XEXP (addr, 0); +- } +- if (addr != stack_pointer_rtx) +- { +- if (!REG_P (addr)) +- break; +- if (!fast) +- { +- df_ref use; +- struct df_link *defs; +- rtx set; ++ rtx mem = SET_DEST (set); ++ HOST_WIDE_INT off = sp_based_mem_offset (call_insn, mem, fast); ++ if (off == INTTYPE_MINIMUM (HOST_WIDE_INT)) ++ break; + +- FOR_EACH_INSN_USE (use, insn) +- if (rtx_equal_p (addr, DF_REF_REG (use))) +- break; +- +- if (use == NULL) +- break; +- +- for (defs = DF_REF_CHAIN (use); defs; defs = defs->next) +- if (! DF_REF_IS_ARTIFICIAL (defs->ref)) +- break; +- +- if (defs == NULL) +- break; +- +- set = single_set (DF_REF_INSN (defs->ref)); +- if (!set) +- break; +- +- if (GET_CODE (SET_SRC (set)) != PLUS +- || XEXP (SET_SRC (set), 0) != stack_pointer_rtx +- || !CONST_INT_P (XEXP (SET_SRC (set), 1))) +- break; +- +- off += INTVAL (XEXP (SET_SRC (set), 1)); +- } +- else +- break; +- } +- + HOST_WIDE_INT size; + if (!MEM_SIZE_KNOWN_P (mem) + || !MEM_SIZE (mem).is_constant (&size) +Index: gcc/params.def +=================================================================== +--- a/src/gcc/params.def (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/params.def (.../branches/gcc-8-branch) +@@ -1331,6 +1331,11 @@ + "Maximum number of bits for which we avoid creating FMAs.", + 0, 0, 512) + ++DEFPARAM(PARAM_LOGICAL_OP_NON_SHORT_CIRCUIT, ++ "logical-op-non-short-circuit", ++ "True if a non-short-circuit operation is optimal.", ++ -1, -1, 1) ++ + /* + + Local variables: +Index: gcc/tree-ssanames.c +=================================================================== +--- a/src/gcc/tree-ssanames.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/tree-ssanames.c (.../branches/gcc-8-branch) +@@ -788,7 +788,12 @@ + { + /* points-to info is not flow-sensitive. */ + if (SSA_NAME_PTR_INFO (name)) +- mark_ptr_info_alignment_unknown (SSA_NAME_PTR_INFO (name)); ++ { ++ /* [E]VRP can derive context sensitive alignment info and ++ non-nullness properties. We must reset both. */ ++ mark_ptr_info_alignment_unknown (SSA_NAME_PTR_INFO (name)); ++ SSA_NAME_PTR_INFO (name)->pt.null = 1; ++ } + } + else + SSA_NAME_RANGE_INFO (name) = NULL; +Index: gcc/convert.c +=================================================================== +--- a/src/gcc/convert.c (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/convert.c (.../branches/gcc-8-branch) +@@ -193,12 +193,15 @@ + CASE_MATHFN (FABS) + CASE_MATHFN (LOGB) + #undef CASE_MATHFN ++ if (call_expr_nargs (expr) != 1 ++ || !SCALAR_FLOAT_TYPE_P (TREE_TYPE (CALL_EXPR_ARG (expr, 0)))) ++ break; + { + tree arg0 = strip_float_extensions (CALL_EXPR_ARG (expr, 0)); + tree newtype = type; + +- /* We have (outertype)sqrt((innertype)x). Choose the wider mode from +- the both as the safe type for operation. */ ++ /* We have (outertype)sqrt((innertype)x). Choose the wider mode ++ from the both as the safe type for operation. */ + if (TYPE_PRECISION (TREE_TYPE (arg0)) > TYPE_PRECISION (type)) + newtype = TREE_TYPE (arg0); + +@@ -592,7 +595,8 @@ + CASE_FLT_FN (BUILT_IN_ROUND): + CASE_FLT_FN_FLOATN_NX (BUILT_IN_ROUND): + /* Only convert in ISO C99 mode and with -fno-math-errno. */ +- if (!targetm.libc_has_function (function_c99_misc) || flag_errno_math) ++ if (!targetm.libc_has_function (function_c99_misc) ++ || flag_errno_math) + break; + if (outprec < TYPE_PRECISION (integer_type_node) + || (outprec == TYPE_PRECISION (integer_type_node) +@@ -615,7 +619,8 @@ + CASE_FLT_FN (BUILT_IN_RINT): + CASE_FLT_FN_FLOATN_NX (BUILT_IN_RINT): + /* Only convert in ISO C99 mode and with -fno-math-errno. */ +- if (!targetm.libc_has_function (function_c99_misc) || flag_errno_math) ++ if (!targetm.libc_has_function (function_c99_misc) ++ || flag_errno_math) + break; + if (outprec < TYPE_PRECISION (integer_type_node) + || (outprec == TYPE_PRECISION (integer_type_node) +@@ -631,14 +636,20 @@ + + CASE_FLT_FN (BUILT_IN_TRUNC): + CASE_FLT_FN_FLOATN_NX (BUILT_IN_TRUNC): +- return convert_to_integer_1 (type, CALL_EXPR_ARG (s_expr, 0), dofold); ++ if (call_expr_nargs (s_expr) != 1 ++ || !SCALAR_FLOAT_TYPE_P (TREE_TYPE (CALL_EXPR_ARG (s_expr, 0)))) ++ break; ++ return convert_to_integer_1 (type, CALL_EXPR_ARG (s_expr, 0), ++ dofold); + + default: + break; + } + +- if (fn) +- { ++ if (fn ++ && call_expr_nargs (s_expr) == 1 ++ && SCALAR_FLOAT_TYPE_P (TREE_TYPE (CALL_EXPR_ARG (s_expr, 0)))) ++ { + tree newexpr = build_call_expr (fn, 1, CALL_EXPR_ARG (s_expr, 0)); + return convert_to_integer_1 (type, newexpr, dofold); + } +@@ -668,7 +679,9 @@ + break; + } + +- if (fn) ++ if (fn ++ && call_expr_nargs (s_expr) == 1 ++ && SCALAR_FLOAT_TYPE_P (TREE_TYPE (CALL_EXPR_ARG (s_expr, 0)))) + { + tree newexpr = build_call_expr (fn, 1, CALL_EXPR_ARG (s_expr, 0)); + return convert_to_integer_1 (type, newexpr, dofold); +Index: gcc/lto-streamer.h +=================================================================== +--- a/src/gcc/lto-streamer.h (.../tags/gcc_8_3_0_release) ++++ b/src/gcc/lto-streamer.h (.../branches/gcc-8-branch) +@@ -121,7 +121,7 @@ + form followed by the data for the string. */ + + #define LTO_major_version 7 +-#define LTO_minor_version 1 ++#define LTO_minor_version 3 + + typedef unsigned char lto_decl_flags_t; + +Index: libgfortran/intrinsics/random.c +=================================================================== +--- a/src/libgfortran/intrinsics/random.c (.../tags/gcc_8_3_0_release) ++++ b/src/libgfortran/intrinsics/random.c (.../branches/gcc-8-branch) +@@ -272,31 +272,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. */ + +@@ -326,7 +315,7 @@ + close (fd); + return res; + } +- uint32_t seed = 1234567890; ++ uint64_t seed = 0x047f7684e9fc949dULL; + time_t secs; + long usecs; + if (gf_gettime (&secs, &usecs) == 0) +@@ -338,13 +327,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 */ + } + +@@ -359,7 +344,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_8_3_0_release) ++++ b/src/libgfortran/ChangeLog (.../branches/gcc-8-branch) +@@ -1,3 +1,44 @@ ++2019-11-26 Jerry DeLisle <jvdelisle@gcc.ngu.org> ++ ++ Backport from mainline ++ PR fortran/92100 ++ io/transfer.c (data_transfer_init): Use fbuf_reset ++ instead of fbuf_flush before the seek. Note that fbuf_reset ++ calls fbuf_flush and adjusts fbuf pointers. ++ ++2019-11-25 Thomas Koenig <tkoenig@gcc.gnu.org> ++ Harald Anlauf <anlauf@gmx.de> ++ ++ Backport from trunk ++ PR fortran/92569 ++ * io/transfer.c (transfer_array_inner): If position is ++ at AFTER_ENDFILE in current unit, return from data loop. ++ ++2019-08-13 Janne Blomqvist <jb@gcc.gnu.org> ++ ++ Partial backport from trunk ++ PR fortran/91414 ++ * intrinsics/random.c (lcg_parkmiller): Replace with splitmix64. ++ (splitmix64): New function. ++ (getosrandom): Simplify. ++ (init_rand_state): Use getosrandom only to get 8 bytes, splitmix64 ++ to fill rest of state. ++ ++2019-04-16 John David Anglin <danglin@gcc.gnu.org> ++ ++ Backport from mainline ++ 2019-03-25 John David Anglin <danglin@gcc.gnu.org> ++ ++ PR libgfortran/79540 ++ * io/write_float.def (build_float_string): Don't copy digits when ++ ndigits is negative. ++ ++2019-03-02 Jerry DeLisle <jvdelisle@gcc.gnu.org> ++ ++ PR libfortran/89020 ++ * io/close.c (st_close): Generate error if calls to 'remove' return ++ an error. ++ + 2019-02-22 Release Manager + + * GCC 8.3.0 released. +Index: libgfortran/io/close.c +=================================================================== +--- a/src/libgfortran/io/close.c (.../tags/gcc_8_3_0_release) ++++ b/src/libgfortran/io/close.c (.../branches/gcc-8-branch) +@@ -90,7 +90,10 @@ + else + { + #if HAVE_UNLINK_OPEN_FILE +- remove (u->filename); ++ ++ if (remove (u->filename)) ++ generate_error (&clp->common, LIBERROR_OS, ++ "File cannot be deleted"); + #else + path = strdup (u->filename); + #endif +@@ -103,7 +106,9 @@ + #if !HAVE_UNLINK_OPEN_FILE + if (path != NULL) + { +- remove (path); ++ if (remove (path)) ++ generate_error (&clp->common, LIBERROR_OS, ++ "File cannot be deleted"); + free (path); + } + #endif +Index: libgfortran/io/transfer.c +=================================================================== +--- a/src/libgfortran/io/transfer.c (.../tags/gcc_8_3_0_release) ++++ b/src/libgfortran/io/transfer.c (.../branches/gcc-8-branch) +@@ -2493,26 +2493,62 @@ + + data = GFC_DESCRIPTOR_DATA (desc); + +- while (data) ++ /* When reading, we need to check endfile conditions so we do not miss ++ an END=label. Make this separate so we do not have an extra test ++ in a tight loop when it is not needed. */ ++ ++ if (dtp->u.p.current_unit && dtp->u.p.mode == READING) + { +- dtp->u.p.transfer (dtp, iotype, data, kind, size, tsize); +- data += stride0 * tsize; +- count[0] += tsize; +- n = 0; +- while (count[n] == extent[n]) ++ while (data) + { +- count[n] = 0; +- data -= stride[n] * extent[n]; +- n++; +- if (n == rank) ++ if (unlikely (dtp->u.p.current_unit->endfile == AFTER_ENDFILE)) ++ return; ++ ++ dtp->u.p.transfer (dtp, iotype, data, kind, size, tsize); ++ data += stride0 * tsize; ++ count[0] += tsize; ++ n = 0; ++ while (count[n] == extent[n]) + { +- data = NULL; +- break; ++ count[n] = 0; ++ data -= stride[n] * extent[n]; ++ n++; ++ if (n == rank) ++ { ++ data = NULL; ++ break; ++ } ++ else ++ { ++ count[n]++; ++ data += stride[n]; ++ } + } +- else ++ } ++ } ++ else ++ { ++ while (data) ++ { ++ dtp->u.p.transfer (dtp, iotype, data, kind, size, tsize); ++ data += stride0 * tsize; ++ count[0] += tsize; ++ n = 0; ++ while (count[n] == extent[n]) + { +- count[n]++; +- data += stride[n]; ++ count[n] = 0; ++ data -= stride[n] * extent[n]; ++ n++; ++ if (n == rank) ++ { ++ data = NULL; ++ break; ++ } ++ else ++ { ++ count[n]++; ++ data += stride[n]; ++ } + } + } + } +@@ -3102,8 +3138,9 @@ + + if (dtp->pos != dtp->u.p.current_unit->strm_pos) + { +- fbuf_flush (dtp->u.p.current_unit, dtp->u.p.mode); +- if (sseek (dtp->u.p.current_unit->s, dtp->pos - 1, SEEK_SET) < 0) ++ fbuf_reset (dtp->u.p.current_unit); ++ if (sseek (dtp->u.p.current_unit->s, ++ dtp->pos - 1, SEEK_SET) < 0) + { + generate_error (&dtp->common, LIBERROR_OS, NULL); + return; +Index: libgfortran/io/write_float.def +=================================================================== +--- a/src/libgfortran/io/write_float.def (.../tags/gcc_8_3_0_release) ++++ b/src/libgfortran/io/write_float.def (.../branches/gcc-8-branch) +@@ -620,7 +620,7 @@ + } + + /* Set digits after the decimal point, padding with zeros. */ +- if (nafter > 0) ++ if (ndigits >= 0 && nafter > 0) + { + if (nafter > ndigits) + i = ndigits; +@@ -627,7 +627,8 @@ + else + i = nafter; + +- memcpy (put, digits, i); ++ if (i > 0) ++ memcpy (put, digits, i); + while (i < nafter) + put[i++] = '0'; + +Index: libcpp/directives.c +=================================================================== +--- a/src/libcpp/directives.c (.../tags/gcc_8_3_0_release) ++++ b/src/libcpp/directives.c (.../branches/gcc-8-branch) +@@ -1574,6 +1574,8 @@ + node = _cpp_lex_identifier (pfile, c->name); + if (node->type == NT_VOID) + c->is_undef = 1; ++ else if (node->type == NT_MACRO && (node->flags & NODE_BUILTIN)) ++ c->is_builtin = 1; + else + { + defn = cpp_macro_definition (pfile, node); +@@ -2504,6 +2506,11 @@ + cpp_hashnode *node = _cpp_lex_identifier (pfile, c->name); + if (node == NULL) + return; ++ if (c->is_builtin) ++ { ++ _cpp_restore_special_builtin (pfile, c); ++ return; ++ } + + if (pfile->cb.before_define) + pfile->cb.before_define (pfile); +Index: libcpp/line-map.c +=================================================================== +--- a/src/libcpp/line-map.c (.../tags/gcc_8_3_0_release) ++++ b/src/libcpp/line-map.c (.../branches/gcc-8-branch) +@@ -755,6 +755,11 @@ + if (line_delta < 0 + || last_line != ORDINARY_MAP_STARTING_LINE_NUMBER (map) + || SOURCE_COLUMN (map, highest) >= (1U << (column_bits - range_bits)) ++ || ( /* We can't reuse the map if the line offset is sufficiently ++ large to cause overflow when computing location_t values. */ ++ (to_line - ORDINARY_MAP_STARTING_LINE_NUMBER (map)) ++ >= (((uint64_t) 1) ++ << (CHAR_BIT * sizeof (linenum_type) - column_bits))) + || range_bits < map->m_range_bits) + map = linemap_check_ordinary + (const_cast <line_map *> +Index: libcpp/init.c +=================================================================== +--- a/src/libcpp/init.c (.../tags/gcc_8_3_0_release) ++++ b/src/libcpp/init.c (.../branches/gcc-8-branch) +@@ -488,6 +488,26 @@ + } + } + ++/* Restore macro C to builtin macro definition. */ ++ ++void ++_cpp_restore_special_builtin (cpp_reader *pfile, struct def_pragma_macro *c) ++{ ++ size_t len = strlen (c->name); ++ ++ for (const struct builtin_macro *b = builtin_array; ++ b < builtin_array + ARRAY_SIZE (builtin_array); b++) ++ if (b->len == len && memcmp (c->name, b->name, len + 1) == 0) ++ { ++ cpp_hashnode *hp = cpp_lookup (pfile, b->name, b->len); ++ hp->type = NT_MACRO; ++ hp->flags |= NODE_BUILTIN; ++ if (b->always_warn_if_redefined) ++ hp->flags |= NODE_WARN; ++ hp->value.builtin = (enum cpp_builtin_type) b->value; ++ } ++} ++ + /* Read the builtins table above and enter them, and language-specific + macros, into the hash table. HOSTED is true if this is a hosted + environment. */ +Index: libcpp/ChangeLog +=================================================================== +--- a/src/libcpp/ChangeLog (.../tags/gcc_8_3_0_release) ++++ b/src/libcpp/ChangeLog (.../branches/gcc-8-branch) +@@ -1,3 +1,36 @@ ++2019-11-21 Jakub Jelinek <jakub@redhat.com> ++ ++ Backported from mainline ++ 2019-10-31 Jakub Jelinek <jakub@redhat.com> ++ ++ PR preprocessor/92296 ++ * internal.h (struct def_pragma_macro): Add is_builtin bitfield. ++ (_cpp_restore_special_builtin): Declare. ++ * init.c (_cpp_restore_special_builtin): New function. ++ * directives.c (do_pragma_push_macro): For NT_MACRO with NODE_BUILTIN ++ set is_builtin and don't try to grab definition. ++ (cpp_pop_definition): Use _cpp_restore_special_builtin to restore ++ builtin macros. ++ ++2019-03-11 Martin Liska <mliska@suse.cz> ++ ++ Backport from mainline ++ 2019-02-18 Martin Liska <mliska@suse.cz> ++ ++ PR c++/89383 ++ * line-map.c (linemap_line_start): Use 1UL in order ++ to not overflow. ++ ++2019-03-11 Martin Liska <mliska@suse.cz> ++ ++ Backport from mainline ++ 2019-02-11 Martin Liska <mliska@suse.cz> ++ ++ PR lto/88147 ++ * line-map.c (linemap_line_start): Don't reuse the existing line ++ map if the line offset is sufficiently large to cause overflow ++ when computing location_t values. ++ + 2019-02-22 Release Manager + + * GCC 8.3.0 released. +Index: libcpp/internal.h +=================================================================== +--- a/src/libcpp/internal.h (.../tags/gcc_8_3_0_release) ++++ b/src/libcpp/internal.h (.../branches/gcc-8-branch) +@@ -381,6 +381,8 @@ + + /* Mark if we save an undefined macro. */ + unsigned int is_undef : 1; ++ /* Nonzero if it was a builtin macro. */ ++ unsigned int is_builtin : 1; + }; + + /* A cpp_reader encapsulates the "state" of a pre-processor run. +@@ -689,6 +691,8 @@ + /* In init.c. */ + extern void _cpp_maybe_push_include_file (cpp_reader *); + extern const char *cpp_named_operator2name (enum cpp_ttype type); ++extern void _cpp_restore_special_builtin (cpp_reader *pfile, ++ struct def_pragma_macro *); + + /* In directives.c */ + extern int _cpp_test_assertion (cpp_reader *, unsigned int *); +Index: fixincludes/ChangeLog +=================================================================== +--- a/src/fixincludes/ChangeLog (.../tags/gcc_8_3_0_release) ++++ b/src/fixincludes/ChangeLog (.../branches/gcc-8-branch) +@@ -1,3 +1,60 @@ ++2019-08-25 Iain Sandoe <iain@sandoe.co.uk> ++ ++ Backport from mainline. ++ 2019-08-18 C.G. Dogan <gcc+cgdogan.00@gmail.com> ++ Iain Sandoe <iain@sandoe.co.uk> ++ ++ 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-24 Iain Sandoe <iain@sandoe.co.uk> ++ ++ Backport from mainline. ++ 2019-06-21 Iain Sandoe <iain@sandoe.co.uk> ++ ++ * inclhack.def: Replace the complex test using __STRICT_ANSI__ and ++ __STDC_VERSION__ with a test using __DARWIN_NO_LONG_LONG. ++ Ensure that the top level math.h uses <> to wrap included headers ++ rather than "". ++ * fixincl.x: Regenerated. ++ * tests/base/architecture/ppc/math.h: Update test to include the ++ __DARWIN_NO_LONG_LONG case. ++ ++2019-08-24 Iain Sandoe <iain@sandoe.co.uk> ++ ++ Backport from mainline. ++ 2019-06-21 Iain Sandoe <iain@sandoe.co.uk> ++ ++ * inclhack.def: Guard __has_attribute and __has_extension in ++ os/base.h. ++ Guard Apple blocks syntax in dispatch/object.h. ++ * fixincl.x: Regenerate. ++ * tests/base/dispatch/object.h: New file. ++ * tests/base/os/base.h: New file. ++ ++2019-06-01 Iain Sandoe <iain@sandoe.co.uk> ++ ++ Backport from mainline. ++ 2019-05-11 Iain Sandoe <iain@sandoe.co.uk> ++ ++ PR bootstrap/89864 ++ * inclhack.def (darwin_ucred__Atomic): Do not supply test_text ++ for wrap fixes. ++ * fixincl.x: Regenerated. ++ ++ Backport from mainline. ++ 2019-04-18 Erik Schnetter <schnetter@gmail.com> ++ Jakub Jelinek <jakub@redhat.com> ++ Iain Sandoe <iain@sandoe.co.uk> ++ ++ PR bootstrap/89864 ++ * inclhack.def (darwin_ucred__Atomic): New, work around _Atomic keyword ++ use in headers included by C++. ++ * fixincl.x: Regenerated. ++ + 2019-02-22 Release Manager + + * GCC 8.3.0 released. +Index: fixincludes/tests/base/dispatch/object.h +=================================================================== +--- a/src/fixincludes/tests/base/dispatch/object.h (.../tags/gcc_8_3_0_release) ++++ b/src/fixincludes/tests/base/dispatch/object.h (.../branches/gcc-8-branch) +@@ -0,0 +1,18 @@ ++/* DO NOT EDIT THIS FILE. ++ ++ It has been auto-edited by fixincludes from: ++ ++ "fixinc/tests/inc/dispatch/object.h" ++ ++ This had to be done to correct non-standard usages in the ++ original, manufacturer supplied header file. */ ++ ++ ++ ++#if defined( DARWIN_DISPATCH_OBJECT_1_CHECK ) ++#if __BLOCKS__ ++typedef void (^dispatch_block_t)(void); ++#endif ++ ++__BEGIN_DECLS ++#endif /* DARWIN_DISPATCH_OBJECT_1_CHECK */ +Index: fixincludes/tests/base/os/availability.h +=================================================================== +--- a/src/fixincludes/tests/base/os/availability.h (.../tags/gcc_8_3_0_release) ++++ b/src/fixincludes/tests/base/os/availability.h (.../branches/gcc-8-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/tests/base/os/base.h +=================================================================== +--- a/src/fixincludes/tests/base/os/base.h (.../tags/gcc_8_3_0_release) ++++ b/src/fixincludes/tests/base/os/base.h (.../branches/gcc-8-branch) +@@ -0,0 +1,20 @@ ++/* DO NOT EDIT THIS FILE. ++ ++ It has been auto-edited by fixincludes from: ++ ++ "fixinc/tests/inc/os/base.h" ++ ++ This had to be done to correct non-standard usages in the ++ original, manufacturer supplied header file. */ ++ ++ ++ ++#if defined( DARWIN_OS_BASE_1_CHECK ) ++#define __has_attribute(x) 0 ++#endif ++#ifndef __has_extension ++#define __has_extension(x) 0 ++#endif ++ ++#if __GNUC__ ++#endif /* DARWIN_OS_BASE_1_CHECK */ +Index: fixincludes/tests/base/architecture/ppc/math.h +=================================================================== +--- a/src/fixincludes/tests/base/architecture/ppc/math.h (.../tags/gcc_8_3_0_release) ++++ b/src/fixincludes/tests/base/architecture/ppc/math.h (.../branches/gcc-8-branch) +@@ -12,3 +12,8 @@ + #if defined( BROKEN_NAN_CHECK ) + #if 1 + #endif /* BROKEN_NAN_CHECK */ ++ ++ ++#if defined( DARWIN_LL_FUNCS_AVAIL_CHECK ) ++#if !(__DARWIN_NO_LONG_LONG) ++#endif /* DARWIN_LL_FUNCS_AVAIL_CHECK */ +Index: fixincludes/fixincl.x +=================================================================== +--- a/src/fixincludes/fixincl.x (.../tags/gcc_8_3_0_release) ++++ b/src/fixincludes/fixincl.x (.../branches/gcc-8-branch) +@@ -2,11 +2,11 @@ + * + * DO NOT EDIT THIS FILE (fixincl.x) + * +- * It has been AutoGen-ed February 22, 2018 at 03:46:51 PM by AutoGen 5.18 ++ * It has been AutoGen-ed August 24, 2019 at 04:04:26 PM by AutoGen 5.17.4 + * From the definitions inclhack.def + * and the template file fixincl + */ +-/* DO NOT SVN-MERGE THIS FILE, EITHER Thu Feb 22 15:46:51 UTC 2018 ++/* DO NOT SVN-MERGE THIS FILE, EITHER Sat Aug 24 16:04:26 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 249 fixup descriptions. ++ * This file contains 254 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[] = +@@ -2598,7 +2648,7 @@ + * Machine/OS name selection pattern + */ + tSCC* apzDarwin_9_Long_Double_Funcs_2Machs[] = { +- "*-*-darwin7.9*", ++ "*-*-darwin*", + (const char*)NULL }; + + /* +@@ -2704,6 +2754,42 @@ + + /* * * * * * * * * * * * * * * * * * * * * * * * * * + * ++ * Description of Darwin_Ll_Funcs_Avail fix ++ */ ++tSCC zDarwin_Ll_Funcs_AvailName[] = ++ "darwin_ll_funcs_avail"; ++ ++/* ++ * File name selection pattern ++ */ ++tSCC zDarwin_Ll_Funcs_AvailList[] = ++ "architecture/ppc/math.h\0architecture/i386/math.h\0"; ++/* ++ * Machine/OS name selection pattern ++ */ ++tSCC* apzDarwin_Ll_Funcs_AvailMachs[] = { ++ "*-*-darwin*", ++ (const char*)NULL }; ++ ++/* ++ * content selection pattern - do fix if pattern found ++ */ ++tSCC zDarwin_Ll_Funcs_AvailSelect0[] = ++ "#if[^_]*__STDC_VERSION__[^_]*__STDC_VERSION__[^1]*199901L[^_]*__STRICT_ANSI__[^_]*__GNUC__[^)]*"; ++ ++#define DARWIN_LL_FUNCS_AVAIL_TEST_CT 1 ++static tTestDesc aDarwin_Ll_Funcs_AvailTests[] = { ++ { TT_EGREP, zDarwin_Ll_Funcs_AvailSelect0, (regex_t*)NULL }, }; ++ ++/* ++ * Fix Command Arguments for Darwin_Ll_Funcs_Avail ++ */ ++static const char* apzDarwin_Ll_Funcs_AvailPatch[] = { sed_cmd_z, ++ "-e", "s/#if[^_]*__STDC_VERSION__[^_]*__STDC_VERSION__[^_]*199901L[^_]*__STRICT_ANSI__[^_]*__GNUC__[^\\)]*)/#if !(__DARWIN_NO_LONG_LONG)/", ++ (char*)NULL }; ++ ++/* * * * * * * * * * * * * * * * * * * * * * * * * * ++ * + * Description of Darwin_Longjmp_Noreturn fix + */ + tSCC zDarwin_Longjmp_NoreturnName[] = +@@ -2866,6 +2952,86 @@ + + /* * * * * * * * * * * * * * * * * * * * * * * * * * + * ++ * Description of Darwin_Os_Base_1 fix ++ */ ++tSCC zDarwin_Os_Base_1Name[] = ++ "darwin_os_base_1"; ++ ++/* ++ * File name selection pattern ++ */ ++tSCC zDarwin_Os_Base_1List[] = ++ "os/base.h\0"; ++/* ++ * Machine/OS name selection pattern ++ */ ++tSCC* apzDarwin_Os_Base_1Machs[] = { ++ "*-*-darwin*", ++ (const char*)NULL }; ++ ++/* ++ * content selection pattern - do fix if pattern found ++ */ ++tSCC zDarwin_Os_Base_1Select0[] = ++ "#define __has_attribute.*\n\ ++#endif"; ++ ++#define DARWIN_OS_BASE_1_TEST_CT 1 ++static tTestDesc aDarwin_Os_Base_1Tests[] = { ++ { TT_EGREP, zDarwin_Os_Base_1Select0, (regex_t*)NULL }, }; ++ ++/* ++ * Fix Command Arguments for Darwin_Os_Base_1 ++ */ ++static const char* apzDarwin_Os_Base_1Patch[] = { ++ "format", ++ "%0\n\ ++#ifndef __has_extension\n\ ++#define __has_extension(x) 0\n\ ++#endif", ++ (char*)NULL }; ++ ++/* * * * * * * * * * * * * * * * * * * * * * * * * * ++ * ++ * Description of Darwin_Dispatch_Object_1 fix ++ */ ++tSCC zDarwin_Dispatch_Object_1Name[] = ++ "darwin_dispatch_object_1"; ++ ++/* ++ * File name selection pattern ++ */ ++tSCC zDarwin_Dispatch_Object_1List[] = ++ "dispatch/object.h\0"; ++/* ++ * Machine/OS name selection pattern ++ */ ++tSCC* apzDarwin_Dispatch_Object_1Machs[] = { ++ "*-*-darwin*", ++ (const char*)NULL }; ++ ++/* ++ * content selection pattern - do fix if pattern found ++ */ ++tSCC zDarwin_Dispatch_Object_1Select0[] = ++ "typedef void.*\\^dispatch_block_t.*"; ++ ++#define DARWIN_DISPATCH_OBJECT_1_TEST_CT 1 ++static tTestDesc aDarwin_Dispatch_Object_1Tests[] = { ++ { TT_EGREP, zDarwin_Dispatch_Object_1Select0, (regex_t*)NULL }, }; ++ ++/* ++ * Fix Command Arguments for Darwin_Dispatch_Object_1 ++ */ ++static const char* apzDarwin_Dispatch_Object_1Patch[] = { ++ "format", ++ "#if __BLOCKS__\n\ ++%0\n\ ++#endif", ++ (char*)NULL }; ++ ++/* * * * * * * * * * * * * * * * * * * * * * * * * * ++ * + * Description of Darwin_Private_Extern fix + */ + tSCC zDarwin_Private_ExternName[] = +@@ -3222,6 +3388,48 @@ + + /* * * * * * * * * * * * * * * * * * * * * * * * * * + * ++ * Description of Darwin_Ucred__Atomic fix ++ */ ++tSCC zDarwin_Ucred__AtomicName[] = ++ "darwin_ucred__Atomic"; ++ ++/* ++ * File name selection pattern ++ */ ++tSCC zDarwin_Ucred__AtomicList[] = ++ "sys/ucred.h\0"; ++/* ++ * Machine/OS name selection pattern ++ */ ++tSCC* apzDarwin_Ucred__AtomicMachs[] = { ++ "*-*-darwin*", ++ (const char*)NULL }; ++ ++/* ++ * content selection pattern - do fix if pattern found ++ */ ++tSCC zDarwin_Ucred__AtomicSelect0[] = ++ "_Atomic"; ++ ++#define DARWIN_UCRED__ATOMIC_TEST_CT 1 ++static tTestDesc aDarwin_Ucred__AtomicTests[] = { ++ { TT_EGREP, zDarwin_Ucred__AtomicSelect0, (regex_t*)NULL }, }; ++ ++/* ++ * Fix Command Arguments for Darwin_Ucred__Atomic ++ */ ++static const char* apzDarwin_Ucred__AtomicPatch[] = { ++ "wrap", ++ "#if (__STDC_VERSION__ < 201112L) || defined(__cplusplus)\n\ ++# define _Atomic volatile\n\ ++#endif\n", ++ "#if (__STDC_VERSION__ < 201112L) || defined(__cplusplus)\n\ ++# undef _Atomic\n\ ++#endif\n", ++ (char*)NULL }; ++ ++/* * * * * * * * * * * * * * * * * * * * * * * * * * ++ * + * Description of Dec_Intern_Asm fix + */ + tSCC zDec_Intern_AsmName[] = +@@ -10099,9 +10307,9 @@ + * + * List of all fixes + */ +-#define REGEX_COUNT 287 ++#define REGEX_COUNT 293 + #define MACH_LIST_SIZE_LIMIT 187 +-#define FIX_COUNT 249 ++#define FIX_COUNT 254 + + /* + * Enumerate the fixes +@@ -10110,6 +10318,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, +@@ -10171,10 +10380,13 @@ + DARWIN_9_LONG_DOUBLE_FUNCS_2_FIXIDX, + DARWIN_EXTERNC_FIXIDX, + DARWIN_GCC4_BREAKAGE_FIXIDX, ++ DARWIN_LL_FUNCS_AVAIL_FIXIDX, + DARWIN_LONGJMP_NORETURN_FIXIDX, + DARWIN_OS_TRACE_1_FIXIDX, + DARWIN_OS_TRACE_2_FIXIDX, + DARWIN_OS_TRACE_3_FIXIDX, ++ DARWIN_OS_BASE_1_FIXIDX, ++ DARWIN_DISPATCH_OBJECT_1_FIXIDX, + DARWIN_PRIVATE_EXTERN_FIXIDX, + DARWIN_STDINT_1_FIXIDX, + DARWIN_STDINT_2_FIXIDX, +@@ -10183,6 +10395,7 @@ + DARWIN_STDINT_5_FIXIDX, + DARWIN_STDINT_6_FIXIDX, + DARWIN_STDINT_7_FIXIDX, ++ DARWIN_UCRED__ATOMIC_FIXIDX, + DEC_INTERN_ASM_FIXIDX, + DJGPP_WCHAR_H_FIXIDX, + ECD_CURSOR_FIXIDX, +@@ -10374,6 +10587,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, +@@ -10679,6 +10897,11 @@ + DARWIN_GCC4_BREAKAGE_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aDarwin_Gcc4_BreakageTests, apzDarwin_Gcc4_BreakagePatch, 0 }, + ++ { zDarwin_Ll_Funcs_AvailName, zDarwin_Ll_Funcs_AvailList, ++ apzDarwin_Ll_Funcs_AvailMachs, ++ DARWIN_LL_FUNCS_AVAIL_TEST_CT, FD_MACH_ONLY, ++ aDarwin_Ll_Funcs_AvailTests, apzDarwin_Ll_Funcs_AvailPatch, 0 }, ++ + { zDarwin_Longjmp_NoreturnName, zDarwin_Longjmp_NoreturnList, + apzDarwin_Longjmp_NoreturnMachs, + DARWIN_LONGJMP_NORETURN_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, +@@ -10699,6 +10922,16 @@ + DARWIN_OS_TRACE_3_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aDarwin_Os_Trace_3Tests, apzDarwin_Os_Trace_3Patch, 0 }, + ++ { zDarwin_Os_Base_1Name, zDarwin_Os_Base_1List, ++ apzDarwin_Os_Base_1Machs, ++ DARWIN_OS_BASE_1_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, ++ aDarwin_Os_Base_1Tests, apzDarwin_Os_Base_1Patch, 0 }, ++ ++ { zDarwin_Dispatch_Object_1Name, zDarwin_Dispatch_Object_1List, ++ apzDarwin_Dispatch_Object_1Machs, ++ DARWIN_DISPATCH_OBJECT_1_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, ++ aDarwin_Dispatch_Object_1Tests, apzDarwin_Dispatch_Object_1Patch, 0 }, ++ + { zDarwin_Private_ExternName, zDarwin_Private_ExternList, + apzDarwin_Private_ExternMachs, + DARWIN_PRIVATE_EXTERN_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, +@@ -10739,6 +10972,11 @@ + DARWIN_STDINT_7_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aDarwin_Stdint_7Tests, apzDarwin_Stdint_7Patch, 0 }, + ++ { zDarwin_Ucred__AtomicName, zDarwin_Ucred__AtomicList, ++ apzDarwin_Ucred__AtomicMachs, ++ DARWIN_UCRED__ATOMIC_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, ++ aDarwin_Ucred__AtomicTests, apzDarwin_Ucred__AtomicPatch, 0 }, ++ + { zDec_Intern_AsmName, zDec_Intern_AsmList, + apzDec_Intern_AsmMachs, + DEC_INTERN_ASM_TEST_CT, FD_MACH_ONLY, +Index: fixincludes/inclhack.def +=================================================================== +--- a/src/fixincludes/inclhack.def (.../tags/gcc_8_3_0_release) ++++ b/src/fixincludes/inclhack.def (.../branches/gcc-8-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 = { +@@ -1268,12 +1295,12 @@ + }; + + /* +- * For the AAB_darwin7_9_long_double_funcs fix to be useful, +- * you have to not use "" includes. ++ * For the AAB_darwin7_9_long_double_funcs fix (and later fixes for long long) ++ * to be useful, the main math.h must use <> and not "" includes. + */ + fix = { + hackname = darwin_9_long_double_funcs_2; +- mach = "*-*-darwin7.9*"; ++ mach = "*-*-darwin*"; + files = math.h; + select = '#include[ \t]+\"'; + c_fix = format; +@@ -1281,7 +1308,7 @@ + + c_fix_arg = '([ \t]*#[ \t]*include[ \t]+)"([a-z0-9/]+)\.h"'; + +- test_text = '#include "architecture/ppc/math.h"'; ++ test_text = '#include <architecture/ppc/math.h>'; + }; + + /* +@@ -1325,6 +1352,22 @@ + }; + + /* ++ * math.h hides the long long functions that are available on the system for ++ * 10.5 and 10.6 SDKs, we expect to use them in G++ without specifying a value ++ * for __STDC_VERSION__, or switching __STRICT_ANSI__ off. ++ */ ++fix = { ++ hackname = darwin_ll_funcs_avail; ++ mach = "*-*-darwin*"; ++ files = architecture/ppc/math.h, architecture/i386/math.h; ++ select = "#if[^_]*__STDC_VERSION__[^_]*__STDC_VERSION__[^1]*199901L[^_]*" ++ "__STRICT_ANSI__[^_]*__GNUC__[^\)]*"; ++ sed = "s/#if[^_]*__STDC_VERSION__[^_]*__STDC_VERSION__[^_]*199901L[^_]*" ++ "__STRICT_ANSI__[^_]*__GNUC__[^\\)]*\)/#if\ !\(__DARWIN_NO_LONG_LONG\)/"; ++ test_text = "#if\ !(__DARWIN_NO_LONG_LONG)"; ++}; ++ ++/* + * Before Mac OS X 10.8 <i386/setjmp.h> doesn't mark longjump noreturn. + */ + fix = { +@@ -1396,6 +1439,49 @@ + }; + + /* ++ * In macOS 10.10 <os/base.h>, doesn't have __has_extension guarded. ++ */ ++fix = { ++ hackname = darwin_os_base_1; ++ mach = "*-*-darwin*"; ++ files = os/base.h; ++ select = <<- OS_BASE_1_SEL ++#define __has_attribute.* ++#endif ++OS_BASE_1_SEL; ++ c_fix = format; ++ c_fix_arg = <<- OS_BASE_1_FIX ++%0 ++#ifndef __has_extension ++#define __has_extension(x) 0 ++#endif ++OS_BASE_1_FIX; ++ test_text = <<- OS_BASE_1_TEST ++#define __has_attribute(x) 0 ++#endif ++ ++#if __GNUC__ ++OS_BASE_1_TEST; ++}; ++ ++/* ++ * In macOS 10.10 <dispatch/object.h>, has unguarded block syntax. ++ */ ++fix = { ++ hackname = darwin_dispatch_object_1; ++ mach = "*-*-darwin*"; ++ files = dispatch/object.h; ++ select = "typedef void.*\\^dispatch_block_t.*"; ++ c_fix = format; ++ c_fix_arg = "#if __BLOCKS__\n%0\n#endif"; ++ test_text = <<- DISPATCH_OBJECT_1_TEST ++typedef void (^dispatch_block_t)(void); ++ ++__BEGIN_DECLS ++DISPATCH_OBJECT_1_TEST; ++}; ++ ++/* + * __private_extern__ doesn't exist in FSF GCC. Even if it did, + * why would you ever put it in a system header file? + */ +@@ -1592,6 +1678,25 @@ + "#define UINTMAX_C(v) (v ## ULL)"; + }; + ++/* The SDK included with XCode 10.2 has the file <sys/ucred.h> that uses the ++ C11 _Atomic keyword (exposing it to C++ code). The work-around here follows ++ the header in declaring the entity volatile when _Atomic is not available. ++*/ ++fix = { ++ hackname = darwin_ucred__Atomic; ++ mach = "*-*-darwin*"; ++ files = sys/ucred.h; ++ select = "_Atomic"; ++ c_fix = wrap; ++ c_fix_arg = "#if (__STDC_VERSION__ < 201112L) || defined(__cplusplus)\n" ++ "# define _Atomic volatile\n" ++ "#endif\n"; ++ c_fix_arg = "#if (__STDC_VERSION__ < 201112L) || defined(__cplusplus)\n" ++ "# undef _Atomic\n" ++ "#endif\n"; ++ test_text = ""; /* Don't provide this for wrap fixes. */ ++}; ++ + /* + * Fix <c_asm.h> on Digital UNIX V4.0: + * It contains a prototype for a DEC C internal asm() function, +Index: . +=================================================================== +--- a/src/. (.../tags/gcc_8_3_0_release) ++++ b/src/. (.../branches/gcc-8-branch) + +Property changes on: . +___________________________________________________________________ +Modified: svn:mergeinfo +## -0,0 +0,1 ## + Merged /trunk:r260603 --- gcc-8-8.3.0.orig/debian/patches/sys-auxv-header.diff +++ gcc-8-8.3.0/debian/patches/sys-auxv-header.diff @@ -0,0 +1,46 @@ +# DP: Check for the sys/auxv.h header file. + +Index: b/src/gcc/configure.ac +=================================================================== +--- a/src/gcc/configure.ac ++++ b/src/gcc/configure.ac +@@ -1113,6 +1113,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. +Index: b/src/gcc/config.in +=================================================================== +--- a/src/gcc/config.in ++++ b/src/gcc/config.in +@@ -1793,6 +1793,12 @@ + #endif + + ++/* Define to 1 if you have the <sys/auxv.h> header file. */ ++#ifndef USED_FOR_TARGET ++#undef HAVE_SYS_AUXV_H ++#endif ++ ++ + /* Define to 1 if you have the <sys/file.h> header file. */ + #ifndef USED_FOR_TARGET + #undef HAVE_SYS_FILE_H +Index: b/src/gcc/config/rs6000/driver-rs6000.c +=================================================================== +--- 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 <link.h> + #endif + ++#ifdef HAVE_SYS_AUXV_H ++# include <sys/auxv.h> ++#endif ++ + #if defined (__APPLE__) || (__FreeBSD__) + # include <sys/types.h> + # include <sys/sysctl.h> --- gcc-8-8.3.0.orig/debian/patches/t-libunwind-elf-Wl-z-defs.diff +++ gcc-8-8.3.0/debian/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_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 \ --- gcc-8-8.3.0.orig/debian/patches/testsuite-glibc-warnings.diff +++ gcc-8-8.3.0/debian/patches/testsuite-glibc-warnings.diff @@ -0,0 +1,18 @@ +# DP: fix testcases that triggered -Wunused-result with glibc +# DP: Author: Steve Beattie <steve.beattie@canonical.com> +--- + 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 <pthread.h> + #include <unistd.h> --- gcc-8-8.3.0.orig/debian/patches/testsuite-hardening-format.diff +++ gcc-8-8.3.0/debian/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 <kees@ubuntu.com> +# 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 <rmansfield@qnx.com> */ + + /* { 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 <stdarg.h> + +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 <stdarg.h> + +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 <pthread.h> + 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 <mah@jump-ing.de>. */ + /* { 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 <tuple> + +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 <mark@codesourcery.com> + + 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 <stdarg.h> + +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 <stdarg.h> + --- gcc-8-8.3.0.orig/debian/patches/testsuite-hardening-printf-types.diff +++ gcc-8-8.3.0/debian/patches/testsuite-hardening-printf-types.diff @@ -0,0 +1,667 @@ +# DP: Description: adjust/standardize printf types to avoid -Wformat warnings. +# DP: Author: Kees Cook <kees@ubuntu.com> +# 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 <class U> + 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 <class U> + 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 <class X> + struct S + { + template <class U> +- 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 <class X> + template <class U> + void S<X>::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 <class T> + void frob<T>::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<B *>(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; + } --- gcc-8-8.3.0.orig/debian/patches/testsuite-hardening-updates.diff +++ gcc-8-8.3.0/debian/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 <string.h> +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 <string.h> +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 --- gcc-8-8.3.0.orig/debian/patches/verbose-lto-linker.diff +++ gcc-8-8.3.0/debian/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=$((12 * 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 --- gcc-8-8.3.0.orig/debian/porting.html +++ gcc-8-8.3.0/debian/porting.html @@ -0,0 +1,30 @@ +<html lang="en"> +<head> +<title>Porting libstdc++-v3 + + + + + + + +

Porting libstdc++-v3

+
+ +The documentation in this file was removed, because it is licencensed +under a non DFSG conforming licencse. + + --- gcc-8-8.3.0.orig/debian/reduce-test-diff.awk +++ gcc-8-8.3.0/debian/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 +} --- gcc-8-8.3.0.orig/debian/rules +++ gcc-8-8.3.0/debian/rules @@ -0,0 +1,88 @@ +#! /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)* + 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 --- gcc-8-8.3.0.orig/debian/rules.conf +++ gcc-8-8.3.0/debian/rules.conf @@ -0,0 +1,1358 @@ +# -*- 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) mpx=$(MPX_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 ($1,mpx) + ifeq ($$(biarch64),yes) + lib$1biarch$2 := $$(lib$1biarch64$2) + else ifeq ($$(biarch32),yes) + lib$1biarch$2 := $$(lib$1biarch32$2) + else + lib$1biarch$2 := + endif + else 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 mpx 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/\([1-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),precise)) + BINUTILSBDV = 2.22-1~ + else ifneq (,$(filter $(distrelease),vivid)) + BINUTILSBDV = 2.25-3~ + 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.30 + endif +endif +ifeq ($(DEB_CROSS),yes) + BINUTILS_BUILD_DEP = binutils$(TS)$(NT) (>= $(BINUTILSBDV)), binutils-multiarch$(NT) (>= $(BINUTILSBDV)) + BINUTILSV := $(shell dpkg -l binutils$(TS) \ + | awk '/^ii/{print $$3;exit}' | sed 's/-.*//') +else + BINUTILS_BUILD_DEP = binutils$(NT) (>= $(BINUTILSBDV)) | binutils-multiarch$(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),precise)) + CHECK_BUILD_DEP := dejagnu [$(check_no_archs)], +else + CHECK_BUILD_DEP := dejagnu [$(check_no_archs)] , +endif + +AUTO_BUILD_DEP := m4, libtool, +AUTO_BUILD_DEP += autoconf2.64, + +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-9-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 + +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 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)] ,) \ + ) + 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) !powerpcspe !x32], g++-7 [powerpcspe x32], gnat-7 [powerpcspe x32], g++-6$(NT) +#else ifneq (,$(filter $(distrelease), buster sid artful bionic)) +# gnat_build_dep := gnat-7$(NT) [$(ada_no_archs)], g++-7$(NT) +else + gnat_build_dep := gnat-8$(NT) [$(ada_no_archs) !powerpcspe], g++-8$(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), gnat-6 (<< 6.4) +# 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 + +# 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) \ + -DDWZ='$(if $(filter yes, $(with_dwz)),dwz (>= 0.12.20190702),file)' \ + +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)" \ + -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_dbg),yes) + addons += libdbg +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_libmpx),yes) + addons += libmpx lib32mpx lib64mpx +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_libcc1),yes) + addons += libcc1 +endif +ifeq ($(with_d),yes) + languages += d + ifeq ($(with_libphobos),yes) + addons += libphobos + addons += $(if $(findstring amd64,$(biarchx32archs)),libx32phobos) + endif + ifeq ($(with_libphobosdev),yes) + addons += libdevphobos + 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_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 + ifeq ($(with_fixincl),yes) + addons += $(if $(DEB_STAGE),,fixincl) + 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) \ + -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) \ + -DMPX_SO=$(MPX_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) \ + -DPR66145BREAKS="$(if $(filter $(distrelease),sid buster stretch jessie wheezy squeeze precise trusty xenial bionic cosmic),$(if $(findstring build-native,$(build_type)),$(if $(filter new,$(libstdcxx_abi)),$$(tr '\n' ' ' < debian/libstdc++-breaks.$(derivative)))))" \ + debian/control.m4 > debian/control.tmp2 + uniq debian/control.tmp2 | grep -v '^ *, *$$' | 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]{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 '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_mpx),yes) + echo 'dep:libmpx=libmpx$(MPX_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_mpx),yes) + echo 'dep:libmpxbiarch=$(libmpxbiarch)' \ + >> 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 'MPX_SONAME := $(MPX_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 '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 --- gcc-8-8.3.0.orig/debian/rules.d/binary-ada.mk +++ gcc-8-8.3.0/debian/rules.d/binary-ada.mk @@ -0,0 +1,351 @@ +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 + + $(call do_strip_lib_dbg, $(p_lgnat), $(p_lgnat_dbg), $(v_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)) + +ifeq ($(with_dbg),yes) + : # $(p_lgnat_dbg) + debian/dh_doclink -p$(p_lgnat_dbg) $(p_glbase) +endif + echo $(p_lgnat) $(if $(with_dbg), $(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) $(usr_lib)/ada/adalib/gnatvsn + $(dh_compat2) dh_movefiles -p$(p_lgnatvsn_dev) usr/share/ada/adainclude/gnatvsn + dh_install -p$(p_lgnatvsn_dev) usr/share/gpr/gnatvsn.gpr + $(dh_compat2) dh_movefiles -p$(p_lgnatvsn_dev) $(usr_lib)/libgnatvsn.a + dh_link -p$(p_lgnatvsn_dev) \ + $(usr_lib)/libgnatvsn.so.$(GNAT_VERSION) \ + $(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_compat2) dh_movefiles -p$(p_lgnatvsn) $(usr_lib)/libgnatvsn.so.$(GNAT_VERSION) + debian/dh_doclink -p$(p_lgnatvsn) $(p_glbase) + $(call do_strip_lib_dbg, $(p_lgnatvsn), $(p_lgnatvsn_dbg), $(v_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)) + +ifeq ($(with_dbg),yes) + : # $(p_lgnatvsn_dbg) + debian/dh_doclink -p$(p_lgnatvsn_dbg) $(p_glbase) +endif + echo $(p_lgnatvsn) $(p_lgnatvsn_dev) $(if $(with_dbg), $(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) --- gcc-8-8.3.0.orig/debian/rules.d/binary-base.mk +++ gcc-8-8.3.0/debian/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 $@ --- gcc-8-8.3.0.orig/debian/rules.d/binary-brig.mk +++ gcc-8-8.3.0/debian/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) --- gcc-8-8.3.0.orig/debian/rules.d/binary-cpp.mk +++ gcc-8-8.3.0/debian/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) --- gcc-8-8.3.0.orig/debian/rules.d/binary-cxx.mk +++ gcc-8-8.3.0/debian/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) --- gcc-8-8.3.0.orig/debian/rules.d/binary-d.mk +++ gcc-8-8.3.0/debian/rules.d/binary-d.mk @@ -0,0 +1,275 @@ +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)/cc1d +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)/cc1d +endif + dh_strip -p$(p_gdc) \ + $(if $(unstripped_exe),-X/cc1d) + 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) + + $(call do_strip_lib_dbg, $(p_l), $(p_d), $(v_dbg),,) + 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)) + dh_lintian -p$(p_l) + echo $(p_l) $(if $(with_dbg), $(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) --- gcc-8-8.3.0.orig/debian/rules.d/binary-fixincl.mk +++ gcc-8-8.3.0/debian/rules.d/binary-fixincl.mk @@ -0,0 +1,42 @@ +arch_binaries := $(arch_binaries) fixincl + +p_fix = fixincludes +d_fix = debian/$(p_fix) + +dirs_fix = \ + $(docdir)/$(p_xbase)/fixincludes \ + $(PF)/share/man/man1 \ + $(PF)/bin \ + $(gcc_lexec_dir) \ + $(gcc_lib_dir) +files_fix = \ + $(gcc_lexec_dir)/install-tools \ + $(gcc_lib_dir)/install-tools + +# ---------------------------------------------------------------------- +$(binary_stamp)-fixincl: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_fix) + dh_installdirs -p$(p_fix) $(dirs_fix) + $(dh_compat2) dh_movefiles -p$(p_fix) $(files_fix) + +# $(IP) $(builddir)/gcc/fixinc/fixincl $(d_fix)/$(PF)/lib/fixincludes/ +# sed -e "s,^FIXINCL=\(.*\),FIXINCL=/$(PF)/lib/fixincludes/fixincl," \ +# $(builddir)/gcc/fixinc.sh \ +# > $(d_fix)/$(PF)/lib/fixincludes/fixinc.sh +# chmod 755 $(d_fix)/$(PF)/lib/fixincludes/fixinc.sh + $(IR) $(srcdir)/fixincludes/README \ + $(d_fix)/$(docdir)/$(p_xbase)/fixincludes + sed -e 's,@LIBEXECDIR@,$(gcc_lexec_dir),g' debian/fixincludes.in \ + > $(d_fix)/$(PF)/bin/fixincludes + chmod 755 $(d_fix)/$(PF)/bin/fixincludes + + debian/dh_doclink -p$(p_fix) $(p_xbase) + dh_strip -p$(p_fix) + dh_shlibdeps -p$(p_fix) + echo $(p_fix) >> debian/arch_binaries.epoch + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) --- gcc-8-8.3.0.orig/debian/rules.d/binary-fortran.mk +++ gcc-8-8.3.0/debian/rules.d/binary-fortran.mk @@ -0,0 +1,273 @@ +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 + + $(call do_strip_lib_dbg, $(p_l), $(p_d), $(v_dbg),,) + 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) $(if $(with_dbg), $(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)) + + 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) + --- gcc-8-8.3.0.orig/debian/rules.d/binary-gcc.mk +++ gcc-8-8.3.0/debian/rules.d/binary-gcc.mk @@ -0,0 +1,369 @@ +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,mpx} \ + $(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_mpx),yes) + mv $(d)/$(usr_lib)/libmpx.spec $(d_gcc)/$(gcc_lib_dir)/ + cp -p $(srcdir)/libmpx/ChangeLog \ + $(d_gcc)/$(docdir)/$(p_xbase)/mpx/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) --- gcc-8-8.3.0.orig/debian/rules.d/binary-go.mk +++ gcc-8-8.3.0/debian/rules.d/binary-go.mk @@ -0,0 +1,340 @@ +ifeq ($(with_libgo),yes) + $(lib_binaries) += libgo +endif +ifeq ($(with_lib64go),yes) + $(lib_binaries) += lib64go +endif +ifeq ($(with_lib32go),yes) + $(lib_binaries) += lib32go +endif +ifeq ($(with_libn32go),yes) + $(lib_binaries) += libn32go +endif +ifeq ($(with_libx32go),yes) + $(lib_binaries) += libx32go +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_gccgo + 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) + : # $(call do_strip_lib_dbg, $(p_l), $(p_d), $(v_dbg),,) + $(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) $(if $(with_dbg), $(p_d)) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) +endef + +do_gccgo = $(call __do_gccgo,lib$(1)go$(GO_SONAME),$(1)) + +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_go_dev + dh_installdirs -p$(2) $(gcc_lib_dir$(1)) $(usr_lib$(1)) + $(dh_compat2) dh_movefiles -p$(2) \ + $(gcc_lib_dir$(1))/{libgobegin,libgolibbegin}.a \ + $(usr_lib$(1))/go + $(if $(filter yes, $(with_standalone_go)), \ + $(call install_gccgo_lib,libgomp,$(GOMP_SONAME),$(1),$(2))) + $(call install_gccgo_lib,libgo,$(GO_SONAME),$(1),$(2)) + $(call __do_gccgo_libgcc,$(1),$(2),$(gcc_lib_dir$(1)),$(d)/$(usr_lib$(1))) +endef +# ---------------------------------------------------------------------- +$(binary_stamp)-libgo: $(install_stamp) + $(call do_gccgo,) + +$(binary_stamp)-lib64go: $(install_stamp) + $(call do_gccgo,64) + +$(binary_stamp)-lib32go: $(install_stamp) + $(call do_gccgo,32) + +$(binary_stamp)-libn32go: $(install_stamp) + $(call do_gccgo,n32) + +$(binary_stamp)-libx32go: $(install_stamp) + $(call do_gccgo,x32) + +# ---------------------------------------------------------------------- +$(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) + + mv $(d)/$(usr_lib)/{libgobegin,libgolibbegin}.a \ + $(d)/$(gcc_lib_dir)/ + if [ -f $(d)/$(usr_lib64)/libgobegin.a ]; then \ + mv $(d)/$(usr_lib64)/{libgobegin,libgolibbegin}.a \ + $(d)/$(gcc_lib_dir)/64/; \ + fi + if [ -f $(d)/$(usr_lib32)/libgobegin.a ]; then \ + mv $(d)/$(usr_lib32)/{libgobegin,libgolibbegin}.a \ + $(d)/$(gcc_lib_dir)/32/; \ + fi + if [ -f $(d)/$(usr_libn32)/libgobegin.a ]; then \ + mv $(d)/$(usr_libn32)/{libgobegin,libgolibbegin}.a \ + $(d)/$(gcc_lib_dir)/n32/; \ + fi + if [ -f $(d)/$(usr_libx32)/libgobegin.a ]; then \ + mv $(d)/$(usr_libx32)/{libgobegin,libgolibbegin}.a \ + $(d)/$(gcc_lib_dir)/x32/; \ + fi + + $(call do_go_dev,,$(p_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) + + $(foreach flavour,$(flavours), \ + $(call do_go_dev,$(flavour),$(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) --- gcc-8-8.3.0.orig/debian/rules.d/binary-hppa64.mk +++ gcc-8-8.3.0/debian/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 $@ --- gcc-8-8.3.0.orig/debian/rules.d/binary-libasan.mk +++ gcc-8-8.3.0/debian/rules.d/binary-libasan.mk @@ -0,0 +1,76 @@ +$(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 + + $(call do_strip_lib_dbg, $(p_l), $(p_d), $(v_dbg),,) + $(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) $(if $(with_dbg), $(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) --- gcc-8-8.3.0.orig/debian/rules.d/binary-libatomic.mk +++ gcc-8-8.3.0/debian/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) + + $(call do_strip_lib_dbg, $(p_l), $(p_d), $(v_dbg),,) + 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) $(if $(with_dbg), $(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) --- gcc-8-8.3.0.orig/debian/rules.d/binary-libcc1.mk +++ gcc-8-8.3.0/debian/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) --- gcc-8-8.3.0.orig/debian/rules.d/binary-libgcc.mk +++ gcc-8-8.3.0/debian/rules.d/binary-libgcc.mk @@ -0,0 +1,392 @@ +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 \ + 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_mpx)), + $(if $(filter x32, $(1)),, + $(call install_gcc_lib,libmpxwrappers,$(MPX_SONAME),$(1),$(2)) + $(call install_gcc_lib,libmpx,$(MPX_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) + $(call do_strip_lib_dbg, $(p_l), $(p_d), $(EPOCH):$(v_dbg),,) + + # 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) \ + -- -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) $(if $(with_dbg), $(p_d)) >> debian/$(lib_binaries) + + 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) + --- gcc-8-8.3.0.orig/debian/rules.d/binary-libgccjit.mk +++ gcc-8-8.3.0/debian/rules.d/binary-libgccjit.mk @@ -0,0 +1,95 @@ +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) +ifeq ($(with_dbg),yes) + dh_installdirs -p$(p_jitdbg) +endif + + $(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) +ifeq ($(with_dbg),yes) + debian/dh_doclink -p$(p_jitdbg) $(p_base) +endif + + $(call do_strip_lib_dbg, $(p_jitlib), $(p_jitdbg), $(v_dbg),,) + $(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) $(if $(with_dbg), $(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 $@ --- gcc-8-8.3.0.orig/debian/rules.d/binary-libgomp.mk +++ gcc-8-8.3.0/debian/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) + + $(call do_strip_lib_dbg, $(p_l), $(p_d), $(v_dbg),,) + 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) $(if $(with_dbg), $(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) --- gcc-8-8.3.0.orig/debian/rules.d/binary-libhsail.mk +++ gcc-8-8.3.0/debian/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) + + $(call do_strip_lib_dbg, $(p_l), $(p_d), $(v_dbg),,) + 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) $(if $(with_dbg), $(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) --- gcc-8-8.3.0.orig/debian/rules.d/binary-libitm.mk +++ gcc-8-8.3.0/debian/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) + + $(call do_strip_lib_dbg, $(p_l), $(p_d), $(v_dbg),,) + 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) $(if $(with_dbg), $(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) --- gcc-8-8.3.0.orig/debian/rules.d/binary-liblsan.mk +++ gcc-8-8.3.0/debian/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 + + $(call do_strip_lib_dbg, $(p_l), $(p_d), $(v_dbg),,) + $(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) $(if $(with_dbg), $(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) --- gcc-8-8.3.0.orig/debian/rules.d/binary-libmpx.mk +++ gcc-8-8.3.0/debian/rules.d/binary-libmpx.mk @@ -0,0 +1,80 @@ +$(lib_binaries) += libmpx +ifeq ($(with_lib64mpx),yes) + $(lib_binaries) += lib64mpx +endif +ifeq ($(with_lib32mpx),yes) + $(lib_binaries) += lib32mpx +endif +ifeq ($(with_libn32mpx),yes) + $(lib_binaries) += libn32mpx +endif +ifeq ($(with_libx32mpx),yes) + $(lib_binaries) += libx32mpx +endif +ifeq ($(with_libhfmpx),yes) + $(lib_binaries) += libhfmpx +endif +ifeq ($(with_libsfmpx),yes) + $(lib_binaries) += libsfmpx +endif + +define __do_mpx + 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))/libmpx.so.* \ + $(usr_lib$(2))/libmpxwrappers.so.* + + debian/dh_doclink -p$(p_l) $(p_lbase) + $(if $(with_dbg), + 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 + + $(call do_strip_lib_dbg, $(p_l), $(p_d), $(v_dbg),,) + ln -sf libmpx.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 mpx$(MPX_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) $(if $(with_dbg), $(p_d)) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) +endef + +# ---------------------------------------------------------------------- + +do_mpx = $(call __do_mpx,lib$(1)mpx$(MPX_SONAME),$(1)) + +$(binary_stamp)-libmpx: $(install_stamp) + $(call do_mpx,) + +$(binary_stamp)-lib64mpx: $(install_stamp) + $(call do_mpx,64) + +$(binary_stamp)-lib32mpx: $(install_stamp) + $(call do_mpx,32) + +$(binary_stamp)-libn32mpx: $(install_stamp) + $(call do_mpx,n32) + +$(binary_stamp)-libx32mpx: $(install_stamp) + $(call do_mpx,x32) + +$(binary_stamp)-libhfmpx: $(install_dependencies) + $(call do_mpx,hf) + +$(binary_stamp)-libsfmpx: $(install_dependencies) + $(call do_mpx,sf) --- gcc-8-8.3.0.orig/debian/rules.d/binary-libobjc.mk +++ gcc-8-8.3.0/debian/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) + + $(call do_strip_lib_dbg, $(p_l), $(p_d), $(v_dbg),,) + 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) $(if $(with_dbg), $(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) + --- gcc-8-8.3.0.orig/debian/rules.d/binary-libquadmath.mk +++ gcc-8-8.3.0/debian/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) + + $(call do_strip_lib_dbg, $(p_l), $(p_d), $(v_dbg),,) + 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) $(if $(with_dbg), $(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) --- gcc-8-8.3.0.orig/debian/rules.d/binary-libssp.mk +++ gcc-8-8.3.0/debian/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) --- gcc-8-8.3.0.orig/debian/rules.d/binary-libstdcxx.mk +++ gcc-8-8.3.0/debian/rules.d/binary-libstdcxx.mk @@ -0,0 +1,527 @@ +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) + + $(if $(with_dbg), + dh_strip -p$(p_l) $(if $(filter rtlibs,$(DEB_STAGE)),,--dbg-package=$(1)-$(BASE_VERSION)-dbg$(cross_lib_arch)), + dh_strip -p$(p_l) $(if $(filter rtlibs,$(DEB_STAGE)),,--dbgsym-migration='$(1)-$(BASE_VERSION)-dbg$(cross_lib_arch) (<< $(v_dbg))') + ) + $(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 $(with_dbg), + $(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 +# FIXME: the -dev and -dbg packages are built twice ... +$(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) + ifeq ($(with_dbg),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 +endif + $(call do_strip_lib_dbg, $(p_dev), $(p_dbg), $(v_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) --- gcc-8-8.3.0.orig/debian/rules.d/binary-libtsan.mk +++ gcc-8-8.3.0/debian/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 + + $(call do_strip_lib_dbg, $(p_l), $(p_d), $(v_dbg),,) + $(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) $(if $(with_dbg), $(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) --- gcc-8-8.3.0.orig/debian/rules.d/binary-libubsan.mk +++ gcc-8-8.3.0/debian/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 + + $(call do_strip_lib_dbg, $(p_l), $(p_d), $(v_dbg),,) + $(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) $(if $(with_dbg), $(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) --- gcc-8-8.3.0.orig/debian/rules.d/binary-libvtv.mk +++ gcc-8-8.3.0/debian/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 + + $(call do_strip_lib_dbg, $(p_l), $(p_d), $(v_dbg),,) + $(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) $(if $(with_dbg), $(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) --- gcc-8-8.3.0.orig/debian/rules.d/binary-neon.mk +++ gcc-8-8.3.0/debian/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 $@ --- gcc-8-8.3.0.orig/debian/rules.d/binary-nof.mk +++ gcc-8-8.3.0/debian/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) --- gcc-8-8.3.0.orig/debian/rules.d/binary-nvptx.mk +++ gcc-8-8.3.0/debian/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) --- gcc-8-8.3.0.orig/debian/rules.d/binary-objc.mk +++ gcc-8-8.3.0/debian/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) --- gcc-8-8.3.0.orig/debian/rules.d/binary-objcxx.mk +++ gcc-8-8.3.0/debian/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) --- gcc-8-8.3.0.orig/debian/rules.d/binary-snapshot.mk +++ gcc-8-8.3.0/debian/rules.d/binary-snapshot.mk @@ -0,0 +1,164 @@ +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 '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) --- gcc-8-8.3.0.orig/debian/rules.d/binary-softfloat.mk +++ gcc-8-8.3.0/debian/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) --- gcc-8-8.3.0.orig/debian/rules.d/binary-source.mk +++ gcc-8-8.3.0/debian/rules.d/binary-source.mk @@ -0,0 +1,53 @@ +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 (,$(gdc_tarball)) + dh_install -p$(p_source) $(gdc_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 + + 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 $@ --- gcc-8-8.3.0.orig/debian/rules.defs +++ gcc-8-8.3.0/debian/rules.defs @@ -0,0 +1,2179 @@ +# -*- makefile -*- +# definitions used in more than one Makefile / rules file + +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) +endif + +# 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_BUILD_ARCH_BITS ?= $(call vafilt,$(DPKG_VARS),DEB_BUILD_ARCH_BITS) +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) +DEB_HOST_ARCH_BITS ?= $(call vafilt,$(DPKG_VARS),DEB_HOST_ARCH_BITS) + +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]*//')) +# 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/\([1-9]\).*-.*/\1/') + +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 ($(findstring gccdebug, $(DEB_BUILD_OPTIONS)),) + with_bootstrap := off + DEB_BUILD_OPTIONS := $(DEB_BUILD_OPTIONS) nostrip + export DEB_BUILD_OPTIONS +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)) + 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 + # times out on the buildds ... + ifneq (,$(filter $(DEB_HOST_ARCH), arm64)) + with_lto_build := + endif + 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*, sparc64 + # FIXME: just let it build, takes too long: hurd-i386 + # FIXME: not yet tried to build: alpha + # FIXME: armhf and arm64 ftbfs, started with 8.3.0-22 + ifneq (,$(filter $(DEB_HOST_ARCH), alpha armhf arm64 hppa m68k mips mipsel mips64el riscv64 sh4 sparc64 hurd-i386)) + with_lto_build := + endif + # Debian armel/armhf buildds too slow + ifneq (,$(filter $(distribution)-$(DEB_HOST_ARCH), Debian-armel Debian-armhf)) + with_lto_build := + endif + + # FIXME: newer binutils needed? + ifneq (,$(filter $(distrelease),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 + +ifeq ($(with_lto_build),yes) + # FIXME: Debian #931319, fixed in dwz trunk 20190702 + ifeq (,$(filter $(distrelease),jessie stretch precise trusty xenial bionic cosmic disco)) + with_dwz := yes + endif +else ifneq (,$(filter $(distrelease),jessie stretch precise trusty xenial bionic)) + with_dwz := +else + with_dwz := yes +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 + +ifeq (,$(filter $(distrelease),wheezy jessie stretch buster precise trusty xenial bionic cosmic disco)) + ifneq (,$(filter $(DEB_TARGET_ARCH), amd64 arm64 i386 ppc64 ppc64el s390x x32)) + with_async_unwind = yes + endif +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 + +# 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? + +# build -dbg packages (with_dbg is empty when -dbg package are not built) +ifneq (,$(filter $(distrelease),wheezy jessie stretch buster precise xenial bionic cosmic disco eoan)) + with_dbg = yes +else + ifeq ($(derivative),Ubuntu) + v_dbg = 8.3.0-26ubuntu1 + else ifeq ($(derivative),Debian) + v_dbg = 8.3.0-26 + else + $(error unknown version for -dbgsym package migration) + endif +endif + +# 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 +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 8 + +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 riscv64 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),powerpcspe)) + 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 +ifneq (,$(filter $(DEB_TARGET_ARCH),powerpcspe)) + with_ada := disabled for target $(DEB_TARGET_ARCH) +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 + +#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 sh4 m68k +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 ($(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 +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) + 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 := yes +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 8 + +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 + ifneq (,$(filter $(DEB_TARGET_ARCH), $(phobos_archs))) + with_phobos := yes + endif + + phobos_no_cpus := alpha avr arm64 hppa ia64 m68k \ + mips mipsel mips64 mips64el mipsn32 mipsn32el \ + mipsr6 mipsr6el mips64r6 mips64r6el mipsn32r6 mipsn32r6el \ + powerpc powerpcspe ppc64 s390 s390x 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-8,$(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 + +# ------------------------------------------------------------------- +# 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-8,$(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-8, $(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 := + +# libmpx -------------------- +with_mpx := +with_mpx := $(call envfilt, mpx, , , $(with_mpx)) +mpx_archs = amd64 i386 +ifneq (,$(filter $(DEB_TARGET_ARCH),$(mpx_archs))) + # requires newer binutils, or else libmpxwrappers isn't built + ifeq (,$(filter $(distrelease),squeeze lucid precise)) + with_mpx := yes + ifneq (,$(findstring gcc-, $(PKGSOURCE))) + with_libmpx := yes + endif + endif +endif + +# 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 powerpcspe 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 + + # fixincludes ------- + ifneq ($(DEB_CROSS),yes) + ifeq ($(with_common_pkgs),yes) + with_fixincl := yes + endif + 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_fixincl := 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-8, $(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 +ifeq ($(derivative)-$(DEB_HOST_ARCH),Ubuntu-hppa) + ifneq ($(single_package),yes) + with_check := disabled, testsuite timeouts with expect + endif +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_libmpx),yes) + ifneq (,$(filter $1, 32 64)) + with_lib$1mpx := yes + endif + endif + ifeq ($$(with_libqmath),yes) + with_lib$1qmath := yes + endif + ifeq ($$(with_libgo),yes) + with_lib$1go := 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 libmpx \ + 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 + 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_lib64mpx := 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_lib32mpx := 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-8/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_d),yes) + gdc_tarpath := $(firstword $(wildcard gdc-*.tar.* /usr/src/gcc-$(BASE_VERSION)/gdc-*.tar.*)) + gdc_tarball := $(notdir $(gdc_tarpath)) + gdc_srcdir := $(patsubst %.tar.xz,%,$(patsubst %.tar.lzma,%,$(patsubst %.tar.gz,%,$(gdc_tarball:.tar.bz2=)))) +endif + +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 + +# 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))) --- gcc-8-8.3.0.orig/debian/rules.parameters +++ gcc-8-8.3.0/debian/rules.parameters @@ -0,0 +1,41 @@ +# configuration parameters taken from upstream source files +GCC_VERSION := 8.3.0 +NEXT_GCC_VERSION := 8.3.1 +BASE_VERSION := 8 +SOURCE_VERSION := 8.3.0-25ubuntu3 +DEB_VERSION := 8.3.0-25ubuntu3 +DEB_EVERSION := 1:8.3.0-25ubuntu3 +DEB_GDC_VERSION := 8.3.0-25ubuntu3 +DEB_SOVERSION := 5 +DEB_SOEVERSION := 1:5 +DEB_LIBGCC_SOVERSION := +DEB_LIBGCC_VERSION := 1:8.3.0-25ubuntu3 +DEB_STDCXX_SOVERSION := 5 +DEB_GOMP_SOVERSION := 5 +GCC_SONAME := 1 +CXX_SONAME := 6 +FORTRAN_SONAME := 5 +OBJC_SONAME := 4 +GDC_VERSION := 8 +GNAT_VERSION := 8 +GNAT_SONAME := 8 +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 +MPX_SONAME := 2 +QUADMATH_SONAME := 0 +GO_SONAME := 13 +CC1_SONAME := 0 +GCCJIT_SONAME := 0 +GPHOBOS_SONAME := 76 +GDRUNTIME_SONAME := 76 +HSAIL_SONAME := 0 +LIBC_DEP := libc6 --- gcc-8-8.3.0.orig/debian/rules.patch +++ gcc-8-8.3.0/debian/rules.patch @@ -0,0 +1,421 @@ +# -*- 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-revert-r270683) \ + $(if $(with_linaro_branch),gcc-linaro) \ + $(if $(with_linaro_branch),gcc-linaro-no-macros) \ + +# svn-updates \ + +ifneq ($(GFDL_INVARIANT_FREE),yes) + debian_patches += \ + $(if $(with_linaro_branch),gcc-linaro-doc) \ + rename-info-files \ + gcc-fuse-ld-lld-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 \ + gcc-fuse-ld-lld \ + cuda-float128 \ + libffi-mipsen-r6 \ + t-libunwind-elf-Wl-z-defs \ + gcc-alpha-bs-ignore \ + libffi-riscv \ + libffi-riscv64-go \ + gcc-force-cross-layout \ + kfreebsd-decimal-float \ + powerpcspe_remove_many \ + ia64-disable-selective-scheduling \ + pr87808 \ + pr88419-revert \ + verbose-lto-linker \ + libstdc++-futex \ + +ifeq (,$(filter $(distrelease),precise trusty stretch jessie wheezy)) + debian_patches += pr90050 +endif + +# FIXME: see #915194 +# gcc-search-prefixed-as-ld \ + +ifeq (,$(filter $(distrelease),precise trusty stretch jessie wheezy)) + debian_patches += gcc-as-needed-push-pop +endif + +# TODO: +# pr81829 \ + +# $(if $(filter yes, $(DEB_CROSS)),,gcc-print-file-name) \ +# libstdc++-nothumb-check \ + +ifneq (,$(filter $(derivative),Ubuntu)) + ifneq (,$(findstring gcc-8, $(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-8, $(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. +# 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-arm + 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 + debian_patches += ada-sjlj + debian_patches += ada-lib-info-source-date-epoch + debian_patches += ada-armel-libatomic + debian_patches += ada-kfreebsd + debian_patches += ada-drop-termio-h + debian_patches += ada-749574 + debian_patches += ada-lib-info-file-prefix-map + debian_patches += ada-perl-shebang +endif + +ifeq ($(with_d),yes) + debian_patches += \ + gdc-8 \ + gdc-targetdm \ + gdc-updates \ + libphobos-zlib \ + gdc-frontend-posix \ + gdc-profiledbuild \ + gdc-sparc-fix \ + gdc-shared-by-default \ + gdc-cross-build \ + +# gdc-versym-cpu \ +# gdc-versym-os \ +# gdc-multiarch + ifneq ($(GFDL_INVARIANT_FREE),yes) + debian_patches += gdc-8-doc gdc-targetdm-doc + else + debian_patches += gdc-texinfo + endif + ifeq ($(with_phobos),yes) + debian_patches += gdc-libphobos-build + else + debian_patches += gdc-driver-nophobos + endif + ifeq (,$(filter $(DEB_TARGET_ARCH),amd64 i386)) + debian_patches += disable-gdc-tests + endif +else + debian_patches += gcc-d-lang +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 + +ifeq ($(DEB_TARGET_ARCH),powerpcspe) + debian_patches += powerpcspe_nofprs +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 \ + +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_d),yes) + debian_patches += gdc-cross-install-location + endif +endif + +ifeq ($(DEB_TARGET_ARCH_OS),hurd) + debian_patches += hurd-changes +endif + +ifeq ($(DEB_TARGET_ARCH_OS),hurd) + debian_patches += \ + src_gcc_config_i386_gnu.h \ + src_libgo_build \ + src_libgo_runtime \ + src_libgo_go_crypto \ + src_libgo_go_net \ + src_libgo_go_os \ + src_libgo_go_runtime \ + src_libgo_go_syscall \ + src_libgo_go_go_build_syslist.go \ + add-gnu-to-libgo-headers \ + add-gnu-to-libgo-test-headers \ + src_libgo_go_syscall_syscall_gnu_test.go \ + src_libgo_testsuite_gotest +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 + +# 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 + ifeq ($(with_phobos),yes) + debian_patches += gdc-cross-biarch + endif +endif +debian_patches += gcc-multilib-multiarch + +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 + #debian_patches += gcc-as-needed +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.64 +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 --- gcc-8-8.3.0.orig/debian/rules.sonames +++ gcc-8-8.3.0/debian/rules.sonames @@ -0,0 +1,90 @@ +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; \ + v=`tail -1 $(srcdir)/libmpx/mpxrt/libtool-version | cut -d: -f1`; \ + echo MPX_SONAME=$$v >> $$cache; \ + echo GPHOBOS_SONAME=76 >> $$cache; \ + echo GDRUNTIME_SONAME=76 >> $$cache; \ + echo HSAIL_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) +MPX_SONAME = $(call vafilt,$(SONAME_VARS),MPX_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) + +# alias +GFORTRAN_SONAME = $(FORTRAN_SONAME) +STDC++_SONAME = $(CXX_SONAME) --- gcc-8-8.3.0.orig/debian/rules.source +++ gcc-8-8.3.0/debian/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) + --- gcc-8-8.3.0.orig/debian/rules.unpack +++ gcc-8-8.3.0/debian/rules.unpack @@ -0,0 +1,218 @@ +# -*- 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_d),yes) + tarballs += $(gdc_tarball) +endif +ifeq ($(with_offload_nvptx),yes) + tarballs += $(nl_nvptx_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 (,$(gdc_tarball)) +$(unpack_stamp)-$(gdc_tarball): $(gdc_tarpath) $(unpack_stamp)-$(gcc_tarball) + : # unpack gdc tarball + mkdir -p $(stampdir) + if [ -d $(srcdir)/gcc/d ]; then \ + echo >&2 "Source directory $(srcdir)/gcc/d exists. Delete by hand";\ + false; \ + fi + #rm -rf $(gdc_srcdir) + rm -rf $(srcdir)/gcc/d + rm -rf $(srcdir)/gcc/testsuite/gdc.test + rm -f $(srcdir)/gcc/testsuite/lib/gdc*.exp + rm -rf $(srcdir)/libphobos + tar -x -C $(srcdir) --strip-components=1 -f $(gdc_tarpath) +ifeq ($(GFDL_INVARIANT_FREE),yes-now-purge-gfdl) + ifneq ($(single_package),yes) + for i in gcc/d/gdc.texi; do \ + n=$$(basename $$i .texi); \ + if [ -f $(srcdir)/$$i ]; then \ + sed "s/@name@/$$n/g" $(SOURCE_DIR)debian/gcc-dummy.texi \ + > $(srcdir)/$$i; \ + else \ + echo >&2 "$$i does not exist, fix debian/rules.unpack"; \ + fi; \ + done + for i in gcc/d/gdc.1; do \ + touch $(srcdir)/$$i; \ + done + endif +endif + echo "$(gdc_tarball) unpacked." > $@ +endif + +# --------------------------------------------------------------------------- +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 --- gcc-8-8.3.0.orig/debian/rules2 +++ gcc-8-8.3.0/debian/rules2 @@ -0,0 +1,2618 @@ +#! /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 ($(with_dwz),yes) + 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-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++-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-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-libmpx \ + --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_mpx),yes) + CONFARGS += --enable-libmpx +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 + +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 + +ifeq ($(findstring powerpcspe,$(DEB_TARGET_ARCH)),powerpcspe) + CONFARGS += --with-cpu=8548 --enable-e500_double + CONFARGS += --enable-obsolete +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) + CONFARGS += --with-arch=zEC12 + else # Debian + CONFARGS += --with-arch=z196 + endif +endif + +ifeq ($(DEB_TARGET_ARCH_OS),linux) + ifneq (,$(findstring $(DEB_TARGET_ARCH), alpha powerpc powerpcspe 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),) + bootstrap_target = 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 \ + --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 + +# do_strip_lib_dbg(pkg,pkg_dbg,version,excludes) +define do_strip_lib_dbg + dh_strip -p$(strip $(1)) $(4) \ + $(if $(with_dbg),--dbg-package=$(strip $(2)),--dbgsym-migration='$(strip $(2)) (<< $(strip $(3)))') +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_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 + + if [ -f $(srcdir)/contrib/warn_summary ]; then \ + rm -f bootstrap-summary; \ + /bin/sh $(srcdir)/contrib/warn_summary bootstrap-protocol \ + > bootstrap-summary; \ + fi + + 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) 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),mpx$(MPX_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 + rm -rf .pc + 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_fixincl),yes) + include debian/rules.d/binary-fixincl.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_libmpx),yes) + include debian/rules.d/binary-libmpx.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_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_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-8* $(d)/$(PF)/bin/hppa64-linux-gnu-gcc; \ + else \ + rm -f $(d)/$(PF)/bin/hppa64-linux-gnu-gcc-8*; \ + 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-8* $(d)/$(PF)/bin/$(TARGET_ALIAS)-gcc; \ + else \ + rm -f $(d)/$(PF)/bin/$(TARGET_ALIAS)-gcc-8*; \ + 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 --- gcc-8-8.3.0.orig/debian/runcheck.sh +++ gcc-8-8.3.0/debian/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 --- gcc-8-8.3.0.orig/debian/source/format +++ gcc-8-8.3.0/debian/source/format @@ -0,0 +1 @@ +1.0 --- gcc-8-8.3.0.orig/debian/source/lintian-overrides +++ gcc-8-8.3.0/debian/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 --- gcc-8-8.3.0.orig/debian/tests/control +++ gcc-8-8.3.0/debian/tests/control @@ -0,0 +1,24 @@ +Tests: runtime-libs +Depends: apt, python3-minimal +Restrictions: allow-stderr + +Tests: libc-link +Depends: gcc-8, libc6-dev | libc-dev + +Tests: libstdcxx-link +Depends: g++-8 + +Tests: libgfortran-link +Depends: gfortran-8 + +Tests: libgo-link +Depends: gccgo-8 + +Tests: libgomp-link +Depends: gfortran-8, gcc-8 + +Tests: libgnat-link +Depends: gnat-8 + +Tests: shlib-build +Depends: gcc-8, libc6-dev | libc-dev --- gcc-8-8.3.0.orig/debian/tests/libc-link +++ gcc-8-8.3.0/debian/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-8 + +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" --- gcc-8-8.3.0.orig/debian/tests/libgfortran-link +++ gcc-8-8.3.0/debian/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-8 + +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" --- gcc-8-8.3.0.orig/debian/tests/libgnat-link +++ gcc-8-8.3.0/debian/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-8 + +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" --- gcc-8-8.3.0.orig/debian/tests/libgo-link +++ gcc-8-8.3.0/debian/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-8 + +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" --- gcc-8-8.3.0.orig/debian/tests/libgomp-link +++ gcc-8-8.3.0/debian/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-8 +F95=gfortran-8 + +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" --- gcc-8-8.3.0.orig/debian/tests/libstdcxx-link +++ gcc-8-8.3.0/debian/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++-8 + +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" --- gcc-8-8.3.0.orig/debian/tests/runtime-libs +++ gcc-8-8.3.0/debian/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" --- gcc-8-8.3.0.orig/debian/tests/shlib-build +++ gcc-8-8.3.0/debian/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-8 + +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" --- gcc-8-8.3.0.orig/debian/watch +++ gcc-8-8.3.0/debian/watch @@ -0,0 +1,3 @@ +version=2 +ftp://gcc.gnu.org/pub/gcc/releases/gcc-(8\.[\d\.]*)/ \ + gcc-([\d\.]+)\.tar\.xz debian uupdate