From: Matthias Klose Date: Wed, 25 Nov 2020 14:57:22 +0000 (+0000) Subject: gcc-8 (8.4.0-5) unstable; urgency=medium X-Git-Tag: archive/raspbian/8.4.0-5+rpi1^2~1 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=8ff9d02affdf300e2724ff192ff26d63c9cd4a2d;p=gcc-8.git gcc-8 (8.4.0-5) unstable; urgency=medium * Update to git 20201125 from the gcc-8 branch. - Fix PR c++/97918, PR target/96191 (AArch64), PR target/97535 (AArch64), PR rtl-optimization/97439, PR target/97349 (AArch64), PR target/97150 (AArch64), PR target/96313 (AArch64), PR target/97184 (x86), PR target/97231 (x86), PR target/71233 (AArch64), PR middle-end/97073, PR target/97032 (x86), PR target/94710 (PPC), PR debug/96729, PR tree-optimization/96722, PR fortran/93553, PR target/96174 (x86), PR tree-optimization/95857, PR middle-end/95108, PR debug/95080, PR target/94950 (RISCV), PR rtl-optimization/94873, PR target/94832 (x86), PR target/94832 (x86), PR target/94826 (PPC), PR target/94820 (AArch64), PR tree-optimization/94809, PR target/94710, PR target/94780 (x86), PR c/94705, PR c/94641, PR rtl-optimization/94618, PR tree-optimization/94524, PR target/94438 (x86), PR target/94509 (x86), PR target/94488 (AArch64), PR debug/94459, PR target/94460 (x86), PR middle-end/94423, PR middle-end/94412, PR target/93069 (x86), PR tree-optimization/94329, PR middle-end/94303, PR debug/94283, PR tree-optimization/94211, PR debug/94167, PR middle-end/93566, PR target/94121 (AArch64), PR tree-optimization/94130, PR target/94134, PR target/94121 (AArch64), PR middle-end/94111, PR middle-end/93399, PR tree-optimization/94114, PR debug/93888, PR target/94046 (x86), PR rtl-optimization/94002, PR target/96139 (PPC), PR target/96536 (x86), PR target/95952 (PPC), PR target/95874 (x86), PR tree-optimization/94969, PR sanitizer/95634, PR sanitizer/94910, PR target/94833 (PPC), PR target/94591 (AArch64), PR gcov-profile/95332, PR target/95258 (x86), PR c/96545, PR middle-end/95903, PR c++/95158, PR c++/95328, PR c++/94951, PR c++/94742, PR c++/94571, PR c++/94325, PR c++/93931, PR c++/90995, PR c++/90749, PR c++/91529, PR c++/93822, PR fortran/96041, PR fortran/93423, PR fortran/89574, PR fortran/88379, PR fortran/71706, PR fortran/95829, PR fortran/95689, PR fortran/95689, PR fortran/94109, PR fortran/94361, PR fortran/50392, PR fortran/39695, PR fortran/93592, PR libstdc++/92978, PR libstdc++/97731, PR libstdc++/96803, PR libstdc++/94033, PR libstdc++/71960, PR libstdc++/93245, PR libstdc++/94242, PR libstdc++/96484, PR libstdc++/68737. * Bump standards version. [dgit import package gcc-8 8.4.0-5] --- diff --git a/debian/NEWS.gcc b/debian/NEWS.gcc new file mode 100644 index 0000000..aeccd06 --- /dev/null +++ b/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. diff --git a/debian/NEWS.html b/debian/NEWS.html new file mode 100644 index 0000000..d71e31a --- /dev/null +++ b/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

+
    +
  • +
+ + + + + + + + + + + + + + + + + + diff --git a/debian/README.Bugs.m4 b/debian/README.Bugs.m4 new file mode 100644 index 0000000..a2d1606 --- /dev/null +++ b/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 ...] diff --git a/debian/README.C++ b/debian/README.C++ new file mode 100644 index 0000000..8cc40f8 --- /dev/null +++ b/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. diff --git a/debian/README.Debian b/debian/README.Debian new file mode 100644 index 0000000..b2275d4 --- /dev/null +++ b/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) + +=============================================================================== + diff --git a/debian/README.cross b/debian/README.cross new file mode 100644 index 0000000..7909833 --- /dev/null +++ b/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. diff --git a/debian/README.gnat b/debian/README.gnat new file mode 100644 index 0000000..1efd8df --- /dev/null +++ b/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. diff --git a/debian/README.libstdc++-baseline.in b/debian/README.libstdc++-baseline.in new file mode 100644 index 0000000..e771c16 --- /dev/null +++ b/debian/README.libstdc++-baseline.in @@ -0,0 +1,2 @@ +The libstdc++ baseline file is a list of symbols exported by the +libstdc++ library. diff --git a/debian/README.maintainers b/debian/README.maintainers new file mode 100644 index 0000000..9240455 --- /dev/null +++ b/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. diff --git a/debian/README.snapshot b/debian/README.snapshot new file mode 100644 index 0000000..3e5be69 --- /dev/null +++ b/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. diff --git a/debian/README.source b/debian/README.source new file mode 100644 index 0000000..4eceda6 --- /dev/null +++ b/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. diff --git a/debian/README.ssp b/debian/README.ssp new file mode 100644 index 0000000..9facca7 --- /dev/null +++ b/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/ diff --git a/debian/TODO b/debian/TODO new file mode 100644 index 0000000..4ce4b0b --- /dev/null +++ b/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 diff --git a/debian/acats-killer.sh b/debian/acats-killer.sh new file mode 100644 index 0000000..29a2550 --- /dev/null +++ b/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 diff --git a/debian/ada/confirm_debian_bugs.py b/debian/ada/confirm_debian_bugs.py new file mode 100644 index 0000000..738dfbd --- /dev/null +++ b/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)) diff --git a/debian/ada/debian_packaging.mk b/debian/ada/debian_packaging.mk new file mode 100644 index 0000000..149e851 --- /dev/null +++ b/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. diff --git a/debian/bin-wrapper.in b/debian/bin-wrapper.in new file mode 100644 index 0000000..f8ca63b --- /dev/null +++ b/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) "$@" diff --git a/debian/changelog b/debian/changelog new file mode 100644 index 0000000..4701f30 --- /dev/null +++ b/debian/changelog @@ -0,0 +1,15112 @@ +gcc-8 (8.4.0-5) unstable; urgency=medium + + * Update to git 20201125 from the gcc-8 branch. + - Fix PR c++/97918, PR target/96191 (AArch64), PR target/97535 (AArch64), + PR rtl-optimization/97439, PR target/97349 (AArch64), + PR target/97150 (AArch64), PR target/96313 (AArch64), + PR target/97184 (x86), PR target/97231 (x86), PR target/71233 (AArch64), + PR middle-end/97073, PR target/97032 (x86), PR target/94710 (PPC), + PR debug/96729, PR tree-optimization/96722, PR fortran/93553, + PR target/96174 (x86), PR tree-optimization/95857, PR middle-end/95108, + PR debug/95080, PR target/94950 (RISCV), PR rtl-optimization/94873, + PR target/94832 (x86), PR target/94832 (x86), PR target/94826 (PPC), + PR target/94820 (AArch64), PR tree-optimization/94809, PR target/94710, + PR target/94780 (x86), PR c/94705, PR c/94641, PR rtl-optimization/94618, + PR tree-optimization/94524, PR target/94438 (x86), PR target/94509 (x86), + PR target/94488 (AArch64), PR debug/94459, PR target/94460 (x86), + PR middle-end/94423, PR middle-end/94412, PR target/93069 (x86), + PR tree-optimization/94329, PR middle-end/94303, PR debug/94283, + PR tree-optimization/94211, PR debug/94167, PR middle-end/93566, + PR target/94121 (AArch64), PR tree-optimization/94130, PR target/94134, + PR target/94121 (AArch64), PR middle-end/94111, PR middle-end/93399, + PR tree-optimization/94114, PR debug/93888, PR target/94046 (x86), + PR rtl-optimization/94002, PR target/96139 (PPC), PR target/96536 (x86), + PR target/95952 (PPC), PR target/95874 (x86), PR tree-optimization/94969, + PR sanitizer/95634, PR sanitizer/94910, PR target/94833 (PPC), + PR target/94591 (AArch64), PR gcov-profile/95332, PR target/95258 (x86), + PR c/96545, PR middle-end/95903, PR c++/95158, PR c++/95328, + PR c++/94951, PR c++/94742, PR c++/94571, PR c++/94325, PR c++/93931, + PR c++/90995, PR c++/90749, PR c++/91529, PR c++/93822, PR fortran/96041, + PR fortran/93423, PR fortran/89574, PR fortran/88379, PR fortran/71706, + PR fortran/95829, PR fortran/95689, PR fortran/95689, PR fortran/94109, + PR fortran/94361, PR fortran/50392, PR fortran/39695, PR fortran/93592, + PR libstdc++/92978, PR libstdc++/97731, PR libstdc++/96803, + PR libstdc++/94033, PR libstdc++/71960, PR libstdc++/93245, + PR libstdc++/94242, PR libstdc++/96484, PR libstdc++/68737. + * Bump standards version. + + -- Matthias Klose Wed, 25 Nov 2020 15:57:22 +0100 + +gcc-8 (8.4.0-4) unstable; urgency=medium + + * Update to git 20200519 from the gcc-8 branch. + - Fix PR target/94515, PR tree-optimization/93674, PR target/94613 (S390), + PR target/94814 (AArch64), PR target/90724 (AArch64), + PR target/94435 (AArch64), PR target/94368 (AArch64), + PR target/92692 (AArch64), PR tree-optimization/94482, + PR target/94556 (x86), PR target/94396 (AArch64), PR target/94417 (x86), + PR target/94603 (x86), PR target/94584 (xtensa), PR target/94500 (x86), + PR tree-optimization/93435, PR ipa/94445, PR fortran/85982, + PR bootstrap/94918, PR c++/90736, PR c++/91377, PR c++/91966, + PR c++/84733, PR c++/92909, PR c++/92068, PR c++/93248, PR fortran/59107, + PR fortran/93956, PR fortran/94788, PR fortran/93956, PR fortran/94270, + PR fortran/94030, PR fortran/92775, PR fortran/93484, PR fortran/93462, + PR libstdc++/93960. + * Fix local patch for PR jit/87808. Addresses: #954898. + * Don't include lib*gomp1 and libgcc4 in the control file, when not building + the common libraries. + * Build-depend on lib*gcc-sN packages for recent development releases. + + -- Matthias Klose Tue, 19 May 2020 13:13:06 +0200 + +gcc-8 (8.4.0-3) unstable; urgency=medium + + * Update to git 20200402 from the gcc-8 branch. + - Fix PR target/93819 (PPC), PR target/87583 (PPC), PR gcov-profile/91601, + PR lto/94249, PR c++/84733, PR fortran/94030, PR fortran/92775, + PR fortran/93484. + * Fix libgcc-sN dependency generation. Closes: #954826. + + -- Matthias Klose Thu, 02 Apr 2020 15:30:15 +0200 + +gcc-8 (8.4.0-2) unstable; urgency=medium + + * Update to git 20200323 from the gcc-8 branch. + - Fix PR driver/92757, PR tree-optimization/94163, PR libgcc/85334, + PR rtl-optimization/94119, PR target/91913 (ARM), PR c/93949, + PR c++/92909, PR c++/92068, PR c++/93248, PR fortran/93462. + * For all runtime libraries, generate dependencies on libgcc-sN instead + on libgccN, when libgccN isn't built from this source package. + * Stop shipping the include-fixed directory. + * Move limits.h and syslimits.h into /include, and remove + /include-fixed. + * Fix building gnattools in an amd64 "cross" build. + * Generate dependencies on libgcc-sN if not building the common packages. + + -- Matthias Klose Mon, 23 Mar 2020 16:00:42 +0100 + +gcc-8 (8.4.0-1) unstable; urgency=medium + + * GCC 8.4.0 release. + - Fix PR target/91276 (PPC), PR tree-optimization/93820, + PR rtl-optimization/93908, PR tree-optimization/93767, + PR tree-optimization/93434, PR middle-end/92768, + PR tree-optimization/92420, PR middle-end/90313, PR c++/92003, + PR target/93658 (PPC), PR target/93568 (PPC), PR target/93828 (x86), + PR target/93656 (x86), PR c++/93905, PR c++/90998, PR c++/86521, + PR c++/90546, PR c++/86521, PR c++/89831, PR c++/88380, PR c++/87685, + PR c++/86747, PR c++/86429, PR c++/82643, PR c++/87327, PR c++/87748, + PR c++/87480, PR c++/88394, PR c++/87770, PR c++/92745, PR c++/89917, + PR c++/90951, PR c++/93140, PR c++/92852, PR fortran/93714, + PR libstdc++/93205, PR libstdc++/92886, PR libstdc++/93325, + PR libstdc++/93562, PR libstdc++/92376, PR libstdc++/78552, + PR libstdc++/91947, PR libstdc++/81091, PR libstdc++/91947, + PR other/93965, PR target/91276 (PPC). + + -- Matthias Klose Wed, 04 Mar 2020 11:14:02 +0100 + +gcc-8 (8.3.0-29) unstable; urgency=medium + + * Update to git 20200218 from the gcc-8 branch. + - Fix PR tree-optimization/93381, PR tree-optimization/93439, + PR middle-end/93054, PR debug/92763, PR tree-optimization/92704, + PR middle-end/92674, PR target/93724 (x86), PR tree-optimization/93744, + PR target/93704 (SPARC), PR target/93696 (x86), PR target/93673 (x86), + PR target/93670 (x86), PR target/93637 (x86), PR target/65782 (x86), + PR libgomp/93515, PR middle-end/93555, PR middle-end/93505, + PR rtl-optimization/93402, PR target/91298 (x86), PR target/93333 (RISCV), + PR target/93073 (PPC), PR inline-asm/93202, PR rtl-optimization/93088, + PR ipa/93087, PR ipa/92357, PR tree-optimization/92930, + PR target/92904 (x86), PR target/92723, PR debug/92664, + PR target/92615 (x86), PR middle-end/93246, PR rtl-optimization/91838, + PR c++/61414, PR c/93576, PR c++/61414, PR c++/93228, PR c++/92438, + PR c++/92992, PR c++/92732, PR c++/60228, PR c++/92524, PR c++/92648, + PR c++/61414, PR c++/90842, PR fortran/93463, PR fortran/93329, + PR fortran/92977, PR fortran/92899, PR fortran/92781, PR fortran/91944, + PR fortran/93541, PR libgomp/93515, PR libgomp/93065, PR sanitizer/92154, + PR sanitizer/92154. + + -- Matthias Klose Tue, 18 Feb 2020 14:37:47 +0100 + +gcc-8 (8.3.0-28) unstable; urgency=medium + + * Sourceful no-change upload. Closes: #950632. + + -- Matthias Klose Tue, 04 Feb 2020 12:57:33 +0100 + +gcc-8 (8.3.0-27) unstable; urgency=medium + + * Update to git 20200203 from the gcc-8 branch. + - Fix PR libgomp/93066, PR lto/89358, PR ipa/92971, PR target/93182 (AVR), + PR target/93111 (PARISC), PR rtl-optimization/92591, + PR target/92545 (AVR), PR target/92950 (S390), PR c/93072, PR c/93241, + PR c++/92859, PR fortran/84135, PR fortran/92961, PR middle-end/91226, + PR libstdc++/93201, PR target/92692 (AArch64), PR c/93348, PR c++/91826, + PR c++/92852. + * Fix buffer overflow in the gcc-search-prefixed-as-ld patch. + Addresses: #946792. + * Refresh patches. + * Dump the config.log for the configure step when it fails. + * On architectures where libgcc_s.so is a symlink, replace the symlink with + a simple linker script. + * libgcc-dev: Don't ship a libgcc_so.1 symlink in gcclibdir. + Addresses: #950525. + * Bump standards version. + + -- Matthias Klose Mon, 03 Feb 2020 08:07:47 +0100 + +gcc-8 (8.3.0-26) unstable; urgency=medium + + * Update to SVN 20191201 (r278885) from the gcc-8-branch. + - Fix PR fortran/92100, PR fortran/92629, PR driver/89014. + * Fix applying the gcc-linaro patch. + * Stop building -dbg packages, keep building the libstc++6-8-dbg package + containing just the libstdc++ debug build. + + -- Matthias Klose Sun, 01 Dec 2019 20:22:52 +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-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-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-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-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-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-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-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-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-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-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-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-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-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-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-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-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-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-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-19) 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-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-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-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-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-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-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-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-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-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-7) unstable; urgency=medium + + * Update to SVN 20180917 (r264370) from the gcc-8-branch. + - Fix PR libstdc++/87278, PR target/85666 (mmix), PR middle-end/87188, + PR target/87224 (PPC), PR target/86989 (PPC), PR rtl-optimization/86771, + PR middle-end/87248, PR c++/87093, PR fortran/87284, PR fortran/87277. + + -- Matthias Klose Mon, 17 Sep 2018 17:46:50 +0200 + +gcc-8 (8.2.0-6) unstable; urgency=medium + + * Update to SVN 20180908 (r264168) from the gcc-8-branch. + - Fix PR c++/87137, PR bootstrap/87225, PR target/87198 (x86), + PR middle-end/87138, PR tree-optimization/86835, PR c++/87185, + PR c++/87095, PR c++/86836, PR c++/86738, PR c++/86706, PR fortran/86116. + * Apply proposed patch for PR go/87260. + * Apply proposed patch for PR tree-optimization/87188. Closes: #907586. + * Fix PR target/86731 (PPC), taken from the trunk. Closes: #905868. + + -- Matthias Klose Sun, 09 Sep 2018 14:43:43 +0200 + +gcc-8 (8.2.0-5) unstable; urgency=medium + + * Update to SVN 20180904 (r264075) from the gcc-8-branch. + - Fix PR sanitizer/86022, PR libstdc++/87116, PR other/86992, + PR tree-optimization/86914, PR middle-end/87099, + PR rtl-optimization/87065, PR target/86662, PR target/87014, + PR target/86640, PR gcov-profile/86817, PR tree-optimization/86871, + PR c++/86763, PR fortran/86837, PR libfortran/86704, + PR tree-optimization/85859, PR tree-optimization/87074, + PR tree-optimization/86927, PR middle-end/87024, PR middle-end/86505, + PR tree-optimization/86945, PR tree-optimization/86816, + PR lto/86456, PR c++/87155, PR c++/84707, PR c++/87122, + PR fortran/86328, PR fortran/86760. + * Remove ia64 boostrap work around (Jason Duerstock). Closes: #906675. + + -- Matthias Klose Tue, 04 Sep 2018 09:04:17 +0200 + +gcc-8 (8.2.0-4) unstable; urgency=medium + + * Update to SVN 20180814 (r263527) from the gcc-8-branch. + - Fix PR libstdc++/86597, PR libstdc++/84535, PR libstdc++/60555, + PR libstdc++/86874, PR libstdc++/86861, PR target/86386 (x86), + PR c++/86728, PR c++/86767, PR fortran/86906. + + [ Nicolas Boulenguez ] + * gnat: set ld_library_path for tested gnat tools. + * In the gnat autopkg test, tell gnatmake to report progress on stdout. + * gnat: Improve the ada-gcc-name patch. + * Update ada/debian_packaging.mk. + + -- Matthias Klose Tue, 14 Aug 2018 11:45:55 +0200 + +gcc-8 (8.2.0-3) unstable; urgency=medium + + * Update to SVN 20180803 (r263086) from the gcc-8-branch. + - Fix PR middle-end/86705, PR target/86820 (m68k). + * Build using ISL 0.20. + * Fix some autopkg tests (allow stderr, explicitly depend on libc-dev). + + -- Matthias Klose Fri, 03 Aug 2018 12:32:31 +0200 + +gcc-8 (8.2.0-2) unstable; urgency=medium + + * Update to SVN 20180802 (r263045) from the gcc-8-branch. + - Fix PR middle-end/86542, PR middle-end/86539, PR middle-end/86660, + PR middle-end/86627, PR target/86511, PR sanitizer/86759, PR c/85704, + PR libstdc++/86734, PR bootstrap/86724, PR target/86651, PR c/86617, + PR c++/86190. + - Fix PR libstdc++/84654, PR libstdc++/85672. LP: #1783705. + * Update cross-build patches for GCC 8.2. + * Refresh patches. + * Add some basic autopkg tests for Ada, C, C++, Go, OpenMP and Fortran. + * Backport r262835 to fix a wrong-code generation on m68k (Adrian Glaubits). + + -- Matthias Klose Thu, 02 Aug 2018 05:59:26 +0200 + +gcc-8 (8.2.0-1) unstable; urgency=medium + + * GCC 8.2.0 release. + * Update GDC to 20180726 from the gdc-8-stable branch.. + + -- Matthias Klose Thu, 26 Jul 2018 13:28:20 +0200 + +gcc-8 (8.1.0-12) unstable; urgency=medium + + * GCC 8.2.0 release candidate. + * Update to SVN 20180719 (r262861) from the gcc-8-branch. + - Fix PR middle-end/85602, PR c++/86480. + + [ Nicolas Boulenguez ] + * ada-verbose patch: Make the ada build more verbose. + * Update the ada-gcc-name patch again. See #856274. Closes: #903694. + + [ Matthias Klose ] + * Rewrite debian/README.cross. + + -- Matthias Klose Thu, 19 Jul 2018 17:39:39 +0200 + +gcc-8 (8.1.0-11) unstable; urgency=medium + + * Update to SVN 20180717 (r262818) from the gcc-8-branch. + - Fix PR c/86453, PR debug/86452, PR debug/86457, PR middle-end/85974, + PR middle-end/86076, PR tree-optimization/85935, + PR tree-optimization/86514, PR tree-optimization/86274, + PR target/84413 (x86), PR middle-end/86202, PR target/84829, + PR c++/3698, PR c++/86208, PR c++/86374, PR sanitizer/86406, + PR fortran/83184, PR fortran/86417, PR fortran/83183, + PR fortran/86325. + + [ Nicolas Boulenguez ] + * Update the ada-gcc-name patch, not appending the suffix twice. + Addresses: #856274. + + -- Matthias Klose Tue, 17 Jul 2018 14:09:13 +0200 + +gcc-8 (8.1.0-10) unstable; urgency=medium + + * Update to SVN 20180712 (r262577) from the gcc-8-branch. + - Fix PR libstdc++/86272, PR libstdc++/86127, PR target/85904, + PR libstdc++/85098, PR libstdc++/85671, PR libstdc++/83982, + PR libstdc++/86292, PR libstdc++/86138, PR libstdc++/84087, + PR libstdc++/86398, PR hsa/86371, PR tree-optimization/86492, + PR c++/86400, PR target/86285 (PPC), PR debug/86064, + PR target/86222 (PPC), PR rtl-optimization/85645, + PR rtl-optimization/85645, PR target/86314 (x86), PR sanitizer/86406, + PR c++/86398, PR c++/86378, PR c++/86320, PR c++/80290, + PR fortran/82969, PR fortran/86242, PR fortran/82865. + * Enable decimal float support on kfreebsd-amd64. Closes: #897416. + + -- Matthias Klose Thu, 12 Jul 2018 10:07:17 +0200 + +gcc-8 (8.1.0-9) unstable; urgency=medium + + * Update to SVN 20180626 (r262138) from the gcc-8-branch. + - Fix PR libstdc++/86138, PR libstdc++/82644, PR libgcc/86213, + PR c++/86210, PR c/86093, PR target/86197 (PPC), PR target/85358 (PPC), + PR tree-optimization/85989, PR target/85657 (PPC), PR target/85657 (PPC), + PR target/85994, PR rtl-optimization/86108, PR debug/86194, + PR tree-optimization/86231, PR c/82063, PR c++/86219, PR c++/86182, + PR c++/85634, PR c++/86200, PR c++/81060, PR fortran/83118, + PR libstdc++/86112, PR libstdc++/81092, PR fortran/82972, + PR fortran/83088, PR fortran/85851, PR c++/86291. + + [ Nicolas Boulenguez ] + * Remove Ludovic Brenta's work to let Ada build tools link with freshly + built libgnat.so, this is now handled by upstream testsuite. + + [ Iain Buclaw ] + * gdc: Explicitly set test action as compile in all dg tests. + + [ Matthias Klose ] + * Build using gnat-8. + + -- Matthias Klose Tue, 26 Jun 2018 10:45:36 +0200 + +gcc-8 (8.1.0-8) unstable; urgency=medium + + * Update to SVN 20180617 (r261686) from the gcc-8-branch. + - Fix PR libstdc++/86169, PR middle-end/86095, PR middle-end/85878, + PR middle-end/86123, PR middle-end/86122, PR c++/86147, PR c++/82882, + PR fortran/85703, PR fortran/85702, PR fortran/85701. + * Fix applying the powerpcspe patches. + + -- Matthias Klose Sun, 17 Jun 2018 12:56:15 +0200 + +gcc-8 (8.1.0-6) unstable; urgency=medium + + * Update to SVN 20180614 (r261597) from the gcc-8-branch. + - Fix PR libstdc++/86008, PR libstdc++/85930, PR libstdc++/85951, + PR target/85591 (x86), PR c++/85710, PR c++/80485, PR target/85755 (PPC), + PR target/85755 (PPC), PR target/81497 (ARM), PR target/85684 (x86), + PR target/63177 (PPC), PR tree-optimization/86038, + PR tree-optimization/85964, PR tree-optimization/85934, PR c++/86025, + PR tree-optimization/85863, PR c/85623, PR target/86003 (ARM), + PR tree-optimization/85712, PR target/85950 (x86), PR target/85984, + PR target/85829 (x86), PR c++/85792, PR c++/85963, PR c++/61806, + PR c++/85765, PR c++/85764, PR c++/85807, PR c++/85815, PR c++/86094, + PR c++/86060, PR c++/85847, PR c++/85976, PR c++/85731, PR c++/85739, + PR c++/85761, PR c++/85873, PR fortran/44491, PR fortran/85138, + PR fortran/85996, PR fortran/86051, PR fortran/86059, PR fortran/63514, + PR fortran/78278, PR fortran/38351, PR fortran/78571, PR fortran/85631, + PR fortran/86045, PR fortran/85641, PR fortran/85816, PR fortran/85975, + PR libgfortran/85840, PR target/85945, PR middle-end/86139, + PR other/77609, PR tree-optimization/86114, PR target/86048 (x86), + PR fortran/86110. + - libgo: update to Go 1.10.3 release. + + -- Matthias Klose Thu, 14 Jun 2018 16:57:14 +0200 + +gcc-8 (8.1.0-5) unstable; urgency=medium + + * Update to SVN 20180531 (r260992) from the gcc-8-branch. + - Fix PR sanitizer/86012, PR c/85696, PR c++/85662, PR target/85756 (x86), + PR target/85683 (x86), PR c++/85952, PR c/85696, PR c++/85662. + - Fix libsanitizer build on sparc64. + * libgo: Make the vet tool work with gccgo (taken from the trunk). + + -- Matthias Klose Thu, 31 May 2018 15:18:52 +0200 + +gcc-8 (8.1.0-4) unstable; urgency=medium + + * Update to SVN 20180529 (r260895) from the gcc-8-branch. + - Fix PR c++/85782, PR sanitizer/85835, PR libstdc++/85818, + PR libstdc++/85818, PR libstdc++/83891, PR libstdc++/84159, + PR libstdc++/67554, PR libstdc++/82966, PR bootstrap/85921, + PR sanitizer/85556, PR target/85900 (x86), PR target/85345 (x86), + PR c++/85912, PR target/85903 (x86), PR tree-optimization/85793, + PR middle-end/85874, PR tree-optimization/85822, PR middle-end/85643, + PR tree-optimization/85814, PR target/85698 (PPC), PR c++/85842, + PR c++/85864, PR c++/81420, PR c++/85866, PR c++/85782, PR fortran/85786, + PR fortran/85895, PR fortran/85780, PR fortran/85779, PR fortran/85543, + PR fortran/80657, PR fortran/49636, PR fortran/82275, PR fortran/82923, + PR fortran/66694, PR fortran/82617, PR fortran/85742, PR fortran/85542, + PR libgfortran/85906, PR libgfortran/85840. + + [ Nicolas Boulenguez ] + * Update ada/confirm_debian_bugs to gcc-8 and python3. + + [ Matthias Klose ] + * gnat-*: Don't search the target dirs when calling dh_shlibdeps. + * Stop shipping unstripped binaries with the final release. Closes: #894014. + + -- Matthias Klose Tue, 29 May 2018 14:34:37 +0200 + +gcc-8 (8.1.0-3) unstable; urgency=medium + + * Update to SVN 20180512 (r260194) from the gcc-8-branch. + - Fix PR ipa/85655, PR target/85733 (ARM), PR target/85606 (ARM), + PR fortran/70870, PR fortran/85521, PR fortran/85687, PR fortran/68846, + PR fortran/70864. + * Fix name of the g++ multiarch include directory. Closes: #898323. + * Fix PR sanitizer/85556, attribute no_sanitize does not accept multiple + options; taken from the trunk. Closes: #891489. + + -- Matthias Klose Sat, 12 May 2018 10:36:05 -0400 + +gcc-8 (8.1.0-2) unstable; urgency=medium + + * Update to SVN 20180510 (r260147) from the gcc-8-branch. + - Fix PR go/85630, PR target/85519 (nvptx), PR libstdc++/85642, + PR libstdc++/84769, PR libstdc++/85632, PR libstdc++/80506, + PR target/85512 (AArch64), PR c++/85305, PR ada/85635, PR ada/85540, + PR rtl-optimization/85638, PR middle-end/85588, PR middle-end/85588, + PR tree-optimization/85615, PR middle-end/85567, PR target/85658 (ARM), + PR tree-optimization/85597, PR middle-end/85627, PR c++/85659, + PR c++/85706, PR c++/85695, PR c++/85646, PR c++/85618, PR fortran/85507. + * Don't configure with --with-as and --with-ld, but search the triplet + prefixed as and ld in the same places as as/ld. Closes: #896057, #897896. + * Enable decimal float support on kfreebsd-amd64. Closes: #897416. + + -- Matthias Klose Thu, 10 May 2018 20:43:42 -0400 + +gcc-8 (8.1.0-1) unstable; urgency=medium + + * GCC 8.1.0 release. + * Stop providing the 8.x.y symlinks in gcc_lib_dir and incluce/c++. + * Configure powerpcspe with --enable-obsolete, will be gone with GCC 9. + * Build libmpx libraries when not building the common libs. + * Update NEWS files for GCC 8.1. + + -- Matthias Klose Wed, 02 May 2018 11:43:46 +0200 + +gcc-8 (8-20180425-1) unstable; urgency=medium + + * GCC 8 snapshot, taken from the trunk 20180425 (r259628). + + [ Matthias Klose ] + * Update nvptx-newlib to 20180424. + * Use the binutils in the build chroot if present. + * Don't use dwz for GCC backports. + * Install the movdirintrin.h header file. + + [ Aurelien Jarno ] + * Enable logwatch on riscv64. + + -- Matthias Klose Wed, 25 Apr 2018 06:56:58 +0200 + +gcc-8 (8-20180414-1) unstable; urgency=medium + + * GCC 8 snapshot, taken from the trunk 20180414 (r259383). + + [ Matthias Klose ] + * Update GDC to 20180410. + * Don't install i586 symlinks anymore for i386 builds in sid. + * Fix zlib-dev dependencies for the libphobos cross multilib packages. + * Fix dependency generation for libatomic and libquadmath cross packages. + * Use triplet-prefixed as and ld (Helmut Grohne). Closes: #895251. + * Link libasan, liblsan, libubsan always with --no-as-needed. LP: #1762683. + * Use --push-state --as-needed and --pop-state instead of --as-needed and + --no-as-needed for linking libgcc. + * Update the gcc-foffload-default patch. LP: #1721355. + + [ Svante Signell ] + * Reintroduce libgo patches for hurd-i386. Closes: #894080. + + -- Matthias Klose Sat, 14 Apr 2018 07:10:01 +0200 + +gcc-8 (8-20180402-1) unstable; urgency=medium + + * GCC 8 snapshot, taken from the trunk 20180402 (r259004). + * Build a native compiler with a cross directory layout using the + FORCE_CROSS_LAYOUT environment variable. + + -- Matthias Klose Mon, 02 Apr 2018 10:09:27 +0200 + +gcc-8 (8-20180331-1) unstable; urgency=medium + + * GCC 8 snapshot, taken from the trunk 20180331 (r258989). + - Fix PR/libstdc++/85040, std::less fails when operator< is + overloaded. Closes: #893517. + - Fix PR/target 84148, CET shouldn't be enabled in 32-bit run-time + libraries by default. Closes: #890092. + + [ Samuel Thibault ] + * Fix disabling go on hurd-i386 for now. + + [ Matthias Klose ] + * gdc: Link with the shared libphobos library by default. + * Fix control file generation for nolang=biarch builds (Helmut Grohne). + Closes: #891289. + * Simplify architecture to gnu-type mapping (Helmut Grohne). Closes: #893493. + + -- Matthias Klose Sat, 31 Mar 2018 15:14:44 +0800 + +gcc-8 (8-20180321-1) unstable; urgency=medium + + * GCC 8 snapshot, taken from the trunk 20180321 (r258712). + - Fix PR sanitizer/84761. Addresses: #892096. + * Update GDC to 20180320. + * Reenable building gdc. + + -- Matthias Klose Wed, 21 Mar 2018 19:47:27 +0800 + +gcc-8 (8-20180319-1) unstable; urgency=medium + + * GCC 8 snapshot, taken from the trunk 20180319 (r258631). + + [ Aurelien Jarno ] + * Default to PIE on riscv64. + * Temporarily do not build-depend on gdb on riscv64. + + -- Matthias Klose Mon, 19 Mar 2018 02:18:29 +0800 + +gcc-8 (8-20180312-2) unstable; urgency=medium + + * GCC 8 snapshot, taken from the trunk 20180312 (r258445). + * Update GDC to 20180311. + + [ Matthias Klose ] + * Fix typo in libasan and lib32asan symbols files for s390x. + + [ Aurelien Jarno ] + * Disable gnat on riscv64. + * Backport RISC-V libffi support from upstream. + + -- Matthias Klose Mon, 12 Mar 2018 12:33:10 +0100 + +gcc-8 (8-20180310-1) unstable; urgency=medium + + * GCC 8 snapshot, taken from the trunk 20180310 (r258410). + * Build libasan and libubsan packages on s390x. + * Update libasan symbols files for s390x. + + -- Matthias Klose Sat, 10 Mar 2018 10:54:02 +0700 + +gcc-8 (8-20180308-1) unstable; urgency=medium + + * GCC 8 snapshot, taken from the trunk 20180308 (r258348). + * Update GDC to 20180304. + + [ Matthias Klose ] + * Fix cross builds building without "common" libraries. + * Fix cross-building libgnat on armel, when not building the common libraries. + * Remove the go patches for the Hurd. Unmaintained. + * Update libcc1 symbols file. + * Install more intrinsic header files. + + [ Aurelien Jarno ] + * Configure s390x build with --with-arch=z196 on Debian. + * Drop libgo-s390x-default-isa.diff patch. + * Disable multilib on riscv64. + * Update gcc-as-needed.diff, gcc-hash-style-both.diff and + gcc-hash-style-gnu.diff for riscv64. + * Update gcc-multiarch.diff for riscv64. + + [ Karsten Merker ] + * Force the riscv64 ISA to rv64imafdc and ABI to lp64d. + + -- Matthias Klose Thu, 08 Mar 2018 14:17:37 +0700 + +gcc-8 (8-20180218-1) unstable; urgency=medium + + * GCC 8 snapshot, taken from the trunk 20180208 (r257477). + * Update GDC to 20180211. + * Store basename only in gfortran .mod files. Addresses: #889133. + * Disable go on the hurd, patches are out of date. + * Configure with --disable-libquadmath-support when not explicitly enabled. + * For armel multilib builds, explicitly set architecture and cpu for the + hard-float multilib. + + -- Matthias Klose Sun, 18 Feb 2018 16:11:11 +0700 + +gcc-8 (8-20180207-2) unstable; urgency=medium + + * Revert the fix for PR target/84145. + * Override patch-file-present-but-not-mentioned-in-series lintian warning. + + -- Matthias Klose Wed, 07 Feb 2018 13:09:23 +0100 + +gcc-8 (8-20180207-1) unstable; urgency=medium + + * GCC 8 snapshot, taken from the trunk 20180207 (r257435). + * Update GDC to 20180204. + * Refresh patches. + * Disable go on m68k again. Closes: #886103. + * Ignore bootstrap comparison failures in gcc/d on alpha. Addresses: #888951. + * Include amo.h header for Power architectures. + * Include arm_cmse.h header for ARM32 architectures. + * Update tsan symbols file arm64. + + -- Matthias Klose Wed, 07 Feb 2018 01:34:14 +0100 + +gcc-8 (8-20180130-1) experimental; urgency=medium + + * GCC 8 snapshot, taken from the trunk 20180130 (r257194). + * Update GDC to 20180130. + + -- Matthias Klose Tue, 30 Jan 2018 18:49:51 +0100 + +gcc-8 (8-20180123-1) experimental; urgency=medium + + * GCC 8 snapshot, taken from the trunk 20180123 (r257004). + * Update GDC to 20180123. + * Install the msa.h header for mips targets (YunQiang Su). Addresses: #887066. + * Fix mipsen r6 biarch configs (YunQiang Su). Closes: #886976. + + -- Matthias Klose Tue, 23 Jan 2018 23:10:51 +0100 + +gcc-8 (8-20180110-1) experimental; urgency=medium + + * GCC 8 snapshot, taken from the trunk 20180110 (r256425). + - Go 1.10 beta1 merged, bumping libgo soname. + * Update GDC to 20180108. + * debian/rules2: Fix typo for N32 conditions (YunQiang Su). Closes: #886459. + * More libffi mips r6 updates (YunQiang Su). Addresses: #886201. + * Default to PIE on the hurd (Samuel Thibault). Addresses: #885056. + * Use internal libunwind for ia64 cross-builds. Addresses: #885931. + * Strip -z,defs from linker options for internal libunwind (James Clarke). + Addresses: #885937. + * Fix rtlibs stage build with debhelper 10.9.1 (Helmut Grohne). + Closes: #879054. + + -- Matthias Klose Wed, 10 Jan 2018 12:23:12 +0100 + +gcc-8 (8-20171229-1) experimental; urgency=medium + + * GCC 8 snapshot, taken from the trunk 20171229. + * Update GDC to 20171227. + * Build the nvptx offload compiler again. + + -- Matthias Klose Fri, 29 Dec 2017 22:16:04 +0100 + +gcc-8 (8-20171223-1) experimental; urgency=medium + + * GCC 8 snapshot, taken from the trunk 20171223. + * Update GDC to 20171223. + * Don't build the nvptx offload compiler for now, see PR target/83524. + + -- Matthias Klose Sat, 23 Dec 2017 13:08:14 +0100 + +gcc-8 (8-20171215-1) experimental; urgency=medium + + * GCC 8 snapshot, taken from the trunk 20171215. + * Update GDC to 20171213. + * Move the .gox files into the gccgo packages. Addresses: #883136. + * libffi: mips/n32.S: disable .set mips4 on mips r6 (YunQiang Su). + * Fix shlibs search path for mips64 cross targets. Addresses: #883988. + * Set the armel port baseline to armv5te. Closes: #882174. + + -- Matthias Klose Fri, 15 Dec 2017 18:30:46 +0100 + +gcc-8 (8-20171209-1) experimental; urgency=medium + + * GCC 8 snapshot, taken from the trunk 20171209. + * Add more header files for builtins. Closes: #883423. + * Re-enable gccgo on m68k. Addresses: #883794. + + -- Matthias Klose Sat, 09 Dec 2017 21:23:08 +0100 + +gcc-8 (8-20171128-1) experimental; urgency=medium + + * GCC 8 snapshot, taken from the trunk 20171128. + + [ Matthias Klose ] + * Don't revert the fix for PR target/55947, fixed for GCC 8. + * Update libgfortran symbol versioning. + + [ Nicolas Boulenguez ] + * Fix the gnat bootstrap. + + -- Matthias Klose Tue, 28 Nov 2017 07:40:23 +0100 + +gcc-8 (8-20171122-1) experimental; urgency=medium + + [ Matthias Klose ] + * GCC 8 snapshot, taken from the trunk 20171122. + * Update GDC to 20171118. + * Port libgo to the Hurd (Svante Signell). + * Add support for a plethora of mips r6 packages (YunQiang Su). + * Remove the libcilkrts packaging bits. + * Remove libgphobos symbols files. + + [ Svante Signell ] + * Do not enable go on GNU/kFreeBSD. + + -- Matthias Klose Wed, 22 Nov 2017 14:02:35 +0100 + +gcc-8 (8-20171108-1) experimental; urgency=medium + + * GCC 8 snapshot, taken from the trunk 20171108. + * Update GDC to 20171106. Closes: #880548. + * libgcc-dev: Install the liblsan_preinit.o file. + * Compress debug symbols for compiler binaries with dwz. + + -- Matthias Klose Wed, 08 Nov 2017 20:00:30 +0100 + +gcc-8 (8-20171102-1) experimental; urgency=medium + + * GCC 8 snapshot, taken from the trunk 20171102. + * Bump libunwind (build-)dependency for ia64. Addresses: #879959. + * Drop the autogen build dependency. + * Install the gfniintrin.h header file. + * libgcc and libstdc++ symbols files updates for mipsn32. + * Remove the gcc-mips64-stack-spilling patch, applied upstream. + * Update libasan symbols files. + + -- Matthias Klose Thu, 02 Nov 2017 01:43:34 +0100 + +gcc-8 (8-20171031-1) experimental; urgency=medium + + * GCC 8 snapshot, taken from the trunk 20171031. + * Install cetintrin.h header. Closes: #879740. + * Update gnat patches (YunQiang Su). Closes: #879985. + * Build libphobos runtime library on x86 architectures again. + * Fix typo in libx32stdc++6-8-dbg conflicts. Closes: #879883. + + -- Matthias Klose Tue, 31 Oct 2017 02:22:07 +0100 + +gcc-8 (8-20171023-1) experimental; urgency=medium + + * GCC 8 snapshot, taken from the trunk 20171023. + * Mask __float128 from CUDA compilers. LP: #1717257. + * Update the gdc build support. + * Don't use quadmath on powerpc and ppc64. + * Bump asan and ubsan sonames. + * Adjust sanitizer symbols for the libsanitizer upstream merge. + * Install the gcov.h header file. + * Do the extra/optional dance ... + * Override hardening-no-pie lintian warnings for compiler executables. + + -- Matthias Klose Mon, 23 Oct 2017 10:57:54 +0200 + +gcc-8 (8-20171016-1) experimental; urgency=medium + + * GCC 8 snapshot, taken from the trunk 20171016. + * Update nvptx-newlib to 20171010. + * Fix lsan/tsan symbols files for arm64 and ppc64el. + * Add missing conflicts with GCC 7 packages. Closes: #877441. + * Fix builds without hppa64 cross compiler and new debhelper. See: #877589. + * Fix build dependency on realpath. + * Build the nvptx offload compiler again. + * Update symbols files. + * Fix build dependency on realpath. + * Set QUILT_PATCH_OPTS='-E' for applying patches. + + -- Matthias Klose Mon, 16 Oct 2017 14:56:04 +0200 + +gcc-8 (8-20170923-1) experimental; urgency=medium + + * GCC 8 snapshot. + * Disable Ada and D for a first build. + + -- Matthias Klose Tue, 26 Sep 2017 23:44:57 +0200 + +gcc-7 (7.2.0-7) unstable; urgency=medium + + * Update to SVN 20170923 (r253114) from the gcc-7-branch. + - Fix PR libstdc++/79162, PR libstdc++/79162, PR libstdc++/82262, + PR libstdc++/82254, PR target/81996 (PPC), PR target/71951 (AArch64), + PR sanitizer/81929. + * Fix PR go/82284, taken from the trunk. Closes: #876353. + + -- Matthias Klose Sat, 23 Sep 2017 11:31:21 +0200 + +gcc-7 (7.2.0-6) unstable; urgency=medium + + * Update to SVN 20170920 (r253002) from the gcc-7-branch. + - Fix PR target/82112 (PPC), PR c++/81355, PR tree-optimization/82084, + PR tree-optimization/82108, PR target/81325 (PPC), PR c++/81236, + PR c++/80767, PR c++/82030, PR c++/80935, PR c++/81671, PR c++/81525, + PR c++/81314, PR libgfortran/78387. + * Fix fortran cross compiler build with debhelper 10.9. Closes: #876246. + * Strip the compiler binaries again. Closes: #872672. + * Bump binutils dependency to 2.29.1 for sid/buster. + + -- Matthias Klose Wed, 20 Sep 2017 11:13:31 +0200 + +gcc-7 (7.2.0-5) unstable; urgency=medium + + * Update to SVN 20170915 (r252791) from the gcc-7-branch. + - Fix PR c/81687, PR c/45784, PR c++/81852, PR target/82181 (xtensa), + PR target/80695 (PPC), PR target/81988 (SPARC), PR middle-end/81768, + PR sanitizer/81923, PR target/81621, PR driver/81650, + PR middle-end/81052, PR tree-optimization/81987, PR bootstrap/81926, + PR libstdc++/79162, PR libstdc++/81468, PR libstdc++/81835, + PR libstdc++/70483, PR libstdc++/70483, PR target/81833 (PPC), + PR other/39851, PR ipa/81128, PR inline-asm/82001, PR c++/81355, + PR tree-opt/81696. + * Enable libgo tests and rebuilds with make -C (Svante Signell). + Closes: #873929. + * Fix PR sanitizer/77631, support separate debug info in libbacktrace. + * Update the Linaro support to the 7-2017.09 snapshot. + + -- Matthias Klose Fri, 15 Sep 2017 12:15:21 +0200 + +gcc-7 (7.2.0-4) unstable; urgency=medium + + * Update to SVN 20170906 (r251753) from the gcc-7-branch. + - Fix PR c++/82039, PR libstdc++/81912, PR libstdc++/81891, + PR libstdc++/81599, PR libstdc++/81338, PR tree-optimization/81503, + PR ada/79542, PR ada/62235, PR fortran/81770. + * Fix PR target/81833 (PPC), taken from the trunk. Closes: #871565. + + -- Matthias Klose Wed, 06 Sep 2017 10:38:05 +0200 + +gcc-7 (7.2.0-3) unstable; urgency=high + + * Update to SVN 20170901 (r251583) from the gcc-7-branch. + - Fix PR target/81504 (PPC), PR c++/82040. + * Apply proposed patch for PR target/81803 (James Cowgill), conditionally + for mips* targets. Closes: #871514. + * Bump standards version. + + -- Matthias Klose Sat, 02 Sep 2017 13:55:18 +0200 + +gcc-7 (7.2.0-2) unstable; urgency=medium + + * Update to SVN 20170830 (r251446) from the gcc-7-branch. + - Fix PR target/72804 (PPC), PR target/80210 (PPC), PR target/81910 (AVR), + PR target/79883 (AVR), PR fortran/81296, PR fortran/80164, + PR target/81593 (PPC), PR target/81170 (PPC), PR target/81295 (PPC), + PR tree-optimization/81977, PR debug/81993 (closes: #873609), + PR middle-end/81088, PR middle-end/81065, PR sanitizer/80932, + PR middle-end/81884, PR tree-optimization/81181, + PR tree-optimization/81723, PR target/81921 (x86), PR c++/81607. + * Update the Linaro support to the 7-2017.08 snapshot. + * Restore configuring with --with-mode=thumb on armhf. Closes: #873584. + * Default to PIE on powerpc again, now that PR target/81170 and + PR target/81295 are fixed. Closes: #856224. + + -- Matthias Klose Wed, 30 Aug 2017 11:47:42 +0200 + +gcc-7 (7.2.0-1) unstable; urgency=medium + + * GCC 7.2.0 release. + * Update libgcc1 symbols file for s390x. + * Apply proposed patch for PR driver/81829. Closes: #853537. + + -- Matthias Klose Fri, 18 Aug 2017 18:34:45 +0200 + +gcc-7 (7.1.0-13) unstable; urgency=medium + + * GCC 7.2 release candidate 2. + * Don't build the gc enabled libobjc for cross compilers. Closes: #870895. + * Configure cross-build-native builds with --program-prefix (Adrian + Glaubitz). Closes: #871034. + * Update build dependencies for powerpcspe. Closes: #868186. + * Fix PR tree-optimization/81723, taken from the trunk. Closes: #853345. + + -- Matthias Klose Tue, 08 Aug 2017 11:12:56 -0400 + +gcc-7 (7.1.0-12) unstable; urgency=medium + + * GCC 7.2 release candidate 1. + * Update to SVN 20170803 (r250853) from the gcc-7-branch. + + -- Matthias Klose Thu, 03 Aug 2017 09:20:48 -0400 + +gcc-7 (7.1.0-11) unstable; urgency=medium + + * Update to SVN 20170731 (r250749) from the gcc-7-branch. + + [ Matthias Klose ] + * Update sanitizer symbols for ppc64 and sparc64. + + [ Nicolas Boulenguez ] + * Only build gnatvsn as a native library. + + -- Matthias Klose Mon, 24 Jul 2017 13:41:34 +0200 + +gcc-7 (7.1.0-10) unstable; urgency=medium + + * Update to SVN 20170722 (r250453) from the gcc-7-branch. + + [ Nicolas Boulenguez ] + * libgnatvsn: embed xutil rident for version 2017 of asis package. + + [ Matthias Klose ] + * Fix gnat cross build on m68k (Adrian Glaubitz). Closes: #862927. + * Enable gnat cross build on m68k. Closes: #868365. + * Update the Linaro support to the 7-2017.07 snapshot. + * Stop ignoring symbol mismatches for runtime libraries. + + [ Aurelien Jarno ] + * libgo-s390x-default-isa.diff: do not build libgo with -march=z196, + use the default ISA instead. + + -- Matthias Klose Sat, 22 Jul 2017 15:06:36 +0200 + +gcc-7 (7.1.0-9) unstable; urgency=medium + + * Update to SVN 20170705 (r250006) from the gcc-7-branch. + + [ Matthias Klose ] + * gcc-linaro-revert-r49596.diff: fix build for the linaro branch. + * Don't configure powerpc with --enable-default-pie, fails to build. + See #856224, PR target/81295. + + [ Nicolas Boulenguez ] + * ada-gcc-name.diff: unpatch gnatchop. Addresses: #856274. + * Link libgnat with libatomic on armel. Closes: #861734. + * libgnat-dev: use multiarch paths in project and to install .ali files. + * Build Ada on armel, kfreebsd-*, hurd-i386; #86173[457] are closed. + + -- Matthias Klose Wed, 05 Jul 2017 19:21:55 +0200 + +gcc-7 (7.1.0-8) unstable; urgency=medium + + * Update to SVN 20170629 (r249793) from the gcc-7-branch. + + [ Matthias Klose ] + * Move the liblto_plugin from the cpp to the gcc package. + * libstdc++6: Add more Breaks to smoothen upgrades from jessie to stretch. + Addresses: #863845, #863745. + * Don't provide libobjc_gc symlinks for the libobjc multilib packages. + * Configure with --enable-default-pie on ppc64 (Adrian Glaubitz) and + powerpc (Mathieu Malaterre). Addresses: #856224. + + [ Nicolas Boulenguez ] + * Update ada/confirm_debian_bugs.py for gcc-7. + * Drop ada-driver-check.diff, the problem is unreproducible. + * Stop symlinking gcc-7-7 -> gcc-7. See #856274 and #814977. + * gnatmake: compile once even with SOURCE_DATE_EPOCH. Closes: #866029. + + -- Matthias Klose Thu, 29 Jun 2017 17:36:03 +0200 + +gcc-7 (7.1.0-7) unstable; urgency=medium + + * Update to SVN 20170618 (r249347) from the gcc-7-branch. + + [ Matthias Klose ] + * Don't build libada with -O3 (ftbfs on ppc64el). + * Update sanitizer symbol files (Helmut Grohne). Closes: #864835. + + [ Aurelien Jarno ] + * Remove proposed patch for PR65618, the issue has been fixed upstream + another way. + + [ Nicolas Boulenguez ] + * Ada: link system.ads to system-freebsd.ads on hurd and *freebsd + system-freebsd-x86.ads does not exist anymore. Closes: #861735, #861737. + * Ada: prevent parallel gnatmake invokations for gnattools. Closes: #857831. + * Drop generated and obsolete debian/source.lintian-overrides. + * Drop debian/relink, never executed and redundant with ada patches. + * Ada: Drop dpkg-buildflags usage in patches. Closes: #863289. + * ada: Drop references to obsolete termio-h.diff. Closes: #845159. + * ada-749574.diff: replace work-around with fix and forward it. + * ada-kfreebsd.diff: reduce a lot thanks to Ada2012 syntax. + * ada-link-lib.diff: remove dubious parts. + + -- Matthias Klose Sun, 18 Jun 2017 15:31:39 +0200 + +gcc-7 (7.1.0-6) experimental; urgency=medium + + * Update to SVN 20170522 (r248347) from the gcc-7-branch. + - Fix PR libstdc++/80796, PR libstdc++/80478, PR libstdc++/80761, + PR target/80799 (x86), PR ada/80784, PR fortran/78659, PR fortran/80752, + PR libgfortran/80727. + + [ Matthias Klose ] + * Re-add unwind support on kfreebsd-amd64 (James Clarke). + * Work around #814977 (gnat calling gcc-7-7) by providing a gcc-7-7 + symlink. + * Fix gnat build dependencies on x32. + * Build gnat on mips64 and powerpcspe. + * Update the Linaro support to the 7-2017.05 snapshot. + * Fix libmpx dependency generation for cross builds. + * Build again gnat cross compilers on 32bit archs targeting 64bit targets. + + [ Nicolas Boulenguez ] + * Remove ada-gnattools-noparallel patch, apparently fixed. Closes: #857831. + * Reduce diff with upstream in ada-gnattools-cross patch. + * debian/rules2: Simplify build flags transmission. + * Append build flags from dpkg during Ada target builds. + + -- Matthias Klose Mon, 22 May 2017 12:43:09 -0700 + +gcc-7 (7.1.0-5) experimental; urgency=medium + + * Update to SVN 20170514 (r248033) from the gcc-7-branch. + * Disable offload compilers for snapshot builds. + * Build libgo when not building common libs. + * Fix building libgfortran and libgphobos when building without common libs. + * Build gnat on x32. + + -- Matthias Klose Sun, 14 May 2017 08:50:34 -0700 + +gcc-7 (7.1.0-4) experimental; urgency=medium + + * Update to SVN 20170505 (r247630) from the gcc-7-branch. + * Add sh3 support to gcc-multiarch patch. Closes: #861760. + * Remove libquadmath/gdtoa license from debian/copyright (files removed). + * Fix gdc build on sh4 (sh5 support was removed upstream). + * Disable gnat on KFreeBSD (see #861737) and the Hurd (see #861735) for now. + * Disable running the testsuite on KFreeBSD and the Hurd, hanging on + the buildds. + + -- Matthias Klose Fri, 05 May 2017 11:27:27 +0200 + +gcc-7 (7.1.0-3) experimental; urgency=medium + + * Update to SVN 20170503 (r247549) from the gcc-7-branch. + * Fix gdc build on sparc. + * Update the gdc-cross-install-location patch for GCC 7. + * Bump libgphobos soname. + * dpkg-buildflags stopped fiddling around with spec files; remove + the code removing and warning about dpkg's specs. + * Don't build the native gnat on armel. See issue #861734. + + -- Matthias Klose Wed, 03 May 2017 16:51:15 +0200 + +gcc-7 (7.1.0-2) experimental; urgency=medium + + * Update the disable-gdc-tests patch for GCC 7.1. + + -- Matthias Klose Tue, 02 May 2017 18:35:14 +0200 + +gcc-7 (7.1.0-1) experimental; urgency=medium + + * GCC 7.1.0 release. + * Update NEWS.html and NEWS.gcc. + * Update gdc to the gdc-7 branch 20170502. + * Add multiarch bits for non-glibc architectures (musl, uclibc) (Helmut + Grohne). Closes: #861588. + * Fix dependency on gcc-base package for rtlibs stage build (Helmut Grohne). + Closes: #859938. + + -- Matthias Klose Tue, 02 May 2017 18:07:07 +0200 + +gcc-7 (7-20170407-1) experimental; urgency=medium + + * GCC 7 snapshot build, taken from the trunk 20170407. + * Install gcov-dump and gcov-tool manual pages. + + -- Matthias Klose Fri, 07 Apr 2017 13:16:00 +0200 + +gcc-7 (7-20170316-1) experimental; urgency=medium + + * GCC 7 snapshot build, taken from the trunk 20170316. + * Install the gcov-dump utility. + * Allow to use lld with -fuse-ld=ld.lld. + * Build gnattools sequentially (fails with parallel build). See #857831. + * Add profile to the autogen build dependency. + * Re-add the generated Makefile.in changes to the gdc-libphobos-build patch. + + -- Matthias Klose Thu, 16 Mar 2017 12:34:18 +0100 + +gcc-7 (7-20170314-1) experimental; urgency=medium + + * GCC 7 snapshot build, taken from the trunk 20170314. + + [ Matthias Klose ] + * Bump binutils version requirement to 2.28. + * Fix libcc1.so symlink for cross compilers. Addresses: #856875. + * Fix base package name for rtlibs stage build (Helmut Grohne). + Closes: #857074. + * Update the cross-install-location patch (Helmut Grohne). Closes: #855565. + * Fix symlinks to man pages in the hppa64 package. Addresses: #857583. + * Don't ship the gnatgcc manpage symlink when building GFDL packages. + Addresses: #857384. + * Allow bootstrapping with libc headers installed in multiarch location. + (Helmut Grohne). Closes: #857535 + * gccbrig: Depend on hsail-tools. + + [ Nicolas Boulenguez ] + * Create the libgnatsvn packages again. Closes: #857606. + * Replace libgnat-BV.overrides with a fixed command. + * Install gnatvsn.gpr project into /u/s/gpr instead of + /u/s/ada/adainclude. Debian is migrating to GPRbuild's upstream layout. + * Avoid hardcoding the version in the ada-gcc-name patch. + * Reorganize Ada patches. See #857606 for details. + + -- Matthias Klose Tue, 14 Mar 2017 10:42:24 +0100 + +gcc-7 (7-20170302-1) experimental; urgency=medium + + * GCC 7 snapshot build, taken from the trunk 20170302. + + [ Matthias Klose ] + * Update gdc to trunk 20170227. + * Update libcc1 symbols file. + * Bump binutils version requirement. + * Allow to disable brig in DEB_BUILD_OPTIONS. Closes: #856452. + * Build the nvptx offload compilers. + * Add the newlib copyright, used for the gcc-7-offload-nvptx package. + * Install the libcp1plugin. + * Fix the installation directory of the ada-sjlj includes and libraries. + + [ Nicolas Boulenguez ] + * Use SOURCE_DATE_EPOCH for reproducible ALI timestamps. Closes: #856042. + * Remove obsolete references to libgnatprj, but keep existing + references to libgnatvsn as it will be restored. Closes: #844367. + * Drop obsolete and unapplied ada-default-project-path.diff. + + -- Matthias Klose Thu, 02 Mar 2017 10:12:34 +0100 + +gcc-7 (7-20170226-1) experimental; urgency=medium + + * GCC 7 snapshot build, taken from the trunk 20170226. + + -- Matthias Klose Sun, 26 Feb 2017 17:00:48 +0100 + +gcc-7 (7-20170221-1) experimental; urgency=medium + + * GCC 7 snapshot build, taken from the trunk 20170221. + * Update gdc to trunk 20170221. + + [ Matthias Klose ] + * Fix some hppa64 related build issues. Addresses: #853023. + * Allow setting offload targets by OFFLOAD_TARGET_DEFAULT. + * Again, disable go on m68k. Closes: #853906. + * Configure with --enable-default-pie on sparc and sparc64 (James Clarke). + Addresses: #854090. + * Configure with --enable-default-pie on kfreebsd-* (Steven Chamberlain). + * Build gccbrig and the libhsail-rt library for i386. + * Configure staged builds with --disable-libmpx and --disable-libhsail-rt. + * Fix target architecture for sparc non-multilib builds (Adrian Glaubitz). + Addresses: #855197. + * Bump binutils version requirement. + + [ Aurelien Jarno ] + * Disable lxc1/sxc1 instruction on mips and mipsel. + * Disable madd4 instructions on mipsel, mips64el and mipsn32el. + + -- Matthias Klose Tue, 21 Feb 2017 14:54:12 +0100 + +gcc-7 (7-20170129-1) experimental; urgency=medium + + * GCC 7 snapshot build, taken from the trunk 20170129. + * Fix removing the RUNPATH from the asan, tsan, ubsan, cilkrts, gfortran + and gphobos runtime libraries. + * Let the gnatgcc symlinks point to the versioned names. Addresses: #839209. + * Build the BRIG frontend on amd64. + * Install new intrinsics headers. Closes: #852551. + * libgo version bumped to 11. + * Package gccbrig and the libhsail-rt library. + + -- Matthias Klose Sun, 29 Jan 2017 13:51:35 +0100 + +gcc-7 (7-20170121-1) experimental; urgency=medium + + * GCC 7 snapshot build, taken from the trunk 20170121. + * Configure --with-gcc-major-version-only, drop the gcc-base-version, + gccgo-version and gdc-base-version patches. + * Adjust the g++-multiarch-incdir patch for reverted upstream patch, + causing bootstrap regression (PR 78880). Closes: #852104. + + -- Matthias Klose Sat, 21 Jan 2017 21:57:22 +0100 + +gcc-7 (7-20170118-1) experimental; urgency=medium + + * GCC 7 snapshot build, taken from the trunk 20170118. + * Always configure sparc builds --with-cpu-32=ultrasparc (James Clarke). + * Enable gccgo on m68k (John Paul Adrian Glaubitz). Addresses: #850749. + * Install the unprefixed man pages for gcc-ar, -nm and ranlib. + Closes: #851698. + + -- Matthias Klose Wed, 18 Jan 2017 22:41:11 +0100 + +gcc-7 (7-20161230-1) experimental; urgency=medium + + * GCC 7 snapshot build, taken from the trunk 20161230. + * Update gdc to trunk 20161229. Closes: #844704. + * Build the cilk runtime on armel, armhf, sparc and sparc64. + * Use --push-state/--pop-state for gold as well when linking libtsan. + * In GCC ICE dumps, prefix each line with the PID of the driver. + * Apply proposed patch for PR target/78748. + * Apply proposed patch for PR libstdc++/64735. + * Don't mark libphobos multilib packages as M-A: same. + * Configure libphobos builds with --with-target-system-zlib. + * Ignore dpkg's pie specs when pie is not enabled. Addresses: #848129. + * Drop m68k specific ada patches. Closes: #846872. + + -- Matthias Klose Fri, 30 Dec 2016 05:19:15 +0100 + +gcc-7 (7-20161201-1) experimental; urgency=medium + + * GCC 7 snapshot build, taken from the trunk 20161201. + + * Install missing vecintrin.h header on s390x. + * Install missing avx512 intrinsics headers on x86*. Closes: #846075. + + -- Matthias Klose Thu, 01 Dec 2016 14:38:26 +0100 + +gcc-7 (7-20161125-1) experimental; urgency=medium + + * GCC 7 snapshot build, taken from the trunk 20161125. + + [ Matthias Klose ] + * Update libgphobos symbol files. + * libphobos: Fix ARM32 multilib detection for system zlib. + * Update libgphobos symbols files for ARM32 targets. + * Build the GC enabled libobjc using the system libgc when available + * Mark libgphobos symbols changing with the file location (sic!) as optional. + * Add pkg-config to the build dependencies. + * Drop the work around for PR libstdc++/65913. + * gdc: Link with the shared libgphobos runtime by default. + * Fix PR middle-end/78501, proposed patch. + * Fix dependency generation for libgphobos multilib builds. + * Drop the ada-revert-pr63225 patch, only needed for libgnatvsn. + * Always apply the ada patches. + + [ YunQiang Su ] + * Update gnat patches for GCC 7, stop building libgnatvsn and libgnatprj. + Addresses: #844367. + + -- Matthias Klose Fri, 25 Nov 2016 12:41:07 +0100 + +gcc-7 (7-20161116-1) experimental; urgency=medium + + * GCC 7 snapshot build, taken from the trunk 20161116. + * Build shared phobos runtime libraries (not yet enabled by default). + * Add symbols for libobjc_gc library. + + -- Matthias Klose Wed, 16 Nov 2016 19:16:39 +0100 + +gcc-7 (7-20161115-1) experimental; urgency=medium + + * GCC 7 snapshot build, taken from the trunk 20161115. + * More symbol files updates. + * Update gdc to the trunk 20161113. + * Update conflicts with GCC 6 packages. Closes: #844296. + + -- Matthias Klose Tue, 15 Nov 2016 13:02:02 +0100 + +gcc-7 (7-20161112-1) experimental; urgency=medium + + * GCC 7 snapshot build, taken from the trunk 20161112. + * Remove gij/gcj packages, removed upstream. + * Don't build gdc and gnat for now. + + -- Matthias Klose Sat, 12 Nov 2016 11:17:17 +0100 + +gcc-6 (6.2.0-13) unstable; urgency=medium + + * Update to SVN 20161109 (r241998, 6.2.1) from the gcc-6-branch. + - Fix PR c/71115, PR target/78229 (closes: #843379), + PR tree-optimization/77768, PR c++/78039 (closes: #841316), + PR libgcc/78064, PR driver/78206. + * Fix using the gcc-6-source package (Stephen Kitt). Closes: #843476. + * Fix PR target/77822 (AArch64), taken from the trunk. Closes: #839249. + * Fix PR target/77822 (s390x), proposed patch. + * Update libiberty to the trunk 20161108. Addresses security issues: + CVE-2016-6131, CVE-2016-4493, CVE-2016-4492, CVE-2016-4490, + CVE-2016-4489, CVE-2016-4488, CVE-2016-4487, CVE-2016-2226. + + -- Matthias Klose Wed, 09 Nov 2016 20:42:53 +0100 + +gcc-6 (6.2.0-11) unstable; urgency=medium + + * Update to SVN 20161103 (r241817, 6.2.1) from the gcc-6-branch. + - Fix PR debug/77773, PR middle-end/72747, PR tree-optimization/78047, + PR tree-optimization/77879, PR tree-optimization/77839, + PR tree-optimization/77745, PR tree-optimization/77648, + PR target/78166 (PA), PR rtl-optimization/78038, PR middle-end/78128, + PR middle-end/71002, PR fortran/69544, PR fortran/78178, + PR fortran/71902, PR fortran/67219, PR fortran/71891, PR lto/78129, + PR libgfortran/78123. + * Fix symlinks for gcj manual pages. Closes: #842407. + * Fix ICE in tree_to_shwi, Linaro issue #2575. + + -- Matthias Klose Thu, 03 Nov 2016 14:10:24 +0100 + +gcc-6 (6.2.0-10) unstable; urgency=medium + + * Update to SVN 20161027 (r241619, 6.2.1) from the gcc-6-branch. + - Fix PR libstdc++/77288, PR libstdc++/77727, PR libstdc++/78052, + PR tree-optimization/77550, PR tree-optimization/77916, + PR fortran/71895, PR fortran/77763, PR fortran/61420, PR fortran/78013, + PR fortran/78021, PR fortran/72832, PR fortran/78092, PR fortran/78108, + PR target/78057 (x86), PR target/78037 (x86). + * Include go-relocation-test-gcc620-sparc64.obj.uue to fix libgo's + debug/elf TestDWARFRelocations test case (James Clarke). + * Reapply fix for PR c++/71912, apply proposed fix for PR c++/78039. + Closes: #841292. + * Don't install alternatives for go and gofmt. The preferred way to do that + is to install the golang-any package. + * For Debian builds, don't enable bind now by default when linking with pie + by default. + + -- Matthias Klose Thu, 27 Oct 2016 15:27:07 +0200 + +gcc-6 (6.2.0-9) unstable; urgency=medium + + * Regenerate the control file. + + -- Matthias Klose Thu, 20 Oct 2016 10:46:44 +0200 + +gcc-6 (6.2.0-8) unstable; urgency=medium + + * Update to SVN 20161019 (r241346, 6.2.1) from the gcc-6-branch. + - Fix PR libstdc++/77990, PR target/77991 (x86). + * Install arm_fp16.h header on arm* architectures for Linaro builds. + * Backport upstream revisions from trunk (James Clarke). Closes: #840574. + - r240457 (add getrandom for MIPS/SPARC) + - r241051 (fix getrandom on sparc64 and clone on sparc*) + - r241072 (make rawClone no_split_stack) + - r241084 (don't use pt_regs; unnecessary, and seemingly not defined by + the included headers on arm64) + - r241171 (sparc64 relocations, e1fc2925 in go master, now also in + gofrontend/gccgo) + * Revert fix for PR c++/71912, causing PR c++/78039. Addresses: #841292. + + -- Matthias Klose Wed, 19 Oct 2016 08:57:23 +0200 + +gcc-6 (6.2.0-7) unstable; urgency=medium + + * Update to SVN 20161018 (r241301, 6.2.1) from the gcc-6-branch. + - Fix PR libstdc++/77987, PR libstdc++/77322, PR libstdc++/72820, + PR libstdc++/77994, PR tree-optimization/77937, PR c++/71912, + PR tree-optimization/77937, PR tree-optimization/77943, + PR bootstrap/77995, PR fortran/77978, PR fortran/77915, PR fortran/77942. + + [ Matthias Klose ] + * Backport Mips go closure support, taken from libffi. Closes: #839132. + * Configure with --enable-default-pie and pass -z now when pie is enabled; + on amd64 arm64 armel armhf i386 mips mipsel mips64el ppc64el s390x. + Closes: #835148. + * Update the Linaro support to the 6-2016.10 snapshot. + + [ Aurelien Jarno ] + * Enable logwatch on mips64el. + + -- Matthias Klose Tue, 18 Oct 2016 13:53:00 +0200 + +gcc-6 (6.2.0-6) unstable; urgency=medium + + * Update to SVN 20161010 (r240906, 6.2.1) from the gcc-6-branch. + - Fix PR libstdc++/68323, PR libstdc++/77794, PR libstdc++/77795, + PR libstdc++/77801, PR libgcc/77519, PR target/77756 (x86), + PR target/77670 (PPC), PR rtl-optimization/71709, PR c++/77804, + PR fortran/41922, PR fortran/60774, PR fortran/61318, PR fortran/68566, + PR fortran/69514, PR fortran/69867, PR fortran/69962, PR fortran/70006, + PR fortran/71067, PR fortran/71730, PR fortran/71799, PR fortran/71859, + PR fortran/71862, PR fortran/77260, PR fortran/77351, PR fortran/77372, + PR fortran/77380, PR fortran/77391, PR fortran/77420, PR fortran/77429, + PR fortran/77460, PR fortran/77506, PR fortran/77507, PR fortran/77612, + PR fortran/77694, PR libgfortran/77707, PR libstdc++/70101, + PR libstdc++/77864, PR libstdc++/70564, PR target/77874 (x86), + PR target/77759 (sparc), PR fortran/77406, PR fortran/58991, + PR fortran/58992. + * Really fix gij installation on hppa. Closes: #838111. + * Install alternatives for go and gofmt. Closes: #840190. + + -- Matthias Klose Mon, 10 Oct 2016 05:20:07 +0200 + +gcc-6 (6.2.0-5) unstable; urgency=medium + + * Update to SVN 20160927 (r240553, 6.2.1) from the gcc-6-branch. + - Fix PR sanitizer/77396, PR libstdc++/77645, PR libstdc++/77645, + PR target/77326 (AVR), PR target/77349 (PPC), PR middle-end/77594, + PR sanitizer/68260, PR fortran/77516, PR target/69255 (x86), + PR c++/77553, PR c++/77539, PR fortran/77500, PR c/77450, + PR middle-end/77436, PR tree-optimization/77514, PR middle-end/77544, + PR tree-optimization/77514, PR middle-end/77605, PR middle-end/77679, + PR tree-optimization/77621, PR target/77621 (x86), PR c++/71979. + * Fix gij installation on hppa. Closes: #838111. + * Fix PR rtl-optimization/71709, taken from the trunk. LP: #1628207. + * Apply workaround for PR libstdc++/77686. Addresses: #838438. + + -- Matthias Klose Wed, 28 Sep 2016 15:53:28 +0200 + +gcc-6 (6.2.0-4) unstable; urgency=medium + + * Update to SVN 20160914 (r240133, 6.2.1) from the gcc-6-branch. + - Fix PR rtl-optimization/77452, PR c++/77427. + * gcj: Depend on the ecj1 standalone binary. + * Configure native builds using --with-program-prefix. + * Fix ICE in gdc symbol mangling (Iain Buclaw). LP: #1620681. + * Backport from libffi trunk (Stefan Bühler): + - Always check for PaX MPROTECT on linux, make EMUTRAMP experimental. + - dlmmap_locked always needs locking as it always modifies execsize. + + -- Matthias Klose Thu, 15 Sep 2016 19:22:35 +0200 + +gcc-6 (6.2.0-3) unstable; urgency=medium + + * Update to SVN 20160901 (r239944, 6.2.1) from the gcc-6-branch. + - Fix PR fortran/71014, PR libstdc++/77395, PR tree-optimization/72866, + PR debug/77363, PR middle-end/77377, PR middle-end/77259, + PR target/71910 (cygwin), PR target/77281 (ARM), + PR tree-optimization/71077, PR tree-optimization/68542, PR fortran/77352, + PR fortran/77374, PR fortran/71014, PR fortran/69281. + * Fix setting the stage1 C++ compiler. + * gdc: Always link with -ldl when linking with -lgphobos. + Closes: #835255, #835757. + * Fix building D code with external C++ references. + + -- Matthias Klose Sun, 04 Sep 2016 12:38:47 +0200 + +gcc-6 (6.2.0-2) unstable; urgency=medium + + * Update to SVN 20160830 (r239868, 6.2.1) from the gcc-6-branch. + - Fix PR libstdc++/77334, PR tree-optimization/76783, + PR tree-optimization/72851, PR target/72867 (x86), PR middle-end/71700, + PR target/77403 (x86), PR target/77270 (x86), PR target/77270 (x86), + PR lto/70955, PR target/72863 (PPC), PR tree-optimization/76490, + PR fortran/77358. + * Call default_file_start from s390_asm_file_start, taken from the trunk. + * Update multiarch patches for mips* r6 (YunQiang Su). + * Fix install location of D header files for cross builds (YunQiang Su). + Closes: #835847. + * Fix PR c++/77379, taken from the trunk. + * Update the Linaro support to the 6-2016.08 snapshot. + + -- Matthias Klose Wed, 31 Aug 2016 12:28:38 +0200 + +gcc-6 (6.2.0-1) unstable; urgency=medium + + * GCC 6.2 release. + * Update gdc to the gdc-6 branch 20160822. + + -- Matthias Klose Mon, 22 Aug 2016 14:15:21 +0200 + +gcc-6 (6.1.1-12) unstable; urgency=medium + + * GCC 6.2 release candidate 1. + * Update to SVN 20160815 (r239482, 6.1.1) from the gcc-6-branch. + Fix PR target/71869 (PPC), PR target/72805 (x86), PR target/70677 (AVR), + PR c++/72415, PR sanitizer/71042, PR libstdc++/71964, PR libstdc++/70940, + PR c/67410, PR c/72816, PR driver/72765, PR debug/71906, + PR tree-optimization/73434, PR tree-optimization/72824, PR target/76342, + PR target/72843, PR c/71512, PR tree-optimization/71083, PR target/72819, + PR target/72853, PR tree-optimization/72824, PR ipa/71981, PR ipa/68273, + PR tree-optimization/71881, PR target/72802, PR target/72802, + PR rtl-optimization/71976, PR c++/71972, PR c++/72868, PR c++/73456, + PR c++/72800, PR c++/68724, PR debug/71906, PR fortran/71936, + PR fortran/72698, PR fortran/70524, PR fortran/71795, PR libgfortran/71123, + PR libgfortran/73142. + + [ Matthias Klose ] + * Fix running the libjava testsuite. + * Revert fix for PR target/55947, causing PR libstdc++/72813. LP: #1610220. + * Update the Linaro support to the 6-2016.07 snapshot. + + [ Aurelien Jarno ] + * Replace proposed fix for PR ipa/68273 by the corresponding patch taken + from trunk. + + -- Matthias Klose Mon, 15 Aug 2016 17:51:10 +0200 + +gcc-6 (6.1.1-11) unstable; urgency=medium + + * Update to SVN 20160802 (r238981, 6.1.1) from the gcc-6-branch. + - Fix PR target/72767 (AVR), PR target/71151 (AVR), PR c/7652, + PR target/71216 (PPC), PR target/72103 (PPC), PR c++/72457, PR c++/71576, + PR c++/71833, PR fortran/71883. + + [ Nicolas Boulenguez ] + * debian/ada/confirm_debian_bugs.py: Update for GCC 6. Closes: #832799. + + [ Matthias Klose ] + * Backport AArch64 Vulcan cost models (Dann Frazier). LP: #1603587. + + -- Matthias Klose Wed, 03 Aug 2016 21:53:37 +0200 + +gcc-6 (6.1.1-10) unstable; urgency=medium + + * Update to SVN 20160724 (r238695, 6.1.1) from the gcc-6-branch. + - Fix PR libstdc++/71856, PR libstdc++/71320, PR c++/71214, + PR sanitizer/71953, PR fortran/71688, PR rtl-optimization/71916, + PR debug/71855, PR middle-end/71874, PR target/71493 (PPC), + PR rtl-optimization/71634, PR target/71733 (PPC), PR ipa/71624, + PR target/71805 (PPC), PR target/70098 (PPC), PR target/71763 (PPC), + PR middle-end/71758, PR tree-optimization/71823, PR middle-end/71606, + PR tree-optimization/71518, PR target/71806 (PPC), PR target/71720 (PPC), + PR middle-end/64516, PR tree-optimization/71264, PR middle-end/71423, + PR tree-optimization/71521, PR tree-optimization/71452, PR target/50739, + PR tree-optimization/71522, PR c++/55922, PR c++/63151, PR c++/70709, + PR c++/70778, PR c++/71738, PR c++/71350, PR c++/71748, PR c++/52746, + PR c++/69223, PR c++/71630, PR c++/71913, PR c++/71728, PR c++/71941, + PR c++/70822, PR c++/70106, PR c++/67565, PR c++/67579, PR c++/71843, + PR c++/70781, PR c++/71896, PR c++/71092, PR c++/71117, PR c++/71495, + PR c++/71511, PR c++/71513, PR c++/71604, PR c++/54430, PR c++/71711, + PR c++/71814, PR c++/71718, PR c++/70824, PR c++/71909, PR c++/71835, + PR c++/71828, PR c++/71822, PR c++/71871, PR c++/70869, PR c++/71054, + PR fortran/71807, PR fortran/70842, PR fortran/71764, PR fortran/71623, + PR fortran/71783. + + [ Matthias Klose ] + * Build-depend on gnat-6 instead of gnat-5 on development distros. + + [ Aurelien Jarno ] + * Replace libjava-mips64el-proposed.diff by the corresponding patch + taken from trunk. + + -- Matthias Klose Sun, 24 Jul 2016 19:42:10 +0200 + +gcc-6 (6.1.1-9) unstable; urgency=medium + + * Update to SVN 20160705 (r237999, 6.1.1) from the gcc-6-branch. + - Fix PR fortran/71717, PR libstdc++/71313, PR c/71685, PR c++/71739, + PR target/71670 (PPC), PR middle-end/71626, PR target/71559 (x86), + PR target/71656 (PPC), PR target/71698 (PPC), PR driver/71651, + PR fortran/71687, PR fortran/71704, PR fortran/71705. + * Mark cross compilers as M-A: foreign. Addresses: #827136. + * On sparc64, configure with --with-cpu-32=ultrasparc, drop the + sparc-force-cpu patch. Closes: #809509. + + -- Matthias Klose Tue, 05 Jul 2016 11:19:50 +0200 + +gcc-6 (6.1.1-8) unstable; urgency=medium + + * Update to SVN 20160630 (r237878, 6.1.1) from the gcc-6-branch. + - Fix PR tree-optimization/71647, PR target/30417 (AVR), + PR target/71103 (AVR), PR tree-optimization/71588, PR middle-end/71581, + PR c++/71528, PR fortran/70673, PR middle-end/71693. + + [ Aurelien Jarno ] + * Apply proposed patch from Matthew Fortune to fix libjava on mips64el. + + [ Matthias Klose ] + * Add AArch64 Vulcan cpu support (Dann Frazier). LP: #1594452. + * gfortran: Suggest libcoarrays-dev. Closes: #827995. + * cpp: Breaks libmagics++-dev (<< 2.28.0-4). Closes: #825278. + * Optimize for mips32r2 for o32 (YunQiang Su). Closes: #827801. + + -- Matthias Klose Thu, 30 Jun 2016 14:12:55 +0200 + +gcc-6 (6.1.1-7) unstable; urgency=medium + + * Update to SVN 20160620 (r237590, 6.1.1) from the gcc-6-branch. + - Fix PR middle-end/71373, PR c/71381, PR libstdc++/71545, PR c/68657, + PR sanitizer/71498, PR middle-end/71529, PR target/71103 (AVR), + PR target/71554 (x86), PR middle-end/71494, PR c++/71448, + PR tree-optimization/71405, PR tree-optimization/71505, + PR target/71379 (s390), PR target/71186 (PPC), PR target/70915 (PPC), + PR c++/70572, PR c++/71516, PR c/71381. + * Fix libgnatprj build to avoid undefined symbols (YunQiang Su). + Closes: #826503. + * Add build support for tilegx (Helmut Grohne). Closes: #827578. + * Drop support for loongson 2f (YunQiang Su). Closes: #827554. + + -- Matthias Klose Mon, 20 Jun 2016 13:41:44 +0200 + +gcc-6 (6.1.1-6) unstable; urgency=medium + + * Update to SVN 20160609 (r237267, 6.1.1) from the gcc-6-branch. + - Fix PR target/71389 (x86), PR tree-optimization/71259, + PR target/70830 (ARM), PR target/67310 (x86), PR c++/71442, + PR c++/70847, PR c++/71330, PR c++/71393, PR fortran/69659. + * gdc: Fix linking the runtime library. Addresses: #826645. + * Fix building libgnatprj on powerpc, and on PIE enabled builds (YunQiang Su). + Closes: #826365. + + -- Matthias Klose Thu, 09 Jun 2016 18:19:42 +0200 + +gcc-6 (6.1.1-5) unstable; urgency=medium + + * Update to SVN 20160603 (r237075, 6.1.1) from the gcc-6-branch. + - Fix PR libstdc++/70762, PR libstdc++/69703, PR libstdc++/69703, + PR libstdc++/71038, PR libstdc++/71036, PR libstdc++/71037, + PR libstdc++/71005, PR libstdc++/71004, PR libstdc++/70609, PR c/71171, + PR middle-end/71279, PR c++/71147, PR c++/71257, + PR tree-optimization/70884, PR c++/71210, PR tree-optimization/71031, + PR c++/69872, PR c++/71257, PR c++/70344, PR c++/71184, PR fortran/66461, + PR fortran/71204, PR libffi/65567, PR c++/71349, PR target/71201, + PR middle-end/71371, PR debug/71057, PR target/71056 (ARM32), + PR tree-optimization/69068, PR middle-end/71002, PR bootstrap/71071, + PR c++/71372, PR c++/70972, PR c++/71166, PR c++/71227, PR c++/60095, + PR c++/69515, PR c++/69009, PR c++/71173, PR c++/70522, PR c++/70584, + PR c++/70735, PR c++/71306, PR c++/71349, PR c++/71105, PR c++/71147, + PR ada/71358, PR ada/71317, PR fortran/71156, PR middle-end/71387. + * Fix cross building libgnatprj on i386 targeting 64bit archs (YunQiang Su). + Closes: #823126. + * Detect hard float for non-linux or non-glibc arm-*-*eabihf builds (Helmut + Grohne). Closes: #823894. + * Update embedded timestamp setting patch, backported from the trunk. + * gccgo: Combine combine gccgo's ld() and ldShared() methods + in cmd/go (Michael Hudson-Doyle). LP: #1586872. + + -- Matthias Klose Fri, 03 Jun 2016 18:58:40 +0200 + +gcc-6 (6.1.1-4) unstable; urgency=medium + + * Update to SVN 20160519 (r236478, 6.1.1) from the gcc-6-branch. + - Fix PR sanitizer/71160, PR c++/70498, PR target/71161 (x86), + PR fortran/70856, PR c++/71100, PR target/71145 (alpha), PR c++/70466, + PR target/70860 (nvptx), PR target/70809 (AArch64), PR hsa/70857, + PR driver/68463, PR target/70947 (PPC), PR ipa/70760, PR middle-end/70931, + PR middle-end/70941, PR tree-optimization/71006, PR target/70830 (ARM), + PR fortran/69603, PR fortran/71047, PR fortran/56226, PR ipa/70646. + * libgnat{prj,svn}-dev: Don't recommend gnat when building cross compiler + packages. + + -- Matthias Klose Thu, 19 May 2016 18:40:49 +0200 + +gcc-6 (6.1.1-3) unstable; urgency=medium + + * Update to SVN 20160511 (r236071, 6.1.1) from the gcc-6-branch. + - Fix PR libstdc++/71049, PR middle-end/70877, PR tree-optimization/70876, + PR target/70963, PR tree-optimization/70916, PR debug/70935. + * Enable gdc for sh4. + + -- Matthias Klose Wed, 11 May 2016 22:35:33 +0200 + +gcc-6 (6.1.1-2) unstable; urgency=medium + + * Update to SVN 20160510 (r236071, 6.1.1) from the gcc-6-branch. + - Fix PR tree-optimization/70956, PR sanitizer/70875, PR sanitizer/70342, + PR ada/70969, PR ada/70900. + + [ Matthias Klose ] + * Call dh_makeshlibs with the --noscripts option when building a + cross compiler. + * Fix building cross gnat libs when not building the common libs. + * Fix building cross mips* multilibs when not building the common libs. + * Re-enable gnat build on some architectures for snapshot builds. + * Don't build gnat cross compilers on 32bit archs targeting 64bit targets. + Addresses: #823126. + * Avoid empty architecture lists in build dependencies. Closes: #823280. + * Tighten debhelper build dependency for cross build dependencies. + * Allow build dependencies for musl configurations (Helmut Grohne). + Closes: #823769. + * Fix dependency resolution for libraries not built anymore from + this source package. + + [ Samuel Thibault ] + * patches/ada-hurd.diff: Fix Get_Page_Size type. + + -- Matthias Klose Tue, 10 May 2016 13:34:49 +0200 + +gcc-6 (6.1.1-1) unstable; urgency=medium + + * GCC 6.1.0 release. + - Fix PR bootstrap/70704, PR tree-optimization/70780, PR libgfortran/70684, + PR middle-end/70626, PR java/70839, PR target/70858, PR ada/70759, + PR ada/70786, PR c++/70540, PR middle-end/70626. + * Update to SVN 20160430 (r235678, 6.1.1) from the gcc-6-branch. + - Fix PR middle-end/70680, PR target/70750 (x86), PR ipa/70785, + PR sanitizer/70712, PR target/70728 (x86). + - Don't encode the minor version in the gcj abi version. + + [ Aurelien Jarno ] + * Apply proposed patch for PR target/68273 (Wrong code on mips/mipsel due to + (invalid?) peeking at alignments in function_arg) on mips and mipsel. + + [ Matthias Klose ] + * Always configure with --enable-targets=powerpcle-linux on ppc64el. + * Stop building libcc1 and libgccjit0, when not building common libs. + * Rename libgccjit-5-dbg to libgccjit0-dbg. + * Fix libjava testsuite with dejagnu 1.6, taken from the trunk. + * Allow embedded timestamps by C/C++ macros to be set externally (Eduard + Sanou). + * Add missing libstdc++ symbol to symbols file. + * libstdc++-doc: Ignore warnings about formulas and long identifiers in + man pages. + * Default the 32bit x86 architectures to i686, keep i585 symlinks. + See https://lists.debian.org/debian-devel/2015/09/msg00589.html + * Build-depend on debhelper (>= 9) and dpkg-dev (>= 1.17.14). + * Update gdc to the gdc-6 branch 20160430. + + -- Matthias Klose Sat, 30 Apr 2016 13:31:12 +0200 + +gcc-6 (6.0.1-2) unstable; urgency=medium + + * GCC 6.1 release candidate 2. + - Fix PR c++/68206, PR c++/70522, PR middle-end/70747, PR target/64971, + PR c++/66543, PR tree-optimization/70725, PR tree-optimization/70726, + PR target/70674 (s390x), PR tree-optimization/70724, PR c++/70690, + PR c++/70505, PR target/70711 (ARM32), PR c++/70685, + PR target/70662 (x86). + * Update gdc to the trunk 20160423. + + -- Matthias Klose Sat, 23 Apr 2016 17:56:52 +0200 + +gcc-6 (6.0.1-1) experimental; urgency=medium + + * GCC 6.1 release candidate 1. + + [ Michael Hudson-Doyle ] + * cmd/go: deduplicate gccgo afiles by package path, not *Package. + LP: #1566552. + + -- Matthias Klose Fri, 15 Apr 2016 18:32:25 +0200 + +gcc-6 (6-20160405-1) experimental; urgency=medium + + * GCC 6 snapshot build, taken from the trunk 20160405. + + -- Matthias Klose Tue, 05 Apr 2016 16:39:49 +0200 + +gcc-6 (6-20160319-1) experimental; urgency=medium + + * GCC 6 snapshot build, taken from the trunk 20160319. + * Stop providing alternative for /usr/bin/go. (Michael Hudson-Doyle). + LP: #1555856. + * Disable gnat on powerpcspe. Closes: #816051. + + -- Matthias Klose Sat, 19 Mar 2016 11:54:57 +0100 + +gcc-6 (6-20160312-1) experimental; urgency=medium + + * GCC 6 snapshot build, taken from the trunk 20160312. + * Update gdc to the trunk 20160306. + * Remove powerpcspe specific patch, integrated upstream. Addresses: #816048. + * When configured to link with --as-needed by default, always link the + sanitizer libraries with --no-as-needed. + + -- Matthias Klose Sat, 12 Mar 2016 10:21:28 +0100 + +gcc-6 (6-20160228-1) experimental; urgency=medium + + * GCC 6 snapshot build, taken from the trunk 20160228. + + [ Matthias Klose ] + * libgo: Port syscall.SetsockoptUcred from golang (Michael Vogt). + + [ Svante Signell ] + * patches/ada-hurd.diff: Update. + + -- Matthias Klose Sun, 28 Feb 2016 13:28:41 +0100 + +gcc-6 (6-20160225-1) experimental; urgency=medium + + * GCC 6 snapshot build, taken from the trunk 20160225. + * Update gdc to the trunk 20160224. + * Install missing architecture specific plugin header files. + * Fix PR target/69885, bootstrap error on m68k. + + -- Matthias Klose Thu, 25 Feb 2016 02:00:57 +0100 + +gcc-6 (6-20160220-1) experimental; urgency=medium + + * GCC 6 snapshot build, taken from the trunk 20160220. + - Fix PR tree-optimization/68021. Closes: #812245. + - Fix PR ipa/69241. Closes: #812060. + - Fix PR libstdc++/56158. Closes: #789369. + * Update symbols files. + * libgccjit-6-doc: Really conflict with libgccjit-5-doc. Closes: #814527. + * Update conflict for gnat cross build packages. Closes: #810809. + * Disable the m68k gnat build, currently fails. See: #814221. + * Fix running the acats tests (Svante Signell): Addresses part of #814978. + + -- Matthias Klose Sat, 20 Feb 2016 16:58:47 +0100 + +gcc-6 (6-20160205-1) experimental; urgency=medium + + * GCC 6 snapshot build, taken from the trunk 20160205. + - Fix PR tree-optimization/69320. Closes: #811921. + - Fix PR c++/68782. Closes: #812287. + - Fix PR tree-optimization/69328. Closes: #812247. + - Fix PR target/69421. Closes: #812246. + - Fix PR c++/69379. Closes: #812068. + - Fix PR lto/69393. Closes: #812062. + - Fix PR tree-optimization/69166. Closes: #812061. + * Update gdc to the trunk 20160205. + - Fix data corruption bug when passing around longdoubles. + Closes: #812080. + * Add more conflicts to GCC 5's debug and doc packages. Closes: #813081. + * Fix dependency generation for armel/armhf multilib cross targets. + * Fix libc dependency generation for multilib cross targets. + * Build libitm on alpha, s390x, sh4, sparc64. + + -- Matthias Klose Fri, 05 Feb 2016 18:08:37 +0100 + +gcc-6 (6-20160122-1) experimental; urgency=medium + + * Fix gnat build failure on KFreeBSD (Steven Chamberlain). Closes: #811372. + * Fix dependencies on target libraries which are not built anymore + from this source. + * Bump libmpx soname. Closes: #812084. + * Apply proposed patch for PR target/69129. Closes: #810081. + * Apply proposed patch for PR go/66904, pass linker flags from + "#cgo pkg-config:" directives (Michael Hudson). + * Configure with --enable-fix-cortex-a53-843419 on AArch64. + + -- Matthias Klose Fri, 22 Jan 2016 13:33:19 +0100 + +gcc-6 (6-20160117-1) experimental; urgency=medium + + * GCC 6 snapshot build, taken from the trunk 20160117. + * Update gdc to the trunk 20160115. + * Update libgnatvsn/libgnatprj conflicts. Closes: #810809. + * Fix gnat build failures on the Hurd and KFreeBSD (Svante Signell). + Closes: #811063. + * Build libstdc++-6-doc with a fixed doxygen. Closes: #810717. + + -- Matthias Klose Sun, 17 Jan 2016 12:14:39 +0100 + +gcc-6 (6-20160109-1) experimental; urgency=medium + + * GCC 6 snapshot build, taken from the trunk 20160109. + * Install new header file pkuintrin.h. Closes: #809807. + * Fix libcc1-0 dependency for cross compilers. + + -- Matthias Klose Sat, 09 Jan 2016 11:49:50 +0100 + +gcc-6 (6-20160103-1) experimental; urgency=medium + + * GCC 6 snapshot build, taken from the trunk 20160101. + + -- Matthias Klose Sun, 03 Jan 2016 12:47:13 +0100 + +gcc-6 (6-20160101-1) experimental; urgency=medium + + * GCC 6 snapshot build, taken from the trunk 20160101. + * Build native gnat on sh4. Addresses: #809498. + + -- Matthias Klose Fri, 01 Jan 2016 21:18:38 +0100 + +gcc-6 (6-20151220-1) experimental; urgency=medium + + * GCC 6 snapshot build, taken from the trunk 20151220. + * Update libstdc++-dbg conflicts. Closes: #807885. + * Set target tools and build dependencies for cross builds. + * Relax gcj-6-{jre,jre-headless,jdk} dependencies on libgcj16. + * Fix cross build issues. + + -- Matthias Klose Sun, 20 Dec 2015 13:46:12 +0100 + +gcc-6 (6-20151213-1) experimental; urgency=medium + + * GCC 6 snapshot build, taken from the trunk 20151213. + * Update the ada-kfreebsd and ada-m68k patches. + * Fix cross-building without having the common cross libraries installed. + * Allow unstripped, non-optimized debug builds with setting DEB_BUILD_OPTIONS + including gccdebug. + * Remove obsolete libgccmath packaging support. + * Define SONAME macros whether the libraries are built or not. + + -- Matthias Klose Sun, 13 Dec 2015 16:04:56 +0100 + +gcc-6 (6-20151211-1) experimental; urgency=medium + + * GCC 6 snapshot build, taken from the trunk 20151211. + * Update gnat and gdc patches, re-enable gnat and gdc. + + -- Matthias Klose Fri, 11 Dec 2015 12:35:03 +0100 + +gcc-6 (6-20151210-1) experimental; urgency=medium + + * GCC 6 snapshot build, taken from 20151210. + + -- Matthias Klose Thu, 10 Dec 2015 22:09:13 +0100 + +gcc-5 (5.3.1-3) unstable; urgency=medium + + * Update to SVN 20151207 (r231361, 5.3.1) from the gcc-5-branch. + * Remove upstreamed chunks from the ada-kfreebsd patch. + + -- Matthias Klose Tue, 08 Dec 2015 02:10:51 +0100 + +gcc-5 (5.3.1-2) unstable; urgency=medium + + * Update to SVN 20151206 (r231339, 5.3.1) from the gcc-5-branch. + * Re-enable building gdc/libphobos, fixing the profiled build. + * Fix PR sanitizer/67899, build failure on sparc/sparc64. + + -- Matthias Klose Sun, 06 Dec 2015 19:15:46 +0100 + +gcc-5 (5.3.1-1) unstable; urgency=medium + + * Update to SVN 20151205 (r231314, 5.3.1) from the gcc-5-branch. + + -- Matthias Klose Sat, 05 Dec 2015 20:45:53 +0100 + +gcc-5 (5.3.0-3) unstable; urgency=medium + + * Update libgcc symbols file. + * Restore libgcc.symbols.aebi. + * Disabled profiled bootstraps for backports. + + -- Matthias Klose Sat, 05 Dec 2015 07:50:48 +0100 + +gcc-5 (5.3.0-1) experimental; urgency=medium + + * GCC 5.3 release. + - Fix PR libstdc++/65142 (CVE-2015-5276). + * Update gdc to the gcc-5 branch 20151130. + * Enable the profiled bootstrap on amd64, arm64, armel armhf, i386, powerpc, + ppc64, ppc64el, s390x, x32 (excluding builds from the Linaro branch). + * Move test summary into the gcc-test-results package. + * Simplify libatomic, libcilkrts, libgcc, libgfortran, libgomp, libitm, + libmpx, libquadmath symbols files using versioned symbol references. + Closes: #806784. + * Only build the hppa64 cross compiler when either building the native compiler, + or when cross building the native compiler. Closes: #806479. + * Configure staged build with --enable-linker-build-id. + + -- Matthias Klose Fri, 04 Dec 2015 12:01:04 +0100 + +gcc-5 (5.2.1-27) unstable; urgency=medium + + * Update to SVN 20151129 (r231053, 5.2.1) from the gcc-5-branch. + * Don't strip cc1plus when shipping with unstripped frontends. + * Relax libgnatvsn5-dev-*-cross and libgnatprj5-dev-*-cross dependencies + on gnat-5-*-linux-gnu. + * Fix setting the explicit libc dependency for cross builds. + * Don't build m4-nofpu multilibs on sh4, install the default multilib + into the standard location. + * Stop building gnat on mips64, see https://gcc.gnu.org/PR65337 (#806370). + * Update the patch for PR go/67508 and re-enable Go on sparc and sparc64. + * Fix gnat sparc/sparc64 architecture detection. + * Update libgcc and libstdc++ symbols files. + * Don't ship the gcov tools in the gcc-hppa64-linux-gnu package. + * Run the autoconf generation in parallel. + * Add --enable-default-pie option to GCC configure, taken from the trunk. + * Enable gnat for m68k cross builds. + * Link gnat tools, gnat libs and libgccjit with the defaults LDFLAGS. + * Skip non-default multilib and libstdc++-v3 debug builds in bootstrap builds. + * Ship an empty debian/rules.parameters in the gcc-5-source package. + + -- Matthias Klose Sun, 29 Nov 2015 23:48:58 +0100 + +gcc-5 (5.2.1-26) unstable; urgency=medium + + * Update to SVN 20151125 (r230897, 5.2.1) from the gcc-5-branch. + * Fix the rtlibs stage build. Closes: #806186. + * Fix packaging the cross libphobos package. + * Build the hppa64 cross compiler on x86 architectures. + * gcc-5-hppa64-linux-gnu: Stop providing unversioned tools using + alternatives. Build a gcc-hppa64-linux-gnu package instead. + * Split out a gcc-5-test-results package from g++-5, allowing a post + build analysis, and reducing the size of the g++-5 package. + + -- Matthias Klose Wed, 25 Nov 2015 20:33:08 +0100 + +gcc-5 (5.2.1-25) unstable; urgency=medium + + * Update to SVN 20151123 (r230734, 5.2.1) from the gcc-5-branch. + * Fix libgcc4-dbg dependency on libgcc4. Closes: #805839. + * Fix building epoch prefixed cross packages. + + -- Matthias Klose Mon, 23 Nov 2015 05:48:00 +0100 + +gcc-5 (5.2.1-24) unstable; urgency=medium + + * Update to SVN 20151121 (r230703, 5.2.1) from the gcc-5-branch. + * Fix PR libstdc++/56158, taken from the trunk. Closes: #804521. LP: #1514309. + * Don't try to build a gnat cross compiler when there is no gnat compiler + for the build architecture. + * Update gnat build dependencies for backports. + * Parallelize building documentation and parallelize the packaging step. + * Update the Linaro support to the 5-2015.11 snapshot. + + -- Matthias Klose Sat, 21 Nov 2015 11:22:16 +0100 + +gcc-5 (5.2.1-23) unstable; urgency=medium + + * Update to SVN 20151028 (r229478, 5.2.1) from the gcc-5-branch. + + [ Matthias Klose ] + * Update the Linaro support to the 5-2015.10 snapshot. + * gcj: On ppc64el, use the same jvm archdir name as for openjdk (ppc64le). + * gcj: Fix priority of java alternatives. Closes: #803055. + * gnat-5: Reintroduce the unversioned gnatgcc name. Closes: #802838. + + [ Aurelien Jarno ] + * Replace proposed patch for PR rtl-optimization/67736 by the one + committed on trunk. + + -- Matthias Klose Wed, 28 Oct 2015 10:36:54 +0100 + +gcc-5 (5.2.1-22) unstable; urgency=medium + + * Update to SVN 20151010 (r228681, 5.2.1) from the gcc-5-branch. + - Fix PR libstdc++/65913, PR libstdc++/67173, PR libstdc++/67747, + PR c/67730, PR middle-end/67563, PR lto/67699, PR tree-optimization/67821, + PR debug/58315. + + [ Matthias Klose ] + * Restore the work around for PR libstdc++/65913, still needed at least + for powerpc. + * Rename gcc-5-hppa64 to gcc-5-hppa64-linux-gnu, update (build) dependency + on binutils. Closes: #800563. + * Adjust setting DH_COMPAT for dh_movefiles with updated debhelper supporting + globbing of arguments. Closes: #800250. + * Build-depend on gnat-5 instead of gnat-4.9. + + [ Aurelien Jarno ] + * Do not Use --with-mips-plt on mips and mipsel. Closes: #799811. + + -- Matthias Klose Sat, 10 Oct 2015 22:17:09 +0200 + +gcc-5 (5.2.1-21) unstable; urgency=medium + + * Update to SVN 20151003 (r228449, 5.2.1) from the gcc-5-branch. + * Fix building gnat. Closes: #800781. + + -- Matthias Klose Sat, 03 Oct 2015 17:28:45 +0200 + +gcc-5 (5.2.1-20) unstable; urgency=medium + + * Update to SVN 20151002 (r228373, 5.2.1) from the gcc-5-branch. + * Fix packaging the ada cross library packages. + + -- Matthias Klose Fri, 02 Oct 2015 10:24:38 +0200 + +gcc-5 (5.2.1-19) unstable; urgency=medium + + * Update to SVN 20150930 (r228302, 5.2.1) from the gcc-5-branch. + - Fix PR ipa/66424. Closes: #800318. + + [ Matthias Klose ] + * Update the Linaro support to the 5-2015.09 snapshot. + * Fix PR libstdc++/67707, taken from the trunk. LP: #1499564. + * Ship libgcj.spec in gcj-5 instead of gcj-5-jdk. Closes: #800010. + * gcj-5: Suggest gcj-5-jdk. + * Fix base dependency for ada cross library packages. + * Add ${shlibs:Depends} for libgnatvsn and libgnatprj. + * Link lrealpath.o into libgnatprj. Closes: #800045. + * libgnat{svn,prj}-dev: For cross builds, move adainclude and adalib files + into the gcc libdir. + * Default to POWER8 on ppc64el. + * armv8: Fix slt lda missing conditional code (taken from the trunk). + * Fix lintian pre-depends-directly-on-multiarch-support warnings. + + [ Aurelien Jarno ] + * Apply proposed patch for PR rtl-optimization/67736 when building for + mips64 or mips64el. Closes: #800321. + + -- Matthias Klose Wed, 30 Sep 2015 20:36:50 +0200 + +gcc-5 (5.2.1-18) unstable; urgency=medium + + * Update to SVN 20150922 (r228023, 5.2.1) from the gcc-5-branch. + + [ Matthias Klose ] + * gcc-5-plugin-dev: Depend on libmpc-dev. Closes: #798997. + * Fix PR libstdc++/65913, taken from the trunk. Closes: #797577. + + [ YunQiang Su ] + * Build again the gnat-5-sjlj package. Closes: #798782. + * Fix gnat cross builds, and cross building gnat. + + -- Matthias Klose Tue, 22 Sep 2015 23:15:17 +0200 + +gcc-5 (5.2.1-17) unstable; urgency=medium + + * Update to SVN 20150911 (r227671, 5.2.1) from the gcc-5-branch. + - Fix PR c++/67369, ICE on valid code. LP: #1489173. + + [ Matthias Klose ] + * Build-depend on linux-libc-dev [m68k] for gcc and gcc-snapshot builds. + Closes: #796906. + * Don't ignore anymore bootstrap comparison failures on sh4. Closes: #796939. + * Fix stage1 cross build for KFreeBSD. Closes: #796901. + * libgo: Fix PR go/67508, rewrite lfstack packing/unpacking to look more + like that in Go (Michael Hudson). LP: #1472650. + * Fix PR target/67143 (AArch64), ICE on valid code. LP: #1481333. + + [ Aurelien Jarno ] + * Use --with-mips-plt on mips*. + * Build for R2 ISA on mips, mips64 and mips64el. + * Optimize for R2 ISA on mipsel. + * Only apply mips-fix-loongson2f-nop on mipsel. + + [ YunQiang Su ] + * Fix running the acats tests. Closes: #798531. + + -- Matthias Klose Fri, 11 Sep 2015 03:17:20 +0200 + +gcc-5 (5.2.1-16) unstable; urgency=medium + + * Update to SVN 20150903 (r227431, 5.2.1) from the gcc-5-branch. + - Backport the filesystem TS library. + * libstdc++-dev: Install libstdc++fs.a. + * Again, configure with --enable-targets=powerpcle-linux on ppc64el. + * Apply proposed patch for PR target/67211 (ppc64el). + * libgo-dev: Install libgolibbegin.a. + * Apply proposed patch for PR target/67280 (ARM). LP: #1482320. + + -- Matthias Klose Thu, 03 Sep 2015 12:16:15 +0200 + +gcc-5 (5.2.1-15) unstable; urgency=medium + + * Update to SVN 20150808 (r226731, 5.2.1) from the gcc-5-branch. + * Adjust libstdc++-breaks: Break libantlr-dev instead of antlr; + adjust libreoffice version (closes: #794203), drop xxsd break (see + #793289), remove cython breaks (closes: #794511), add breaks for + packages built using cython (chemps2, fiona, guiqwt, htseq, imposm, + pysph, pytaglib, python-scipy, python-sfml, rasterio). + * Ignore missing libstdc++ symbols on sparc64 (work around #792204). + + -- Matthias Klose Sat, 08 Aug 2015 11:18:24 +0200 + +gcc-5 (5.2.1-14) unstable; urgency=high + + * Fix libstdc++6 breaks. + + -- Matthias Klose Fri, 31 Jul 2015 04:12:08 +0200 + +gcc-5 (5.2.1-13) unstable; urgency=high + + * Upload to unstable (https://wiki.debian.org/GCC5). See also + https://lists.debian.org/debian-devel-announce/2015/07/msg00000.html + * Update to SVN 20150730 (r226411, 5.2.1) from the gcc-5-branch. + - Fix PR libstdc++/67015. Closes: #793784. + * Fix version macros in the plugin-header.h header. Closes: #793478. + * libstdc++6: Add breaks for issues tagged with gcc-pr66145. + * Add libcpprest2.4 to libstdc++6 breaks. Closes: #784655. + * Fix PR c++/66857, taken from the trunk. + * Ignore differences in gcc/real.o in the bootstrap build for + sh*-*linux-gnu targets. According to PR 67002, "A rare indeterminacy + of the register choice. Both codes are valid. It seems very hard to + find where has this indeterminacy come from". Suggested by Adrian + Glaubitz. + + -- Matthias Klose Thu, 30 Jul 2015 21:51:25 +0200 + +gcc-5 (5.2.1-12) experimental; urgency=medium + + * Update to SVN 20150723 (r226105, 5.2.1) from the gcc-5-branch. + * Fix PR libstdc++/66145, std::ios_base::failure objects thrown from + libstdc++.so using the gcc4-compatible ABI. + Just build src/c++11/functexcept.cc using the new ABI. It will break + code, which will be handled in the archive by adding Breaks for the + affected packages. Third party code using such code will need a rebuild. + * Remove the work around to build with -O1 on sh4. + + -- Matthias Klose Thu, 23 Jul 2015 14:18:44 +0200 + +gcc-5 (5.2.1-11) experimental; urgency=medium + + * Configure without --disable-libstdcxx-dual-abi. + * Configure with --with-default-libstdcxx-abi=c++11. + + -- Matthias Klose Fri, 17 Jul 2015 08:13:08 +0200 + +gcc-5 (5.2.1-1) experimental; urgency=medium + + * GCC 5.2 release. + * Update to SVN 20150716 (r225880, 5.2.1) from the gcc-5-branch. + * Require version 5.2 for the libstdc++6 cxx symbols. + * Ignore missing libstdc++ symbols on sparc64 (work around #792204). + * Go escape analysis: analyze multiple result type assertions (taken + from the trunk). + + -- Matthias Klose Thu, 16 Jul 2015 15:35:44 +0200 + +gcc-5 (5.1.1-14) unstable; urgency=medium + + * Update to SVN 20150711 (r225710, 5.1.1) from the gcc-5-branch. + + -- Matthias Klose Sat, 11 Jul 2015 11:57:19 +0200 + +gcc-5 (5.1.1-13) unstable; urgency=medium + + * Update to SVN 20150706 (r225471, 5.1.1) from the gcc-5-branch. + * Update libasan symbol files. + * Configure --with-fp-32=xx on all mips targets, setting MIPS O32 default + to FPXX (YunQiang Su). Closes: #789612. + * Update libgccjit symbol file. + * Add x32 symbols files for libgcc1 and libstdc++6. + * libgccjit0: Add breaks for python-gccjit and python3-gccjit. + + -- Matthias Klose Mon, 06 Jul 2015 19:55:08 +0200 + +gcc-5 (5.1.1-12) unstable; urgency=medium + + * Update to SVN 20150622 (r224724, 5.1.1) from the gcc-5-branch. + * Update symbols files for mips64 libatomic and libstdc++ (YunQiang Su). + Closes: #788990. + * Fix "empty-binary-package" lintian warnings. + + -- Matthias Klose Mon, 22 Jun 2015 14:37:49 +0200 + +gcc-5 (5.1.1-11) unstable; urgency=medium + + * Update to SVN 20150616 (r224519, 5.1.1) from the gcc-5-branch. + * gccgo: escape: Analyze binary expressions (taken from the trunk). + * Explicitly build with -Wl,--no-relax on alpha again. + * Build with -O1 on sh4 (try to work around PR target/66358). + + -- Matthias Klose Tue, 16 Jun 2015 16:11:59 +0200 + +gcc-5 (5.1.1-10) unstable; urgency=medium + + * Update to SVN 20150613 (r224454, 5.1.1) from the gcc-5-branch. + * Make removal of byte-compiled libstdc++ pretty printer files more + robust. Closes: #787630. + * Fix mips 32bit (o32) multilib builds (YunQiang Su). + * Build target libraries with -Wl,-z,relro. + * Build libstdc++6 when building the common libraries. + * Fix a bunch of lintian warnings. + + -- Matthias Klose Sat, 13 Jun 2015 12:59:17 +0200 + +gcc-5 (5.1.1-9) unstable; urgency=medium + + * Update to SVN 20150602 (r224029, 5.1.1) from the gcc-5-branch. + * Remove byte-compiled libstdc++ pretty printer files on upgrade. + Closes: #785939. + * Fix dangling libgccjit.so symlink. + * Fix base dependency for rtlibs stage builds. + * Fix build failure of the hppa64 cross compiler, introduced by the + gnat cross patches. Closes: #786692. + * Update README.source (Michael Vogt). + * libgo: syscall.Sendfile(): Apply proposed patch for PR go/66378. + (Michael Vogt). LP: #1460530. + * Set CC and CXX matching the same GCC version for the stage1 build. + * Work around PR go/66368, build libgo with -fno-stack-protector. + LP: #1454183. + + -- Matthias Klose Wed, 03 Jun 2015 00:49:41 +0200 + +gcc-5 (5.1.1-8) unstable; urgency=medium + + * Update to SVN 20150528 (r223816, 5.1.1) from the gcc-5-branch. + * Set the priorities of the *-dev-*-cross packages to extra. + * Prepare to change the base dependency for *-cross packages. + * Fix dependencies for stage1 and stage2 builds. + * Relax dependencies on binary indep *-dev-*-cross packages. + * Disable building gdc on sh4 (bootstrap comparison failure). + + -- Matthias Klose Thu, 28 May 2015 15:51:00 +0200 + +gcc-5 (5.1.1-7) unstable; urgency=medium + + * Update to SVN 20150522 (r223579, 5.1.1) from the gcc-5-branch. + * Add description for the ada-gnattools-cross patch (YunQiang Su). + * Provide a rtlibs stage to build a subset of target library packages. + * Make symbols file symlinking for cross builds more robust. + * Prefer gnatgcc-5 over gnatgcc when building native packages. + * Various fixes to build a gnat cross compiler: + - Fix dependencies of packages. + - Fix building libgnatprj and libgnatvsn (still needed to figure + out if these are target or host libraries). + * Fix building cross compilers with dpkg 1.18. + + -- Matthias Klose Fri, 22 May 2015 18:20:01 +0200 + +gcc-5 (5.1.1-6) unstable; urgency=medium + + * Update to SVN 20150519 (r223346, 5.1.1) from the gcc-5-branch. + * Don't build gdc-multilib on armel. + * Remove old CFLAGS/LDFLAGS settings to build gdc. + * Remove reference to .ico file in NEWS.html. + * Fix gcc's dependency on libcc1-0 for native builds. + * Fix stripping the rpath when cross-building cross compilers. + * Remove work arounds to build 64bit multilibs on 32bit targets, + now properly fixed upstream. + * Partially apply patches to build a gnat cross compiler (submitted + by YunQiang Su). + - gnatmake: Call the versioned gnatbind and gnatlink commands. + Closes: #782257. + - Allow libgnatprj and libgnatvsn to cross build. Addresses: #783372. + - New patch ada-gnattools-cross.diff (no documentation). + * Backport patch for gccgo: + - gccgo: If unary & does not escape, the var does not escape. + * Apply the backported patches for the go escape analysis. Need to + be enabled with -fgo-optimize-alloc (this option may go away again). + * Re-enable running the tests. + + -- Matthias Klose Tue, 19 May 2015 10:33:40 +0200 + +gcc-5 (5.1.1-5) unstable; urgency=medium + + * Update to SVN 20150507 (r222873, 5.1.1) from the gcc-5-branch. + * Fix 32bit libstdc++ symbols files for kfreebsd-amd64. + * libx32phobos-dev: Don't depend on libx32z-dev, when not available. + * Fix gotools configury. + * Configure with + --disable-libstdcxx-dual-abi --with-default-libstdcxx-abi=c++98 + While libstdc++ provides a dual ABI to support both the c++98 and c++11 + ABI, there is no committment on compatibility of the old experimental + c++11 ABI from GCC 4.9 and the stable c++11 ABI in GCC 5. + Closes: #784655. + + -- Matthias Klose Fri, 08 May 2015 18:48:49 +0200 + +gcc-5 (5.1.1-4) unstable; urgency=medium + + * Update to SVN 20150503 (r222751, 5.1.1) from the gcc-5-branch. + - Fix build failure on alpha. + * Fix applying the cross-biarch patch for stage1 builds. + * Fix libstdc++ symbols files for kfreebsd-amd64. + * Remove libn32phobos-5-dev from the control file. + * Really disable gnat on x32. + + -- Matthias Klose Sat, 02 May 2015 19:18:57 +0200 + +gcc-5 (5.1.1-3) unstable; urgency=high + + * Update to SVN 20150430 (r222660, 5.1.1) from the gcc-5-branch. + * Fix libstdc++ symbols files for kfreebsd-i386. + * PR libstdc++/62258, fix for std::uncaught_exception, taken from the trunk. + LP: #1439451. + * Backport patches for gccgo (not yet applied): + - Consider multi-result calls in escape analysis. + - Propagate escape info from closures to enclosed variables. + - Analyze function values and conversions. + - Use backend interface for stack allocation. + * More libstdc++ symbols updates for the Hurd and KFreeBSD. + * config-ml.in: Add D support. + * Update cross-biarch.diff to support D and Go. + * Apply the cross-biarch patch for every cross build. + + -- Matthias Klose Thu, 30 Apr 2015 15:42:05 +0200 + +gcc-5 (5.1.1-2) unstable; urgency=medium + + * Update to SVN 20150428 (r222550, 5.1.1) from the gcc-5-branch. + * Fix the gnat build dependency. + * Don't build go and gofmt for cross compilers. + + -- Matthias Klose Tue, 28 Apr 2015 23:57:14 +0200 + +gcc-5 (5.1.1-1) unstable; urgency=medium + + * GCC 5.1.0 release. + * Update to SVN 20150424 (r222416, 5.1.1) from the gcc-5-branch. + * Update NEWS files. + * Apply the ada-bootstrap-compare patch for snapshot builds as well. + * Update libasan, libgomp and libstdc++ symbols files. + * Don't ignore errors in dh_makeshlibs and dh_shlibdeps anymore, symbols + files should be uptodate now. + * Split out the sjlj build related things from the ada-acats patch into + a new ada-acats-sjlj patch. + * Don't build libx32phobos-5-dev when not building x32 multilibs. + * Fix standard C++ include directory for cross builds. Closes: #783241. + * Ignore bootstrap comparison failure on ia64. Filed upstream as + PR middle-end/65874. + * gccgo: Add (don't yet apply) a patch to implement escape analysis (taken + from the trunk). Turned off by default, enable with -fgo-optimize-alloc. + + -- Matthias Klose Fri, 24 Apr 2015 18:42:39 +0200 + +gcc-5 (5.1~rc1-1) experimental; urgency=medium + + * GCC 5.1 release candidate 1. + * Update to SVN 20150414 (r222066) from the gcc-5-branch. + * Update GDC to the gcc-5 branch, 20140414. + * Don't build libobjc, when not building the common libraries. + * Don't run the gccjit tests on KFreeBSD. Works around #782444:. + * Fix not building libs built by the next GCC version. + + -- Matthias Klose Tue, 14 Apr 2015 02:03:53 +0200 + +gcc-5 (5-20150410-1) experimental; urgency=medium + + * Update to SVN 20150410 + + [ Matthias Klose ] + * Fix /usr/include/c++/5.0.0 symlink. + * Re-enable building the D frontend. Closes: #782254. + * gccgo: Install libnetgo. + + [ Samuel Thibault ] + * Fix ada builds on the Hurd and KFreeBSD. Closes: #781424. + + -- Matthias Klose Sat, 11 Apr 2015 02:24:08 +0200 + +gcc-5 (5-20150404-1) experimental; urgency=medium + + * Update to SVN 20150404. + * Don't explicitly configure --with-gxx-include-dir and an absolute path, + so the toolchain remains relocatible. Instead, canonicalize the include + path names at runtime. + * Don't link libgnatprj using --no-allow-shlib-undefined on older releases. + * Don't build libmpx on older releases. + * Remove the work around to build libgccjit on arm64. + * Fix the libgccjit build using the just built compiler. + * Don't break other gcc, gcj, gnat -base packages for backports, only + needed for dist-upgrades. + * Don't add -gtoggle to STAGE3_CFLAGS (disabling the bootstrap comparison). + Instead, ignore the one differing file (gcc/ada/a-except.o) for now. + See #781457, PR ada/65618. + * Update libasan, libtsan, libgfortran and libstdc++ symbols files. + * Add symbols files for libmpx, libgccjit and libcc1. + + -- Matthias Klose Sat, 04 Apr 2015 21:53:45 +0200 + +gcc-5 (5-20150329-1) experimental; urgency=medium + + * Update to SVN 20150329. + * Fix building the gnat-5-doc package. + * Fix gnat build dependencies. + * Fix installation of the gnat upstream ChangeLog. Closes: #781451. + * Restore the bootstrap-debug.mk patch to the ada-mips patch + for debugging purposes. See #781457. + + -- Matthias Klose Sun, 29 Mar 2015 18:53:29 +0200 + +gcc-5 (5-20150327-1) experimental; urgency=medium + + * Update to SVN 20150327. + * Update libcc1 build support. + * Fix syntax in libstdc++ symbols file. Closes: #780991. + * Fix PR go/65417: Add support for PPC32 relocs to debug/elf. LP: #1431388. + * Fix PR go/65462: Fix go get dependencies. LP: #1432497. + * Limit the omp.h multilib fix to Linux. Closes: #778440. + * For ICEs, dump the preprocessed source file to stderr when in a + distro build environment. + * Remove the bootstrap-debug.mk patch from the ada-mips patch. + * gnat related work (partly based on #780640): + - Update patches for GCC 5. + - Build the gnat packages from the gcc-5 source package. + - Don't build a gnat-base package from the gcc-5 source. + - Stop building the gnat-5-sjlj package for now, patch needs an update. + - Fix the packaging when not building the gnat-5-sjlj package. + - Don't apply the ada-symbolic-tracebacks, patch needs an update. + - Fix the libgnatprj build, build with -DIN_GCC. + * Replace cloog/ppl build bits with isl build bits. + + -- Matthias Klose Fri, 27 Mar 2015 21:05:16 +0100 + +gcc-5 (5-20150321-1) experimental; urgency=medium + + * Update to SVN 20150321. + * Move the libcc1plugin from the gcc-5-plugin-dev package into the + gcc-5 package. + + -- Matthias Klose Sat, 21 Mar 2015 15:01:15 +0100 + +gcc-5 (5-20150316-1) experimental; urgency=medium + + * Update to SVN 20150316. + - Fix bootstrap failures on armel, armhh and arm64. + * Configure with --enable-checking=yes (instead of =release). + + -- Matthias Klose Tue, 17 Mar 2015 00:30:27 +0100 + +gcc-5 (5-20150314-1) experimental; urgency=medium + + * Update to SVN 20150314. + - libgo: Add arm64 to the pointer size map (Michael Hudson). + - libgo: Add ppc to the pointer size map. + - PR go/65404, enable cgo on arm64 and powerpc. LP: #1431032. + - Fix PR/tree-optimization 65418. Closes: #778163. + - Fix PR c++/65370. Closes: #778073. + * Enable libmpx builds on amd64 and i386. + * Update the gcc-multiarch patch for mips64 (YunQiang Su). + Closes: #776402, #780271. + * Remove pr52306 and pr52714 patches, applied upstream. Closes: #780468. + + -- Matthias Klose Sat, 14 Mar 2015 14:48:19 +0100 + +gcc-5 (5-20150307-1) experimental; urgency=medium + + * Update to SVN 20150307. + - Update gccgo to Go 1.4.2. + * Enable libsanitizer for AArch64 and POWERPC LE (asan, ubsan). + * Remove the support to build empty libsanitizer packages on powerpc + and ppc64; libsanitizer should be stable on these architectures. + * Fix libcc1.so symlink. Closes: #779341. + * Revert the fix for PR65150 on armel and armhf to restore bootstrap. + * Don't strip the libgo library, or some things won't work as documented, + like runtime.Callers. Still keep the -dbg packages and check if some + debug information can be stripped. + * gccgo-5: Install alternatives for go and gofmt. + + -- Matthias Klose Sat, 07 Mar 2015 12:20:59 +0100 + +gcc-5 (5-20150226-1) experimental; urgency=medium + + * Update to SVN 20150226. + - Fix PR c/65040 (closes: #778514), PR tree-optimization/65053 + (closes: #778070, #778071), PR c++/64898 (closes: #778472). + * Allow not to strip the compiler executables to be able to print backtraces + for ICEs. + * Fix gnat build on mips64el (James Cowgill). Addresses: #779191. + * Fix the hppa64 cross build (John David Anglin). Closes: #778658. + * Fix libstdc++ pretty printers for Python3. Closes: #778436. + + -- Matthias Klose Thu, 26 Feb 2015 08:18:23 +0100 + +gcc-5 (5-20150205-1) experimental; urgency=medium + + * Update to SVN 20150205. + * Update GDC for GCC 5. + * Build GDC multilib packages. + * Update cross-install-location.diff for gcc-5. Closes: #776100. + * Configure --with-default-libstdcxx-abi=c++11 for development, + --with-default-libstdcxx-abi=c++98 for backports. + * Apply proposed patch for PR target/64893 (AArch64), build using + 4.9 on AArch64 for now. + * Don't disable bootstrap mode for the jit build on arm64, gets + miscompiled. + * Allow one to build using gettext built with a newer GCC. + + -- Matthias Klose Thu, 05 Feb 2015 18:31:17 +0100 + +gcc-5 (5-20150127-1) experimental; urgency=medium + + * Update to SVN 20150127. + * More symbol file updates. + * Fix libbacktrace and libsanitizer multilib builds. + * Fix libssp builds on 64bit architectures. + * Update hardening testsuite patches for GCC 5. + + -- Matthias Klose Tue, 27 Jan 2015 14:10:30 +0100 + +gcc-5 (5-20150121-1) experimental; urgency=medium + + * GCC 5 (SVN trunk 20150121). + * Build new binary packages libcc1-0, libgccjit0, libgccjit-5-dev, + libgccjit-5-dbg, libgccjit-5-doc. + * Update symbols files (still incomplete). + + -- Matthias Klose Wed, 21 Jan 2015 21:02:05 +0100 + +gcc-4.9 (4.9.2-10) UNRELEASED; urgency=medium + + * Update to SVN 20150120 (r219885) from the gcc-4_9-branch. + - Fix PR libstdc++/64476, PR libstdc++/60966, PR libstdc++/64239, + PR libstdc++/64649, PR libstdc++/64584, PR libstdc++/64585, + PR libstdc++/64646, + PR middle-end/63704 (ice on valid), PR target/64513 (x86), + PR rtl-optimization/64286 (wrong code), PR tree-optimization/64563 (ice), + PR middle-end/64391 (ice on valid), PR c++/54442 (ice on valid), + PR target/64358 (rs6000, wrong code), PR target/63424 (AArch64, ice on + valid), PR target/64479 (SH), PR rtl-optimization/64536, PR target/64505 + (rs6000), PR target/61413 (ARM, wrong code), PR target/64507 (SH), + PR target/64409 (x32, ice on valid), PR c++/64487 (ice on valid), + PR c++/64352, PR c++/64251 (rejects valid), PR c++/64297 (ice on valid), + PR c++/64029 (ice on valid), PR c++/63657 (diagnostic), PR c++/38958 + (diagnostic), PR c++/63658 (rejects valid), PR ada/64492 (build), + PR fortran/64528 (ice on valid), PR fortran/63733 (wrong code), + PR fortran/56867 (wrong code), PR fortran/64244 (ice on valid). + * Update the Linaro support to the 4.9-2015.01 release. + + -- Matthias Klose Tue, 20 Jan 2015 12:45:13 +0100 + +gcc-4.9 (4.9.2-10) unstable; urgency=medium + + * Really add x32 multilib packages for i386 cross builds to the control file. + Closes: #773265. + * Use the final binutils 2.25 release. + * Tighten the gcc-4.9 dependency on libgcc-4.9-dev (YunQiang Su). + + -- Matthias Klose Thu, 25 Dec 2014 18:10:51 +0100 + +gcc-4.9 (4.9.2-9) unstable; urgency=medium + + * Update to SVN 20141220 (r218987) from the gcc-4_9-branch. + - Fix PR libstdc++/64302, PR libstdc++/64303, PR c++/60955, + PR rtl-optimization/64010 (wrong code), PR sanitizer/64265 (wrong code). + * Add x32 multilib packages for i386 cross builds to the control file. + Closes: #773265. + * Fix mips64el multilib cross builds. Closes: #772665. + * libphobos-4.x-dev: Stop providing libphobos-dev, now a real package. + + -- Matthias Klose Sat, 20 Dec 2014 07:47:15 +0100 + +gcc-4.9 (4.9.2-8) unstable; urgency=medium + + * Update to SVN 20141214 (r218721) from the gcc-4_9-branch. + - Fix PR tree-optimization/62021 (ice), PR middle-end/64225 (missed + optimization), PR libstdc++/64239, PR rtl-optimization/64037 (wrong + code), PR target/64200 (x86, ice), PR tree-optimization/64269 (ice). + * Don't build libphobos multilibs, there is no gdc-multilib build. + * Really disable the sanitizer libs on powerpc, ppc64 and ppc64el. + * Paste config.log files to stdout in case of build errors. + + -- Matthias Klose Sun, 14 Dec 2014 18:43:49 +0100 + +gcc-4.9 (4.9.2-7) unstable; urgency=medium + + * Update to SVN 20141210 (r218575) from the gcc-4_9-branch. + - Fix PR libstdc++/64203, PR target/55351 (SH), PR tree-optimization/61686, + PR bootstrap/64213. + - libgcc hppa backports. + * Fix cross builds with dpkg-architecture unconditionally exporting + target variables. For now specify the target architecture + in debian/target. This still needs to work with older dpkg versions, + so don't "simplify" the packaging. Closes: #768167. + + -- Matthias Klose Wed, 10 Dec 2014 13:32:42 +0100 + +gcc-4.9 (4.9.2-6) unstable; urgency=medium + + * Update to SVN 20141209 (r218510) from the gcc-4_9-branch. + - Fix PR libstdc++/63840, PR libstdc++/61947, PR libstdc++/64140, + PR target/50751 (SH), PR target/64108 (x86, ice), + PR rtl-optimization/64037 (wrong-code), PR c++/56493 (performance), + PR c/59708, PR ipa/64153, PR target/64167) (wrong code, + closes: #771974), PR target/59593 (ARM, wrong code), + PR middle-end/63762 (ARM. wrong code), PR target/63661 (x86, + wrong code), PR target/64113 (alpha, wrong code), PR c++/64191. + - Allow one to build with ISL 0.14. + + -- Matthias Klose Tue, 09 Dec 2014 11:00:08 +0100 + +gcc-4.9 (4.9.2-5) unstable; urgency=medium + + * Update to SVN 20141202 (r218271) from the gcc-4_9-branch. + - Fix PR middle-end/64111 (ice), PR ipa/63551 (wrong code). + PR libstdc++/64102 (closes: #770843), PR target/64115 (powerpc). + * Move libphobos2.a into the gcc_lib_dir. Closes: #771647. + * Fix typo in last powerpcspe patch. Closes: #771654. + + -- Matthias Klose Tue, 02 Dec 2014 17:42:07 +0100 + +gcc-4.9 (4.9.2-4) unstable; urgency=medium + + * Update to SVN 20141128 (r218142) from the gcc-4_9-branch. + -PR PR target/56846 (ARM), PR libstdc++/63497, + PR middle-end/63738 (wrong code), PR tree-optimization/62238 (ice), + PR tree-optimization/61927 (wrong code), + PR tree-optimization/63605 (wrong code), PR middle-end/63665 (wrong code), + PR fortran/63938 (OpenMP), PR middle-end/64067 (ice), + PR tree-optimization/63915 (wrong code), PR sanitizer/63913 (ice valid), + PR rtl-optimization/63659 (wrong code). + * Don't let stage1 multilib builds depend on the multilib libc-dev. + Closes: #771243. + * Fix an exception problem on powerpcspe (Roland Stigge). Closes: #771324. + * Remove unsupported with_deps_on_target_arch_pkgs configurations. + Closes: #760770, #766924, #770413. + + -- Matthias Klose Fri, 28 Nov 2014 15:26:23 +0100 + +gcc-4.9 (4.9.2-3) unstable; urgency=medium + + * Update to SVN 20141125 (r218048) from the gcc-4_9-branch. + - PR target/53976 (SH), PR target/63783 (SH), PR target/51244 (SH), + PR target/60111 (SH), PR target/63673 (ppc), + PR tree-optimization/61750 (ice), PR target/63947 (x86, wrong code), + PR tree-optimization/62167 (wrong code), PR c++/63849 (ice), + PR ada/47500. + + [ Aurelien Jarno ] + * Always configure sh4-linux with --with-multilib-list=m4,m4-nofpu, + even with multilib disabled, as it doesn't produce additional + libraries. + + [ Matthias Klose ] + * gcc-4.9-base: Add Breaks: gcc-4.7-base (<< 4.7.3). Closes: #770025. + + -- Matthias Klose Tue, 25 Nov 2014 17:04:19 +0100 + +gcc-4.9 (4.9.2-2) unstable; urgency=medium + + * Update to SVN 20141117 (r217768) from the gcc-4_9-branch. + - Fix PR rtl-optimization/63475, PR rtl-optimization/63483 (gfortran + aliasing fixes for alpha), PR target/63538 (x86), PR ipa/63838 (wrong + code), PR target/61535 (sparc), PR c++/63265 (diagnostic), PR ada/42978. + * Fix PR c/61553 (ice on illegal code), backported from the trunk. + Closes: #767668. + * Disable building the sanitizer libs on powerpc and ppc64. Not yet + completely ported, and causing kernel crashes running the tests. + * Update the Linaro support to the 4.9-2014.11 release. + + -- Matthias Klose Tue, 18 Nov 2014 00:34:01 +0100 + +gcc-4.9 (4.9.2-1) unstable; urgency=medium + + * GCC 4.9.2 release. + * Update GDC from the 4.9 branch. + + [ Matthias Klose ] + * Allow one to build the gcc-base package only. + + [Ludovic Brenta] + Merge from gnat-4.9 (4.9.1-4) unstable; urgency=low. + * debian/patches/ada-libgnatvsn.diff: compile the version.o of + libgnatvsn.{a,so} with -DBASEVER=$(FULLVER) to align it with the + change made in gcc-base-version.diff, which is compiled into gcc and + gnat1. Fixes: #759038. + * debian/patches/ada-revert-pr63225.diff: new; preserve the aliversion + compatibility of libgnatvsn4.9-dev with -3. + + Merge from gnat-4.9 (4.9.1-3) unstable; urgency=low + Merge from gnat-4.9 (4.9.1-2) unstable; urgency=low + + [Svante Signell] + * debian/patches/ada-hurd.diff: update and bring up to par with + ada-kfreebsd.diff. + + [Ludovic Brenta] + * Rebuild with newer dpkg. Fixes: #761248. + + Merge from gnat-4.9 (4.9.1-1) unstable; urgency=low + + * New upstream release. Build-depend on gcc-4.9-source (>= 4.9.1). + Fixes: #755490. + * debian/rules.d/binary-ada.mk: install the test-summary file in package + gnat-4.9 instead of gnat-4.9-base. test-summary is actually + architecture-dependent. This change reflects what happens in gcc-4.9 + and gcc-4.9-base as well. Fixes: #749869. + + Merge from gnat-4.9 (4.9.0-2) unstable; urgency=low + + * Lintian warnings: + * debian/control.m4 (gnat-4.9-base): Multi-Arch: same. + * debian/patches/ada-749574.diff: new. Fixes: #749574. + + -- Matthias Klose Tue, 04 Nov 2014 02:58:33 +0100 + +gcc-4.9 (4.9.1-19) unstable; urgency=medium + + * GCC 4.9.2 release candidate. + * Update to SVN 20141023 (r216594) from the gcc-4_9-branch. + * Install sanitizer header files. + * Apply patch for PR 60655, taken from the trunk. + * Fix typo in the libstdc++ HTML docs. Closes: #766498. + * Use doxygen's copy of jquery.js for the libstdc++ docs. Closes: #766499. + * Force self-contained cross builds. + * Don't build functionally non-equivalent cross compilers. + * Update the Linaro support to the 4.9-2014.10-1 release. + + -- Matthias Klose Fri, 24 Oct 2014 14:20:00 +0200 + +gcc-4.9 (4.9.1-18) unstable; urgency=medium + + * Update to SVN 20141018 (r216426) from the gcc-4_9-branch. + + [ Matthias Klose ] + * Update libstdc++ symbols file for powerpcspe (Roland Stigge). + Closes: #765078. + + -- Matthias Klose Sat, 18 Oct 2014 16:28:09 +0200 + +gcc-4.9 (4.9.1-17) unstable; urgency=medium + + * Update to SVN 20141015 (r216240) from the gcc-4_9-branch. + - Fix PR c++/63405 (ice) Closes: #761549. + - Fix PR ipa/61144 (wrong code). Closes: #748681. + + -- Matthias Klose Wed, 15 Oct 2014 10:29:23 +0200 + +gcc-4.9 (4.9.1-16) unstable; urgency=medium + + * Update to SVN 20140930 (r215717) from the gcc-4_9-branch. + * Don't suggest libvtv and binutils-gold. Closes: #761612. + + -- Matthias Klose Tue, 30 Sep 2014 11:37:48 +0200 + +gcc-4.9 (4.9.1-15) unstable; urgency=medium + + * Update to SVN 20140919 (r215401) from the gcc-4_9-branch. + + [ Matthias Klose ] + * Extend the fix for PR target/63190 (AArch64). Closes: #758964. + * Apply proposed fix for Linaro #331, LP: #1353729 (AArch64). + + [ Aurelien Jarno ] + * Default to mips64 ISA on mips64el, with tuning for mips64r2. + + -- Matthias Klose Fri, 19 Sep 2014 20:17:27 +0200 + +gcc-4.9 (4.9.1-14) unstable; urgency=medium + + * Update to SVN 20140912 (r215228) from the gcc-4_9-branch. + * Update the Linaro support to the 4.9-2014.09 release. + * Fix installation of the libstdc++ documentation. Closes: #760872. + + -- Matthias Klose Fri, 12 Sep 2014 19:15:23 +0200 + +gcc-4.9 (4.9.1-13) unstable; urgency=medium + + * Update to SVN 20140908 (r215008) from the gcc-4_9-branch. + * Enable cgo on AArch64 (Michael Hudson). LP: #1361940. + * Update the Linaro support from the Linaro/4.9 branch. + * Fix PR target/63190 (AArch64), taken from the trunk. Closes: #758964. + + -- Matthias Klose Mon, 08 Sep 2014 09:56:50 +0200 + +gcc-4.9 (4.9.1-12) unstable; urgency=medium + + [ Samuel Thibault ] + * boehm-gc: use anonymous mmap instead of brk also on hurd-*. + Closes: #753791. + + -- Matthias Klose Sun, 31 Aug 2014 18:40:46 +0200 + +gcc-4.9 (4.9.1-11) unstable; urgency=medium + + * Update to SVN 20140830 (r214759) from the gcc-4_9-branch. + * Update cross installation patches for the branch. + * Use the base version (4.9) when accessing files in gcc_lib_dir. + + -- Matthias Klose Sat, 30 Aug 2014 22:05:47 +0200 + +gcc-4.9 (4.9.1-10) unstable; urgency=medium + + * Update to SVN 20140830 (r214751) from the gcc-4_9-branch. + * Fix jni symlinks in /usr/lib/jvm. Closes: #759558. + * Update the Linaro support from the Linaro/4.9 branch. + - Fixes Aarch64 cross build on i386. + + -- Matthias Klose Sat, 30 Aug 2014 04:47:19 +0200 + +gcc-4.9 (4.9.1-9) unstable; urgency=medium + + * Update to SVN 20140824 (r214405) from the gcc-4_9-branch. + * Fix -dumpversion output to print the full version number. + Addresses: #759038. LP: #1360404. + Use the GCC base version for the D include dir name. + + -- Matthias Klose Sun, 24 Aug 2014 10:09:28 +0200 + +gcc-4.9 (4.9.1-8) unstable; urgency=medium + + * Update to SVN 20140820 (r214215) from the gcc-4_9-branch. + * Fix PR middle-end/61294, -Wmemset-transposed-args, taken from the trunk. + LP: #1352836. + * Update the Linaro support to 4.9-2014.08. + * Fix PR tree-optimization/59586, graphite segfault, taken from the trunk. + LP: #1227789. + * Fix multilib castrated cross builds on mips64el (YunQiang Su, Helmut + Grohne). Closes: #758408. + * Apply Proposed patch for PR target/62040 (AArch64). LP: #1351227. + Closes: #757738. + + -- Matthias Klose Wed, 20 Aug 2014 11:36:40 +0200 + +gcc-4.9 (4.9.1-7) unstable; urgency=medium + + * Build-depend on dpkg-dev (>= 1.17.11). + + -- Matthias Klose Thu, 14 Aug 2014 22:12:29 +0200 + +gcc-4.9 (4.9.1-6) unstable; urgency=medium + + * Update to SVN 20140813 (r213955) from the gcc-4_9-branch. + * Really fix the GFDL build on AArch64. Closes: #757153. + * Disable Ada for snapshot builds on kfreebsd-i386, kfreebsd-amd64. + Local patch needs an update and upstreaming. + * Apply the local ada-mips patch for snapshot builds too. + * Disable Ada for snapshot builds on mips, mipsel. Bootstrap comparision + failure. Local patch needs upstreaming. + * Disable Ada for snapshot builds on hurd-i386, build dependencies are + not installable. + * Don't build the sanitizer libs for sparc snapshot builds. + * Proposed backport for PR libstdc++/61841. Closes: #749290. + + -- Matthias Klose Thu, 14 Aug 2014 17:53:43 +0200 + +gcc-4.9 (4.9.1-5) unstable; urgency=medium + + * Update to SVN 20140808 (r213759) from the gcc-4_9-branch. + - Fix PR tree-optimization/61964. LP: #1347147. + * Fix libphobos cross build. + + -- Matthias Klose Fri, 08 Aug 2014 17:28:55 +0200 + +gcc-4.9 (4.9.1-4) unstable; urgency=high + + * Update to SVN 20140731 (r213317) from the gcc-4_9-branch. + - CVE-2014-5044, fix integer overflows in array allocation in libgfortran. + Closes: #756325. + * Build libphobos on armel and armhf. Closes: #755390. + * Fix java.security symlink. Closes: #756484. + + -- Matthias Klose Thu, 31 Jul 2014 10:15:27 +0200 + +gcc-4.9 (4.9.1-3) unstable; urgency=medium + + * Update to SVN 20140727 (r213100) from the gcc-4_9-branch. + * Fix the GFDL build on AArch64. + * Fix PR libobjc/61920, libobjc link failure on powerpc*. Closes: #756096. + + -- Matthias Klose Sun, 27 Jul 2014 15:25:24 +0200 + +gcc-4.9 (4.9.1-2) unstable; urgency=medium + + * Update to SVN 20140724 (r213031) from the gcc-4_9-branch. + + * Fix installing test logs and summaries. + * Warn about ppc ELFv2 ABI issues, which will change in GCC 4.10. + * Don't gzip the xz compressed testsuite logs and summaries. + * Build libphobos on armel and armhf. Closes: #755390. + * Update the Linaro support to the 4.9-2014.07 release. + + -- Matthias Klose Thu, 24 Jul 2014 23:59:49 +0200 + +gcc-4.9 (4.9.1-1) unstable; urgency=medium + + * GCC 4.9.1 release. + * Update GDC form the 4.9 branch (20140712). + + -- Matthias Klose Wed, 16 Jul 2014 17:15:14 +0200 + +gcc-4.9 (4.9.0-11) unstable; urgency=medium + + * GCC 4.9.1 release candidate 1. + * Update to SVN 20140712 (r212479) from the gcc-4_9-branch. + - Fix PR middle-end/61725. Closes: #754548. + + * Add libstdc++ symbols files for mips64 and mips64el (Yunqiang Su). + Closes: #745372. + * Set java_cpu to ppc64 on ppc64el. + * Build AArch64 from the Linaro 4.9-2014.06 release. + * Re-enable running the testsuite on KFreeBSD and the Hurd. + * Re-enable running the libstdc++ testsuite on arm*, mips* and hppa. + + -- Matthias Klose Sat, 12 Jul 2014 13:10:46 +0200 + +gcc-4.9 (4.9.0-10) unstable; urgency=medium + + * Update to SVN 20140704 (r212295) from the gcc-4_9-branch. + + * Explicitly set cpu_32 to ultrasparc for sparc64 builds. + * Fix --with-long-double-128 for sparc32 when defaulting to 64-bit. + * Ignore missing libstdc++ symbols on armel and hppa. The future and + exception_ptr implementation is incomplete. For more information see + https://gcc.gnu.org/ml/gcc/2014-07/msg00000.html. + + -- Matthias Klose Fri, 04 Jul 2014 15:55:09 +0200 + +gcc-4.9 (4.9.0-9) unstable; urgency=medium + + * Update to SVN 20140701 (r212192) from the gcc-4_9-branch. + * Update libstdc++ symbols files for ARM. + * Configure --with-cpu-32=ultrasparc on sparc64. + + -- Matthias Klose Tue, 01 Jul 2014 10:47:11 +0200 + +gcc-4.9 (4.9.0-8) unstable; urgency=medium + + * Update to SVN 20140624 (r211959) from the gcc-4_9-branch. + + * Don't ignore dpkg-shlibdeps errors for libstdc++6, left over from initial + 4.9 uploads. + * Update libgcc1 symbols for sh4. Closes: #751919. + * Stop building the libvtv packages. Not usable unless the build is + configured with --enable-vtable-verify, which comes with a performance + penalty just for the stubs in libstdc++. + * Update libstdc++ and libvtv symbols files for builds configured with + --enable-vtable-verify. + * Remove version requirement for dependency on make. Closes: #751891. + * Fix removal of python byte-code files in libstdc++6. Closes: #751435. + * Fix a segfault in the driver from calling free on non-malloc'd area. + * Drop versioned build dependency on gdb, and apply the pretty printer + patch for libstdc++ based on the release. + * Add support to build with isl-0.13. + + -- Matthias Klose Wed, 25 Jun 2014 20:08:09 +0200 + +gcc-4.9 (4.9.0-7) unstable; urgency=medium + + * Update to SVN 20140616 (r211699) from the gcc-4_9-branch. + + [ Matthias Klose ] + * Fix patch application for powerpcspe (Helmit Grohne). Closes: #751001. + + Update context for powerpc_remove_many. + + Drop gcc-powerpcspe-ldbl-fix applied upstream. + + [ Aurelien Jarno ] + * Fix PR c++/61336, taken from the trunk. + + -- Matthias Klose Mon, 16 Jun 2014 10:59:16 +0200 + +gcc-4.9 (4.9.0-6) unstable; urgency=medium + + * Update to SVN 20140608 (r211353) from the gcc-4_9-branch. + * Fix -Wno-format when -Wformat-security is the default (Steve Beattie). + LP: #1317305. + * Don't install the libstdc++ pretty printer file into the debug directory, + but into the gdb auto-load directory. + * Fix the removal of the libstdc++6 package, removing byte-compiled pretty + printer files and pycache directories. + * Fix PR c++/61046, taken from the trunk. LP: #1313102. + * Fix installation of gcc-{ar,nm,ranlib} man pages for snapshot builds. + Closes: #745906. + * Update patches for snapshot builds. + + -- Matthias Klose Sun, 08 Jun 2014 11:57:07 +0200 + +gcc-4.9 (4.9.0-5) unstable; urgency=medium + + * Update to SVN 20140527 (r210956) from the gcc-4_9-branch. + * Limit systemtap-sdt-dev build dependency to enumerated linux architectures. + * Build libitm on AArch64, patch taken from the trunk. + * Update the testsuite to allow more testcases to pass with hardening options + turned on (Steve Beattie). LP: #1317307. + * Revert the fix for PR rtl-optimization/60969, causing bootstrap failure + on ppc64el. + * Fix PR other/61257, check for working sys/sdt.h. + * Drop the libstdc++-arm-wno-abi patch, not needed anymore in 4.9. + + -- Matthias Klose Tue, 27 May 2014 08:58:07 +0200 + +gcc-4.9 (4.9.0-4) unstable; urgency=medium + + * Update to SVN 20140518 (r210592) from the gcc-4_9-branch. + * Update the local ada-libgnatprj patch for AArch64. Addresses: #748233. + * Update the libstdc++v-python3 patch. Closes: #748317, #738341, 747903. + * Build-depend on systemtap-sdt-dev, on every architecure, doesn't seem to hurt + on architectures where it is not supported. Closes: #748315. + * Update the gcc-default-format-security patch (Steve Beattie). LP: #1317305. + * Apply the proposed patch for PR c/57653. Closes: #734345. + + -- Matthias Klose Sun, 18 May 2014 23:29:43 +0200 + +gcc-4.9 (4.9.0-3) unstable; urgency=medium + + * Update to SVN 20140512 (r210323) from the gcc-4_9-branch. + + [ Matthias Klose ] + * Update build dependencies for ada enabled snapshot builds. + * Fix PR tree-optimization/60902, taken from the trunk. Closes: #746944. + * Ensure that the common libs (built from the next GCC version) are + available when building without common libs. + * Fix java.security symlink in libgcj15. Addresses: #746786. + * Move the libstdc++ gdb pretty printers into libstdc++6, install the + -gdb.py files into /usr/share/gdb/auto-load. + * Set the 'Multi-Arch: same' attribute for packages, cross built with + with_deps_on_target_arch_pkgs=yes (Helmit Grohne). Closes: #716795. + * Build the gcc-X.Y-base package with with_deps_on_target_arch_pkgs=yes + (Helmit Grohne). Addresses: #744782. + * Apply the proposed patches for PR driver/61106, PR driver/61126. + Closes: #747345. + + [ Aurelien Jarno ] + * Fix libasan1 symbols file for sparc and sparc64. + + -- Matthias Klose Tue, 13 May 2014 02:15:27 +0200 + +gcc-4.9 (4.9.0-2) unstable; urgency=medium + + * Update to SVN 20140503 (r210033) from the gcc-4_9-branch. + - Fix PR go/60931, garbage collector issue with non 4kB system page size. + LP: #1304754. + + [Matthias Klose] + * Fix libgcc-dev dependency on gcc, when not building libgcc. + * Fix gnat for snapshot builds on ppc64el. + * Update the libsanitizer build fix for sparc. + * Install only versioned gcc-ar gcc-nm gcc-ranlib binaries for the hppa64 + cross compiler. Install hppa64 alternatives. Addresses: #745967. + * Fix the as and ld symlinks for the hppa64 cross compiler. + * Add the gnat backport for AArch64. + * Update gnat patches not to use tabs and too long lines. + * libgnatvsn: Use CC and CXX passed from the toplevel makefile, drop gnat + build dependency on g++. Addresses: #746688. + + Merge from gnat-4.9 (4.9.0-1) unstable; urgency=low: + + [Ludovic Brenta] + * debian/patches/ada-hurd.diff: refresh for new upstream version that + restores POSIX compliance in System.OS_Interface.timespec. + * debian/patches/ada-kfreebsd.diff: make System.OS_Interface.To_Timespec + consistent with s-osinte-posix.adb. + [Nicolas Boulenguez] + * rules.conf (Build-Depends): mention gnat before gnat-x.y so that + buildds can bootstrap 4.9 in unstable. Fixes: #744724. + + -- Matthias Klose Sat, 03 May 2014 14:00:41 +0200 + +gcc-4.9 (4.9.0-1) unstable; urgency=medium + + * GCC 4.9.0 release. + * Update to SVN 20140423 (r209695) from the gcc-4_9-branch. + + [Matthias Klose] + * Fix PR target/59758 (sparc), libsanitizer build failure (proposed patch). + * Update gold architectures. + * Update NEWS files. + * Remove more mudflap left overs. Closes: #742606. + * Add new libraries src/libvtv and src/libcilkrts to + cross-ma-install-location.diff (Helmur Grohne). Closes: #745267. + * Let lib*gcc-dev depend on the corresponding libtsan packages. + * Build the liblsan packages (amd64 only). + * Install the libcilkrts spec file. + * Build the D frontend and libphobos from the gdc trunk. + + Merge from gnat-4.9 (4.9-20140411-1) unstable; urgency=medium + + [Nicolas Boulenguez] + * Revert g4.9-base to Architecture: all. Fixes: #743833. + * g4.9 Breaks/Replaces -base 4.6.4-2 and 4.9-20140330-1. Fixes: #743376. + + [Ludovic Brenta] + * debian/patches/ada-symbolic-tracebacks.diff: refresh. + + Merge from gnat-4.9 (4.9-20140406-1) experimental; urgency=low + + * debian/patches/ada-arm.diff: new. Improve support for ZCX on this + architecture. + * debian/patches/rules.patch: apply architecture- and Ada-specific + patches before Debian-specific patches. + * debian/patches/ada-link-lib.diff, + debian/patches/ada-libgnatvsn.diff, + debian/patches/ada-libgnatprj.diff: refresh for the new upstream + sources. + + Merge from gnat-4.9 (4.9-20140330-3) experimental; urgency=low + + [Nicolas Boulenguez] + * Install debian_packaging.mk to gnat-x.y, not -base. Fixes: #743375. + * rules.conf (Build-Depends): gnatgcc symlink provided by gnat-4.9 | + gnat-4.6 (>= 4.6.4-2) | gnat (>= 4.1 and << 4.6.1). + + Merge from gnat-4.9 (4.9-20140330-2) experimental; urgency=medium + + * Uploading to unstable was a mistake. Upload to experimental. + + Merge from gnat-4.9 (4.9-20140330-1) unstable; urgency=medium + + [Nicolas Boulenguez] + * patches/ada-ppc64.diff: replace undefined variable arch with + target_cpu; this overrides the patch proposed by Ulrich Weigand as + it is more correct; approved by Ludovic Brenta. Fixes: #742590. + * control.m4: Break/Replace: dh-ada-library 5.9. Fixes: #743219. + + Merge from gnat-4.9 (4.9-20140322-1) experimental; urgency=low + + [Nicolas Boulenguez] + * debian/control.m4: + (Suggests): suggest the correct version of ada-reference-manual. + (Vcs-Svn): specify the publicly accessible repository. + * Receive debian_packaging.mk from dh-ada-library (not library specific). + * Receive gnatgcc symlink from gnat (useful outside default compiler). + * debian/source/local-options: new. + + [Ludovic Brenta] + * debian/control.m4: conflict with gnat-4.7, gnat-4.8. + * debian/patches/ada-default-project-path.diff: when passed options such + as -m32 or -march, do not look for the RTS in + /usr/share/ada/adainclude but in + /usr/lib/gcc/$target_triplet/$version/{,rts-}$arch. Still look + for project files in /usr/share/ada/adainclude. + * debian/rules.d/binary-ada.mk, debian/rules.defs, debian/rules.patch: + Switch to ZCX by default on arm, armel, armhf; built SJLJ as the + package gnat-4.9-sjlj like on all other architectures. This is made + possible by the new upstream version. + * debian/patches/ada-hurd.diff (s-osinte-gnu.ads): change the type of + timespec.tv_nsec from long to time_t, for compatibility with + s-osinte-posix.adb, even though this violates POSIX. Better solution + to come from upstream. Fixes: #740286. + + -- Matthias Klose Wed, 23 Apr 2014 13:35:43 +0200 + +gcc-4.9 (4.9-20140411-2) unstable; urgency=medium + + * Disable running the testsuite on kfreebsd, hangs the buildds. + * Stop building the sanitizer libs on sparc, fails to build. No reaction + from the Debian port maintainers and upstream. See PR sanitize/59758. + + -- Matthias Klose Sat, 12 Apr 2014 15:42:34 +0200 + +gcc-4.9 (4.9-20140411-1) unstable; urgency=medium + + * GCC 4.9.0 release candidate 1. + * Configure for i586-linux-gnu on i386. + + -- Matthias Klose Fri, 11 Apr 2014 19:57:07 +0200 + +gcc-4.9 (4.9-20140406-1) experimental; urgency=medium + + [Matthias Klose] + * Include include and include-fixed header files into the stage1 + gcc-4.9 package. + * Explicitly configure with --disable-multilib on sparc64 when no + multilibs are requested (Helmut Grohne). Addresses: #743342. + * Drop mudflap from cross-install-location.diff since mudflap was removed + from gcc 4.9. Closes: #742606 + * Build gnat in ppc64el snapshot builds. + * Apply the ada-ppc64 patch for snapshot builds as well. + * Fix PR target/60609 (ARM), proposed patch (Charles Baylis). LP: #1295653. + * Include the gnu triplet prefixed gcov and gcc-{ar,nm,ranlib} binaries. + * Add replaces when upgrading from a standalone gccgo build. + + [Yunqiang Su] + * Lower default optimization for mips64/n32 to mips3/mips64(32). + Closes: #742617. + + -- Matthias Klose Sun, 06 Apr 2014 02:24:16 +0200 + +gcc-4.9 (4.9-20140330-1) experimental; urgency=medium + + * Package GCC 4.9 snapshot 20140330. + + [Matthias Klose] + * Update symbols files. + * debian/patches/ada-ppc64.diff: Fix for ppc64el (Ulrich Weigand). + * Fix cross building targeting x32 (Helmut Grohne). Addresses: #742539. + + [Ludovic Brenta] + * debian/control.m4 (Build-Depends), debian/rules.conf: remove + AUTOGEN_BUILD_DEP and hardcode autogen. It is called by + fixincludes/genfixes during bootstrap and also when building gnat-*, + not just when running checks on gcc-*. + + -- Matthias Klose Sun, 30 Mar 2014 09:46:29 +0100 + +gcc-4.9 (4.9-20140322-1) experimental; urgency=medium + + * Package GCC 4.9 snapshot 20140322. + - Fixes build error on the Hurd. Closes: #740153. + + [Matthias Klose] + * Re-apply lost patch for config.gcc for mips64el. Closes: #741543. + + Merge from gnat-4.9 (4.9-20140218-3) UNRELEASED; urgency=low + + [Nicolas Boulenguez] + * debian/control.m4: suggest the correct version of + ada-reference-manual. + + [Ludovic Brenta] + * debian/control.m4: conflict with gnat-4.7, gnat-4.8. + + Merge from gnat-4.9 (4.9-20140218-2) experimental; urgency=low + + * debian/patches/ada-hurd.diff (Makefile.in): match *86-pc-gnu but + not *86-linux-gnu, the target tripled used by GNU/Linux. + + Merge from gnat-4.9 (4.9-20140218-1) experimental; urgency=low + + [Ludovic Brenta] + * debian/patches/ada-symbolic-tracebacks.diff: refresh and fix compiler + warnings. + * debian/patches/ada-link-lib.diff (.../ada/gcc-interface/Make-lang.in): + do not try to install the gnattools, this is the job of + gnattools/Makefile.in. + * debian/patches/ada-ajlj.diff: specify EH_MECHANISM to sub-makes even + when making install-gnatlib. + + [Xavier Grave] + * debian/patches/ada-kfreebsd.diff: refresh. + * debian/rules.patch: re-enable the above. + + -- Matthias Klose Sat, 22 Mar 2014 14:19:43 +0100 + +gcc-4.9 (4.9-20140303-1) experimental; urgency=medium + + * Package GCC 4.9 snapshot 20140303. + + -- Matthias Klose Tue, 04 Mar 2014 02:13:20 +0100 + +gcc-4.9 (4.9-20140218-1) experimental; urgency=medium + + * Fix gij wrapper script on hppa. Closes: #739224. + + -- Matthias Klose Tue, 18 Feb 2014 23:59:31 +0100 + +gcc-4.9 (4.9-20140205-1) experimental; urgency=medium + + * Package GCC 4.9 snapshot 20140205. + * Install the libsanitizer spec file. + * Fix building standalone gccgo, including the libgcc packages. + * On AArch64, use "generic" target, if no other default. + + -- Matthias Klose Wed, 05 Feb 2014 12:53:52 +0100 + +gcc-4.9 (4.9-20140122-1) experimental; urgency=medium + + * Package GCC 4.9 snapshot 20140122. + * Update libstdc++ -dbg and -doc conflicts. + * Link libstdc++ tests requiring libpthread symbols with --no-as-needed. + * armhf: Fix ffi_call_VFP with no VFP arguments (Will Newton). + * Apply proposed patch for PR target/59799, allow passing arrays in + registers on AArch64 (Michael Hudson). + + -- Matthias Klose Wed, 22 Jan 2014 21:28:56 +0100 + +gcc-4.9 (4.9-20140116-1) experimental; urgency=medium + + * Package GCC 4.9 snapshot 20140116. + * Fix PR target/59588 (AArch64), backport proposed patch. LP: #1263576. + * Fix call frame information in ffi_closure_SYSV on AArch64. + + -- Matthias Klose Fri, 17 Jan 2014 00:31:19 +0100 + +gcc-4.9 (4.9-20140111-1) experimental; urgency=medium + + * Package GCC 4.9 snapshot 20140111. + * Update libstdc++ -dbg and -doc conflicts. Closes: #734913. + * Disable libcilkrts on KFreeBSD and the Hurd. See #734973. + + -- Matthias Klose Sat, 11 Jan 2014 13:11:16 +0100 + +gcc-4.9 (4.9-20140110-1) experimental; urgency=medium + + * Package GCC 4.9 snapshot 20140110. + + -- Matthias Klose Fri, 10 Jan 2014 18:03:07 +0100 + +gcc-4.9 (4.9-20140109-1) experimental; urgency=medium + + * Package GCC 4.9 snapshot. + + -- Matthias Klose Thu, 09 Jan 2014 18:57:46 +0100 + +gcc-4.8 (4.8.2-11) unstable; urgency=low + + * Update to SVN 20131230 (r206241) from the gcc-4_8-branch. + * Don't build x32 multilibs for wheezy backports. + * Set the goarch to arm64 for aarch64-linux-gnu. + * Fix statically linked gccgo binaries on AArch64 (Michael Hudson). + LP: #1261604. + * Merge accumulated Ada changes from gnat-4.8. + * Update gnat build dependencies when not built from a separate source. + * Default to -mieee on alpha again (Michael Cree). Closes: #733291. + * Prepare gnat package for cross builds. + + -- Matthias Klose Mon, 30 Dec 2013 08:52:29 +0100 + +gcc-4.8 (4.8.2-10) unstable; urgency=low + + * Update to SVN 20131213 (r205948) from the gcc-4_8-branch. + * Add missing commit in libjava for gcc-linaro. + + -- Matthias Klose Fri, 13 Dec 2013 01:01:47 +0100 + +gcc-4.8 (4.8.2-9) unstable; urgency=low + + * Update to SVN 20131212 (r205924) from the gcc-4_8-branch. + + [ Matthias Klose ] + * Fix libitm symbols files for ppc64. + * Update libatomic symbol file for arm64 and ppc64. + * libgcj-dev: Drop dependencies on gcj-jre-lib and gcj-jdk. + * Fix permissions of some override files. + * Let cross compilers conflict with gcc-multilib (providing + /usr/include/asm for the non-default multilib). + * Configure --with-long-double-128 on powerpcspe (Roland Stigge). + Closes: #731941. + * Update the Linaro support to the 4.8-2013.12 release. + * Update the ibm branch to 20131212. + + [ Aurelien Jarno ] + * patches/note-gnu-stack.diff: restore and rebase lost parts. + + -- Matthias Klose Thu, 12 Dec 2013 12:34:55 +0100 + +gcc-4.8 (4.8.2-8) unstable; urgency=medium + + * Update to SVN 20131203 (r205647) from the gcc-4_8-branch. + * Fix PR libgcc/57363, taken from the trunk. + + -- Matthias Klose Wed, 04 Dec 2013 01:21:10 +0100 + +gcc-4.8 (4.8.2-7) unstable; urgency=low + + * Update to SVN 20131129 (r205535) from the gcc-4_8-branch. + * Introduce aarch64 goarch. + * libgo: Backport fix for calling a function or method that takes or returns + an empty struct via reflection. + * go frontend: Backport fix for the generated hash functions of types that + are aliases for structures containing unexported fields. + * Skip Go testcase on AArch64 which hangs on the buildds. + * Fix freetype includes in libjava/classpath. + + -- Matthias Klose Fri, 29 Nov 2013 18:19:12 +0100 + +gcc-4.8 (4.8.2-6) unstable; urgency=low + + * Update to SVN 20131128 (r205478) from the gcc-4_8-branch. + + [ Matthias Klose ] + * gcc-4.8-base: Breaks gcc-4.4-base (<< 4.4.7). Closes: #729963. + * Update the gcc-as-needed patch for mips*. Closes: #722067. + * Use dpkg-vendor information for distribution specific settings. + Closes: #697805. + * Check for the sys/auxv.h header file. + * On AArch64, make the frame grow downwards, taken from the trunk. + Enable ssp on AArch64. + * Pass -fuse-ld=gold to gccgo on targets supporting split-stack. + + [ Aurelien Jarno ] + * Update README.Debian for s390 and s390x. + + [ Thorsten Glaser ] + * m68k-ada.diff: Add gcc-4.8.0-m68k-ada-pr48835-2.patch and + gcc-4.8.0-m68k-ada-pr51483.patch by Mikael Pettersson, to + fix more CC0-specific and m68k/Ada-specific problems. + * m68k-picflag.diff: New, backport from trunk, by Andreas Schwab, + to avoid relocation errors when linking big shared objects. + * pr58369.diff: New, backport from trunk, by Jeffrey A. Law, + to fix ICE while building boost 1.54 on m68k. + * pr52306.diff: Disables -fauto-inc-dec by default on m68k to + work around ICE when building C++ code (e.g. Qt-related). + + -- Matthias Klose Thu, 28 Nov 2013 10:29:09 +0100 + +gcc-4.8 (4.8.2-5) unstable; urgency=low + + * Update to SVN 20131115 (r204839) from the gcc-4_8-branch. + * Update the Linaro support to the 4.8-2013.11 release. + * Add missing replaces in libgcj14. Closes: #729022. + + -- Matthias Klose Sat, 16 Nov 2013 20:15:09 +0100 + +gcc-4.8 (4.8.2-4) unstable; urgency=low + + * Really fix disabling the gdc tests. + + -- Matthias Klose Wed, 13 Nov 2013 00:44:35 +0100 + +gcc-4.8 (4.8.2-3) unstable; urgency=low + + * Update to SVN 20131112 (r204704) from the gcc-4_8-branch. + * Don't ship java.security in both libgcj14 and gcj-4.8-headless. + Closes: #729022. + * Disable gdc tests on architectures without libphobos port. + + -- Matthias Klose Tue, 12 Nov 2013 18:08:44 +0100 + +gcc-4.8 (4.8.2-2) unstable; urgency=low + + * Update to SVN 20131107 (r204496) from the gcc-4_8-branch. + * Build ObjC, Obj-C++ and Go for AArch64. + * Fix some gcj symlinks. Closes: #726792, #728403. + * Stop building libmudflap (removed in GCC 4.9). + + -- Matthias Klose Thu, 07 Nov 2013 01:40:15 +0100 + +gcc-4.8 (4.8.2-1) unstable; urgency=low + + * GCC 4.8.2 release. + + * Update to SVN 20131017 (r203751) from the gcc-4_8-branch. + * Update the Linaro support to the 4.8-2013.10 release. + * Fix PR c++/57850, option -fdump-translation-unit not working. + * Don't run the testsuite on aarch64. + * Fix PR target/58578, wrong-code regression on ARM. LP: #1232017. + * [ARM] Fix bug in add patterns due to commutativity modifier, + backport from trunk. LP: #1234060. + * Build libatomic on AArch64. + * Fix dependency generation for the cross gcc-4.8 package. + * Make the libstdc++ pretty printers compatible with Python3, if + gdb is built with Python3 support. + * Fix loading of libstdc++ pretty printers. Closes: #701935. + * Don't let gcc-snapshot build-depend on gnat on AArch64. + + -- Matthias Klose Thu, 17 Oct 2013 14:37:55 +0200 + +gcc-4.8 (4.8.1-10) unstable; urgency=low + + * Update to SVN 20130904 (r202243) from the gcc-4_8-branch. + + [ Matthias Klose ] + * Don't rely on the most recent Debian release name for configuration + of the package. Addresses: #720263. Closes: #711824. + * Fix a cross build issue without DEB_* env vars set (Eleanor Chen). + Closes: #718614. + * Add packaging support for mips64(el) and mipsn32(el) including multilib + configurations (YunQiang Su). Addresses: #708143. + * Fix gcc dependencies for stage1 builds (YunQiang Su). Closes: #710240. + * Fix boehm-gc test failures with a linker defaulting to + --no-copy-dt-needed-entries. + * Fix libstdc++ and libjava test failures with a linker defaulting + to --as-needed. + * Mark the libjava/sourcelocation test as expected to fail on amd64 cpus. + * Fix some gcc and g++ test failures for a compiler with hardening + defaults enabled. + * Fix gcc-default-format-security.diff for GCC 4.8. + * Run the testsuite again on armel and armhf. + * Disable running the testsuite on mips. Fails on the buildds, preventing + migration to testing for three months. No feedback from the mips porters. + + [ Thorsten Glaser ] + * Merge several old m68k-specific patches from gcc-4.6 package: + - libffi-m68k: Rebased against gcc-4.8 and libffi 3.0.13-4. + - m68k-revert-pr45144: Needed for Ada. + - pr52714: Revert optimisation that breaks CC0 arch. + * Fix PR49847 (Mikael Pettersson). Closes: #711558. + * Use -fno-auto-inc-dec for PR52306 (Mikael Pettersson). + + -- Matthias Klose Wed, 04 Sep 2013 21:30:07 +0200 + +gcc-4.8 (4.8.1-9) unstable; urgency=low + + * Update to SVN 20130815 (r201764) from the gcc-4_8-branch. + * Enable gomp on AArch64. + * Update the Linaro support to the 4.8-2013.08 release. + + -- Matthias Klose Thu, 15 Aug 2013 10:47:38 +0200 + +gcc-4.8 (4.8.1-8) unstable; urgency=low + + * Fix PR rtl-optimization/57878, taken from the 4.8 branch. + * Fix PR target/57909 (ARM), Linaro only. + + -- Matthias Klose Mon, 22 Jul 2013 13:03:57 +0200 + +gcc-4.8 (4.8.1-7) unstable; urgency=low + + * Update to SVN 20130717 (r200995) from the gcc-4_8-branch. + - Go 1.1.1 updates. + * Define CPP_SPEC for aarch64. + * Don't include in libgcc/libgcc2.c, taken from the trunk. + Closes: #696267. + * boehm-gc: use mmap instead of brk also on kfreebsd-* (Petr Salinger). + Closes: #717024. + + -- Matthias Klose Thu, 18 Jul 2013 02:02:13 +0200 + +gcc-4.8 (4.8.1-6) unstable; urgency=low + + * Update to SVN 20130709 (r200810) from the gcc-4_8-branch. + + [ Aurelien Jarno ] + * Add 32-bit biarch packages on sparc64. + + [ Matthias Klose ] + * Fix multiarch include path for aarch64. + * Update the Linaro support to the 4.8-2013.07 release. + * Revert the proposed fix for PR target/57637 (ARM only). + * Let gfortran-4.8 provide gfortran-mod-10. Addresses #714730. + + [ Iain Buclaw ] + * Avoid compiler warnings redefining D builtin macros. + + -- Matthias Klose Tue, 09 Jul 2013 16:18:16 +0200 + +gcc-4.8 (4.8.1-5) unstable; urgency=low + + * Update to SVN 20130629 (r200565) from the gcc-4_8-branch. + + [ Aurelien Jarno ] + * Don't pass --with-mips-plt on mips/mipsel. + + [ Matthias Klose ] + * Fix documentation builds with texinfo-5.1. + * Update the ARM libsanitizer backport from the 4.8 Linaro branch. + * libphobos-4.8-dev provides libphobos-dev (Peter de Wachter). + * The gdc cross compiler doesn't depend on libphobos-4.8-dev. + * Work around libgo build failure on ia64. PR 57689. #714090. + * Apply proposed fix for PR target/57637 (ARM only). + + -- Matthias Klose Sat, 29 Jun 2013 14:59:45 +0200 + +gcc-4.8 (4.8.1-4) unstable; urgency=low + + * Update to SVN 20130619 (r200219) from the gcc-4_8-branch. + - Bump the libgo soname (change in type layout for functions that take + function arguments). + - Fix finding the liblto_plugin.so without x permissions set (see + PR driver/57651). Closes: #712704. + * Update maintainer list. + * Fall back to the binutils version of the binutils build dependency + if the binutils version used for the build cannot be determined. + * For ARM multilib builds, use libsf/libhf system directories to lookup + files for the non-default multilib (for now, only for the cross compilers). + * Split out a gcj-4.8 package, allow to build a gcj cross compiler. + * Allow one to cross build gcj. + * Don't include object.di in the D cross compiler, but depend on gdc instead. + * Allow one to cross build gdc. + * Pass --hash-style=gnu instead of --hash-style=both to the linker. + + -- Matthias Klose Wed, 19 Jun 2013 23:48:02 +0200 + +gcc-4.8 (4.8.1-3) unstable; urgency=low + + * Update to SVN 20130612 (r200018) from the gcc-4_8-branch. + + [ Matthias Klose ] + * Prepare gdc for cross builds, and multiarch installation. + * Prepare gnat to build out of the gcc-4.8 source package, not + building the gnat-4.8-base package anymore. + * Don't build a gcj cross compiler by default (not yet tested). + * Disable D on s390 (doesn't terminate the D testsuite). + * Build libphobos on x32. + * Fix build with DEB_BUILD_OPTIONS="nolang=d". + * Disable D for arm64. + * Update the Linaro support to the 4.8-2013.06 release. + * Fix cross building a native compiler. + * Work around dh_shlibdeps not working on target libraries (see #698881). + * Add build dependency on kfreebsd-kernel-headers (>= 0.84) [kfreebsd-any]. + * Add handling for unwind inside signal trampoline for kfreebsd (Petr + Salinger). Closes: #712016. + * Let gcc depend on the binutils upstream version it was built with. + Addresses #710142. + * Force a build using binutils 2.23.52 in unstable. + + [ Iain Buclaw ] + * Update gdc to 20130610. + * Build libphobos on kFreeBSD. + + -- Matthias Klose Wed, 12 Jun 2013 16:47:25 +0200 + +gcc-4.8 (4.8.1-2) unstable; urgency=low + + * Update to SVN 20130604 (r199596) from the gcc-4_8-branch. + * Force arm mode for libjava on armhf. + * Fix gdc build failure on kFreeBSD and the Hurd. + + -- Matthias Klose Tue, 04 Jun 2013 17:28:06 +0200 + +gcc-4.8 (4.8.1-1) unstable; urgency=low + + * GCC 4.8.1 release. + Support for C++11 ref-qualifiers has been added to GCC 4.8.1, making G++ + the first C++ compiler to implement all the major language features of + the C++11 standard. + * Update to SVN 20130603 (r199596) from the gcc-4_8-branch. + * Build java packages from this source package. Works aroud ftp-master's + overly strict interpretation of the Built-Using attribute. + * Build D and libphobos packages from this source package. + * Disable the non-default multilib test runs for libjava and gnat. + + -- Matthias Klose Mon, 03 Jun 2013 09:28:11 +0200 + +gcc-4.8 (4.8.0-9) unstable; urgency=low + + * Update to SVN 20130529 (r199410) from the gcc-4_8-branch. + * Drop build dependency on automake, not used anymore. + * Build with binutils from unstable (the 4.8.0-8 package was accidentally + built with binutils from experimental). Closes: #710142. + * Explicity configure with --disable-lib{atomic,quadmath,sanitizer} when + not building these libraries. Closes: #710224. + + -- Matthias Klose Wed, 29 May 2013 16:59:50 +0200 + +gcc-4.8 (4.8.0-8) unstable; urgency=medium + + * Update to SVN 20130527 (r199350) from the gcc-4_8-branch (4.8.1 rc2). + - Fix PR tree-optimization/57230 (closes: #707118). + + * Remove gdc-doc.diff. + * libgo: Overwrite the setcontext_clobbers_tls check on mips*, fails + on some buildds. + * Update the Linaro support to the 4.8-2013.05 release. + * Use the %I spec when building the object file for the gcj main function. + * Fix PR c++/57211, don't warn about unused parameters of defaulted + functions. Taken from the trunk. Closes: #705066. + * Update symbols files for powerpcspe (Roland Stigge). Closes: #709383. + * Build zh_TW.UTF-8 locale to fix libstdc++ test failures. + * Keep prev-* symlinks to fix plugin.exp test failures. + + -- Matthias Klose Mon, 27 May 2013 15:43:08 +0200 + +gcc-4.8 (4.8.0-7) unstable; urgency=medium + + * Update to SVN 20130512 (r198804) from the gcc-4_8-branch. + + [ Matthias Klose ] + * Revert the r195826 patch, backported for the 4.8 branch. + * Tighten build dependency on libmpc-dev to ensure using libmpc3. + * Re-add build dependency on locales. + * Enable multilib build for gdc. + * Add build-deps on libn32gcc1 and lib64gcc1 on mips/mipsel. + * Fix libgcc-dbg dependencies on hppa and m68k. Closes: #707745. + * Install host specific libstdc++ headers into the host include dir. + Closes: #707753. + * Enable Go for sparc64. + * Fix host specific c++ include dir on kfreebsd-amd64. Closes: #707957. + + [ Thorsten Glaser ] + * Regenerate m68k patches. Closes: #707766. + + [ Aurelien Jarno ] + * Fix libgcc1 symbols file for sparc64. + + -- Matthias Klose Sun, 12 May 2013 19:26:50 +0200 + +gcc-4.8 (4.8.0-6) unstable; urgency=low + + * Update to SVN 20130507 (r198699) from the gcc-4_8-branch. + + [ Samuel Thibault ] + * Backport r195826 to fix gdb build on hurd-i386. + + [ Matthias Klose ] + * Drop build dependency on locales for this upload. + + -- Matthias Klose Wed, 08 May 2013 01:17:15 +0200 + +gcc-4.8 (4.8.0-5) unstable; urgency=low + + * Update to SVN 20130506 (r198641) from the gcc-4_8-branch. + + [ Matthias Klose ] + * Stop building the spu cross compilers on powerpc and ppc64. + * Merge back changes from gnat-4.8 4.8.0-1~exp2. + + [Ludovic Brenta] + * debian/patches/ada-libgnatprj.diff: do not include indepsw.o in the + library, it is used only in the gnattools. + + -- Matthias Klose Mon, 06 May 2013 21:49:44 +0200 + +gcc-4.8 (4.8.0-4) experimental; urgency=low + + * Update to SVN 20130421 (r198115) from the gcc-4_8-branch. + * Ignore the return value for dh_shlibdeps for builds on precise/ARM. + * Use target specific names for libstdc++ baseline files. LP: #1168267. + * Update gcc-d-lang.diff for GDC port. + * Don't use extended libstdc++-doc build dependencies for older releases. + * In gnatlink, pass the options and libraries after objects to the + linker to avoid link failures with --as-needed. Addresses: #680292. + * Build gcj for aarch64-linux-gnu. + * Update the Linaro support to the 4.8-2013.04 release. + * Fix gdc build on architectures not providing libphobos. + + -- Matthias Klose Mon, 22 Apr 2013 01:36:19 +0200 + +gcc-4.8 (4.8.0-3) experimental; urgency=low + + * Update to SVN 20130411 (r197813) from the gcc-4_8-branch. + + [ Iain Buclaw ] + * Port GDC to GCC 4.8.0 release. + + -- Matthias Klose Thu, 11 Apr 2013 19:18:24 +0200 + +gcc-4.8 (4.8.0-2) experimental; urgency=low + + * Update to SVN 20130328 (r197185) from the gcc-4_8-branch. + * Update NEWS files. + * Apply proposed patch for PR c++/55951. Closes: #703945. + * Configure with --disable-libatomic for hppa64. Closes: #704020. + + -- Matthias Klose Thu, 28 Mar 2013 06:10:29 +0100 + +gcc-4.8 (4.8.0-1) experimental; urgency=low + + * GCC 4.8.0 release. + * Fix build failure on powerpcspe (Roland Stigge). Closes: #703074. + + -- Matthias Klose Fri, 22 Mar 2013 07:47:12 -0700 + +gcc-4.8 (4.8-20130318-1) experimental; urgency=low + + * GCC snapshot 20130318, taken from the trunk. + - Fix the build failures on ARM. + * Install the libasan_preinit.o files. Closes: #703229. + + -- Matthias Klose Mon, 18 Mar 2013 16:18:25 -0700 + +gcc-4.8 (4.8-20130315-1) experimental; urgency=low + + * GCC snapshot 20130315, taken from the trunk. + + -- Matthias Klose Fri, 15 Mar 2013 18:51:15 -0700 + +gcc-4.8 (4.8-20130308-1) experimental; urgency=low + + * GCC snapshot 20130308, taken from the trunk. + + -- Matthias Klose Fri, 08 Mar 2013 12:08:12 +0800 + +gcc-4.8 (4.8-20130222-1) experimental; urgency=low + + * GCC snapshot 20130222, taken from the trunk. + * Update libasan symbols files. + + -- Matthias Klose Sat, 23 Feb 2013 04:47:15 +0100 + +gcc-4.8 (4.8-20130217-1) experimental; urgency=low + + * GCC snapshot 20130217, taken from the trunk. + + * Update libasan symbols files. + * On alpha, link with --no-relax. Update libgcc1 symbols files (Michael + Cree). Closes: #699220. + + -- Matthias Klose Mon, 18 Feb 2013 03:12:31 +0100 + +gcc-4.8 (4.8-20130209-1) experimental; urgency=low + + * GCC snapshot 20130209, taken from the trunk. + + [ Matthias Klose ] + * Add a Build-Using attribute for each binary package, which can be + built from the gcc-4.7-source package (patch derived from a proposal by + Ansgar Burchardt). + - Use it for cross-compiler packages. + - Not yet used when building gcj, gdc or gnat using the gcc-source package. + These packages don't require an exact version of the gcc-source package, + but just a versions which is specified by the build dependencies. + * Fix dh_shlibdeps calls for the libgo packages. + * libstdc-doc: Depend on libjs-jquery. + * Update libstdc++ symbols files. + * Downgrade the priority of the non-default multilib libasan packages. + + [ Thibaut Girka ] + * Fix dh_shlibdeps and dh_gencontrol cross-build mangling for + libgfortran-dev packages. + + -- Matthias Klose Sat, 09 Feb 2013 17:00:06 +0100 + +gcc-4.8 (4.8-20130127-1) experimental; urgency=low + + * GCC snapshot 20130127, taken from the trunk. + + [ Matthias Klose ] + * Fix MULTILIB_OS_DIRNAME for the default multilib on x32. + + [ Thibaut Girka ] + * Fix installation path for libatomic and libsanitizer when building a + cross-compiler with with_deps_on_target_arch_pkgs. + * Fix regexp used to list patched autotools files. + + -- Matthias Klose Sun, 27 Jan 2013 21:02:34 +0100 + +gcc-4.8 (4.8-20130113-1) experimental; urgency=low + + * GCC snapshot 20130113, taken from the trunk. + * Always configure --with-system-zlib. + * Search library dependencies in the build-sysroot too. + * Don't complain about missing .substvars files when trying to mangle + these files. + * Add ARM multilib packages to the control file for staged cross builds. + * Fix ARM multilib shlibs dependency generation for cross builds. + * Don't call dh_shlibdeps for staged cross builds. These packages + are never shipped, and the information is irrelevant. + * Build the libasan and libtsan packages before libstdc++. + * Bump build dependencies on isl and cloog. + * Don't ship libiberty.a in gcc-4.8-hppa64. Closes: #659556. + + -- Matthias Klose Sun, 13 Jan 2013 16:42:33 +0100 + +gcc-4.8 (4.8-20130105-1) experimental; urgency=low + + * GCC snapshot 20130105, taken from the trunk. + * Keep the debug link for libstdc++6. Closes: #696854. + * Update libgfortran symbols file for the trunk. + * Fix libstdc++ symbols files for sparc 128bit symbols. + * Update libgcc and libstdc++ symbols files for s390. + * Keep the rt.jar symlink in the gcj-jre-headless package. + * Explicitly search multiarch and multilib system directories when + calling dh_shlibdeps. + * Let gjdoc accept -source 1.5|1.6|1.7. Addresses: #678945. + * Fix build configured with --enable-java-maintainer-mode. + * Don't ship .md5 files in the libstdc++-doc package. + + -- Matthias Klose Sat, 05 Jan 2013 13:47:51 +0100 + +gcc-4.8 (4.8-20130102-1) experimental; urgency=low + + * GCC snapshot 20130102, taken from the trunk. + + [ Matthias Klose ] + * Resolve libgo dependencies with the built runtime libraries. + * Fix g++-4.8-multilib dependencies. + + [ Thibaut Girka ] + * Prepare for optional dependencies on the packages built on the + target architecture. + * When using the above, + - use the same settings for gcc_lib_dir, sysroot, header and C++ header + locations as for the native build. + - install libraries into the multiarch directories. + - use cpp-4.x- instead of gcc-4.x-base to collect doc files. + + -- Matthias Klose Wed, 02 Jan 2013 14:51:59 +0100 + +gcc-4.8 (4.8-20121218-1) experimental; urgency=low + + * GCC snapshot 20121217, taken from the trunk. + * Fix dependency generation for asan and atomic multilibs. + * Fix libobjc-dbg dependencies on libgcc-dbg packages. + * Fix MULTIARCH_DIRNAME definition for powerpcspe (Roland Stigge). + Closes: #695661. + * Move .jar symlinks from the -jre-lib into the -jre-headless package. + + -- Matthias Klose Tue, 18 Dec 2012 16:44:42 +0100 + +gcc-4.8 (4.8-20121217-1) experimental; urgency=low + + * GCC snapshot 20121217, taken from the trunk. + * Fix package builds with the common libraries provided by a newer + gcc-X.Y package. + * Drop build-dependency on libelf. + * Drop the g++-multilib build dependency, use the built compiler to + check which multilib variants can be run. Provide an asm symlink for + the build. + * Stop configuring cross compilers --with-headers --with-libs. + * Always call dh_shlibdeps with -l, pointing to the correct dependency + packages. + * Fix cross build stage1 package installation, only including the target + files in the gcc package. + * Explicitly configure with --enable-multiarch when doing builds + supporting the multiarch layout. + * Only configure --with-sysroot, --with-build-sysroot when values are set. + * Revert: For stage1 builds, include gcc_lib_dir files in the gcc package. + * Allow multilib enabled stage1 and stage2 cross builds. + * Don't check glibc version to configure --with-long-double-128. + * Don't auto-detect multilib osdirnames. + * Don't set a LD_LIBRARY_PATH when calling dh_shlibdeps in cross builds. + * Allow building a gcj cross compiler. + * Pretend that wheezy has x32 support (sid is now known as wheezy :-/). + + -- Matthias Klose Mon, 17 Dec 2012 18:37:14 +0100 + +gcc-4.8 (4.8-20121211-1) experimental; urgency=low + + * GCC snapshot 20121211, taken from the trunk. + * Fix build failure on multilib configurations. + + -- Matthias Klose Tue, 11 Dec 2012 08:04:30 +0100 + +gcc-4.8 (4.8-20121210-1) experimental; urgency=low + + * GCC snapshot 20121210, taken from the trunk. + * For cross builds, don't use the multiarch location for the C++ headers. + * For cross builds, fix multilib inter package dependencies. + * For cross builds, fix libc6 dependencies for non-default multilib packages. + * Build libasan packages on powerpc, ppc64. + * Only run the libgo testsuite for flags configured in RUNTESTFLAGS. + * Remove the cross-includes patch, not needed anymore with --with-sysroot=/. + * For cross builds, install into /usr/lib/gcc-cross to avoid file conflicts + with the native compiler for the target architecture. + * For cross builds, don't add /usr/local/include to the standard include + path, however /usr/local/include/ is still on the path. + * For cross builds, provide symbols files based on the symbols files for + the native build. Not picked up by dh_makeshlibs yet. + * Drop the g++-multilib build dependency, use the built compiler to + check which multilib variants can be run. + * Fix spu cross build on powerpc/ppc64. + * Make libgcj packages Multi-Arch: same, append the Debian architecture + name to the gcj java home. + * Don't encode versioned build dependencies on binutils and dpkg-dev in + the control file (makes the package cross-buildable). + * Only include gengtype for native builds. Needs upstream changes. + See #645018. + * Fix cross build failure with --enable-libstdcxx-debug. + * Only install libbacktrace if it is built. + * When cross building the native compiler, configure --with-sysroot=/ + and without --without-isl. + + -- Matthias Klose Mon, 10 Dec 2012 14:40:14 +0100 + +gcc-4.8 (4.8-20121128-1) experimental; urgency=low + + [ Matthias Klose ] + * Update patches for GCC 4.8. + * Update debian/copyright for libatomic, libbacktrace, libsanitizer. + * Remove the soversion from the libstdc++*-dev packages. + * Build libatomic and libasan packages. + * Install the static libbacktrace library and header files. + * Update build-indep dependencies for building the libstdc++ docs. + * Fix build failure in libatomic with x32 multilibs, handle -mx32 like -m64. + * Apply proposed fix for PR fortran/55395, supposed to fix the build + failure on armhf and powerpc. + * For hardened builds, disable gcc-default-format-security for now, causing + build failure building the target libstdc++ library. + * Drop the gcc-no-add-needed patch, depend on binutils 2.22 instead. + * Fix gnat build failure on kfreebsd. + * Rename the gccgo info to gccgo-4.8 on installation. + * Install the libitm documentation (if built). + * Rename the gccgo info to gccgo-4.8 on installation, install into gccgo-4.8. + * Include libquadmath documentation in the gcc-4.8-doc package. + * Build libtsan packages. + * Add weak __aeabi symbols to the libgcc1 ARM symbol files. Closes: #677139. + * For stage1 builds, include gcc_lib_dir files in the gcc package. + * Point to gcc's README.Bugs when building gcj packages. Addresses: #623987. + + [ Thibaut Girka ] + * Fix libstdc++ multiarch include path for cross builds. + + -- Matthias Klose Sun, 28 Nov 2012 12:55:27 +0100 + +gcc-4.7 (4.7.2-12) experimental; urgency=low + + * Update to SVN 20121127 (r193840) from the gcc-4_7-branch. + - Fix PR middle-end/55331 (ice on valid), PR tree-optimization/54976 (ice + on valid), PR tree-optimization/54894 (ice on valid), + PR middle-end/54735 (ice on valid), PR c++/55446 (wrong code), + PR fortran/55314 (rejects valid). + + [ Matthias Klose ] + * Fix x32 multiarch name (x86_64-linux-gnux32). + * gcc-4.7-base: Add break to gcc-4.4-base (<< 4.4.7). Closes: #690172. + * Add weak __aeabi symbols to the libgcc1 ARM symbol files. Closes: #677139. + * For stage1 builds, include gcc_lib_dir files in the gcc package. + + [ Thibaut Girka ] + * Fix libstdc++ multiarch include path for cross builds. + + -- Matthias Klose Tue, 27 Nov 2012 11:02:10 +0100 + +gcc-4.7 (4.7.2-11) experimental; urgency=low + + * Update to SVN 20121124 (r193776) from the gcc-4_7-branch. + - Fix PR libgomp/55411, PR libstdc++/55413, PR middle-end/55142, + PR fortran/55352. + + * Update build-indep dependencies for building the libstdc++ docs. + * Drop the gcc-no-add-needed patch, depend on binutils 2.22 instead. + * Pass --hash-style=gnu instead of --hash-style=both. + * Link using --hash-style=gnu on arm64 by default. + * Split multiarch patches into local and upstreamed parts. + * Fix PR54974: Thumb literal pools don't handle PC rounding (Matthew + Gretton-Dann). LP: #1049614, #1065509. + * Rename the gccgo info to gccgo-4.7 on installation, install into gccgo-4.7. + * Include libquadmath documentation in the gcc-4.7-doc package. + * Don't pretend to understand .d files, no D frontend available for 4.7. + * Fix the multiarch c++ include path for multilib'd targets. LP: #1082344. + * Make explicit --{en,dis}able-multiarch options effecitive (Thorsten Glaser). + + -- Matthias Klose Sat, 24 Nov 2012 03:57:00 +0100 + +gcc-4.7 (4.7.2-10) experimental; urgency=low + + * Update to SVN 20121118 (r193598) from the gcc-4_7-branch. + - Fix PR target/54892 (ARM, LP: #1065122), PR rtl-optimization/54870, + PR rtl-optimization/53701, PR target/53975 (ia64), + PR tree-optimization/54902 (LP: #1065559), PR middle-end/54945, + PR target/55019 (ARM), PR c++/54984, PR target/55175, + PR tree-optimization/53708, PR tree-optimization/54985, + PR libstdc++/55169, PR libstdc++/55047, PR libstdc++/55123, + PR libstdc++/54075, PR libstdc++/28811, PR libstdc++/54482, + PR libstdc++/55028, PR libstdc++/55215, PR middle-end/55219, + PR tree-optimization/54986, PR target/55204, PR debug/54828, + PR tree-optimization/54877, PR c++/54988, PR other/52438, + PR fortran/54917, PR libstdc++/55320, PR libstdc++/53841. + + [ Matthias Klose ] + * Update the Linaro support to the 4.7-2012.11 release. + * Define MULTIARCH_DIRNAME for arm64 (Wookey). + * Let the lib*objc-dev packages depend on the lib*gcc-dev packages. + * Let the libstdc++-dev package depend on the libgcc-dev package. + * Drop the dependency of the libstdc++-dev package on g++, make + libstdc++-dev and libstdc++-pic Multi-Arch: same. Closes: #678623. + * Install override files before calling dh_fixperms. + * Backport the libffi arm64 port. + * Build libx32gcc-dev, libx32objc-dev and libx32gfortran-dev packages. + * Allow conditional building of the x32 multilibs. + * Fix libmudflap build failure for x32 multilibs. + * Fix dependency on glibc for triarch builds. + * Add build-{arch,indep} targets. + * Fix libquadmath x32 multilib builds on kernels which don't support x32. + * Fix location of x32 specific C++ header files. + * Turn on -D_FORTIFY_SOURCE=2 by default for C, C++, ObjC, ObjC++, + only if the optimization level is > 0. + * Keep the host alias when building multilib libraries which need to + be cross-built on some architectures/buildds. + * Update arm64 from the aarch64 branch 20121105. + * Fix PR other/54411, libiberty: objalloc_alloc integer overflows + (CVE-2012-3509). + * Use /usr/include//c++/4.x as the include directory + for host dependent c++ header files. + * Add alternative libelf-dev build dependency. Closes: #690952. + * Always build the aarch64-linux-gnu target from the Linaro branch. + * Add __gnu_* symbols to the libgcc1 symbols file for armel and armhf. + * For powerpcspe prevent floating point register handling when there + are none available (Roland Stigge). Closes: #693328. + * Don't apply hurd-pthread.diff for trunk builds, integrated + upstream (Samuel Thibault). Addresses: #692538. + * Again, suggest graphite runtime dependencies. + * Clean up libstdc++ man pages. Closes: #692445. + + [ Thibaut Girka ] + * Split out lib*gcc-dev packages. + * Split out lib*objc-dev packages. + * Split out lib*gfortran-dev packages. + + [ Daniel Schepler ] + * Add support for x32. Closes: #667005. + * New patch hjl-x32-gcc-4_7-branch.diff to incorporate changes from + that branch, including --with-abi=mx32 option. + * Split out lib*stdc++-dev packages. + + [ Marcin Juszkiewicz ] + * lib*-dev packages for cross builds are not Multi-Arch: same. LP: #1070694. + * Remove conflicts for armhf/armel cross packages. + + -- Matthias Klose Sun, 18 Nov 2012 17:54:15 +0100 + +gcc-4.7 (4.7.2-4) unstable; urgency=low + + * Fix PR c++/54858 (ice on valid), taken from the branch. + * Build again Go on armel and armhf. + + -- Matthias Klose Tue, 09 Oct 2012 12:00:59 +0200 + +gcc-4.7 (4.7.2-3) unstable; urgency=low + + * Revert the fix PR c/33763, and just disable the sorry message, + taken from the branch. Closes: #678589. LP: #1062343. + * Update libgo to 1.0.3. + * Go fixes: + - Fix a, b, c := b, a, 1 when a and b already exist. + - Fix some type reflection strings. + - Fix parse of (<- chan <- chan <- int)(x). + - Fix handling of omitted expression in switch. + - Better error for switch on non-comparable type. + * Fix PR debug/53135 (ice on valid), PR target/54703 (x86, wrong code), + PR c++/54777 (c++11, rejects valid), taken from the 4.7 branch. + * gcc-4.7-base: ensure smooth upgrades from squeeze by adding + Breaks: gcj-4.4-base (<< 4.4.6-9~), gnat-4.4-base (<< 4.4.6-3~) + as in gcc-4.4-base (multiarch patches re-worked in 4.6.1-8/4.4.6-9). + Fixes some squeeze->wheezy upgrade paths where apt chooses to hold back + gcc-4.4-base and keep gcj-4.4-base installed instead of upgrading + gcc-4.4-base and removing the obsolete gcj-4.4-base (Andreas Beckmann). + Closes: #677582. + * Add arm64 support, partly based on Wookey's patches (only applied for + arm64). Disabled for arm64 are ssp, gomp, mudflap, boehm-gc, Ada, ObjC, + Obj-C++ and Java). + + -- Matthias Klose Fri, 05 Oct 2012 20:00:30 +0200 + +gcc-4.7 (4.7.2-2) unstable; urgency=low + + * Fix PR tree-optimization/54563 (ice on valid), PR target/54564 (fma builtin + fix), PR c/54552 (ice on valid), PR lto/54312 (memory hog), PR c/54103 (ice + on valid), PR middle-end/54638 (memory corruption), taken from the 4.7 + branch. + * Go fixes, taken from the 4.7 branch. + * On ARM, don't warn anymore that 4.4 has changed the `va_list' mangling, + taken from the trunk. + * Mention the NEWS changes for all uploads. Closes: #688278. + + -- Matthias Klose Fri, 21 Sep 2012 11:58:10 +0200 + +gcc-4.7 (4.7.2-1) unstable; urgency=low + + * GCC 4.7.2 release. + * Issues addressed after the release candidate: + - PR c++/53661 (wrong warning), LTO backport from trunk, documentation fix. + * Update NEWS files. + + -- Matthias Klose Thu, 20 Sep 2012 12:19:07 +0200 + +gcc-4.7 (4.7.1-9) unstable; urgency=low + + * GCC 4.7.2 release candidate 1. + * Update to SVN 20120914 (r191306) from the gcc-4_7-branch. + - Fix PR libstdc++/54388, PR libstdc++/54172, PR libstdc++/54172, + PR debug/54534, PR target/54536 (AVR), PR middle-end/54515 (ice on valid), + PR c++/54506 (rejects valid), PR c++/54341 (ice on valid), + PR c++/54253 (ice on valid), PR c/54559 (closes: #687496), + PR gcov-profile/54487, PR c++/53839, PR c++/54511, PR c++/53836, + PR fortran/54556. + * Update the Linaro support to the 4.7-2012.09 release. + - Adds support for the NEON vext instruction when shuffling. + - Backports improvements to scheduling transfers between VFP and core + registers. + - Backports support for the UBFX instruction on certain bit extract idioms. + + -- Matthias Klose Fri, 14 Sep 2012 19:12:47 +0200 + +gcc-4.7 (4.7.1-8) unstable; urgency=low + + * Update to SVN 20120908 (r191092) from the gcc-4_7-branch. + - Fix PR libstdc++/54376, PR libstdc++/54297, PR libstdc++/54351, + PR libstdc++/54297, PR target/54461 (AVR), PR target/54476 (AVR), + PR target/54220 (AVR), PR fortran/54208 (rejects valid), + PR middle-end/53667 (wrong code), PR target/54252 (ARM, wrong code), + PR rtl-optimization/54455 (ice on valid), PR driver/54335 (docs), + PR tree-optimization/54498 (wrong code), PR target/45070 (wrong code), + PR tree-optimization/54494 (wrong code), PR target/54436 (x86), + PR c/54428 (ice on valid), PR c/54363 (ice on valid, closes: #684635), + PR rtl-optimization/54369 (mips, sparc, wrong code), PR middle-end/54146, + PR target/46254 (ice on valid), PR rtl-optimization/54088 (ice on valid), + PR target/54212 (ARM, wrong code), PR c++/54197 (wrong code), + PR lto/53572, PR tree-optimization/53922 (wrong code). + - Go fixes. + + [ Nobuhiro Iwamatsu ] + * Remove sh4-enable-ieee.diff, -mieee enabled by default. Closes: #685975. + + [ Matthias Klose ] + * Fix PR c++/54341, PR c++/54253, taken from the trunk. Closes: #685430. + * Update libitm package description. Closes: #686802. + + -- Matthias Klose Fri, 07 Sep 2012 22:16:55 +0200 + +gcc-4.7 (4.7.1-7) unstable; urgency=low + + * Update to SVN 20120814 (r190380) from the gcc-4_7-branch. + - Fix PR libstdc++/54036, PR target/53961 (x86), PR libstdc++/54185, + PR rtl-optimization/53942, PR rtl-optimization/54157. + + [ Thibaut Girka ] + * Fix cross compilers for 64bit architectures when using + DEB_CROSS_NO_BIARCH. + * Fix glibc dependency for multiarch enabled builds for architectures + with a different libc-dev package name. + + [ Aurelien Jarno ] + * powerpc64: Fix non-multilib builds. + + [ Matthias Klose ] + * Fix syntax error generating the control file for cross builds. + Closes: #682104. + * spu build: Move static libraries to version specific directories. + Closes: #680022. + * Don't run the libstdc++ tests on mipsel, times out on the buildds. + * Update the Linaro support to the 4.7-2012.08 release. + + -- Matthias Klose Tue, 14 Aug 2012 13:58:03 +0200 + +gcc-4.7 (4.7.1-6) unstable; urgency=low + + * Update to SVN 20120731 (r190015) from the gcc-4_7-branch. + - Fix PR libstdc++/54075, PR libstdc++/53270, PR libstdc++/53978, + PR target/33135 (SH), PR target/53877 (x86), PR rtl-optimization/52250, + PR middle-end/54017, PR target/54029, PR target/53961 (x86), + PR target/53110 (x86), PR rtl-optimization/53908, PR c++/54038, + PR c++/54026, PR c++/53995, PR c++/53989, PR c++/53549 (closes: #680931), + PR c++/53953. + + -- Matthias Klose Tue, 31 Jul 2012 20:00:56 +0200 + +gcc-4.7 (4.7.1-5) unstable; urgency=high + + * Update to SVN 20120713 (r189464) from the gcc-4_7-branch. + - Fix PR libstdc++/53657, PR c++/53733 (DR 1402), PR target/53811, + PR target/53853. + + -- Matthias Klose Fri, 13 Jul 2012 16:59:59 +0200 + +gcc-4.7 (4.7.1-4) unstable; urgency=medium + + * Update to SVN 20120709 (r189388) from the gcc-4_7-branch. + - Fix PR libstdc++/53872, PR libstdc++/53830, PR bootstrap/52947, + PR middle-end/52786, PR middle-end/50708, PR tree-optimization/53693, + PR middle-end/52621, PR middle-end/53433, PR fortran/53732, + PR libstdc++/53578, PR c++/53882 (closes: #680521), PR c++/53826. + * Update the Linaro support to the 4.7-2012.07 release. + * Fix build on pre-multiarch releases (based on a patch from Chip Salzenberg). + Closes: #680590. + + -- Matthias Klose Mon, 09 Jul 2012 18:58:47 +0200 + +gcc-4.7 (4.7.1-3) unstable; urgency=low + + * Update to SVN 20120703 (r189219) from the gcc-4_7-branch. + - Fix PR preprocessor/37215, PR middle-end/38474, PR target/53595 (AVR), + PR middle-end/53790, PR debug/53682, PR target/53759 (x86), + PR c++/53816, PR c++/53821, PR c++/51214, PR c++/53498, PR c++/53305, + PR c++/52988 (wrong code), PR c++/53202 (wrong code), PR c++/53594. + - The change for PR libstdc++/49561 was reverted. The std::list size is + now the same again in c++98 and c++11 mode. + * Revert the local std::list work around. + * Build using isl instead of ppl for snapshot builds. + + -- Matthias Klose Tue, 03 Jul 2012 15:07:14 +0200 + +gcc-4.7 (4.7.1-2) unstable; urgency=medium + + * Update to SVN 20120623 (r188906) from the gcc-4_7-branch. + - Fix PR rtl-optimization/53700 (closes: #677678), PR target/52908, + PR libstdc++/53270, PR libstdc++/53678, PR gcov-profile/53744, + PR c++/52637, PR middle-end/53470, PR c++/53651, PR c++/53137, + PR c++/53599, PR fortran/53691, PR fortran/53685, PR ada/53592. + * Update NEWS files for 4.7.1. + * Bump gcc/FULL-VERSION to 4.7.1. + * Update the Linaro support to the 4.7-2012.06 release. + * Restore std::list ABI compatibility in c++11 mode. The upstream behaviour + can be enabled defining __CXX0X_STD_LIST_ABI_INCOMPAT__. This work around + will be replaced with an upstream solution. + * Fix PR debug/53682, taken from the trunk. Closes: #677606. + * Use $(with_gccbase) and $(with_gccxbase) to determine whether to enable it + in the control file (Thibaut Girka). + * When building a cross-compiler, runtime libraries for the target + architecture may be cross-built. Tell debhelper/dpkg-dev those packages + are indeed for a foreign architecture (Thibaut Girka). + + -- Matthias Klose Sat, 23 Jun 2012 11:58:35 +0200 + +gcc-4.7 (4.7.1-1) unstable; urgency=low + + * GCC 4.7.1 release. + + -- Matthias Klose Fri, 15 Jun 2012 00:38:27 +0200 + +gcc-4.7 (4.7.0-13) unstable; urgency=low + + * Update to SVN 20120612 (r188457) from the gcc-4_7-branch. + - Fix PR c++/53602 (LP: #1007616). + + * Document the changed ssp-buffer-size default in Ubuntu 10.10 and + later (Kees Cook). LP: #990141. + * Fix PR c++/26155, ICE after error with namespace alias. LP: #321883. + * Fix PR c++/53599 (reverting the fix for PR c++/53137). + Closes: #676729. LP: #1010896. + * Fix manual page names for cross builds (Thibaut Girka). Closes: #675516. + * Remove dpkg-cross build dependency for cross builds (Thibaut Girka). + Closes: #675511. + + -- Matthias Klose Tue, 12 Jun 2012 15:47:57 +0200 + +gcc-4.7 (4.7.0-12) unstable; urgency=low + + * Update to SVN 20120606 (r188261) from the gcc-4_7-branch (release + candidate 1 or 4.7.1). + - Fix PR libstdc++/52007, PR c++/53524, PR target/53559, + PR middle-end/47530, PR middle-end/53471, PR middle-end/52979, + PR target/46261, PR tree-optimization/53550, PR middle-end/52080, + PR middle-end/52097, PR middle-end/48124, PR middle-end/53501, + PR target/52667, PR target/52642, PR middle-end/48493, PR c++/53524, + PR c++/52973, PR c++/52725, PR c++/53137, PR c++/53484, PR c++/53500, + PR c++/52905, PR fortran/53521. + - Go and libgo updates. + * Include README.Debian in README.Debian.. + * Fix PR c/33763, proposed patch from the issue. Closes: #672411. + * Fix build failure in libgo with hardening defaults. + + -- Matthias Klose Wed, 06 Jun 2012 13:22:27 +0200 + +gcc-4.7 (4.7.0-11) unstable; urgency=low + + * Update to SVN 20120530 (r188035) from the gcc-4_7-branch. + - Fix PR c++/53356, PR c++/53491, PR c++/53503, PR c++/53220, + PR middle-end/53501, PR rtl-optimization/53519, + PR tree-optimization/53516, PR tree-optimization/53438, + PR target/52999, PR middle-end/53008. + + [ Matthias Klose ] + * Build-depend on netbase when building Go. Closes: #674306. + + [ Marcin Juszkiewicz ] + * Use the multiarch default for staged builds. + + -- Matthias Klose Thu, 31 May 2012 08:25:08 +0800 + +gcc-4.7 (4.7.0-10) unstable; urgency=low + + * Update to SVN 20120528 (r187927) from the gcc-4_7-branch. + - Fix PR rtl-optimization/52528, PR lto/52178, PR target/53435, + PR ada/52362, PR target/53385, PR middle-end/53460, + PR tree-optimization/53465, PR target/53448, PR tree-optimization/53408, + PR ada/52362, PR fortran/53389. + * Fix warning building libiberty/md5.c. PR other/53285. Closes: #674830. + + -- Matthias Klose Mon, 28 May 2012 11:30:36 +0800 + +gcc-4.7 (4.7.0-9) unstable; urgency=low + + * Update to SVN 20120522 (r187756) from the gcc-4_7-branch. + - Fix PR bootstrap/53183, PR tree-optimization/53436, + PR tree-optimization/53366, PR tree-optimization/53409, + PR tree-optimization/53410, PR c/53418, PR target/53416, + PR middle-end/52584, PR debug/52727, PR tree-optimization/53364, + PR target/53358, PR rtl-optimization/52804, PR target/46098, + PR target/53256, PR c++/53209, PR c++/53301, PR ada/52494, + PR fortran/53310 + * Update the Linaro support to the 4.7-2012.05 release. + + -- Matthias Klose Tue, 22 May 2012 13:01:33 +0800 + +gcc-4.7 (4.7.0-8) unstable; urgency=low + + * Update to SVN 20120509 (r187339) from the gcc-4_7-branch. + - Fix PR libstdc++/53193, PR target/53272, PR tree-optimization/53239, + PR tree-optimization/53195, PR target/52999, PR target/53228, + PR tree-optimization/52633, PR tree-optimization/52870, PR target/48496, + PR target/53199, PR target/52684, PR lto/52605, PR plugins/53126, + PR debug/53174, PR target/53187, PR tree-optimization/53144, + PR c++/53186, PR fortran/53255, PR fortran/53111, PR fortran/52864. + - Fix plugin check in gcc-{ar,nm,ranlib}-4.7. + * Install man pages for gcc-{ar,nm,ranlib}-4.7. + + -- Matthias Klose Mon, 07 May 2012 21:56:42 +0200 + +gcc-4.7 (4.7.0-7) unstable; urgency=low + + * Update to SVN 20120502 (r187039) from the gcc-4_7-branch. + - Fix PR libstdc++/53115, PR tree-optimization/53163, + PR rtl-optimization/53160, PR middle-end/53136, PR fortran/53148. + - libgo fix for mips. + * Fix setting MULTILIB_DEFAULTS for ARM multilib builds. + * Build Go on mips. + * Revert: Don't build multilib gnat on armel and armhf. + * Fix multiarch patch for alpha (Michael Cree). Closes: #670571. + * Fix Go multilib packaging issue for mips and mipsel. + + -- Matthias Klose Wed, 02 May 2012 12:42:01 +0200 + +gcc-4.7 (4.7.0-6) unstable; urgency=low + + * Update to SVN 20120430 (r186964) from the gcc-4_7-branch. + - Fix PR target/53138. + * Build Go on ARM. + * Treat wheezy the same as sid in more places (Peter Green). + Addresses: #670821. + + -- Matthias Klose Mon, 30 Apr 2012 13:06:21 +0200 + +gcc-4.7 (4.7.0-5) unstable; urgency=medium + + * Update to SVN 20120428 (r186932) from the gcc-4_7-branch. + - Fix PR c/52880, PR target/53065, PR tree-optimization/53085, + PR c/51527, PR target/53120. + + [ Matthias Klose ] + * Don't build multilib gnat on armel and armhf. + * Don't try to run the libstdc++ testsuite if the C++ frontend isn't built. + * Install the unwind-arm-common.h header file. + * Fix ARM biarch package builds. + + [ Aurelien Jarno ] + * Reenable parallel builds on GNU/kFreeBSD. + * Fix libgcc building on MIPS N32/64. Closes: #669858. + * Add libn32gcc1 and lib64gcc1 symbols files on mips and mipsel. + + -- Matthias Klose Sat, 28 Apr 2012 11:59:36 +0200 + +gcc-4.7 (4.7.0-4) unstable; urgency=low + + * Update to SVN 20120424 (r186746) from the gcc-4_7-branch. + - Fix PR libstdc++/52924, PR libstdc++/52591, PR middle-end/52894, + PR testsuite/53046, PR libstdc++/53067, PR libstdc++/53027, + PR libstdc++/52839, PR bootstrap/52840, PR libstdc++/52689, + PR libstdc++/52699, PR libstdc++/52822, PR libstdc++/52942, + PR middle-end/53084, PR middle-end/52999, PR c/53060, + PR tree-optimizations/52891, PR target/53033, PR target/53020, + PR target/52932, PR middle-end/52939, PR tree-optimization/52969, + PR c/52862, PR target/52775, PR tree-optimization/52943, PR c++/53003, + PR c++/38543, PR c++/50830, PR c++/50303, PR c++/52292, PR c++/52380, + PR c++/52465, PR c++/52824, PR c++/52906. + + [ Matthias Klose ] + * Update the Linaro support to the 4.7-2012.04 release. + * Set the ARM hard-float linker path according to the consensus: + http://lists.linaro.org/pipermail/cross-distro/2012-April/000261.html + * Reenable the spu build on ppc64. Closes: #668272. + * Update and reenable the gcc-cloog-dl patch. + + [ Samuel Thibault ] + * ada-s-osinte-gnu.adb.diff, ada-s-osinte-gnu.ads.diff, + ada-s-taprop-gnu.adb.diff, gcc_ada_gcc-interface_Makefile.in.diff: + Add ada support for GNU/Hurd, thanks Svante Signell for the patches + and bootstrap! (Closes: #668426). + + -- Matthias Klose Tue, 24 Apr 2012 08:44:15 +0200 + +gcc-4.7 (4.7.0-3) unstable; urgency=low + + * Update to SVN 20120409 (r186249) from the gcc-4_7-branch. + - Fix PR libitm/52854, PR libstdc++/52476, PR target/52717, + PR tree-optimization/52406, PR c++/52596, PR c++/52796, + PR fortran/52893, PR fortran/52668. + + [ Matthias Klose ] + * Re-add missing dependency on libgcc in gcc-multilib. Closes: #667519. + * Add support for GNU locales for GNU/Hurd (Svante Signell). + Closes: #667662. + * Reenable the spu build on ppc64. Closes: #664617. + * Apply proposed patch for PR52894, stage1 bootstrap failure on hppa + (John David Anglin). Closes: #667969. + + [ Nobuhiro Iwamatsu ] + * Fix cross build targeting sh4. Closes: #663028. + * Enable -mieee by default on sh4. Closes: #665328. + + -- Matthias Klose Mon, 09 Apr 2012 22:24:14 +0200 + +gcc-4.7 (4.7.0-2) unstable; urgency=low + + * Update to SVN 20120403 (r186107) from the gcc-4_7-branch. + - Fix PR middle-end/52547, PR libstdc++/52540, PR libstdc++/52433, + PR target/52507, PR target/52505, PR target/52461, PR target/52508, + PR c/52682, PR target/52610, PR middle-end/52640, PR target/50310, + PR target/48596, PR target/48806, PR middle-end/52547, R target/52496, + PR rtl-optimization/52543, PR target/52461, PR target/52488, + PR target/52499, PR target/52148, PR target/52496, PR target/52484, + PR target/52506, PR target/52505, PR target/52461, PR other/52545, + PR c/52577, PR c++/52487, PR c++/52671, PR c++/52582, PR c++/52521, + PR fortran/52452, PR target/52737, PR target/52698, PR middle-end/52693, + PR middle-end/52691, PR middle-end/52750, PR target/52692, + PR middle-end/51893, PR target/52737, PR target/52736, PR middle-end/52720, + PR c++/52672, PR c++/52718, PR c++/52685, PR c++/52759, PR c++/52743, + PR c++/52746, PR libstdc++/52799, PR libgfortran/52758, + PR middle-end/52580, PR middle-end/52493, PR tree-optimization/52678, + PR tree-optimization/52701, PR tree-optimization/52754, + PR tree-optimization/52835. + + [ Matthias Klose ] + * Update NEWS files for 4.7. + * Include -print-multiarch option in gcc --help output. Closes: #656998. + * Don't build Go on MIPS. + * Update alpha-ieee.diff for 4.7. + * Update gcc-multiarch.diff for sh4 (untested). Closes: #665935. + * Update gcc-multiarch.diff for hppa (untested). Closes: #666162. + * Re-add build dependency on doxygen. + + [ Samuel Thibault ] + * debian/patches/ada-bug564232.diff: Enable on hurd too. + * debian/patches/ada-libgnatprj.diff: Add hurd configuration. + + -- Matthias Klose Tue, 03 Apr 2012 16:30:58 +0200 + +gcc-4.7 (4.7.0-1) unstable; urgency=low + + * GCC 4.7.0 release. + + -- Matthias Klose Fri, 23 Mar 2012 05:44:37 +0100 + +gcc-4.7 (4.7.0~rc2-1) experimental; urgency=low + + * GCC-4.7 release candidate 2 (r185376). + * libgo: Work around parse error of struct timex_ on ARM. + * Update libstdc++6 symbols files. + * Allow building Go from a separate source package. + * Don't configure with --enable-gnu-unique-object on kfreebsd and hurd. + * Include -print-multiarch option in gcc --help output. Closes: #656998. + * Disable Go on mips* (PR go/52586). + + -- Matthias Klose Wed, 14 Mar 2012 15:49:39 +0100 + +gcc-4.7 (4.7.0~rc1-2) experimental; urgency=low + + * Update to SVN 20120310 (r185183) from the gcc-4_6-branch. + * Always configure with --enable-gnu-unique-object. LP: #949805. + * Enable Go for ARM on releases with working getcontext/setcontext. + + -- Matthias Klose Sat, 10 Mar 2012 23:29:45 +0100 + +gcc-4.7 (4.7.0~rc1-1) experimental; urgency=low + + * GCC-4.7 release candidate 1 (r184777). + + [ Marcin Juszkiewicz ] + * Fix ARM sf/hf multilib dpkg-shlibdeps dependency generation. + + [ Matthias Klose ] + * PR go/52218, don't build Go on ARM, getcontext/setcontext exists, + but return ENOSYS. + * Fix multiarch build on ia64. + * Fix path calculation for the libstdc++ -gdb.py file when installed into + multiarch locations. Closes: #661385. LP: #908163. + * Disable Go on sparc (libgo getcontext/setcontext check failing). + + [ Thorsten Glaser ] + * Apply patch from Alan Hourihane to fix err_bad_abi testcase on m68k. + + [ Jonathan Nieder ] + * libstdc++6: Depends on libc (>= 2.11) for STB_GNU_UNIQUE support + (Eugene V. Lyubimkin). Closes: #584572. + * libstdc++6, libobjc2, libgfortran3, libmudflap0, libgomp1: Breaks + pre-multiarch gcc. Closes: #651550. + * libstdc++6: Lower priority from required to important. Closes: #661118. + + [Samuel Thibault] + * Remove local patch, integrated upstream. Closes: ##661859. + + -- Matthias Klose Fri, 02 Mar 2012 18:42:56 +0100 + +gcc-4.7 (4.7-20120210-1) experimental; urgency=low + + * GCC-4.7 snapshot build, taken from the trunk 20120210 (r184114). + * kbsd-gnu.diff: Remove, integrated upstream. + * Strip whitespace from with_libssp definition. Closes: #653255. + * Remove soft-float symbols from 64bit powerpc libgcc1 symbols files. + * Fix control file generation for cross packages. LP: #913734. + + -- Matthias Klose Fri, 10 Feb 2012 21:38:12 +0100 + +gcc-4.7 (4.7-20120205-1) experimental; urgency=low + + * GCC-4.7 snapshot build, taken from the trunk 20120205 (r183903). + * Enable Go on arm*, ia64, mips*, powerpc, s390*, sparc*. + * libgo: Fix ioctl macro extracton. + * Fix PR middle-end/52074, ICE in libgo on powerpc. + * Revert: * Install static libc++{98,11} libraries. + * Don't strip a `/' sysroot from the C++ include directories. + Closes: #658442. + + -- Matthias Klose Sun, 05 Feb 2012 09:16:03 +0100 + +gcc-4.7 (4.7-20120129-1) experimental; urgency=low + + * GCC-4.7 snapshot build, taken from the trunk 20120129 (r183674). + * Configure --with-sysroot for wheezy and sid. + * Install static libc++{98,11} libraries. + * Install libstdc++ gdb.py file into /usr/lib/debug. + * Just copy libstdc++convenience.a for the libstdc++_pic installation. + * Remove trailing dir separator from system root. + + -- Matthias Klose Sun, 29 Jan 2012 08:19:27 +0100 + +gcc-4.7 (4.7-20120121-1) experimental; urgency=low + + * GCC-4.7 snapshot build, taken from the trunk 20120121 (r183370). + + [ Matthias Klose ] + * Fix C++ include paths when configured --with-system-root. + + [ Marcin Juszkiewicz ] + * Fix control file generation for ARM multiarch cross builds. + + -- Matthias Klose Sat, 21 Jan 2012 20:24:29 +0100 + +gcc-4.7 (4.7-20120107-1) experimental; urgency=low + + * GCC-4.7 snapshot build, taken from the trunk 20120107 (r182981). + + * On armel/armhf, allow g*-multilib installation using the runtime + libraries of the corresponding multiarch architecture. + * Fix location of .jinfo files. Addresses: #654579. + * Replace Fortran 95 with Fortran in package descriptions. + + -- Matthias Klose Sat, 07 Jan 2012 21:24:56 +0100 + +gcc-4.7 (4.7-20111231-1) experimental; urgency=low + + * GCC-4.7 snapshot build, taken from the trunk 20111231 (r182754). + + [ Aurelien Jarno ] + * Re-enable parallel builds on kfreebsd-i386, as the problem from bug + #637236 only affects kfreebsd-amd64. + + [ Matthias Klose ] + * Fix generating libphobos dependency for gdc. Addresses: #653078. + * Link libmudflapth.so with -lpthread. + + -- Matthias Klose Sat, 31 Dec 2011 09:42:13 +0100 + +gcc-4.7 (4.7-20111222-1) experimental; urgency=low + + * Update to SVN 20111222 (r182617) from the trunk. + + [Matthias Klose] + * Remove obsolete ARM patch. + * Install loongson.h header. + * Update libgcc and libstdc++ symbols files. + + [Samuel Thibault] + * Update hurd patch for 4.7, fixing build failure. Closes: #652693. + + [Robert Millan] + * Update kbsd-gnu.diff for the trunk. + + -- Matthias Klose Thu, 22 Dec 2011 10:52:01 +0100 + +gcc-4.7 (4.7-20111217-2) experimental; urgency=low + + * Don't provide 4.6.x symlinks. + * Disable multilib for armhf. + * Fix spu installation. + + -- Matthias Klose Sun, 18 Dec 2011 17:22:10 +0100 + +gcc-4.7 (4.7-20111217-1) experimental; urgency=low + + * GCC-4.7 snapshot build. + - Including the GFDL documentation; will stay in experimental + until the 4.7.0 release sometime next year. + * Update patches for the trunk. + * Update symbols files. + * Build libitm packages. + + -- Matthias Klose Sat, 17 Dec 2011 23:19:46 +0100 + +gcc-4.6 (4.6.2-9) unstable; urgency=medium + + * Update to SVN 20111217 (r182430) from the gcc-4_6-branch. + - Fix PR c++/51331. + * Fix build dependencies for armel/armhf. + + -- Matthias Klose Sat, 17 Dec 2011 10:40:26 +0100 + +gcc-4.6 (4.6.2-8) unstable; urgency=low + + * Update to SVN 20111216 (r182407) from the gcc-4_6-branch. + - Fix PR tree-optimization/51485, PR tree-optimization/50569, PR c++/51248, + PR c++/51406, PR c++/51161, PR rtl-optimization/49720, PR fortran/50923, + PR fortran/51338, PR fortran/51550, PR fortran/47545, PR fortran/49050, + PR fortran/51075. + + [ Matthias Klose ] + * gdc-4.6: Provide -{gdc,gdmd}-4.6 symlinks. + + [Ludovic Brenta] + Merge from gnat-4.6 (4.6.2-2) unstable; urgency=low + [Євгеній Мещеряков] + * debian/patches/pr47818.diff: new. Fixes: #614402. + * debian/rules.patch: apply it. + + Merge from gnat-4.6 (4.6.2-1) unstable; urgency=low + [Ludovic Brenta] + * Suggest ada-reference-manual-{html,info,pdf,text} instead of just + ada-reference-manual which no longer exists. + * Do not suggest gnat-gdb, superseded by gdb. + * Downgrade libgnat{vsn,prj}4.6-dev to priority extra; they conflict + with their 4.4 counterparts and priority optional packages may not + conflict with one another, per Policy 2.5. + + -- Matthias Klose Fri, 16 Dec 2011 16:59:30 +0100 + +gcc-4.6 (4.6.2-7) unstable; urgency=medium + + * Update to SVN 20111210 (r182189) from the gcc-4_6-branch. + - Fix PR rtl-optimization/51469, PR tree-optimization/51466, + PR tree-optimization/50078, PR target/51408, PR fortran/51310, + PR fortran/51448. + + -- Matthias Klose Sat, 10 Dec 2011 20:12:33 +0100 + +gcc-4.6 (4.6.2-6) unstable; urgency=low + + * Update to SVN 20111208 (r182120) from the gcc-4_6-branch. + - Fix PR c++/51265, PR bootstrap/50888, PR target/51393 (ix86), + PR target/51002 (AVR), PR target/51345 (AVR), PR debug/48190, + PR fortran/50684, PR fortran/51218, PR target/50906 (closes: #650318), + PR tree-optimization/51315 (closes: #635126), PR tree-optimization/50622, + PR fortran/51435, PR debug/51410, PR c/51339, PR rtl-optimization/48721, + PR middle-end/51323 (LP: #897583), PR middle-end/50074, + PR middle-end/50074. + + [ Matthias Klose ] + * Run the libstdc++ testsuite on all architectures again. Closes: #622699. + * Apply proposed patch for PR target/50906 (powerpcspe only). Closes: #650318. + * Fix PR target/49030 (ARM), taken from Linaro. Closes: #633479. + * Fix PR target/50193 (ARM), taken from Linaro. Closes: #642127. + * Install the libstdc++.so-gdb.py file. LP: #883269. + * Fix PR c++/50114, backport from trunk. LP: #827806. + * Merge changes to allow gcc-snapshot cross builds, taken from Linaro. + * Update the Linaro support to the 4.6 branch. + + [ Marcin Juszkiewicz ] + * Fix issues with gcc-snapshot cross builds. + * Allow building Linaro binary packages in a single package. + * Apply hardening patches for cross builds when enabled for native builds. + + -- Matthias Klose Thu, 08 Dec 2011 17:14:35 +0100 + +gcc-4.6 (4.6.2-5) unstable; urgency=low + + * Update to SVN 20111121 (r181596) from the gcc-4_6-branch. + - Fix PR c++/50870, PR c++/50608, PR target/47997, PR target/48108, + PR target/45233, PR middle-end/51077, PR target/30282, PR c++/50608, + PR target/50979, PR target/4810, PR rtl-optimization/51187, + PR target/50493, PR target/49992, PR target/49641, PR c++/51150, + PR target/50678, PR libstdc++/51142, PR libstdc++/51133. + + [ Matthias Klose ] + * Use the default gcc as stage1 compiler for all architectures. + + [ Marcin Juszkiewicz ] + * debian/control.m4: Use BASEDEP in more places. + * Work around debhelper not calling the correct strip for cross builds. + * Drop dpkg-cross build dependency for cross builds. + + -- Matthias Klose Mon, 21 Nov 2011 22:26:49 +0100 + +gcc-4.6 (4.6.2-4) unstable; urgency=low + + * Update to SVN 20111103 (r180830) from the gcc-4_6-branch. + - Fix PR target/50691, PR c++/50901, PR target/50945, + PR rtl-optimization/47918, PR libstdc++/50880. + + * Configure the armel build by explicitly passing --with-arch=armv4t + --with-float=soft. + * libffi: Simplify PowerPC assembly and avoid CPU-specific string + instructions (Kyle Moffett). + * Fix MULTIARCH_DIRNAME on powerpcspe (Kyle Moffett). Closes: #647324. + + -- Matthias Klose Thu, 03 Nov 2011 12:03:41 -0400 + +gcc-4.6 (4.6.2-3) unstable; urgency=low + + * disable parallel builds on kfreebsd-* even if DEB_BUILD_OPTIONS + enables them (continued investigation for #637236). + + -- Ludovic Brenta Sat, 29 Oct 2011 00:42:46 +0200 + +gcc-4.6 (4.6.2-2) unstable; urgency=low + + * Update to SVN 20111028 (r180603) from the gcc-4_6-branch. + - Fix PR target/50875. + + * Fix gcj, gdc and gnat builds, broken by the stage1 cross-compiler + package dependency fixes. + * Update the Linaro support to the 4.6 branch. + * Fix gcc-4.6-hppa64 installation. Closes: #646805. + * For ARM hard float, set the dynamic linker to + /lib/arm-linux-gnueabihf/ld-linux.so.3. + * Don't use parallel builds on kfreebsd. + + -- Matthias Klose Fri, 28 Oct 2011 16:36:55 +0200 + +gcc-4.6 (4.6.2-1) unstable; urgency=low + + * GCC 4.6.2 release. + + * Fix libgcc installation into /usr/lib/gcc//4.6. Closes: #645021. + * Fix stage1 cross-compiler package dependencies (Kyle Moffett). + Closes: #644439. + + -- Matthias Klose Wed, 26 Oct 2011 13:10:44 +0200 + +gcc-4.6 (4.6.1-16) unstable; urgency=medium + + * Update to SVN 20111019 (r180208) from the gcc-4_6-branch. + - Fix PR target/49967 (ia64), PR tree-optimization/50189, PR fortran/50273, + PR tree-optimization/50700, PR c/50565 (closes: #642144), + PR target/49965 (sparc), PR middle-end/49801, PR c++/49216, + PR c++/49855, PR c++/49896, PR c++/44473, PR c++/50611, PR fortran/50659, + PR tree-optimization/50723, PR tree-optimization/50712, PR obj-c++/48275, + PR c++/50618, PR fortran/47023, PR fortran/50570, PR fortran/50718, + PR libobjc/49883, PR libobjc/50002, PR target/50350, PR middle-end/50386, + PR middle-end/50326, PR target/50737, PR c++/50787, PR c++/50531, + PR fortran/50016, PR target/50737. + + [ Matthias Klose ] + * Fix libjava installation into /usr/lib/gcc//4.6. + * Fix powerpc and ppc64 libffi builds (Kyle Moffett). + * Apply proposed patch for PR target/50350. Closes: #642313. + * Re-apply the fix for PR tree-optimization/49911 on ia64. + * Apply proposed patch for PR target/50106 (ARM). + + [Xavier Grave] + * debian/patches/address-clauses-timed-entry-calls.diff: new; backport + bug fix about address clauses and timed entry calls. + + [Ludovic Brenta] + * debian/patches/ada-kfreebsd-gnu.diff: new; provide dummy + implementations of some optional POSIX Threads functions missing in + GNU/kFreeBSD. Closes: #642128. + + -- Matthias Klose Thu, 20 Oct 2011 00:24:13 +0200 + +gcc-4.6 (4.6.1-15) unstable; urgency=low + + * Update to SVN 20111010 (r179753) from the gcc-4_6-branch. + - Fix PR target/50652. + * Update the Linaro support to the 4.6-2011.10-1 release. + * Fix gcc-spu installation. + * Restore symlink for subminor GCC version. Closes: #644849. + + -- Matthias Klose Mon, 10 Oct 2011 17:10:40 +0200 + +gcc-4.6 (4.6.1-14) unstable; urgency=low + + * Update to SVN 20111008 (r179710) from the gcc-4_6-branch. + - Fix PR inline-asm/50571, PR c++/46105, PR c++/50508, PR libstdc++/50529, + PR libstdc++/49559, PR c++/40831, PR fortran/48706, PR target/49049, + PR tree-optimization/49279, PR fortran/50585, PR fortran/50625, + PR libstdc++/48698. + + [ Matthias Klose ] + * Configure and build to install into /usr/lib/gcc//4.6. + Closes: #643891. + * libgcc1: Versioned break to gcc-4.3. + * Fix gcc-multiarch for i386-linux-gnu with disabled multilibs. + * libffi: Fix PowerPC soft-floating-point support (Kyle Moffett). + + [ Marcin Juszkiewicz ] + * Enable gcc-snapshot cross builds. + + [ Iain Buclaw ] + * Port gdc to GCC-4.6. + + [ Aurelien Jarno ] + * Backport fix for PR target/49696 from the trunk (Closes: #633443). + + -- Matthias Klose Sat, 08 Oct 2011 14:40:49 +0200 + +gcc-4.6 (4.6.1-13) unstable; urgency=low + + * Update to SVN 20110926 (r179207) from the gcc-4_6-branch. + - Fix PR tree-optimization/50472, PR tree-optimization/50413, + PR tree-optimization/50412, PR c++/20039, PR c++/42844, + PR libstdc++/50510, PR libstdc++/50509. + * Revert the fix for PR tree-optimization/49911, bootstrap error on ia64. + * libffi: Define FFI_MMAP_EXEC_WRIT on kfreebsd-* (Petr Salinger). + + -- Matthias Klose Mon, 26 Sep 2011 19:59:55 +0200 + +gcc-4.6 (4.6.1-12) unstable; urgency=low + + * Update to SVN 20110924 (r179140) from the gcc-4_6-branch. + - Fix PR target/50464, PR target/50341, PR middle-end/49886, + PR target/50091, PR c++/50491, PR c++/50442 (Closes: #642176). + + -- Matthias Klose Sat, 24 Sep 2011 10:39:32 +0200 + +gcc-4.6 (4.6.1-11) unstable; urgency=low + + * Update to SVN 20110917 (r178926) from the gcc-4_6-branch. + - Fix PR c++/50424, PR c++/48320, PR fortran/49479. + + [ Matthias Klose ] + * Update the Linaro support to the 4.6-2011.09-1 release. + + [ Aurelien Jarno ] + * gcc.c (for_each_path): Allocate memory for multiarch suffix. + + -- Matthias Klose Sat, 17 Sep 2011 10:53:36 +0200 + +gcc-4.6 (4.6.1-10) unstable; urgency=medium + + * Update to SVN 20110910 (r178746) from the gcc-4_6-branch. + - Fix PR middle-end/50266, PR tree-optimization/49911, + PR tree-optimization/49518, PR tree-optimization/49628, + PR tree-optimization/49628, PR target/50310, PR target/50289, + PR c++/50255, PR c++/50309, PR c++/49267, PR libffi/49594. + - Revert fix for PR middle-end/49886, causing PR middle-end/50295. + + -- Matthias Klose Sat, 10 Sep 2011 03:38:48 +0200 + +gcc-4.6 (4.6.1-9) unstable; urgency=low + + * Update to SVN 20110903 (r178501) from the gcc-4_6-branch. + - Fix PR target/50090, PR middle-end/50116, PR target/50202, PR c/50179, + PR c++/50157, PR fortran/50163, PR libfortran/50192, + PR middle-end/49886, PR tree-optimization/50178, PR c++/50207, + PR c++/50089, PR c++/50220, PR c++/50234, PR c++/50224, + PR libstdc++/50268. + + [ Matthias Klose ] + * Fix gcc --print-multilib-osdir for non-biarch architectures. + * Fix multiarch for non-biarch builds. Closes: #635860. + * Move the lto plugin to the cpp packge. Closes: #639531. + + [ Thorsten Glaser ] + * [m68k] Disable multilib. Closes: #639303. + + -- Matthias Klose Sat, 03 Sep 2011 20:11:50 +0200 + +gcc-4.6 (4.6.1-8) unstable; urgency=low + + * Update to SVN 20110824 (r178027) from the gcc-4_6-branch. + Fix PR fortran/49792, PR tree-optimization/48739, PR target/50092, + PR c++/50086, PR c++/50054, PR fortran/50050, PR fortran/50130, + PR fortran/50129, PR fortran/49792, PR fortran/50109, PR c++/50024, + PR c++/46862. + + * Properly disable multilib builds for selected libraries on armel and armhf. + * Update and re-enable the gcc-ice patch. + * Update and re-enable the gcc-cloog-dl patch. + * Fix [ARM] PR target/50090: aliases in libgcc.a with default visibility, + taken from the trunk. + * Re-work the multiarch patches. + * Break older gcj-4.6 and gnat-4.6 versions, changed gcc_lib_dir. + * Omit the target alias from the go libdir. + * Linaro updates from the 4.6-2011.07-stable branch. + * Revert: + - libjava: Build with the system libffi PIC library. + * For native builds, gcc -print-file-name now resolve . and .., + and removes the subminor version number. + + -- Matthias Klose Wed, 24 Aug 2011 10:22:42 +0200 + +gcc-4.6 (4.6.1-7) unstable; urgency=low + + * Update to SVN 20110816 (r177780) from the gcc-4_6-branch. + - Fix PR middle-end/49923. + + [ Matthias Klose ] + * gcc-4.6-multilib: Depend on biarch quadmath library. Closes: #637174. + * Don't hard-code build dependency on gcc-multilib. + * Build-depends on python when building java. + * Fix thinko in java::lang::Class::finalize (taken from the trunk). + * Add support for ARM 64bit sync intrinsics (David Gilbert). Only + enable for armv7 or better. + * libjava: Build with the system libffi PIC library. + * Disable gnat multilib builds on armel and armhf. + + Merge from gnat-4.6 (4.6.1-4) unstable; urgency=low + + [Ludovic Brenta] + * debian/patches/ada-symbolic-tracebacks.diff + (src/gcc/ada/gcc-interface/Makefile.in): pass -iquote instead of -I- + to gnatgcc; fixes FTBFS on i386 and closes: #637418. + + Merge from gnat-4.6 (4.6.1-3) unstable; urgency=low + + [Євгеній Мещеряков] + * debian/patches/ada-mips.diff: do not use the alternate stack on mips, + as on mipsel. Closes: #566234. + + [Ludovic Brenta] + * debian/patches/pr49940.diff: new; copy the definition of function + lwp_self from s-osinte-freebsd.ads to s-osinte-kfreebsd-gnu.ads. + Closes: #636291. + * debian/patches/pr49944.diff: new. Closes: #636692. + * debian/patches/pr49819.diff: drop, merged upstream. + + -- Matthias Klose Tue, 16 Aug 2011 13:11:25 +0200 + +gcc-4.6 (4.6.1-6) unstable; urgency=low + + * Update to SVN 20110807 (r177547) from the gcc-4_6-branch. + - Fix PR rtl-optimization/49799, PR debug/49871, PR target/47364, + PR target/49866, PR tree-optimization/49671, PR target/39386, + PR ada/4981, PR fortran/45586, PR fortran/49791, PR middle-end/49897, + PR middle-end/49898, PR target/49920, PR target/47908 (closes: #635919), + PR c++/43886, PR c++/49593, PR c++/49803, PR c++/49924, PR c++/49260, + PR fortran/49885, PR fortran/48876, PR libstdc++/49925, PR target/50001, + PR tree-optimization/49948, PR c++/48993, PR c++/49921, PR c++/49669, + PR c++/49988, PR fortran/49112. + + [ Aurelien Jarno ] + * Update patches/kbsd-gnu.diff for recent changes. Closes: #635195. + * Add s390x support. + + [ Marcin Juszkiewicz ] + * Fixes for multilib cross builds. LP: #816852, #819147. + + [ Matthias Klose ] + * Fix libgo installation for cross builds. + * Only apply arm-multilib when building for multilib. + + -- Matthias Klose Sun, 07 Aug 2011 18:20:00 +0200 + +gcc-4.6 (4.6.1-5) unstable; urgency=low + + * Update to SVN 20110723 (r176672) from the gcc-4_6-branch. + - Fix PR target/49541, PR tree-optimization/49768, PR middle-end/49675, + PR target/49746, PR middle-end/49732, PR tree-optimization/49725, + PR target/49723, PR target/49541, PR tree-opt/49309, PR c++/49785, + PR ada/48711, PR ada/46350, PR fortran/49648, PR testsuite/49753, + PR tree-optimization/49309, PR tree-optimization/45819, PR target/49600, + PR fortran/49708, PR libstdc++/49293. + * Update the Linaro support to the 4.6-2011.07-0 release. + - Fix PR target/49335. LP: #791327. + * Update gcc-multiarch: + - Add -print-multiarch option. + - Fix library path for non-default multilib(s). + - Handle `.' in MULTILIB_DIRNAMES. + * Add support to build multilib on armel and armhf, only enable it for + Ubuntu/oneiric. LP: #810360. + * cpp-4.6: Add empty multiarch directories for the non-default multilibs, + needed for relative lookups from startfile_prefixes. + * Fix PR c++/49756, backport from trunk. LP: #721378. + * libgcc1: Add breaks to gcc-4.1 and gcc-4.3. Closes: #634821. + * Configure for DEB_TARGET_MULTIARCH defaults. + + -- Matthias Klose Sat, 23 Jul 2011 08:15:50 +0200 + +gcc-4.6 (4.6.1-4) unstable; urgency=low + + * Update to SVN 20110714 (r176280) from the gcc-4_6-branch. + - Fix PR tree-optimization/49094, PR target/39633, PR c++/49672, + PR fortran/49698, PR fortran/49690, PR fortran/49562, PR libfortran/49296, + PR target/49487, PR tree-optimization/49651, PR ada/48711. + + [ Matthias Klose ] + * Build Go on alpha for gcc-snapshot builds. + * For multicore ARM, clear both caches, not just the dcache (proposed + patch by Andrew Haley). + * Fix for PR rtl-optimization/{48830,48808,48792}, taken from the trunk. + LP: #807573. + * Fix PR tree-optimization/49169, optimisations strip the Thumb/ARM mode bit + off function pointers (Richard Sandiford). LP: #721531. + + [ Marcin Juszkiewicz ] + * Define DEB_TARGET_MULTIARCH macro. + * debian/rules2: Macro and configuration consolidation. + + -- Matthias Klose Thu, 14 Jul 2011 19:38:49 +0200 + +gcc-4.6 (4.6.1-3) unstable; urgency=medium + + * Update to SVN 20110709 (r176108) from the gcc-4_6-branch. + - Fix PR target/49335, PR tree-optimization/49618, PR c++/49598, + PR fortran/49479, PR target/49621, PR target/46779, PR target/49660, + PR c/49644, PR debug/49522, PR debug/49522, PR middle-end/49640, + PR c++/48157, PR c/49644, PR fortran/48926. + - Apparently fixes a boost issue. Closes: #632938. + * Apply proposed patch for PR fortran/49690. Closes: #631204. + + * README.Debian: New section 'Former and/or inactive maintainers'. + + -- Matthias Klose Sun, 10 Jul 2011 00:04:34 +0200 + +gcc-4.6 (4.6.1-2) unstable; urgency=medium + + * Update to SVN 20110705 (r175840) from the gcc-4_6-branch. + - Fix PR target/47997, PR c++/49528, PR c++/49440, PR c++/49418, + PR target/44643, PR tree-optimization/49615, PR tree-optimization/49572, + PR target/34734, PR tree-optimization/49539, PR tree-optimizations/49516, + PR target/49089, PR rtl-optimization/49014, PR target/48273, + PR fortran/49466, PR libfortran/49296, PR libffi/46660, PR debug/49262, + PR rtl-optimization/49472, PR rtl-optimization/49619, PR fortran/49623, + PR fortran/49540. + + [Ludovic Brenta, Євгеній Мещеряков, Xavier Grave] + * Adjust patches to GCC 4.6. + * Remove patches merged upstream: + - debian/patches/ada-arm-eabi.diff + - debian/patches/ada-bug589164.diff + - debian/patches/ada-bug601133.diff + - debian/patches/ada-gnatvsn.diff + - debian/patches/ada-mips.diff + - debian/patches/ada-polyorb-dsa.diff + + [Ludovic Brenta] + * debian/patches/ada-acats.diff: set LD_LIBRARY_PATH, ADA_INCLUDE_PATH + and ADA_OBJECTS_PATH so that the GNAT testsuite runs. + * debian/patches/adalibgnat{vsn,prj}.diff, + debian/rules.d/binary-ada.mk: install libgnat{vsn,prj}.so.* in the correct + multiarch directory. + * debian/control.m4, debian/rules.d/binary-ada.mk: move the SJLJ version + of the Ada run-time library to a new package, gnat-4.6-sjlj. + * debian/control.m4 (libgnatvsn4.6, libgnatvsn4.6-dbg, libgnatprj4.6, + libgnatprj4.6-dbg): pre-depend on multiarch-support and add + Multi-Arch: same. + + [Nicolas Boulenguez] + * debian/rules.d/binary-ada.mk: add gnathtml to the package gnat-4.6. + * debian/gnat.1: remove the version number of GCC. Mention gnathtml. + + [ Matthias Klose ] + * Do not install the spu and hppa64 cross compilers into the multiarch path. + * Update the Linaro support to 20110704. + + [ Thorsten Glaser ] + * Apply changes from src:gcc-4.4 for m68k support. Closes: #632380. + - debian/rules.defs: Remove m68k from locale_no_cpus. + - debian/patches/gcc-multiarch.diff: Add m68k multiarch_mappings. + - debian/patches/pr43804.diff: Fix backported from SVN. + - debian/rules.patch: Add pr43804. + + -- Matthias Klose Tue, 05 Jul 2011 10:45:56 +0200 + +gcc-4.6 (4.6.1-1) unstable; urgency=low + + * GCC 4.6.1 release. + + [Ludovic Brenta] + * debian/patches/ada-gnatvsn.diff, + debian/patches/ada-polyorb-dsa.diff: remove backports, no longer + needed. + + [ Matthias Klose ] + * Fix plugin header installation. Closes: #631082. + * Stop passing -Wno-error=unused-but-set-parameter and + -Wno-error=unused-but-set-variable if -Werror is present. + This was a temporary workaround introduced in 4.6.0~rc1-2. Closes: #615157. + * gcc-4.6-spu: Install the lto plugin. Closes: #631772. + + -- Matthias Klose Mon, 27 Jun 2011 13:54:04 +0200 + +gcc-4.6 (4.6.0-14) unstable; urgency=low + + * Update to SVN 20110616 (r175102) from the gcc-4_6-branch. + - Fix PR debug/48459, PR fortran/49103, PR rtl-optimization/49390, + PR c++/49117, PR c++/49369, PR c++/49290, PR target/44618, + PR tree-optimization/49419 (closes: #630567). + * Update the Linaro support to the 4.6-2011.06-0 release. + + -- Matthias Klose Thu, 16 Jun 2011 16:10:33 +0200 + +gcc-4.6 (4.6.0-13) unstable; urgency=low + + * Update to SVN 20110611 (r174958) from the gcc-4_6-branch. + * Extend multiarch support for mips/mipsel. + * Fix control files for gcj multiarch builds. + * Update libstdc++ symbols files. + + -- Matthias Klose Sat, 11 Jun 2011 20:49:42 +0200 + +gcc-4.6 (4.6.0-12) unstable; urgency=medium + + * Update to SVN 20110608 (r174800) from the gcc-4_6-branch. + - PR target/49186, PR rtl-optimization/49235, PR tree-optimization/48702, + PR tree-optimization/49243, PR c++/49134, PR target/49238, + PR gcov-profile/49299, PR c++/48780, PR c++/49298, PR fortran/49268. + * Fix c++ biarch header installation on i386. LP: #793411. + * Enable multiarch. + * Add multiarch attributes for gnat and libgnat packages. + * Add multiarch attributes for libgcj* packages. + * Adjust build dependency on multiarch glibc. + + -- Matthias Klose Wed, 08 Jun 2011 11:26:52 +0200 + +gcc-4.6 (4.6.0-11) unstable; urgency=low + + * Update to SVN 20110604 (r174637) from the gcc-4_6-branch. + - Fix PR c++/49165, PR tree-optimization/49218, PR target/45263, + PR target/43700, PR target/43995, PR tree-optimization/49217, + PR c++/49223, PR c++/47049, PR c++/47277, PR c++/48284, PR c++/48657, + PR c++/49176, PR fortran/48955, PR tree-optimization/49038, + PR tree-optimization/49093, PR middle-end/48985, PR middle-end/48953, + PR c++/49276, PR fortran/49265, PR fortran/45786. + * Configure the hppa64 and spu cross builds with --enable-plugin. + + -- Matthias Klose Sat, 04 Jun 2011 16:12:27 +0200 + +gcc-4.6 (4.6.0-10) unstable; urgency=high + + * Update to SVN 20110526 (r174290) from the gcc-4_6-branch. + - Fix PR target/44643, PR c++/49165, PR tree-optimization/49161, + PR target/49128, PR tree-optimization/44897, PR target/49133, + PR c++/44994, PR c++/49156, PR c++/45401, PR c++/44311, PR c++/44311, + PR c++/45698, PR c++/46145, PR c++/46245, PR c++/46696, PR c++/47184, + PR c++/48935, PR c++/45418, PR c++/45080, PR c++/48292, PR c++/49136, + PR c++/49042, PR c++/48884, PR c++/49105, PR c++/47263, PR c++/47336, + PR c++/47544, PR c++/48617, PR c++/48424, PR libstdc++/49141, + PR libobjc/48177. + * Proposed fix for PR tree-optimization/48702, PR tree-optimization/49144. + Closes: #627795. + * Proposed fix for PR fortran/PR48955. + * Add some conditionals to build the package on older releases. + + -- Matthias Klose Thu, 26 May 2011 16:00:49 +0200 + +gcc-4.6 (4.6.0-9) unstable; urgency=low + + * Update to SVN 20110524 (r174102) from the gcc-4_6-branch. + - Fix PR lto/49123, PR debug/49032, PR c/49120, PR middle-end/48973, + PR target/49104, PR middle-end/49029, PR c++/48647, PR c++/48945, + PR c++/48780, PR c++/49066, PR libstdc++/49058, PR target/49104. + * Use gcc-4.4 as the bootstrap compiler for kfreebsd to work around + a bootstrap issue. + + -- Matthias Klose Tue, 24 May 2011 09:41:35 +0200 + +gcc-4.6 (4.6.0-8) unstable; urgency=low + + * Update to SVN 20110521 (r173994) from the gcc-4_6-branch. + - Fix PR target/48986, PR preprocessor/48677, PR tree-optimization/48975, + PR tree-optimization/48822, PR debug/48967, PR debug/48159, + PR target/48857, PR target/48495, PR tree-optimization/48837, + PR tree-optimization/48611, PR tree-optimization/48794, PR c++/48859, + PR c++/48574, PR fortran/48889, PR target/49002, PR lto/48207, + PR tree-optimization/49039, PR tree-optimization/49018, PR lto/48703, + PR tree-optimization/48172, PR tree-optimization/48172, PR c++/48873, + PR tree-optimization/49000, PR c++/48869, PR c++/49043, PR c++/49082, + PR c++/48948, PR c++/48745, PR c++/48736, PR bootstrap/49086, + PR tree-optimization/49079, PR tree-optimization/49073. + * Update the Linaro support to the 4.6-2011.05-0 release. + * pr45979.diff: Update to the version from the trunk. + + -- Matthias Klose Sat, 21 May 2011 12:19:10 +0200 + +gcc-4.6 (4.6.0-7) unstable; urgency=low + + * Update to SVN 20110507 (r173528) from the gcc-4_6-branch. + - Fix PR middle-end/48597, PR c++/48656, PR fortran/48112, + PR fortran/48279, PR fortran/48788, PR tree-optimization/48809, + PR target/48262, PR fortran/48462, PR fortran/48746, + PR fortran/48810, PR fortran/48800, PR libstdc++/48760, + PR libgfortran/48030, PR preprocessor/48192, PR lto/48846, + PR target/48723, PR fortran/48894, PR target/48900, PR target/48252, + PR c++/40975, PR target/48252, PR target/48774, PR c++/48838, + PR c++/48749, PR ada/48844, PR fortran/48720, PR libstdc++/48750, + PR c++/48909, PR c++/48911, PR c++/48446, PR c++/48089. + + * Fix issue with volatile bitfields vs. inline asm memory constraints, + taken from the trunk, apply for ARM only. Addresses: #625825. + + -- Matthias Klose Sat, 07 May 2011 14:54:51 +0200 + +gcc-4.6 (4.6.0-6) unstable; urgency=low + + * Update to SVN 20110428 (r173059) from the gcc-4_6-branch. + - Fix PR c/48685 (closes: #623161), PR tree-optimization/48717, PR c/48716, + PR c/48742, PR debug/48768, PR tree-optimization/48734, + PR tree-optimization/48731, PR other/48748, PR c++/42687, PR c++/48726, + PR c++/48707, PR fortran/48588, PR libstdc++/48521, PR c++/48046, + PR preprocessor/48740. + * Update the ibm/gcc-4_6-branch to 20110428. + * Use gcc-4.6 as bootstrap compiler on kfreebsd-*. + + -- Matthias Klose Thu, 28 Apr 2011 10:33:52 +0200 + +gcc-4.6 (4.6.0-5) unstable; urgency=low + + * Update to SVN 20110421 (r172845) from the gcc-4_6-branch. + - Fix PR target/48288, PR tree-optimization/48611, PR lto/48148, + PR lto/48492, PR fortran/47976, PR c++/48594, PR c++/48657, + PR c++/46304, PR target/48708, PR middle-end/48695. + + * Update the Linaro support to the 4.6-2011.04-0 release. + + -- Matthias Klose Thu, 21 Apr 2011 22:50:25 +0200 + +gcc-4.6 (4.6.0-4) unstable; urgency=medium + + * Update to SVN 20110419 (r172584) from the gcc-4_6-branch. + - Fix PR target/48678, PR middle-end/48661, PR tree-optimization/48616, + PR lto/48538, PR c++/48537, PR c++/48632, PR testsuite/48675, + PR libstdc++/48635, PR libfortran/47571. + + [ Aurelien Jarno ] + * Enable SSP on mips/mipsel. + + [ Matthias Klose ] + * (Build-)depend on binutils 2.21.51. + + -- Matthias Klose Tue, 19 Apr 2011 23:45:16 +0200 + +gcc-4.6 (4.6.0-3) unstable; urgency=high + + * Update to SVN 20110416 (r172584) from the gcc-4_6-branch. + - Fix PR rtl-optimization/48143, PR target/48142, PR target/48349, + PR debug/48253, PR fortran/48291, PR target/16292, PR c++/48280, + PR c++/48212, PR c++/48369, PR c++/48281, PR c++/48265, PR lto/48246, + PR libstdc++/48398, PR bootstrap/48431, PR tree-optimization/48377, + PR debug/48343, PR rtl-optimization/48144, PR debug/48466, PR c/48517, + PR middle-end/48335, PR c++/48450, PR target/47829, PR c++/48534, + PR c++/48523, PR libstdc++/48566, PR libstdc++/48541, PR target/48366, + PR libstdc++/48465, PR middle-end/48591, PR target/48605, + PR middle-end/48591, PR target/48090, PR tree-optimization/48195, + PR rtl-optimization/48549, PR c++/48594, PR c++/48570, PR c++/48574, + PR fortran/48360, PR fortran/48456, PR libstdc++/48631, + PR libstdc++/48635, PR libstdc++/48476. + + [ Matthias Klose ] + * libjava-jnipath.diff: Add /usr/lib//jni as jnipath too. + * Add mudflap support for varargs (patch taken from the trunk). + * gcc-4.6-plugin-dev: Install gtype.state. + * Bootstrap with gcc-4.4 -g -O2 on armel. + * Fix linker plugin configuration. Closes: #620661. + * Update the Linaro support for GCC-4.6. + * gcc-snapshot builds: + - Fix build with multiarch changes. + - Use gcc-snapshot as the bootstrap compiler on armel. + - Re-enable building java in the gcc-snapshot package. + * Build supporting multiarch on wheezy/sid. + * Adjust (build)-dependency to new libgmp-dev name. + + [ Marcin Juszkiewicz ] + * Configure stage1 cross builds with --disable-libquadmath. + + -- Matthias Klose Sat, 16 Apr 2011 17:02:30 +0200 + +gcc-4.6 (4.6.0-2) unstable; urgency=low + + * Update to SVN 20110329 (r171700) from the gcc-4_6-branch. + - Fix PR bootstrap/48135, PR target/47553, PR middle-end/48269, + PR tree-optimization/48228, PR middle-end/48134, PR middle-end/48031, + PR other/48179, PR other/48221, PR other/48234, PR target/48237, + PR debug/48204, PR c/42544, PR c/48197, PR rtl-optimization/48141, + PR rtl-optimization/48141, PR c++/48166, PR c++/48296, PR c++/48289, + PR c++/47999, PR c++/48313, Core 1232, Core 1148, PR c++/47504, + PR c++/47570, PR preprocessor/48248, PR c++/48319. + + [ Matthias Klose ] + * Update NEWS files. + * Configure the hppa64 cross build with --disable-libquadmath. + * Don't build armhf from the Linaro branch. + * Don't try to build Go on sh4. + + [ Marcin Juszkiewicz ] + * Fixes issues with staged cross builds. LP: #741855, #741853. + * Fix libdir setting for multiarch enabled cross builds. LP: #741846. + * Drop alternatives for cross builds. LP: #676454. + + -- Matthias Klose Tue, 29 Mar 2011 23:22:07 +0200 + +gcc-4.6 (4.6.0-1) unstable; urgency=low + + * GCC 4.6.0 release. + + * Build the gold LTO plugin for ppc64 (Hiroyuki Yamamoto). Closes: #618865. + * Fix PR target/48226, Allow Iterator::vector vector on powerpc with VSX, + taken from the trunk. + * Fix PR target/47487 ICE building libgo, taken from the trunk. + * Merge multiarch changes from the gcc-4.5 package. + * Apply proposed patch to reduce the overhead of dwarf2 location tracking. + Addresses: #618748. + + -- Matthias Klose Sat, 26 Mar 2011 03:03:21 +0100 + +gcc-4.6 (4.6.0~rc1-3) experimental; urgency=low + + * GCC 4.6.0 release candidate 2. + + -- Matthias Klose Tue, 22 Mar 2011 22:11:42 +0100 + +gcc-4.6 (4.6.0~rc1-2) experimental; urgency=low + + [ Loic Minier ] + * Rework config/vxworks-dummy.h installation snippet to test + DEB_TARGET_GNU_CPU against patterns close to the upstream ones (arm% mips% + sh% sparc%) as to also install this header on other ports targetting the + relevant upstream CPUs such as armhf. Add a comment pointing at the + upstream bug. + * Update __aeabi symbol handling to test whether DEB_TARGET_GNU_TYPE matches + arm-linux-gnueabi% instead of testing whether DEB_TARGET_ARCH equals + armel. Add a comment pointing at the Debian bug and indicating that this + is only useful for older dpkg-dev versions. + * debian/rules.def: fix "armel" entry to "arm" in list of + DEB_TARGET_ARCH_CPUs for Debian experimental GCC 4.5/4.6 libraries. + * debian/rules2: drop commented out GCC #42509 workaround as this was fixed + upstream in 4.4+. + * Change bogus DEB_TARGET_GNU_CPU test on armel and armhf to just test for + arm as ths is what the Debian arm, armel and armhf port use. + * Rework snippet setting armv7 on Debian armhf / Ubuntu to avoid + duplication, as a comment called out for. + * Use "arm" instead of armel/armhf in DEB_TARGET_GNU_CPU test when deciding + whether to enable profiledbootstrap. + * Set DEJAGNU_TIMEOUT=600 on Ubuntu armhf as well. + * Fix a couple more uses of armel or armhf against DEB_TARGET_GNU_CPU. + * Patched a couple of comments mentioning armel to also mention armhf. + * Add patch armhf-triplet-backport, support for arm-linux-*eabi* backported + from a patch sent on the upstream mailing-list. + + [ Matthias Klose ] + * Update libstdc++ symbols files. + * Update libgfortran symbols files. + + -- Matthias Klose Sun, 20 Mar 2011 13:53:48 +0100 + +gcc-4.6 (4.6.0~rc1-2) experimental; urgency=low + + * Update to SVN 20110320 (r171192) from the gcc-4_6-branch. + + [ Matthias Klose ] + * Update gcc-default-ssp* patches for the release candidate. + * Pass -Wno-error=unused-but-set-parameter if -Werror is present (temporary + for rebuild tests). + * Always configure --with-plugin-ld, always install liblto_plugin.so. + + [ Marcin Juszkiewicz ] + * Add conflicts with -4.5-*dev packages. Closes: #618450. + + [ Petr Salinger] + * Disable lock-2.c test on kfreebsd-*. Closes: #618988. + * Re-enable parallel builds on kfreebsd. + * Package lto_plugin for kfreebsd-* and Hurd. + + -- Matthias Klose Sun, 20 Mar 2011 13:53:48 +0100 + +gcc-4.6 (4.6.0~rc1-1) experimental; urgency=low + + * Build from the GCC 4.6.0 release candidate tarball. + + [ Matthias Klose ] + * Disable Go on powerpc. Closes: #615827. + * Fix lintian errors for the -plugin-dev package. + * Update kbsd-gnu.diff (Petr Salinger). Closes: #615826. + * Disable parallel builds on kfreebsd (Petr Salinger). + * Update gmp (build) dependencies. + * Update GFDL compliant builds. Closes: #609161. + * For GFDL compliant builds, build a dummy s-tm-texi without access + to the texinfo sources. + + [ Aurelien Jarno ] + * Import symbol files for kfreebsd-amd64, kfreebsd-i386, sh4 and + sparc64 from gcc-4.5. + + -- Matthias Klose Mon, 14 Mar 2011 19:01:08 +0100 + +gcc-4.6 (4.6-20110227-1) experimental; urgency=low + + [ Matthias Klose ] + * Update libquadmath symbols file. + * gcc-4.6-plugin-dev: Install gengtype. + + [ Sebastian Andrzej Siewior ] + * Remove -many on powerpcspe (__SPE__). + * Remove classic FPU opcodes from libgcc if target has no support for them + (powerpcspe). + + -- Matthias Klose Sun, 27 Feb 2011 22:33:45 +0100 + +gcc-4.6 (4.6-20110216-1) experimental; urgency=low + + * GCC snapshot, taken from the trunk. + * Pass --no-add-needed by default to the linker. See + http://wiki.debian.org/ToolChain/DSOLinking, section "Not resolving symbols + in indirect dependent shared libraries" for more information. + + -- Matthias Klose Wed, 16 Feb 2011 23:55:32 +0100 + +gcc-4.6 (4.6-20110125-1) experimental; urgency=low + + * debian/copyright: Add unicode copyright for + libjava/classpath/resource/gnu/java/locale/* files. Addresses: #609161. + + -- Matthias Klose Wed, 26 Jan 2011 03:42:10 +0100 + +gcc-4.6 (4.6-20110123-1) experimental; urgency=low + + * GCC snapshot, taken from the trunk. + * Don't run the libstdc++ testsuite on mipsel, times out on the buildd. + + [ Marcin Juszkiewicz ] + * Fix biarch/triarch cross builds. + - dpkg-shlibdeps failed to find libraries for 64 or n32 builds + - LD_LIBRARY_PATH for dpkg-shlibdeps lacked host dirs. + + -- Matthias Klose Sun, 23 Jan 2011 12:14:49 +0100 + +gcc-4.6 (4.6-20110116-1) experimental; urgency=low + + * GCC snapshot, taken from the trunk. + * Update patches for the trunk. + * Pass -Wno-error=unused-but-set-variable if -Werror is present (temporary + for rebuild tests). + * Work around PR libffi/47248, force a read only eh frame section. + + -- Matthias Klose Sun, 16 Jan 2011 23:28:28 +0100 + +gcc-4.6 (4.6-20110105-1) experimental; urgency=low + + [ Matthias Klose ] + * Rename and update libobjc symbols files. + * Update cloog/ppl build dependencies. + * Adjust libstdc++ configure and paths for stylesheets and dtds. + * Update copyright for libquadmath, libgo, gcc/go/gofrontend. + * Enable Go for more architectures. + * DP: libgo: Fix GOARCH for i386 biarch, add GOARCH for powerpc + + [ Kees Cook ] + * Update hardening patches for GCC-4.6. LP: #696990. + + -- Matthias Klose Wed, 05 Jan 2011 22:29:57 +0100 + +gcc-4.6 (4.6-20101220-1) maverick; urgency=low + + * GCC snapshot, taken from the trunk. + + -- Matthias Klose Tue, 21 Dec 2010 00:16:19 +0100 + +gcc-4.5 (4.5.2-7) unstable; urgency=low + + * Update to SVN 20110323 (r171351) from the gcc-4_5-branch. + - Fix PR c++/47125, PR fortran/47348, PR libstdc++/48114, + PR libfortran/48066, PR target/48171, PR target/47862. + PR preprocessor/48192. + + [ Steve Langasek ] + * Make dpkg-dev versioned build-dependency conditional on whether we want + to build for multiarch. + * Add a new patch, gcc-multiarch+biarch.diff, used only when building for + multiarch to set our multilib paths to the correct relative directories. + * debian/rules.defs: support turning on multiarch build by architecture; + but don't enable this yet, we still need to wait for dpkg-dev. + * When DEB_HOST_MULTIARCH is available (i.e., with the next dpkg upload), + use it as our multiarch path. + * debian/rules.d/binary-java.mk: jvm-exports path is /usr/lib/jvm-exports, + not $(libdir)/jvm-exports. + * OTOH, libgcj_bc *is* in $(libdir). + * the spu build is not a multiarch build; look in the correct + non-multiarch directory. + * debian/rules2: pass --libdir also for stageX builds, needed in order to + successfully build for multiarch. + * debian/rules2: $(usr_lib) for a cross-build should not include the + multiarch dir as part of the path. + * debian/patches/gcc-multiarch+biarch.diff: restore the original intent of + the patch, namely, that the multilib dir for the default variant is + always equal to libdir (the multiarch dir), and we walk up the tree + to find lib for the secondary variant. + * debian/patches/gcc-multiarch+biarch32.diff: apply the same multilib + directory rewriting for biarch paths with multiarch as we do without; + still needed in the near term. + * Put our list of patches in README.Debian.$(DEB_TARGET_ARCH) instead of + in README.Debian, so that the individual files are architecture-neutral + and play nicely with multiarch. LP: #737846. + * Add a comment at the bottom of README.Debian with a pointer to the new + file listing the patches. + + [ Loic Minier ] + * Rework config/vxworks-dummy.h installation snippet to test + DEB_TARGET_GNU_CPU against patterns close to the upstream ones (arm% mips% + sh% sparc%) as to also install this header on other ports targetting the + relevant upstream CPUs such as armhf. Add a comment pointing at the + upstream bug. + * Update __aeabi symbol handling to test whether DEB_TARGET_GNU_TYPE matches + arm-linux-gnueabi% instead of testing whether DEB_TARGET_ARCH equals + armel. Add a comment pointing at the Debian bug and indicating that this + is only useful for older dpkg-dev versions. + * debian/rules.def: fix "armel" entry to "arm" in list of + DEB_TARGET_ARCH_CPUs for Debian experimental GCC 4.5/4.6 libraries. + * debian/rules2: drop commented out GCC #42509 workaround as this was fixed + upstream in 4.4+. + * Change bogus DEB_TARGET_GNU_CPU test on armel and armhf to just test for + arm as ths is what the Debian arm, armel and armhf port use. + * Rework snippet setting armv7 on Debian armhf / Ubuntu to avoid + duplication, as a comment called out for. + * Use "arm" instead of armel/armhf in DEB_TARGET_GNU_CPU test when deciding + whether to enable profiledbootstrap. + * Set DEJAGNU_TIMEOUT=600 on Ubuntu armhf as well. + * Fix a couple more uses of armel or armhf against DEB_TARGET_GNU_CPU. + * Patched a couple of comments mentioning armel to also mention armhf. + * Add patch armhf-triplet-backport, support for arm-linux-*eabi* backported + from a patch sent on the upstream mailing-list. + + [ Matthias Klose ] + * Fix PR target/48226, Allow Iterator::vector vector on powerpc with VSX, + taken from the trunk. + * Fix PR preprocessor/48192, make conditional macros not defined for + #ifdef, proposed patch. + * Build the gold LTO plugin for ppc64 (Hiroyuki Yamamoto). Closes: #618864. + * Fix issue with volatile bitfields, default to -fstrict-volatile-bitfields + again on armel for Linaro builds. LP: #675347. + + -- Matthias Klose Wed, 23 Mar 2011 15:44:01 +0100 + +gcc-4.5 (4.5.2-6) unstable; urgency=low + + * Update to SVN 20110312 (r170895) from the gcc-4_5-branch. + - Fix PR tree-optimization/45967, PR tree-optimization/47278, + PR target/47862, PR c++/44629, PR c++/45651, PR c++/47289, PR c++/47705, + PR c++/47488, PR libgfortran/47778, PR c++/48029. + + [ Steve Langasek ] + * Make sure our libs Pre-Depend on 'multiarch-support' when building for + multiarch. + * debian/patches/gcc-multiarch*, debian/rules.patch: use i386 in the + multiarch path for amd64 / kfreebsd-amd64, not i486 or i686. This lets + us use a common set of paths on both Debian and Ubuntu, regardless of + the target default optimization level. + * debian/rules.conf: when building for multiarch, we need to be sure we + are building against a libc-dev that supports the corresponding paths. + (the referenced version number for this needs to be bumped once this is + officially in the archive.) + + [ Matthias Klose ] + * Don't run the libmudflap testsuite on hppa; times out on the buildd. + * Don't run the libstdc++ testsuite on mipsel; times out on the buildd. + * Post Linaro 4.5-2011.03-0 release changes (up to 20110313). + * Undefine LINK_EH_SPEC before redefining it to turn off warnings on + powerpc. + * Update gmp (build) dependencies. + + [ Aurelien Jarno ] + * Add symbol files on kfreebsd-i386. + * Add symbol files on kfreebsd-amd64. + * Add symbol files on sparc64. + * Add symbol files on sh4. + + -- Matthias Klose Sun, 13 Mar 2011 17:30:48 +0100 + +gcc-4.5 (4.5.2-5) unstable; urgency=low + + * Update to SVN 20110305 (r170696) from the gcc-4_5-branch. + - Fix PR target/43810, PR fortran/47886, PR tree-optimization/47615, + PR middle-end/47639, PR tree-optimization/47890, PR libfortran/47830, + PR tree-optimization/46723, PR target/45261, PR target/45808, + PR c++/46159, PR c++/47904, PR fortran/47886, PR libstdc++/47433, + PR target/42240, PR fortran/47878, PR libfortran/47694. + * Update the Linaro support to the 4.5-2011.03-0 release. + - Fix LP: #705689, LP: #695302, LP: #710652, LP: #710623, LP: #721021, + LP: #721021, LP: #709453. + + -- Matthias Klose Sun, 06 Mar 2011 02:58:01 +0100 + +gcc-4.5 (4.5.2-4) unstable; urgency=low + + * Update to SVN 20110222 (r170382) from the gcc-4_5-branch. + - Fix PR target/43653, PR fortran/47775, PR target/47840, + PR libfortran/47830. + + [ Matthias Klose ] + * Don't apply a patch twice. + * Build libgcc_s with -fno-stack-protector, when not building from the + Linaro branch. + * Backport proposed fix for PR tree-optimization/46723 from the trunk. + + [ Steve Langasek ] + * debian/control.m4: add missing Multi-Arch: same for libgcc4; make sure + Multi-Arch: same doesn't get set for libmudflap when building an + Architecture: all cross-compiler package. + * debian/rules2: use $libdir for libiberty.a. + * debian/patches/gcc-multiarch-*.diff: make sure we're using the same + set_multiarch_path definition for all variants. + + [ Sebastian Andrzej Siewior ] + * PR target/44364 + * Remove -many on powerpcspe (__SPE__) + * Remove classic FPU opcodes from libgcc if target has no support for them + (powerpcspe) + + -- Matthias Klose Wed, 23 Feb 2011 00:35:54 +0100 + +gcc-4.5 (4.5.2-3) experimental; urgency=low + + * Update to SVN 20110215 (r170181) from the gcc-4_5-branch. + - Fix PR rtl-optimization/44469, PR tree-optimization/47411, + PR bootstrap/44699, PR target/44392, PR fortran/47331, PR fortran/47448, + PR pch/14940, PR rtl-optimization/47166, PR target/47272, PR target/47580, + PR tree-optimization/47541, PR target/44606, PR boehm-gc/34544, + PR fortran/47569, PR libstdc++/47709, PR libstdc++/46914, PR libffi/46661. + * Update the Linaro support to the 4.5 2011.02-0 release. + * Pass --no-add-needed by default to the linker. See + http://wiki.debian.org/ToolChain/DSOLinking, section "Not resolving symbols + in indirect dependent shared libraries" for more information. + + -- Matthias Klose Wed, 16 Feb 2011 15:29:26 +0100 + +gcc-4.5 (4.5.2-2) experimental; urgency=low + + * Update to SVN 20110123 (r169142) from the gcc-4_5-branch. + - Fix PR target/46915, PR target/46729, PR libgcj/46774, PR target/47038, + PR target/46685, PR target/45447, PR tree-optimization/46758, + PR tree-optimization/45552, PR tree-optimization/43023, + PR middle-end/46734, PR fortran/45338, PR preprocessor/39213, + PR target/43309, PR fortran/46874, PR tree-optimization/47286, + PR tree-optimization/44592, PR target/47201, PR c/47150, PR target/46880, + PR middle-end/45852, PR tree-optimization/43655, PR debug/46893, + PR rtl-optimization/46804, PR rtl-optimization/46865, PR target/41082, + PR tree-optimization/46864, PR fortran/45777, PR tree-optimization/47365, + PR tree-optimization/47167, PR target/47318, PR target/46655, + PR fortran/47394, PR libstdc++/47354. + + [ Matthias Klose ] + * Update the Linaro support to the 4.5 2011.01-1 release. + * Don't build packages now built from the gcc-4.6 package for architectures + with a sucessful gcc-4.6 build. + + [ Kees Cook ] + * debian/patches/gcc-default-ssp.patch: do not ignore -fstack-protector-all + (LP: #691722). + + [ Marcin Juszkiewicz ] + * Fix biarch/triarch cross builds. + - dpkg-shlibdeps failed to find libraries for 64 or n32 builds + - LD_LIBRARY_PATH for dpkg-shlibdeps lacked host dirs. + + -- Matthias Klose Sun, 23 Jan 2011 11:54:52 +0100 + +gcc-4.5 (4.5.2-1) experimental; urgency=low + + * GCC 4.5.2 release. + + -- Matthias Klose Sat, 18 Dec 2010 14:14:38 +0100 + +gcc-4.5 (4.5.1-12) experimental; urgency=low + + * Update to SVN 20101129 (r167272) from the gcc-4_5-branch. + - Fix PR fortran/45742, PR tree-optimization/46498, PR target/45807, + PR target/44266, PR rtl-optimization/46315, PR tree-optimization/44545, + PR tree-optimization/46491, PR rtl-optimization/46571, PR target/31100, + PR c/46547, PR fortran/46638, PR tree-optimization/46675, PR debug/46258, + PR ada/40777. + + [ Matthias Klose ] + * Use lib instead of lib64 as the 64bit system dir on biarch + architectures defaulting to 64bit. Closes: #603597. + * Fix powerpc and s390 builds when biarch is disabled. + * Backport PR bootstrap/44768, miscompilation of dpkg on ARM + with -O2 (Chung-Lin Tang). LP: #674146. + * Update libgcc2 symbols file. Closes: #602099. + + [ Marcin Juszkiewicz ] + * Do not depend on target mpfr and zlib -dev packages for cross builds. + LP: #676027. + + [ Konstantinos Margaritis ] + * Add support for new target architecture `armhf'. Closes: #603948. + + -- Matthias Klose Mon, 22 Nov 2010 08:12:08 +0100 + +gcc-4.5 (4.5.1-11) experimental; urgency=low + + * Update to SVN 20101114 (r166728) from the gcc-4_5-branch. + - Fix PR fortran/45742. + * Don't hardcode debian/patches when referencing patches. Closes: #600502. + + -- Matthias Klose Sun, 14 Nov 2010 08:36:27 +0100 + +gcc-4.5 (4.5.1-10) experimental; urgency=low + + * Update to SVN 20101112 (r166653) from the gcc-4_5-branch. + - Fix PR rtl-optimization/44691, PR tree-optimization/46355, + PR tree-optimization/46177, PR c/44772, PR tree-optimization/46099, + PR middle-end/43690, PR tree-optimization/46165, PR middle-end/46419, + PR tree-optimization/46107, PR tree-optimization/45314, PR debug/45939, + PR rtl-optimization/46237, PR middle-end/44569, PR middle-end/44569, + PR tree-optimization/45902, PR target/46153, PR rtl-optimization/46226, + PR tree-optimization/46167, PR target/46098, PR target/45946, + PR fortran/42169, PR middle-end/46019, PR c/45969, PR c++/45894, + PR c++/46160, PR c++/45983, PR fortran/46152, PR fortran/46140, + PR libstdc++/45999, PR libgfortran/46373, PR libgfortran/46010, + PR fortran/46007, PR c++/46024. + * Update the Linaro support to the 4.5 2010.11 release. + * Update gcc-4.5 source dependencies. Closes: #600503. + * ARM: Fix Thumb-1 reload ICE with nested functions (Julian Brown), + taken from the trunk. + * Fix earlyclobbers on some arm.md DImode shifts (may miscompile "x >> 1"), + taken from the trunk. Closes: #600888. + + -- Matthias Klose Fri, 12 Nov 2010 18:34:47 +0100 + +gcc-4.5 (4.5.1-9) experimental; urgency=low + + * Update to SVN 20101014 (r165474) from the gcc-4_5-branch. + - Fix PR target/45820, PR tree-optimization/45854, PR target/45843, + PR target/43764, PR rtl-optimization/43358, PR bootstrap/44621, + PR libffi/45677, PR middle-end/45869, PR middle-end/45569, + PR tree-optimization/45752, PR fortran/45748, PR libstdc++/45403, + PR libstdc++/45924, PR libfortran/45710, PR bootstrap/44455, + PR java/43839, PR debug/45656, PR debug/44832, PR libstdc++/45711, + PR tree-optimization/45982. + + [ Matthias Klose ] + * Update the Linaro support to the 4.5 2010.10 release. + * Just try to build java on mips/mipsel (was disabled in 4.5.0-9, when + java was built from the same source package). Addresses: #599976. + * Remove the gpc packaging support. + * Fix libmudflap.so symlink. Addresses: #600161. + * Fix pch test failures with heap randomization on armel (PR pch/45979). + + [ Kees Cook ] + * Don't enable -fstack-protector with -ffreestanding. + + -- Matthias Klose Thu, 14 Oct 2010 19:17:41 +0200 + +gcc-4.5 (4.5.1-8) experimental; urgency=low + + * Update to SVN 20100925 (r164618) from the gcc-4_5-branch. + - Fix PR middle-end/44763, PR java/44095, PR target/35664, + PR rtl-optimization/41085, PR rtl-optimization/45051, + PR target/45694, PR middle-end/45678, PR middle-end/45678, + PR middle-end/45704, PR rtl-optimization/45728, PR libfortran/45532, + PR rtl-optimization/45695, PR rtl-optimization/42775, PR target/45726, + PR tree-optimization/45623, PR tree-optimization/45709, PR debug/43628, + PR tree-optimization/45709, PR rtl-optimization/45593, PR fortran/45081, + * Find 32bit system libraries on sparc64, s390x. + * Remove README.Debian from the source package to avoid confusion for + readers of the packaging. + * Don't include info files and man pages in hppa64 and spu builds. + Closes: #597435. + * Apply proposed patch for PR mudflap/24619 (instrumentation of dlopen) + (Brian M. Carlson) Closes: #507514. + + -- Matthias Klose Sat, 25 Sep 2010 14:11:39 +0200 + +gcc-4.5 (4.5.1-7) experimental; urgency=low + + * Update to SVN 20100914 (r164279) from the gcc-4_5-branch. + - Fix PR target/40959, PR middle-end/45567, PR debug/45660, + PR rtl-optimization/41087, PR rtl-optimization/44919, PR target/36502, + PR target/42313, PR target/44651. + * Add support to build from the Linaro 4.5 2010.09 release. + * gcc-4.5-plugin-dev: Install config/arm/arm-cores.def. + * Remove non-existing URL's in README.c++ (Osamu Aoki). Closes: #596406. + * Don't provide c++abi2-dev for g++ cross builds. + * Don't pass -mimplicit-it=thumb if -mthumb to as on ARM, rejected upstream. + + -- Matthias Klose Tue, 14 Sep 2010 12:52:34 +0200 + +gcc-4.5 (4.5.1-6) experimental; urgency=low + + * Update to SVN 20100909 (r164132) from the gcc-4_5-branch. + - Fix PR middle-end/45312, PR bootstrap/43847, PR middle-end/44554, + PR middle-end/40386, PR other/45443, PR c++/45200, PR c++/45293, + PR c++/45558, PR fortran/45595, PR fortran/45530, PR fortran/45489, + PR fortran/45019, PR libstdc++/45398. + + [ Matthias Klose ] + * Tighten binutils dependencies to 2.20.1-14. + + [ Marcin Juszkiewicz ] + * Fix the gcc-4.5-plugin-dev package name for cross builds. LP: #631474. + * Build the gcc-4.5-plugin-dev for stage1 cross builds. + * Fix priorities and sections for some cross packages. + + [ Al Viro ] + * Fix installation of libgcc_s.so as a linker script for biarch builds. + + [ Kees Cook ] + * Push glibc stack traces into stderr when building the package. + * debian/patches/gcc-default-ssp.patch: Lower ssp-buffer-size to 4. + + -- Matthias Klose Fri, 10 Sep 2010 21:25:37 +0200 + +gcc-4.5 (4.5.1-5) experimental; urgency=low + + * Always add dependencies on multilib library packages in *-multilib + packages. + * Fix installation of libgcc_s.so on architectures when libgcc_s.so is + a linker script, not a symlink (Steve Langasek). Closes: #595474. + * Remove the lib32gcc1 preinst script. Closes: #595495. + + -- Matthias Klose Sat, 04 Sep 2010 12:41:40 +0200 + +gcc-4.5 (4.5.1-4) experimental; urgency=low + + * Update to SVN 20100903 (r163833) from the gcc-4_5-branch. + - Fix PR target/45070, PR middle-end/45458, PR rtl-optimization/45353, + PR middle-end/45423, PR c/45079, PR tree-optimization/45393, + PR c++/44991, PR middle-end/45484, PR debug/45500, PR lto/45496. + + [ Matthias Klose ] + * Install config/vxworks-dummy.h in the gcc-4.5-plugin-dev package + on armel, mipsel and sparc64 too. + * Cleanup packaging files in gcc-source package. + * [ARM] Provide __builtin_expect() hints in linux-atomic.c (backport). + + [ Al Viro ] + * Fix builds with disabled biarch library packages. + * New variables {usr_lib,gcc_lib_dir,libgcc_dir}{,32,64,n32}, and switch + to using them in rules.d/*; as the result, most of the explicit pathnames + in there are gone _and_ we get uniformity across different flavours. + * New variables {usr_lib,gcc_lib_dir,libgcc_dir}{,32,64,n32}, and switch + to using them in rules.d/*; as the result, most of the explicit pathnames + in there are gone _and_ we get uniformity across different flavours. + * Merge bi-/tri-arch stuff in binary-gcc.mk. + * Merge rules for libgcc biarch variants. + * Merge rules for libstdc++ biarch variants. Fix n32 variant of + libstdc++-dbg removing _pic.a from the wrong place. + * Merge libgfortran rules. + * Merge rules for cxx-multi and objc-multi packages. + * Enable gcc-hppa64 in cross-gcc-to-hppa build. + + [ Marcin Juszkiewicz ] + * Create libgcc1 and gcc-*-base packages for stage2 cross builds. + LP: #628855. + + -- Matthias Klose Fri, 03 Sep 2010 18:09:40 +0200 + +gcc-4.5 (4.5.1-3) experimental; urgency=low + + * Update to SVN 20100829 (r163627) from the gcc-4_5-branch. + - Fix PR target/45327, PR middle-end/45292, PR fortran/45344, + PR target/41484, PR rtl-optimization/44858, PR rtl-optimization/45400, + PR tree-optimization/45260, PR c++/45315. + + [ Matthias Klose ] + * Don't run the libstdc++ testsuite on armel on the buildds. + * Integrate and extend bi/tri-arch cross builds patches. + * Fix dependencies for mips* triarch library packages depend on *both* lib64* + and libn32* packages. Closes: #594540. + * Tighten binutils dependencies to 2.20.1-13. + * Update LAST_UPDATED file when applying upstream updates. + + [ Al Viro ] + * Bi/tri-arch cross builds patches. + * Fix installation paths in bi/tri-arch libobjc and libmudflap packages. + * Merge rules for all flavours of libgomp, libmudflap, libobjc. + * Crossbuild fix for lib32gomp (use $(PFL)/lib32 instead of $(lib32)). + * gcc-4.5: libgcc_s.so.1 symlink creation on cross-builds. + * Enable gcc-multilib for cross-builds and fix what needs fixing. + * Enable g++-multilib for cross-builds, fix pathnames. + * Enable gobjc/gobjc++ multilib for cross-builds, fixes. + * Enable gfortran multilib for cross-builds, fix paths. + * Multilib dependency fixes for cross-builds. + + -- Matthias Klose Sun, 29 Aug 2010 18:24:37 +0200 + +gcc-4.5 (4.5.1-2) experimental; urgency=low + + * Update to SVN 20100818 (r163323) from the gcc-4_5-branch. + - Fix PR target/41089, PR tree-optimization/44914, PR c++/45112, + PR fortran/44929, PR middle-end/45262, PR debug/45259, PR debug/45055, + PR target/44805, PR middle-end/45034, PR tree-optimization/45109, + PR target/44942, PR fortran/31588, PR fortran/43954, PR fortran/44660, + PR fortran/42051, PR fortran/44064, PR fortran/45151, PR libstdc++/44963, + PR tree-optimization/45241, PR middle-end/44632 (closes: #585925), + PR libstdc++/45283, PR target/45296. + + [ Matthias Klose ] + * Allow overwriting of the PF macro used in the build from the environment + (Jim Heck). Closes: #588381. + * Fix libc-dbg build dependency for java enabled builds. Addresses: #591424. + * gcj: Align data in .rodata.jutf8.* sections, patch taken from the trunk. + * Configure with --enable-checking+release. LP: #612822. + * Add the complete packaging to the -source package. LP: #608650. + * Drop the gcc-ix86-asm-generic32.diff patch. + * Tighten (build-) dependency on cloog-ppl (>= 0.15.9-2). + * Apply proposed patch for PR middle-end/45292. + * Re-enable running the libstdc++ testsuite on armel and ia64 on the buildds. + + [ Steve Langasek ] + * s,/lib/,/$(libdir)/, throughout debian/rules*; a no-op in the current + case, but required for us to find the libraries when building for + multiarch + * Don't append multiarch paths to any multilib paths except for the default; + our biarch (multilib) builds need to remain independent of multiarch in + the near term, so we want to make sure we can find /usr/lib32 without + /usr/lib/i486-linux-gnu being available. + * debian/control.m4, debian/rules.conf: conditionally set packages to be + Multi-Arch: yes when MULTIARCH is defined. + + [ Marcin Juszkiewicz ] + * Allow building intermediate stages for cross builds. LP: #603497. + + -- Matthias Klose Wed, 18 Aug 2010 07:00:12 +0200 + +gcc-4.5 (4.5.1-1) experimental; urgency=low + + * GCC-4.5.1 release. + * Update to SVN 20100731 (r162781) from the gcc-4_5-branch. + - Fix PR tree-optimization/45052, PR target/43698. + * Apply proposed fixes for PR c++/45112, PR c/45079. + * Install config/vxworks-dummy.h in the gcc-4.5-plugin-dev package + on armel, mips, mipsel, sh4, sparc, sparc64. Closes: #590054. + * Link executables statically when `static' is passed in DEB_BUILD_OPTIONS + (Jim Heck). Closes: #590102. + * Stop building java packages from the gcc-4.5 source package. + + -- Matthias Klose Sat, 31 Jul 2010 16:30:20 +0200 + +gcc-4.5 (4.5.0-10) experimental; urgency=low + + * Update to SVN 20100725 (r162508) from the gcc-4_5-branch. + - Fix PR tree-optimization/45047, PR c++/43016, PR c++/45008. + * Disable building gcj/libjava on mips/mipsel (fails to link libgcj). + * Update libstdc++6 symbols files. + + -- Matthias Klose Sun, 25 Jul 2010 16:39:11 +0200 + +gcc-4.5 (4.5.0-9) experimental; urgency=low + + * Update to SVN 20100723 (r162448) from the gcc-4_5-branch (post + GCC-4.5.1 release candidate 1). + - Fix PR debug/45015, PR target/44942, PR tree-optimization/44900, + PR tree-optimization/44977, PR c++/44996, PR fortran/44929, + PR fortran/30668, PR fortran/31346, PR fortran/34260, + PR fortran/40011. + + [ Marcin Juszkiewicz ] + * Fix dependencies on cross library packages. + * Copy all debian/rules* files to the -source package. + + [ Matthias Klose ] + * Fix versioned build dependency on gcc-4.x-source package for cross builds. + LP: #609060. + * Set Vcs attributes in control file. + + -- Matthias Klose Fri, 23 Jul 2010 13:08:07 +0200 + +gcc-4.5 (4.5.0-8) experimental; urgency=low + + * Update to SVN 20100718 (r161892) from the gcc-4_5-branch. + - Fixes: PR target/44531, PR bootstrap/44820, PR target/44597, + PR target/44705, PR middle-end/44777, PR debug/44694, PR c++/44039, + PR tree-optimization/43801, PR target/44575, PR debug/44104, + PR middle-end/44671, PR middle-end/44686, PR tree-optimization/44357, + PR debug/44694, PR middle-end/43866, PR debug/42278, PR c++/44059, + PR tree-optimization/43905, PR middle-end/44133, PR tree-optimize/44063, + PR tree-optimization/44683, PR rtl-optimization/43332, PR debug/44610, + PR middle-end/44684, PR tree-optimization/44393, PR middle-end/44674, + PR c++/44628, PR c++/44587, PR fortran/44582, PR fortran/43841, + PR fortran/43843, PR libstdc++/44708, PR tree-optimization/44886, + PR target/43888, PR tree-optimization/44284, PR middle-end/44828, + PR middle-end/41355, PR c++/44703, PR ada/43731, PR fortran/44773, + PR fortran/44847. + + [ Marcin Juszkiewicz ] + * debian/rules2: Merge rules.d includes. + * Properly -name -dbg packages for cross builds. + * Various cross build fixes. + * Build libmudflap packages for cross builds. + * Fix generation of maintainer scripts for cross packages. + * Build a gcc-base package for cross builds. + + [ Kees Cook ] + * Fix additional libstdc++ testsuite failures for hardening defaults. + + [ Samuel Thibault ] + * Update hurd patch for 4.5, fixing build failure. Closes: #584819. + + [ Matthias Klose ] + * gcc-arm-implicit-it.diff: Only pass -mimplicit-it=thumb when in + thumb mode (Andrew Stubbs). + + -- Matthias Klose Sun, 18 Jul 2010 10:53:51 +0200 + +gcc-4.5 (4.5.0-7) experimental; urgency=low + + * Update to SVN 20100625 (r161383) from the gcc-4_5-branch. + - Fixes: PR bootstrap/44426, PR target/44546, PR target/44261, + PR target/43740, PR libstdc++/44630 (closes: #577458), + PR c++/44627 (LP: #503668), PR target/39690, PR target/44615, + PR fortran/44556, PR c/44555. + - Update libstdc++'s pretty printer for python2.6. Closes: #585202. + + [ Matthias Klose ] + * Fix libstdc++ symbols files for powerpc and sparc. + * Add maintainer scripts for cross packages. + + [ Samuel Thibault ] + * Update hurd patch for 4.5, fixing build failure. Closes: #584454, + #584819. + + [ Marcin Juszkiewicz ] + * Merge the rules.d/binary-*-cross.mk files into rules.d/binary-*.mk. + + -- Matthias Klose Fri, 25 Jun 2010 15:57:38 +0200 + +gcc-4.5 (4.5.0-6) experimental; urgency=low + + [ Matthias Klose ] + + * Update to SVN 20100617 (r161901) from the gcc-4_5-branch. Fixes: + PR target/44169, PR bootstrap/43170, PR objc/35996, PR objc++/32052, + PR objc++/23716, PR lto/44464, PR rtl-optimization/42461, PR fortran/44536, + PR tree-optimization/44258, PR tree-optimization/44423, PR target/44534, + PR bootstrap/44426, PR tree-optimization/44508, PR tree-optimization/44507, + PR lto/42776, PR target/44481, PR debug/41371, PR bootstrap/37304, + PR target/44067, PR debug/41371, PR debug/41371, PR target/44075, + PR c++/44366, PR c++/44401, PR fortran/44347, PR fortran/44430, + PR lto/42776, PR libstdc++/44487, PR other/43838, PR libgcj/44216. + * debian/patches/cross-fixes.diff: Update for 4.5 (Marcin Juszkiewicz). + * debian/patches/libstdc++-pic.diff: Fix installation for cross builds. + * Fix PR bootstrap/43847, --enable-plugin for cross builds. + * Export long double versions of "C" math library for arm-linux-gnueabi, + m68k-linux-gnu (ColdFire), mips*-linux-gnu (o32 ABI), sh*-linux-gnu + (not 32 bit). Merge the libstdc++-*-ldbl-compat.diff patches. + * Merge binary-libgcc.mk packaging changes into binary-libgcc-cross.mk + (Loic Minier). + * Update libgcc and libstdc++ symbols files. + + [ Aurelien Jarno ] + + * libstdc++-mips-ldbl-compat.diff: On MIPS provide the long double + versions of "C" math functions in libstdc++ as we need to keep the + ABI. Closes: #584610. + + -- Matthias Klose Thu, 17 Jun 2010 14:56:14 +0200 + +gcc-4.5 (4.5.0-5) experimental; urgency=low + + * Update to SVN 20100602 (r160097) from the gcc-4_5-branch. Fixes: + PR target/44338, PR middle-end/44337, PR tree-optimization/44182, + PR target/44161, PR c++/44358, PR fortran/44360, PR lto/44385. + * Fix PR target/44261, taken from the trunk. Closes: #582787. + * Fix passing the expanded -iplugindir option. + * Disable broken profiled bootstrap on alpha. + * On ix86, pass -mtune=generic32 in 32bit mode to the assembler, when + configured for i586-linux-gnu or i686-linux-gnu. + + -- Matthias Klose Thu, 03 Jun 2010 00:44:37 +0200 + +gcc-4.5 (4.5.0-4) experimental; urgency=low + + * Update to SVN 20100527 (r160047) from the gcc-4_5-branch. Fixes: + PR rtl-optimization/44164, PR middle-end/44069, PR target/44199, + PR lto/44196, PR target/43733, PR target/44245, PR target/43869, + PR debug/44223, PR tree-optimization/44038, PR tree-optimization/43949, + PR debug/44205, PR debug/44178, PR bootstrap/43870, PR target/44202, + PR target/44074, PR lto/43455, PR lto/42653, PR lto/42425, PR lto/43080, + PR lto/43946, PR c++/43382, PR c++/41510, PR c++/44193, PR c++/44157, + PR c++/44158, PR lto/44256, PR libstdc++/44190, PR lto/44312, + PR target/43636, PR target/43726, PR c++/43555PR libstdc++/40497. + + [ Matthias Klose ] + + * Enable multilibs again on powerpcspe. Closes: #579780. + * Fix setting CC for REVERSE_CROSS build (host == target,host != build). + Closes: #579779. + * Fix setting biarch_cpu macro. + * Don't bother with un-normalized paths in .la files, just remove them. + * debian/locale-gen: Update locales needed for the libstdc++-v3 testsuite. + * If libstdc++6 is built from newer gcc-4.x source, run the libstdc++-v3 + testsuite against the installed lib too. + * Configure with --enable-secureplt on powerpcspe. + + [ Aurelien Jarno ] + + * Fix $(distrelease) on non-official archives. Fix powerpcspe, sh4 and + sparc64 builds. + + -- Matthias Klose Sun, 30 May 2010 12:52:02 +0200 + +gcc-4.5 (4.5.0-3) experimental; urgency=low + + * Update to SVN 20100519 (r159556) from the gcc-4_5-branch. Fixes: + PR c++/43704, PR fortran/43339, PR middle-end/43337, PR target/43635, + PR tree-optimization/43783, PR tree-optimization/43796, PR middle-end/43570, + PR libgomp/43706, PR libgomp/43569, PR middle-end/43835, PR c/43893, + PR tree-optimization/43572, PR tree-optimization/43845, PR libgcj/40860, + PR target/43744, PR debug/43370, PR c++/43880, PR middle-end/43671, + PR debug/43972, PR target/43921, PR c++/38064, PR c++/43953, + PR fortran/43985, PR fortran/43592, PR fortran/40539, PR c++/43787, + PR middle-end/44085, PR middle-end/44071, PR middle-end/43812, + PR debug/44028, PR rtl-optimization/44012, PR target/44046, + PR documentation/44016, PR fortran/44036, PR fortran/40728, + PR libstdc++/44014, PR lto/44184, PR bootstrap/42347, PR middle-end/44102, + PR c++/44127, PR debug/44136, PR target/44088, PR tree-optimization/44124, + PR fortran/43591, PR fortran/44135, PR libstdc++/43259. + + [ Matthias Klose ] + * Revert gcj-arm-no-merge-exidx-entries patch, fixed by PR libgcj/40860. + * Don't run the libstdc++-v3 testsuite on the ia64 buildds. Timeouts. + * Backport two libjava fixes from the trunk to run josm with gcj. + * Ubuntu only: + - Pass --hash-style=gnu instead of --hash-style=both to the linker. + * Preliminary architecture port for powerpcspe (Kyle Moffett). + Closes: #579780. + * Update configury to be able to target i686 instead of i486 on i386. + + [ Aurelien Jarno] + * Don't link with --hash-style=both on mips/mipsel as GNU hash is not + compatible with the MIPS ABI. + * Default to -mplt on mips(el), -march=mips2 and -mtune=mips32 on 32-bit + mips(el), -march=mips3 and -mtune=mips64 on 64-bit mips(el). + + -- Matthias Klose Wed, 19 May 2010 09:48:20 +0200 + +gcc-4.5 (4.5.0-2) experimental; urgency=low + + * Update to SVN 20100419 from the gcc-4_5-branch. + - Fix PR tree-optimization/43627, c++/43641, PR c++/43621, PR c++/43611, + PR fortran/31538, PR fortran/30073, PR target/43662, + PR tree-optimization/43572, PR tree-optimization/43771. + * Install the linker plugin. + * Search the linker plugin as a readable, not an executable file. + * Link with --hash-style=both on mips/mipsel. + * On mips, pass -mfix-loongson2f-nop to as, if -mno-fix-loongson2f-nop + is not passed. + * Sequel to PR40521, fix -g to generate .eh_frame on ARM. + * On ARM, let gcj pass --no-merge-exidx-entries to the linker. + * Build-depend/depend on binutils snapshot. + * Update NEWS.html and NEWS.gcc. + + -- Matthias Klose Mon, 19 Apr 2010 15:22:55 +0200 + +gcc-4.5 (4.5.0-1) experimental; urgency=low + + * GCC 4.5.0 release. + * Always apply biarch patches. + * Build the lto-linker plugin again. Closes: #575448. + * Run the libstdc++v3 testsuite on armel again. + * Fix --enable-libstdcxx-time documentation, show configure result. + * On linux targets always pass --no-add-needed to the linker. + * Update the patch to search for plugins in a default plugin directory. + * Fix java installations in snapshot builds. + * Configure --with-plugin-ld=ld.gold. + * Linker selection: ld is used by default, to use the gold linker, + pass -fuse-linker-plugin (no other side effects if -flto/-fwhopr + is not passed). To force ld.bfd or ld.gold, pass -B/usr/lib/compat-ld + for ld.bfd or /usr/lib/gold-ld for ld.gold. + * Don't apply the gold-and-ld patch for now. + * Stop building the documentation for dfsg compliant builds. Closes: #571759. + + -- Matthias Klose Wed, 14 Apr 2010 13:29:20 +0200 + +gcc-4.5 (4.5-20100404-1) experimental; urgency=low + + * Update to SVN 20100404 from the trunk. + * Fix build failures building cross compilers configure --with-ld. + * lib32gcc1: Set priority to `extra'. + * Apply proposed patch to search for plugins in a default plugin directory. + * In snapshot builds, use for javac/ecj1 the jvm provided by the package. + * libstdc++-arm-ldbl-compat.diff: On ARM provide the long double versions + of "C" math functions in libstdc++; these are dropped when built + against glibc-2.11. + + -- Matthias Klose Sun, 04 Apr 2010 15:51:25 +0200 + +gcc-4.5 (4.5-20100321-1) experimental; urgency=low + + * Update to SVN 20100321 from the trunk. + * gcj-4.5-jre-headless: Stop providing java-virtual-machine. + * gcj-4.5-plugin-dev: Don't suggest mudflap packages. + * Apply proposed patch to enable both gold and ld in a single toolchain. + New option -fuse-ld=ld.bfd, -fuse-ld=gold. + + -- Matthias Klose Sun, 21 Mar 2010 11:45:48 +0100 + +gcc-4.5 (4.5-20100227-1) experimental; urgency=low + + * Update to SVN 20100227 from the trunk. + * Don't run the libstdc++-v3 testsuite on arm*-*-linux-gnueabi, when + defaulting to thumb mode (Timeouts on the Ubuntu buildd). + + -- Matthias Klose Sat, 27 Feb 2010 08:29:55 +0100 + +gcc-4.5 (4.5-20100222-1) experimental; urgency=low + + * Update to SVN 20100222 from the trunk. + - Install additional header files needed by plugins. Closes: #562881. + * gcc-4.5-plugin-dev: Should depend on libgmp3-dev. Closes: #566366. + * Update libstdc++6 symbols files. + + -- Matthias Klose Tue, 23 Feb 2010 02:16:22 +0100 + +gcc-4.5 (4.5-20100216-0ubuntu1~ppa1) lucid; urgency=low + + * Update to SVN 20100216 from the trunk. + * Don't call dh_makeshlibs with -V for shared libraries with + symbol files. + * Don't run the libstdc++-v3 testsuite in thumb mode on armel + to work around buildd timeout (see PR target/42509). + + -- Matthias Klose Wed, 17 Feb 2010 02:06:02 +0100 + +gcc-4.5 (4.5-20100204-1) experimental; urgency=low + + * Update to SVN 20100204 from the trunk. + + -- Matthias Klose Thu, 04 Feb 2010 19:44:19 +0100 + +gcc-4.5 (4.5-20100202-1) experimental; urgency=low + + * Update to SVN 20100202 from the trunk. + - gcc-stack_chk_fail-check.diff: Remove, applied upstream. + * Update libstdc++6 symbol files. + * Build gnat in snapshot builds on arm. + * Configure with --enable-checking=yes for snapshot builds, and for + 4.5 builds before the release. + * Temporary workaround: On arm-linux-gnueabi run the libstdc++v3 testsuite + with -Wno-abi. + * When building the hppa64 cross compiler, add $(builddir)/gcc to + LD_LIBRARY_PATH to find the just built libgcc6. Closes: #565862. + * On sh4-linux, use sh as java architecture name instead of sh4. + * On armel, build gnat-4.5 using gcc-snapshot. + * Revert the bump of the libgcc soversion on hppa (6 -> 4). + + -- Matthias Klose Tue, 02 Feb 2010 19:35:25 +0100 + +gcc-4.5 (4.5-20100107-1) experimental; urgency=low + + [ Matthias Klose ] + * Update to SVN 20100107 from the trunk. + * Revert the workaround for the alpha build (PR bootstrap/42511 is fixed). + * testsuite-hardening-format.diff: Add a fix for the libstdc++ testsuite. + * Build-depend again on autogen. + * Work around PR lto/41569 (installation bug when configured with + --enabled-gold). + * On armel run the testsuite both in arm and thumb mode, when the + distribution is supporthing tumb processors. + * Work around PR target/42509 (armel), not setting BOOT_CFLAGS, but + applying libcpp-arm-workaround.diff. + + [ Nobuhiro Iwamatsu ] + * Update gcc-multiarch patch for sh4. + + -- Matthias Klose Thu, 07 Jan 2010 16:34:57 +0100 + +gcc-4.5 (4.5-20100106-0ubuntu1) lucid; urgency=low + + * Update to SVN 20100106 from the trunk. + * gcj-4.5-jdk: Include /usr/lib/jvm-exports. + * Rename libgcc symbols file for hppa. + * On alpha and armel, set BOOT_CFLAGS to -g -O1 to work around bootstrap + failures (see PR target/42509 (armel) and PR bootstrap/42511 (alpha)). + * Base the source build-dependency on the package version instead of the + gcc version. + + -- Matthias Klose Wed, 06 Jan 2010 14:17:29 +0100 + +gcc-4.5 (4.5-20100103-1) experimental; urgency=low + + * Update to SVN 20100103 from the trunk. + + [ Samuel Thibault ] + * Update hurd patch for 4.5. Closes: #562802. + + [ Aurelien Jarno ] + * Remove patches/kbsd-gnu-ada.diff (merged upstream). + + [ Matthias Klose ] + * libgcj11: Move .so symlinks into gcj-4.5-jdk. Addresses: #563280. + * gcc-snapshot: On sparc64, use gcc-snapshot as bootstrap compiler. + * Don't use expect-tcl8.3 on hppa anymore. + * Merge gnat-4.4 changes back from 4.4.2-5. + * Bump libgcc soversion on hppa (4 -> 6). + * Default to v9a (ultrasparc) on sparc*-linux. + + -- Matthias Klose Sun, 03 Jan 2010 17:25:27 +0100 + +gcc-4.5 (4.5-20091226-1) experimental; urgency=low + + * Update to SVN 20091226 from the trunk. + * Fix powerpc spu installation. + * Enable multiarch for sh4. + * Fix libffi multilib test runs. + * Configure the hppa -> hppa64 cross compiler --with-system-zlib. + * gcc-4.5-hppa64: Don't ship info dir file. + * lib32stdc++6{,-dbg}: Add dependency on 32bit glibc. + + -- Matthias Klose Sat, 26 Dec 2009 15:38:23 +0100 + +gcc-4.5 (4.5-20091223-1) experimental; urgency=low + + * Update to SVN 20091223 from the trunk. + + [ Matthias Klose ] + * Update hardening patches for 4.5. + * Don't call install-info directly, depend on dpkg | install-info instead. + * Add conflicts with packages built from GCC 4.4 sources. + * On ARM, pass --hash-style=both to ld. + * Update libgfortran3 symbols file. + * Update libstdc++6 symbols file. + + [ Arthur Loiret ] + * debian/rules.conf (gen_no_archs): Handle multiple arm ports. + + -- Matthias Klose Wed, 23 Dec 2009 18:02:24 +0100 + +gcc-4.5 (4.5-20091220-1) experimental; urgency=low + + * Update to SVN 20091220 from the trunk. + - Remove patches applied upstream: arm-boehm-gc-locks.diff, + arm-gcc-gcse.diff, deb-protoize.diff, gcc-arm-thumb2-sched.diff, + gcc-atom-doc.diff, gcc-atom.diff, gcc-build-id.diff, + gcc-unwind-debug-hook.diff, gcj-use-atomic-builtins-doc.diff, + gcj-use-atomic-builtins.diff, libjava-atomic-builtins-eabi.diff, + libjava-nobiarch-check-snap.diff, lp432222.diff, pr25509-doc.diff, + pr25509.diff, pr39429.diff, pr40133.diff, pr40134.diff, rev146451.diff, + s390-biarch-snap.diff, sh4-scheduling.diff, sh4_atomic_update.diff. + - Update patches: gcc-multiarch.diff, gcc-textdomain.diff, + libjava-nobiarch-check.diff, libjava-subdir.diff, libstdc++-doclink.diff, + libstdc++-man-3cxx.diff, libstdc++-pic.diff, note-gnu-stack.diff, + rename-info-files.diff, s390-biarch.diff. + * Stop building the protoize package, removed from the GCC 4.5 sources. + * gcc-4.5: Install lto1, lto-wrapper, and new header files for intrinsics. + * libstdc++6-4.5-dbg: Install the python files for use with gdb. + * Build java packages from the gcc-4.5 source package. + + -- Matthias Klose Sun, 20 Dec 2009 10:56:56 +0100 + +gcc-4.4 (4.4.2-6) unstable; urgency=low + + * Update to SVN 20091220 from the gcc-4_4-branch (r155367). + Fix PR c++/42387, PR c++/41183. + + [ Matthias Klose ] + * Apply svn-doc-updates.diff for non DFSG builds. + * gcc-snapshot: + - Remove patches integrated upstream: pr40133.diff. Closes: #561550. + + [ Nobuhiro Iwamatsu ] + * Backport linux atomic ops changes for sh4 from the trunk. Closes: #561550. + * Backport from trunk: [SH] Not run scheduling before reload as default. + Closes: #561429. + + [ Arthur Loiret ] + * Apply spu patches independently of the hardening patches; fix build + failure on powerpc. + + -- Matthias Klose Sun, 20 Dec 2009 10:20:19 +0100 + +gcc-4.4 (4.4.2-5) unstable; urgency=low + + * Update to SVN 20091212 from the gcc-4_4-branch (r155122). + Revert the fix for PR libstdc++/42261, fix PR fortran/42268, + PR target/42263, PR target/42263, PR target/41196, PR target/41939, + PR rtl-optimization/41574. + + [ Matthias Klose ] + * Regenerate svn-updates.diff. + * Disable biarch testsuite runs for libffi (broken and unused). + * Support xz compression of source tarballs. + * Fix typo in PR libstdc++/40133 to do the link tests. + * gcc-snapshot: + - Remove patches integrated upstream: pr40134-snap.diff. + - Update s390-biarch.diff for trunk. + + [ Aurelien Jarno ] + * Add sparc64 support: disable multilib and install the libraries + in /lib. + + -- Matthias Klose Sun, 13 Dec 2009 10:28:19 +0100 + +gcc-4.4 (4.4.2-4) unstable; urgency=low + + * Update to SVN 20091210 from the gcc-4_4-branch (r155122), Fixes: + PR target/42165, PR target/42113, PR libgfortran/42090, + PR middle-end/42049, PR c++/42234, PR fortran/41278, PR libstdc++/42261, + PR libstdc++/42273 PR java/41991. + + [ Matthias Klose ] + * gcc-arm-thumb2-sched.diff: Don't restrict reloads to LO_REGS for Thumb-2. + * PR target/40134: Don't redefine LIB_SPEC on hppa. + * PR target/42263, fix wrong code bugs in SMP support on ARM, backport from + the trunk. + * Pass -mimplicit-it=thumb to as by default on ARM, when configured + --with-mode=thumb. + * Fix boehm-gc build on ARM --with-mode=thumb. + * ARM: Don't copy uncopyable instructions in gcse.c (backport from trunk). + * Build the spu cross compiler for powerpc from the cell-4_4-branch. + * gcj: add option -fuse-atomic-builtins (backport from the trunk). + + [ Arthur Loiret ] + * Make svn update interdiffs more readable. + + -- Matthias Klose Thu, 10 Dec 2009 04:29:36 +0100 + +gcc-4.4 (4.4.2-3) unstable; urgency=low + + * Update to SVN 20091118 from the gcc-4_4-branch (r154294). + Fix PR PR c++/9381, PR c++/21008, PR c++/35067, PR c++/36912, PR c++/37037, + PR c++/37093, PR c++/38699, PR c++/39786, c++/36959, PR c++/41754, + PR c++/41876, PR c++/41967, PR c++/41972, PR c++/41994, PR c++/42059, + PR c++/42061, + PR fortran/41772, PR fortran/41850, PR fortran/41909, + PR middle-end/40946, PR middle-end/41317, R tree-optimization/41643, + PR target/41900, PR rtl-optimization/41917, PR middle-end/41963, + PR middle-end/42029. + * Snapshot builds: + - Patch updates. + - Configure with --disable-browser-plugin. + * Configure with --disable-libstdcxx-pch on hppa. + * Backport armel patches form the trunk: + - Fix PR objc/41848 - workaround ObjC and -fsection-anchors. + - Enable scheduling for Thumb-2, including the fix for PR target/42031. + - Fix PR target/41939, EABI violation in accessing values below the stack. + + -- Matthias Klose Wed, 18 Nov 2009 08:37:18 -0600 + +gcc-4.4 (4.4.2-2) unstable; urgency=low + + * Update to SVN 20091031 from the gcc-4_4-branch (r153603). + - Fix PR debug/40521, PR target/40913, PR middle-end/22072, + PR target/41665, PR c++/38798, PR c++/40092, PR c++/37875, + PR c++/37204, PR fortran/41755, PR libstdc++/40654, PR libstdc++/40826, + PR target/41702, PR c/41842, PR target/41762, PR c++/40808, + PR fortran/41777, PR libstdc++/40852. + * Snapshot builds: + - Configure with --enable-plugin, disable the gcjwebplugin by a patch. + Addresses: #551200. + - Proposed patch for PR lto/41652, compile lto-plugin with + -D_FILE_OFFSET_BITS=64 + - Allow disabling the ada build via DEB_BUILD_OPTIONS nolang=ada. + * Fixes for reverse cross builds. + * On sparc default to v9 in 32bit mode. + * Fix __stack_chk_fail check for cross builds configured --with-headers. + * Apply some fixes for uClibc cross builds (Jonas Meyer, Hector Oron). + + -- Matthias Klose Sat, 31 Oct 2009 14:16:03 +0100 + +gcc-4.4 (4.4.2-1) unstable; urgency=low + + * GCC 4.4.2 release. + - Fixes PR target/26515, PR target/41680, PR rtl-optimization/41646, + PR c++/39863, PR c++/41038. + * Fix setting timeout for testsuite runs. + * gcj-4.4/gcc-snapshot: Drop build-dependency on libgconf2-dev, disabled + by default. + * gcj-4.4: Run the libffi testsuite as well. + * Add explicit build dependency on zlib1g-dev. + * Fix cross builds, add support for gomp and gfortran (only tested for + non-biarch targets). + * (Build-)depend on binutils-2.20. + * Fix up omp.h for multilibs (taken from Fedora). + + -- Matthias Klose Sun, 18 Oct 2009 02:31:32 +0200 + +gcc-4.4 (4.4.1-6) unstable; urgency=low + + * Snapshot builds: + - Add build dependency on libelfg0-dev (>= 0.8.12). + - Add build dependency on binutils-gold where available. + - Suggest binutils-gold; not perfect, it is required when using + -use-linker-plugin. + - Work around installation failure in the lto-plugin (PR lto/41569). + - Install java home symlinks in /usr/lib/jvm. + - Revert the dwarf2cfi_asm workaround, obsoleted by PR debug/40521. + * PR debug/40521: + - Apply patch for PR debug/40521, taken from the trunk. + - Revert the dwarf2cfi_asm workaround, obsoleted by PR debug/40521. + - Depend on binutils (>= 2.19.91.20091005). + * Update to SVN 20091005 from the gcc-4_4-branch (r152450). + - Fixes PR fortran/41479. + * In the test summary, add more information about package versions + used for the build. + + -- Matthias Klose Wed, 07 Oct 2009 02:12:56 +0200 + +gcc-4.4 (4.4.1-5) unstable; urgency=medium + + * Update to SVN 20091003 from the gcc-4_4-branch (r152174). + - Fixes PR target/22093, PR c/39779, PR libffi/40242, PR target/40473, + PR debug/40521, PR c/41049, PR debug/41065, PR ada/41100, + PR tree-optimization/41101, PR libgfortran/41328, PR libffi/41443, + PR fortran/41515. + * Updates for snapshot builds: + - Fix build dependency on automake for snapshot builds. + - Update patches pr40134-snap and libjava-nobiarch-check-snap. + * Fix lintian errors in libstdc++ packages and lintian warnings in the + source package. + * Add debian/README.source. + * Don't apply PR libstdc++/39491 for the trunk anymore. + * Install java home symlinks for snapshot builds in /usr/lib/jvm, + including javac. Depend on ecj. Addresses #536102. + * Fix build failure on armel with -mfloat-abi=softfp. + * Don't pessimize the code for newer armv6 and armv7 processors. + * libjava: Use atomic builtins For Linux ARM/EABI, backported from the + trunk. + * Proposed patch to fix wrong-code on powerpc (Alan Modra). LP: #432222. + * Link against -ldl instead of -lcloog -lppl. Exit with an error when using + the Graphite loop transformation infrastructure without having the + libcloog-ppl0 package installed (patch taken from Fedora). Packages + using these optimizations should build-depend on libcloog-ppl0. + gcc-4.4: Suggest the cloog runtime libraries. + * Install a hook _Unwind_DebugHook, called during unwinding. Intended as + a hook for a debugger to intercept exceptions. CFA is the CFA of the + target frame. HANDLER is the PC to which control will be transferred + (patch taken from Fedora). + + -- Matthias Klose Sat, 03 Oct 2009 13:33:05 +0100 + +gcc-4.4 (4.4.1-4) unstable; urgency=low + + * Update to SVN 20090911 from the gcc-4_4-branch (r151649). + - Fixes PR target/34412, PR middle-end/41094, PR target/40718, + PR fortran/41062, PR libstdc++/41005, PR target/41184, + PR bootstrap/41180, PR c++/41127, PR fortran/41258, + PR rtl-optimization/40861, PR target/41315, PR fortran/39876. + + [ Matthias Klose ] + * Avoid underscores in doc-base document id's to workaround a + dh_installdocs bug. + * Update file names for the Ada user's guide. + * Set Homepage attribute for packages. + * Update the patch for gnat on armel. + * gcj-4.4-jdk: Depend on libantlr-java. Addresses: #546062. + * Backport patch for PR tree-optimization/41101 from the trunk. + Closes: #541816. + * Update libstdc++6.symbols for symbols introduced with the fix + for PR libstdc++/41005. + * Apply proposed patches for PR libstdc++/40133 and PR target/40134. + Add symbols exception propagation support in libstdc++ on armel + to the libstdc++6 symbols. + + [ Ludovic Brenta] + Merge from gnat-4.4 (4.4.1-3) unstable; urgency=low + * debian/rules.defs, debian/rules.d/binary-ada.mk, debian/rules.patch: + better support for architectures that support only one exception + handling mechanism (SJLJ or ZCX). + + -- Matthias Klose Sat, 12 Sep 2009 03:18:17 +0200 + +gcc-4.4 (4.4.1-3) unstable; urgency=low + + * Update to SVN 20090822 from the gcc-4_4-branch (r151011). + - Fixes PR tree-optimization/41016, PR tree-optimization/41011, + PR tree-optimization/41008, PR tree-optimization/40991, + PR tree-optimization/40964, PR target/8603 (closes: #161432), + PR target/41019, PR target/41015, PR target/40957, PR target/40934, + PR rtl-optimization/41033, PR middle-end/41047, PR middle-end/41006, + PR fortran/41070, PR fortran/40995, PR fortran/40847, PR debug/40990, + PR debug/37801, PR c/41046, PR c/40948, PR c/40866, PR bootstrap/41018, + PR middle-end/41123,PR target/40971, PR c++/41131, PR fortran/41102, + PR libfortran/40962. + + [ Arthur Loiret ] + * Only use -fno-stack-protector when known to the stage1 compiler. + + [ Aurelien Jarno ] + * lib32* packages: remove the Pre-Depends: libc6-i386 (>= 2.9-18) and + upgrade the Conflicts: libc6-i386 from (<< 2.9-18) to (<< 2.9-22). + Closes: #537466. + * kbsd-gnu-ada.dpatch: add support for kfreebsd-amd64. + + [ Matthias Klose ] + * Build gnat on armel, the gnat-4.4 build still failing, gcc-snapshot + builds good enough to build itself. + * Merge enough of the gnat-4.4 changes back to allow a combined build + from the gcc-4.4 source. + * Build libgnatprj for armel. + * On armel build just one version of the ada run-time library. + * Update auto* build dependencies for snapshot builds. + * Apply proposed patch for PR target/40718. + + -- Matthias Klose Sun, 23 Aug 2009 11:50:38 +0200 + +gcc-4.4 (4.4.1-2) unstable; urgency=low + + [ Matthias Klose ] + * Update to SVN 20090808 from the gcc-4_4-branch (r150577). + - Fixes PR target/40832, PR rtl-optimization/40710, + PR tree-optimization/40321, PR build/40010, PR fortran/40727, + PR build/40010, PR rtl-optimization/40924, PR c/39902, + PR middle-end/40943, PR target/40577, PR c++/39987, PR debug/39706, + PR c++/40948, PR c++/40749, PR fortran/40851, PR fortran/40878, + PR target/40906. + * Bump GCC version required in dependencies to 4.4.1. + * Enable Ada for snapshot builds on all archs with a gnat package + available in the archive. + * Build-depend on binutils 2.19.51.20090805, needed at least for armel. + + [ Aurelien Jarno ] + * kbsd-gnu-ada.dpatch: new patch to fix build on GNU/kFreeBSD. + + -- Matthias Klose Sat, 08 Aug 2009 10:17:39 +0200 + +gcc-4.4 (4.4.1-1) unstable; urgency=low + + * GCC 4.4.1 release. + - Fixes PR target/39943, PR tree-optimization/40792, PR c++/40780, + PR middle-end/40747, PR libstdc++/40691, PR libfortran/40714, + PR tree-optimization/40813 (ICE in OpenJDK build on sparc). + * Apply proposed patch for PR target/39429, an ARM wrong-code error. + * Fix a typo in the arm back-end (proposed patch). + * Build-depend on libmpc-dev for snapshot builds. + * Fix build failure in cross builds (Hector Oron). Closes: #522597. + * Run the testsuite as part of the build target, not the install target. + + -- Matthias Klose Wed, 22 Jul 2009 13:24:39 +0200 + +gcc-4.4 (4.4.0-11) unstable; urgency=medium + + [ Matthias Klose ] + * Update to SVN 20090715 from the gcc-4_4-branch (r149690). + - Corresponds to the 4.4.1 release candidate. + - Fixes PR target/38900, PR debug/40666, PR middle-end/40669, + PR middle-end/40328, PR target/40587, PR middle-end/40585, + PR c++/40566, PR tree-optimization/40542, PR c/39902, + PR tree-optimization/40579, PR tree-optimization/40550, PR c++/40684, + PR c++/35828, PR c++/37816, PR c++/40639, PR c++/40633, PR c++/40619, + PR c++/40595, PR fortran/40440, PR fortran/40551, PR fortran/40638, + PR fortran/40443, PR libstdc++/40600, PR rtl-optimization/40667, PR c++/40740, + PR c++/36628, PR c++/37206, PR c++/40689, PR c++/40502, PR middle-end/40747. + * Backport of PR c/25509, new option -Wno-unused-result. LP: #305176. + * gcc-4.4: Depend on libgomp1, even if not building the libgomp1 package. + * Add proposed patches for PR libstdc++/40133, PR target/40134; don't apply + yet. + + [Emilio Pozuelo Monfort] + * Backport build-id support, configure with --enable-linker-build-id. + + -- Matthias Klose Tue, 14 Jul 2009 16:09:33 -0400 + +gcc-4.4 (4.4.0-10) unstable; urgency=low + + [ Arthur Loiret ] + * debian/rules.patch: Record the auto* calls to run them once only. + + [ Matthias Klose ] + * Update to SVN 20090627 from the gcc-4_4-branch (r149023). + - Fixes PR other/40024. + * Fix typo, adding blacklisted symbols to the libgcc1 symbols file on armel. + * On mips/mipsel use -O2 in STAGE1_CFLAGS until binutils is updated. + + -- Matthias Klose Sun, 28 Jun 2009 10:13:08 +0200 + +gcc-4.4 (4.4.0-9) unstable; urgency=high + + * Update to SVN 20090624 from the gcc-4_4-branch (r148821). + - Fix PR objc/28050 (LP: #362217), PR libstdc++/40297, PR c++/40342. + * Continue the well planned lib32 transition on amd64, adding pre-dependencies + on libc6-i386 (>= 2.9-18) on Debian. Closes: #533767. + * Enable SSP on arm and armel, run the testsuite with -fstack-protector. + LP: #375189. + * Fix spu fortran build in gcc-snapshot builds. + * Add missing symbols for 64bit libgfortran library. + * Update libstdc++ symbol files for sparc 64bit, adding symbols + for exception propagation support. + * Explicitely add __aeabi symbols to the libgcc1 symbols file on armel. + Closes: #533843. + + -- Matthias Klose Wed, 24 Jun 2009 23:46:02 +0200 + +gcc-4.4 (4.4.0-8) unstable; urgency=medium + + * Let all 32bit libs conflict with libc6-i386 (<< 2.9-17). Closes: #533767. + * Update to SVN 20090620 from the gcc-4_4-branch (r148747). + - Fixes PR fortran/39800, PR fortran/40402. + * Work around tar bug on kfreebsd unpacking java class file updates (#533356). + + -- Matthias Klose Sat, 20 Jun 2009 15:15:22 +0200 + +gcc-4.4 (4.4.0-7) unstable; urgency=medium + + * Update to SVN 20090618 from the gcc-4_4-branch (r148685). + - Fixes PR middle-end/40446, PR middle-end/40389, PR middle-end/40460, + PR fortran/40168, PR target/40470. + * On amd64, install 32bit libraries into /lib32 and /usr/lib32. + * lib32gcc1, lib32gomp1, lib32stdc++6: Conflict with libc6-i386 (= 2.9-15), + libc6-i386 (= 2.9-16). + * Handle serialver alternative in -jdk install scripts, not in -jre-headless. + + -- Matthias Klose Fri, 19 Jun 2009 01:36:00 +0200 + +gcc-4.4 (4.4.0-6) unstable; urgency=low + + [ Matthias Klose ] + * Update to SVN 20090612 from the gcc-4_4-branch (r148433). + - Fixes PR c++/38064, PR c++/40139, PR target/40017, PR target/40266, + PR bootstrap/40027, PR tree-optimization/40087, PR target/39856, + PR rtl-optimization/40105, PR target/39942, PR middle-end/40204, + PR debug/40109, PR tree-optimization/39999, PR libfortran/37754, + PR fortran/22423, PR libfortran/39667, PR libfortran/39782, + PR libfortran/38668, PR libfortran/39665, PR libfortran/39702, + PR libfortran/39709, PR libfortran/39665i, PR libgfortran/39664, + PR fortran/38654, PR libfortran/37754, PR libfortran/37754, + PR libfortran/25561, PR libfortran/37754, PR middle-end/40291, + PR target/40017, PR middle-end/40340, PR c++/40308, PR c++/40311, + PR c++/40306, PR c++/40307, PR c++/40370, PR c++/40372, PR c++/40373, + PR c++/40381, PR fortran/40019, PR fortran/39893. + * gcj-4.4-jdk: Depend on libecj-java-gcj instead of libecj-java. + * Let gjdoc --version use the Configuration class instead of + version.properties (Alexander Sack). LP: #385682. + * Preserve libgcc_s.so linker scripts. Closes: #532263. + + [Ludovic Brenta] + * debian/patches/ppc64-ada.dpatch, + debian/patches/ada-mips.dpatch, + debian/patches/ada-mipsel.dpatch: remove, merged upstream. + * debian/patches/*ada*.dpatch: + - rename to *.diff; + - remove the dpatch prologue shell script + - refresh with quilt -p ab and without time stamps + - adjust to GCC 4.4 + * debian/patches/ada-library-project-files-soname.diff, + debian/patches/ada-polyorb-dsa.diff, + debian/patches/pr39856.diff: new. + * debian/rules.patch: adjust accordingly. + * debian/rules.defs: re-enable Ada. + * debian/rules2: do a lean bootstrap when building Ada. + * debian/rules.d/binary-ada.mk: do not build gnatbl or gprmake anymore, + removed upstream. + + -- Matthias Klose Fri, 12 Jun 2009 18:34:13 +0200 + +gcc-4.4 (4.4.0-5) unstable; urgency=medium + + * Update to SVN 20090517 from the gcc-4_4-branch (r147630). + - Fixes PR tree-optimization/40062, PR middle-end/39986, + PR middle-end/40057, PR fortran/39879, PR libstdc++/40038, + PR middle-end/40035, PR target/37179, PR middle-end/39666, + PR tree-optimization/40074, PR fortran/40018, PR fortran/38863, + PR middle-end/40147, PR fortran/40018, PR target/40153. + + [ Matthias Klose ] + * Update libstdc++ symbols files. + * Update libgcc, libobjc, libstdc++ symbols files for armel. + * Fix version symlink in gcc_lib_dir. Closes: #527837. + * Fix symlinks for javac and header files in /usr/lib/jvm. + Closes: #528084. + * Don't build the stage1 compiler with -O with recent binutils (trunk). + * Revert doing link tests to check for the atomic builtins, disabling + exception propagation support in libstdc++ on armel. See PR40133, PR40134. + * On mips/mipsel don't run the java testsuite with -mabi=64. + * Default to armv4 for the gcc-snapshot package as well. Closes: #523936. + * Mention GCC trunk in the gcc-snapshot package description. Closes: #526309. + * Remove unneed '..' elements from symlinks in JAVA_HOME. + * Fix some lintian warnings for gcc-snapshot. + + [ Arthur Loiret ] + * Add missing dir separator to multiarch path. Closes: #527537. + + -- Matthias Klose Sun, 17 May 2009 11:15:52 +0200 + +gcc-4.4 (4.4.0-4) unstable; urgency=medium + + * Update to SVN 20090506 from the gcc-4_4-branch (r147161). + - Fixes PR rtl-optimization/39914, PR testsuite/39776, + PR tree-optimization/40022, PR libstdc++/39909. + + [ Matthias Klose ] + * gcc-4.4-source: Don't depend on gcc-4.4-base, depend on quilt + and patchutils. + * On armel, link the shared libstdc++ with both -lgcc_s and -lgcc. + * Update libgcc and libstdc++ symbol files for mips and mipsel. + * Update libstdc++ symbol files for armel and hppa, adding symbols + for exception propagation support. + * Add ARM EABI symbols to libstdc++ symbol files for armel. + * Add libobjc symbols file for armel. + * Fix PR libstdc++/40038, missing ceill/tanhl symbols in libstdc++. + + [ Aurelien Jarno ] + * Fix libc name for biarch packages on kfreebsd-amd64. + + -- Matthias Klose Wed, 06 May 2009 15:10:36 +0200 + +gcc-4.4 (4.4.0-3) unstable; urgency=low + + * libstdc++-doc: Install the man pages again. + * Fix build configuration for the GC enabled ObjC runtime library. + * Fix thinko in autotools_files, resulting in autoconf not run in + some cases. + * Do link tests to check for the atomic builtins, enables exception + propagation support in libstdc++ on armel and hppa. + + -- Matthias Klose Sun, 03 May 2009 23:38:56 +0200 + +gcc-4.4 (4.4.0-2) unstable; urgency=low + + [ Samuel Thibault ] + * Enable java build on the hurd. + + [ Matthias Klose ] + * libobjc2.symbols.armel: Remove, use the default one. + * Address PR libstdc++/39491, removing __signbitl from the libstdc++6 + symbols file on hppa. + * libstdc++6.symbols.armel: Fix error introduced with copy from the + arm symbols file. + * libstdc++6.symbols.*: Don't assume exception propagation support + enabled for all architectures (although it should on armel, hppa, + sparc). + * Disable the build of the ObjC garbage collection library on mips*, + working around a build failure. + + -- Matthias Klose Sat, 02 May 2009 14:22:35 +0200 + +gcc-4.4 (4.4.0-1) unstable; urgency=low + + [ Matthias Klose ] + * Update to SVN 20090429 from the gcc-4_4-branch (r146989). + * Configure java enabled builds with --enable-java-home. + * Integrate the bits previously found in java-gcj-compat. + * Rename the packages using the naming schema used for OpenJDK: + gcj-X.Y-{jre-headless,jre,jre-lib,jdk,source}. The packages + {gij,gcj,gappletviewer}-X.Y and libgcjN-{jar,source} are gone. + * Build the libgcj documentation with the just built gjdoc. + * Don't use profiled bootstrap when building the gcj source. + * Apply proposed patch for PR target/39856. + * Fix some lintian warnings. + * Don't include debug symbols for libstdc++.so.6, if the library is + built by a newer GCC version. + * Adjust hrefs to point to the local libstdc++ documentation. LP: #365414. + * Update libgcc, libgfortran, libobjc, libstdc++ symbol files. + * gcc-4.4: Include libssp_nonshared.a. + * For ix86, set the java architecture directory to i386. + + [ Samuel Thibault ] + * Update Hurd changes. + * Configure with --enable-clocale=gnu on hurd-i386. + * debian/patches/hurd-pthread.diff: Reapply. + + -- Matthias Klose Thu, 30 Apr 2009 00:30:20 +0200 + +gcc-4.4 (4.4.0-1~exp2) experimental; urgency=low + + * Update to SVN 20090423 from the gcc-4_4-branch. + + [ Aurelien Jarno ] + * kbsd-gnu.diff: remove parts merged upstream. + + [ Matthias Klose ] + * Remove conflicts/replaces for *-spu packages. + * Configure the spu cross compiler without --with-sysroot and + --enable-multiarch. + * Fix and reenable the gfortran-spu build. + * Work around build failures with missing libstdc++ baseline files. + * Install gjdoc man page. + * Fix java configuration with --enable-java-home and include symlinks + for JAVA_HOME in /usr/lib/jvm. + * Apply proposed fix for PR middle-end/39794. + * Install libstdc++ man pages with suffix .3cxx instead of .3. + Closes: #525244. + * lib*stdc++6-{dbg,doc}: Add conflicts to the corresponding 4.3 packages. + + -- Matthias Klose Thu, 23 Apr 2009 18:11:49 +0200 + +gcc-4.4 (4.4.0-1~exp1) experimental; urgency=low + + * Final GCC 4.4.0 release. + + * Don't build the Fortran SPU cross compiler, currently broken. + * spu cross build: Build without spucache and spumea64. + * Configure --with-arch-32=i486 on amd64, i386, and kfreebsd-{amd64,i386}, + --with-arch-32=i586 on hurd-i386, --with-cpu=atom on lpia. + * Build using profiled bootstrap. + * Remove the gcc-4.4-base.postinst. Addresses: #524708. + * Update debian/copyright: Include runtime library exception, remove + D and Phobas license. + * Apply proposed patch for PR libstdc++/39491, missing symbol in libstdc++ + on hppa. + * Remove unsused soft-fp functions in the 64bit libgcc on powerpc (PR39828). + * Update NEWS files for 4.4. + * Build again libgfortran for the non-default multilib configuration. + * Restore missing chunks in note-gnu-stack.diff, lost during the conversion + to quilt. + + -- Matthias Klose Wed, 22 Apr 2009 00:53:16 +0200 + +gcc-4.4 (4.4-20090418-1) experimental; urgency=low + + * Update to SVN 20090418 from the gcc-4_4-branch. + + [ Arthur Loiret ] + * Update patches: + - boehm-gc-nocheck, cross-include, libjava-rpath, link-libs: + Rebase on trunk. + - gcc-m68k-pch, libjava-debuginfo, libjava-loading-constraints: + Remove, merged in trunk. + - cell-branch, cell-branch-doc: Remove, there is no upstream cell 4.4 + branch yet. + - gdc-fix-build-kbsd-gnu, svn-gdc-updates, gpc-4.1, gpc-gcc-4.x, + gpc-names: Remove, gpc and gdc are not ported to GCC 4.4 yet. + - svn-class-updates, svn-doc-updates, svn-updates: Make empty. + - Refresh all others, and convert them all to quilt. + + * Build system improvements: + - Partial rewrite/refactor of rules files. + - Switch patch system to quilt. + - Autogenerate debian/copyright. + - Use the autoconf2.59 package. + + * multilib/multiarch support improvements: Closes: #369064, #484589. + - mips-triarch.diff: Replace with a newer version (approved upstream). + - s390-biarch.diff: Ditto. + - debian/rules2: Configure with --enable-targets=all on mips-linux, + mipsel-linux and s390-linux. + - gcc-multiarch.diff: New, add multiarch include directories and + libraries path to the system paths. + - debian/rules2: Configure with --enable-multiarch. Configure spu build + with --with-multiarch-defaults=spu-elf. + - multiarch-include.diff: Remove. + - debian/multiarch.inc: Ditto. + + * cross-compilers changes: + - Never build a separated -base package, don't symlink any doc dir. + - Build gobjc again. + + * Run the 64-bit tests with -mabi=64 instead of -m64 on mips/mipsel to + hopefully fix the massive failure. + * Always set $(distribution) to "Debian" on mips/mipsel, workarounds FTBFS + on those archs due to a kernel bug triggered by lsb_release call. + Adresses: #524416. + * debian/rules.patch: Only apply the ada-nobiarch-check patch when ada is + enabled. Remove gpc and gdc patches. + * debian/rules.unpack (install_autotools_stamp): Remove. + * debian/rules.defs (configure_dependencies): Remove autotools dependency. + * debian/rules.conf: Add a copyright-file target. + * debian/control.m4: Build-Depends on autoconf2.59 and patchutils. + Make gcc-4.4-source Depends on autoconf2.59. + Add myself to Uploaders. + * debian/rules.d/binary-source.mk: Don't build and install an embedded + copy or autoconf2.59 in gcc-4.4-source. + * debian/copyright.in: New. + + [ Matthias Klose ] + * Build gcj on hppa. + * Add support to build vfp optimized runtime libraries on armel. + * gcc-4.4-spu: Depend on newlib-spu. + * Fix sections of -dbg and java packages. + * gcc-default-ssp.dpatch: Set the default as well, when calling the + preprocessor. LP: #346126. + * Build-depend on quilt. + * Keep the copyright file in the archive. + * Remove conflict of the gcc-X.Y-source packages. + * Update removal of gfdl doc files for 4.4. + * Don't re-run the autotools (introduced with the switch to quilt). + * On arm and armel, install the arm_neon.h header. LP: #360819. + * When hardening options are turned on by default, patch the testsuite + to handle the hardening defaults (Kees Cook). + * Only run the patch target once. Avoids multiple autotool runs, but + doesn't reflect changes in the series file anymore. + * libgcj-doc: Fix documentation title. + * Fix gcj source build with recent build changes. + * Don't check for libraries in DEB_BUILD_OPTIONS/nolang. + * gappletviewer: Include missing binary. + + [ Aurelien Jarno ] + * Remove: patches/kbsd-gnu-ada.dpatch (merged upstream). + * kbsd-gnu.diff: add fix for stuff broken by upstream. + + -- Matthias Klose Mon, 20 Apr 2009 01:34:26 +0200 + +gcc-4.4 (4.4-20090317-1) experimental; urgency=low + + * Initial upload of GCC-4.4, based on trunk 20090317 (r144904). + + [Matthias Klose] + * Branch from the gcc-4.3 packaging. + * Remove *-trunk patches, update remaining patches for the trunk. + * Remove patches integrated upstream: libobjc-gc-link, libjava-file-support, + libjava-realloc-leak, libjava-armel-ldflags, libstdc++-symbols-hppa, + gcc-m68k-pch, libjava-extra-cflags, libjava-javah-bridge-tgts, + hppa-atomic-builtins, armel-atomic-builtins, libssp-gnu, libobjc-armel, + gfortran-armel-updates, sparc-biarch, libjava-xulrunner-1.9. + * Update patches for 4.4, mostly using the patches converted for quilt by + Arthur Loiret. + * debian/patches/libjava-soname.dpatch: Remove, unmodifed upstream library. + * debian/patches/gcc-driver-extra-langs.dpatch: Search Ada files in subdir. + * debian/rules.unpack, debian/rules.d/binary-source.mk: Update for included + autoconf tarball. + * debian/rules.d/binary-{gcc,java}.mk: Install new header files. + * debian/libgfortran3.symbols.common: Remove symbol not generated by + gfortran (__iso_c_binding_c_f_procpointer@GFORTRAN_1.0), PR38871. + * debian/rules.conf: Update for 4.4. + * Fix build dependencies and configure options for 4.4, which were applied + for snapshot builds only. + + [Arthur Loiret] + * Update patches from debian/patches: + - Remove backported fixes: + PR ada: pr10768.dpatch, pr15808.dpatch, pr15915.dpatch, pr16086.dpatch, + pr16087.dpatch, pr16098.dpatch, pr17985.dpatch, pr18680.dpatch, + pr22255.dpatch, pr22387.dpatch, pr28305.dpatch, pr28733.dpatch, + pr29015.dpatch, pr30740.dpatch, pr30827.dpatch pr33688.dpatch, + pr34466.dpatch, pr35050.dpatch, pr35792.dpatch. + PR target: pr27880.dpatch, pr28102.dpatch, pr30961.dpatch, + pr35965.dpatch, pr37661.dpatch. + PR libgcj: pr24170.dpatch, pr35020.dpatch. + PR gcov-profile: pr38292.dpatch. + PR other: pr28322.dpatch. + * debian/rules.patch: Update. + * debian/symbols/libgomp1.symbols.common: Add new symbols from OpenMP 3.0. + + -- Matthias Klose Tue, 17 Mar 2009 02:28:01 +0100 + +gcc-4.3 (4.3.3-5) unstable; urgency=low + + Merge from gnat-4.3 (4.3.3-1): + + [Petr Salinger] + * debian/patches/ada-libgnatprj.dpatch: enable support for GNU/kFreeBSD. + Fixes: #512277. + + [Ludovic Brenta] + * debian/patches/ada-acats.dpatch: attempt to fix ACATS tests (not entirely + successful yet). + * New upstream version. Fixes: #514565. + + [Matthias Klose] + * Update to SVN 20090301 from the gcc-4_3-branch. + - Fix PR c/35446, PR c++/38950, PR fortran/38852, PR fortran/39006, + PR c++/39225 (closes: #516727), PR c++/38950, PR target/38056, + PR target/39228, PR middle-end/36578, PR inline-asm/39058, + PR middle-end/37861. + * Don't provide the 4.3.2 symlink in gcc_lib_dir anymore. + * Require binutils-2.19.1. + + -- Matthias Klose Sun, 01 Mar 2009 14:18:09 +0100 + +gcc-4.3 (4.3.3-4) unstable; urgency=low + + * Fix Fix PR gcov-profile/38292 (wrong profile information), taken + from the trunk. + * Update to SVN 20090215 from the gcc-4_3-branch. + Fix PR c/35435, PR tree-optimization/39100, PR rtl-optimization/39076, + PR c/35433, PR tree-optimization/39041, PR target/38988, + PR middle-end/38969, PR c++/36897, PR c++/39054, PR c/39035, PR c/35434, + PR c/36432, PR target/38991, PR c/39084, PR target/39118. + * Reapply the fix for PR middle-end/38615. + * Include autoconf-2.59 sources into the source package, and install as + part of the gcc-4.3-source package. + * Explicitely use autoconf-1.9. + * Disable building the gcjwebplugin. + * Don't configure with --enable-cld on amd64 and i386. + + -- Matthias Klose Sun, 15 Feb 2009 23:40:09 +0100 + +gcc-4.3 (4.3.3-3) unstable; urgency=medium + + * Revert fix for PR middle-end/38615. Closes: #513420. + + -- Matthias Klose Thu, 29 Jan 2009 07:05:15 +0100 + +gcc-4.3 (4.3.3-2) unstable; urgency=low + + * Update to SVN 20090127 from the gcc-4_3-branch. + - Fix PR tree-optimization/38359. Closes: #492505. + - Fix PR tree-optimization/38932 (ice-on-valid-code), PR target/38931 + (ice-on-valid-code), PR rtl-optimization/38879 (wrong-code), + PR c++/23287 (rejects-valid), PR fortran/38907 (ice-on-valid-code), + PR fortran/38859 (wrong-code), PR fortran/38657 (rejects-valid), + PR fortran/38672 (ice-on-valid-code). + * Fix PR middle-end/38969, taken from the trunk. Closes: #513007. + + -- Matthias Klose Tue, 27 Jan 2009 23:42:45 +0100 + +gcc-4.3 (4.3.3-1) unstable; urgency=low + + * GCC-4.3.3 release (no changes compared to the 4.3.2-4 upload). + * Fix PR middle-end/38615 (wrong code, taken from the trunk). + + -- Matthias Klose Sat, 24 Jan 2009 14:43:09 +0100 + +gcc-4.3 (4.3.2-4) unstable; urgency=medium + + * Update to SVN 20090119 from the gcc-4_3-branch. + - Fix PR tree-optimization/36765 (wrong code). + * Remove patch for PR 34571, applied upstream (fix build failure on alpha). + * Apply proposed patch for PR middle-end/38902 (wrong code). + + -- Matthias Klose Tue, 20 Jan 2009 00:22:41 +0100 + +gcc-4.3 (4.3.2-3) unstable; urgency=low + + * Update to SVN 20090117 from the gcc-4_3-branch (4.3.3 release candidate). + - Fix PR target/34571, PR debug/7055, PR tree-optimization/37194, + PR tree-optimization/38529, PR fortran/38763, PR fortran/38765, + PR fortran/38669, PR fortran/38487, PR fortran/35681, PR fortran/38657, + PR c++/36019, PR c++/31488, PR c++/37646, PR c++/36334, PR c++/38357, + PR c++/31260, PR c++/38877, PR libstdc++/36801, PR libgcj/38396. + - debian/patches/libgcj-bc.dpatch: Remove, applied upstream. + * Fix PR middle-end/38616 (wrong code with -fstack-protector). + * Update backport for PR28322 (Gunther Nikl). + + -- Matthias Klose Sat, 17 Jan 2009 21:09:35 +0100 + +gcc-4.3 (4.3.2-2) unstable; urgency=low + + * Update to SVN 20090110 from the gcc-4_3-branch. + - Fix PR target/36654, PR tree-optimization/38752, PR fortran/38675, + PR fortran/37469, PR libstdc++/38000. + + -- Matthias Klose Sat, 10 Jan 2009 18:32:34 +0100 + +gcc-4.3 (4.3.2-2~exp5) experimental; urgency=low + + * Adjust build-dependencies for cross builds. Closes: #499998. + * Update to SVN 20081231 from the gcc-4_3-branch. + - Fix PR middle-end/38565, PR target/38062, PR bootstrap/38383, + PR target/38402, PR testsuite/35677, PR tree-optimization/38478, + PR target/38054, PR middle-end/29056, PR testsuite/28870, + PR target/38254. + - Fix PR libstdc++/37144, PR c++/37582, PR libstdc++/38080. + - Fix PR fortran/38602, PR fortran/38602, PR fortran/38487, + PR fortran/38113, PR fortran/35983, PR fortran/35937, PR testsuite/36889. + * Update the spu cross compiler from the cell-gcc-4_3-branch 20081217. + * debian/patches/libobjc-armel.dpatch: Don't define EH_USES. + * Apply the Atomic builtins patch for PARISC. + + -- Matthias Klose Thu, 18 Dec 2008 00:34:46 +0100 + +gcc-4.3 (4.3.2-2~exp4) experimental; urgency=low + + * Update to SVN 20081130 from the gcc-4_3-branch. + - Fix PR bootstrap/33304, PR middle-end/37807, PR middle-end/37809, + PR rtl-optimization/37489, PR target/35574, PR c/37924, + PR tree-optimization/37879, PR middle-end/37858, PR middle-end/37870, + PR target/38016, PR target/37939, PR rtl-optimization/37769, + PR target/37909, PR fortran/37597, PR fortran/35820, PR fortran/37445, + PR fortran/PR35769, PR fortran/37903, PR fortran/37749. + - Fix PR target/37640, PR tree-optimization/37868, PR bootstrap/33100, + PR other/38214, PR c++/37142, PR c++/35405, PR c++/37563, PR c++/38030, + PR c++/37932, PR c++/38007. + - Fix PR fortran/37836, PR fortran/38171, PR fortran/35681, + PR fortran/37792, PR fortran/37926, PR fortran/38033, PR fortran/36526. + - Fix PR target/38287. Closes: #506713. + * Atomic builtins using kernel helpers for PARISC and ARM Linux/EABI, taken + from the trunk. + + -- Matthias Klose Mon, 01 Dec 2008 01:29:51 +0100 + +gcc-4.3 (4.3.2-2~exp3) experimental; urgency=low + + * Update to SVN 20081117 from the gcc-4_3-branch. + * Add build dependencies on spu packages for snapshot builds. + * Add build dependency on libantlr-java for snapshot builds. + * Disable fortran on spu for snapshot builds. + * Add dependency on binutils-{hppa64,spu} for snapshot builds. + + -- Matthias Klose Mon, 17 Nov 2008 21:57:51 +0100 + +gcc-4.3 (4.3.2-2~exp2) experimental; urgency=low + + * Update to SVN 20081023 from the gcc-4_3-branch. + - General regression fixes: PR rtl-optimization/37882 (wrong code), + - Fortran regression fixes: PR fortran/37787, PR fortran/37723. + * Use gij-4.3 for builds in java maintainer mode. + * Don't run the testsuite with -fstack-protector for snapshot builds. + * Update the spu cross compiler from the cell-gcc-4_3-branch 20081023. + Don't disable multilibs, install additional components in the gcc-4.3-spu + package. + * Enable building the spu cross compiler for powerpc and ppc64 snapshot + builds. + * Apply proposed patch for PR tree-optimization/37868 (wrong code). + * Apply proposed patch to parallelize make check. + * For biarch builds, disable the gnat testsuite for the non-default + architecture (no biarch support in gnat yet). + + -- Matthias Klose Thu, 23 Oct 2008 22:06:38 +0200 + +gcc-4.3 (4.3.2-2~exp1) experimental; urgency=low + + * Update to SVN 20081017 from the gcc-4_3-branch. + - General regression fixes: PR rtl-optimization/37408 (wrong code), + PR tree-optimization/36630, PR tree-optimization/37102 (wrong code), + PR c/35437 (ice on invalid code), PR middle-end/37731 (wrong code), + PR target/37603 (wrong code, hppa), PR tree-optimization/35737 (ice on + valid code), PR middle-end/36575 (wrong code), PR c/37645 (ice on valid + code), PR tree-optimization/37539 (compile time hog), PR middle-end/37236 + (ice on invalid code), PR tree-optimization/36343 (wrong code), + PR rtl-optimization/37544 (wrong code), PR target/35620 (ice on valid + code), PR target/35713 (ice on valid code, wrong code), PR c/35712 (wrong + code), PR target/37466 (wrong code, AVR). + - C++ regression fixes: PR c++/37389 (LP: #252301), PR c++/37555 (ice on + invalid code). + - Fortran regression fixes: PR fortran/37199, PR fortran/36214, + PR fortran/35770, PR fortran/36454, PR fortran/36374, PR fortran/37274, + PR fortran/37583, PR fortran/36700, PR fortran/35945, PR fortran/37626, + PR fortran/37504, PR fortran/37580, PR fortran/37706, PR fortran/35680, + PR fortran/37794. + * Remove obsolete patches: ada-driver.dpatch, pr33148.dpatch. + * Fix naming of bridge targets in gjavah (wrong header generation). + * Fix PR target/37661, SPARC64 int-to-TFmode conversions. + * Include the complete test summaries in a binary package, to allow + regression checking from the previous build. + * Tighten inter-package dependencies to (>= 4.3.2-1). + * Drop the 4.3.1 symlink in gcc_lib_dir, add a 4.3.3 symlink to 4.3. + + -- Matthias Klose Fri, 17 Oct 2008 23:26:50 +0200 + +gcc-4.3 (4.3.2-1) unstable; urgency=medium + + [Matthias Klose] + * Final gcc-4.3.2 release (regression fixes). + - Remove the generated install docs from the tarball (GFDL licensed). + - C++ regression fixes: PR debug/37156. + - general regression fixes: PR debug/37156, PR target/37101. + - Java regression fixes: PR libgcj/8995. + * Update to SVN 20080905 from the gcc-4_3-branch. + - C++ regression fixes: PR c++/36741 (wrong diagnostic), + - general regression fixes: PR target/37184 (ice on valid code), + PR target/37191 (ice on valid code), PR target/37197 (ice on valid code), + PR middle-end/36817 (ice on valid code), PR middle-end/36548 (wrong code), + PR middle-end/37125 (wrong code), PR c/37261 (wrong diagnostic), + PR target/37168 (ice on valid code), PR middle-end/36449 (wrong code), + PR middle-end/37248 (missed optimization), PR target/36332 (wrong code). + - Fortran regression fixes: PR fortran/37193 (rejects valid code). + * Move symlinks in gcc_lib_dir from cpp-4.3 to gcc-4.3-base. Closes: #497369. + * Don't build-depend on autogen on architectures where it is not installable + (needed for the fixincludes testsuite only); don't build-depend on it for + source packages not running the fixincludes testsuite. + + [Ludovic Brenta] + * Add sdefault.ads to libgnatprj4.3-dev. Fixes: #492866. + * turn gnatvsn.gpr and gnatprj.gpr into proper library project files. + * Unconditionally build-depend on gnat when building gnat-4.3. + Fixes: #487564. + * (debian/rules.d/binary-ada.mk): Add a symlink libgnat.so to + /usr/lib/libgnat-4.3.so in the adalib directory. Fixes: #493814. + * (debian/patches/ada-sjlj.dpatch): remove dangling symlinks from all + adalib directories. + * debian/patches/ada-alpha.dpatch: remove, applied upstream. + + [Samuel Tardieu, Ludovic Brenta] + * debian/patches/pr16086.dpatch: new; backport from GCC 4.4. + Closes: #248172. + * debian/patches/pr35792.dpatch: new; backport from GCC 4.4. + * debian/patches/pr15808.dpatch (fixes: #246392), + debian/patches/pr30827.dpatch: new; backport from the trunk. + + -- Matthias Klose Fri, 05 Sep 2008 22:52:58 +0200 + +gcc-4.3 (4.3.1-9) unstable; urgency=low + + * Update to SVN 20080814 from the gcc-4_3-branch. + - C++/libstdc++ regression fixes: PR c++/36688, PR c++/37016, PR c++/36999, + PR c++/36405, PR c++/36767, PR c++/36852. + - general regression fixes: PR target/36613, PR rtl-optimization/36998, + PR middle-end/37042, PR middle-end/35432, PR target/35659, + PR middle-end/37026, PR middle-end/36691, PR tree-optimization/36991, + PR rtl-optimization/35542, PR bootstrap/35752, PR rtl-optimization/36419, + PR debug/36278, PR preprocessor/36649, PR rtl-optimization/36929, + PR tree-optimization/36830, PR c/35746, PR middle-end/37014, + PR middle-end/37103. + - Fortran regression fixes: PR fortran/36132. + - Java regression fixes: PR libgcj/31890. + - Fixes PR middle-end/37090. Closes: #494815. + + -- Matthias Klose Thu, 14 Aug 2008 18:02:52 +0000 + +gcc-4.3 (4.3.1-8) unstable; urgency=low + + * Undo Revert PR tree-optimization/36262 on i386 (PR 36917 is invalid). + + -- Matthias Klose Fri, 25 Jul 2008 21:47:52 +0200 + +gcc-4.3 (4.3.1-7) unstable; urgency=low + + * Update to SVN 20080722 from the gcc-4_3-branch. + - Fix PR middle-end/36811, infinite loop building with -O3. + - C++/libstdc++ regression fixes: PR c++/36407, PR c++/34963, + PR libstdc++/36832, PR libstdc++/36552, PR libstdc++/36729. + - Fortran regression fixes: PR fortran/36366, PR fortran/36824. + - general regression fixes: PR middle-end/36877, PR target/36780, + PR target/36827, PR rtl-optimization/35281, PR rtl-optimization/36753, + PR target/36827, PR target/36784, PR target/36782, PR middle-end/36369, + PR target/36780, PR target/35492, PR middle-end/36811, + PR rtl-optimization/36419, PR target/35802, PR target/36736, + PR target/34780. + * Revert PR tree-optimization/36262 on i386, causing miscompilation of + OpenJDK hotspot. + * gij/gcj: Don't remove alternatives on upgrade. Addresses: #479950. + + -- Matthias Klose Tue, 22 Jul 2008 23:55:54 +0200 + +gcc-4.3 (4.3.1-6) unstable; urgency=low + + * Start the logwatch script on alpha as well to avoid timeouts in + the testsuite. + + -- Matthias Klose Mon, 07 Jul 2008 11:31:58 +0200 + +gcc-4.3 (4.3.1-5) unstable; urgency=low + + * Update to SVN 20080705 from the gcc-4_3-branch. + - Fix PR target/36634, wrong-code on powerpc with -msecure-plt. + * Fix PR target/35965, PIC + -fstack-protector on arm/armel. Closes: #469517. + * Don't run the libjava testsuite with -mabi=n32. + * Update patch for PR other/28322, that unknown -Wno-* options do not + cause errors, but warnings instead. + * On m68k, add -fgnu89-inline when in gnu99 mode (requested by Michael + Casadeval for the m68k port). Closes: #489234. + + -- Matthias Klose Sun, 06 Jul 2008 01:39:30 +0200 + +gcc-4.3 (4.3.1-4) unstable; urgency=low + + * Revert: debian/patches/gcc-multilib64dir.dpatch: Remove obsolete patch. + * Remove obsolete multiarch-lib patch. + + -- Matthias Klose Mon, 30 Jun 2008 23:05:17 +0200 + +gcc-4.3 (4.3.1-3) unstable; urgency=medium + + [Arthur Loiret] + * debian/rules2: + - configure sh4-linux with --with-multilib-list=m4,m4-nofpu + and --with-cpu=sh4. + - configure sparc-linux with --enable-targets=all on snapshot builds + (change already in 4.3.1-1). + * debian/rules.patch: Don't apply sh4-multilib.dpatch. + + [Matthias Klose] + * Update to SVN 20080628 from the gcc-4_3-branch. + - Fix PR target/36533, wrong-code with incorrectly assumed aligned_operand. + Closes: #487115. + * debian/rules.defs: Remove hurd-i386 from ssp_no_archs (Samuel Thibault). + Closes: #483613. + * Do not create a /usr/lib/gcc//4.3.0 symlink. + * debian/patches/gcc-multilib64dir.dpatch: Remove obsolete patch. + * libjava/classpath: Set and use EXTRA_CFLAGS (taken from the trunk). + + -- Matthias Klose Sat, 28 Jun 2008 16:00:38 +0200 + +gcc-4.3 (4.3.1-2) unstable; urgency=low + + * Update to SVN 20080610 from the gcc-4_3-branch. + - config.gcc: Fix quoting for in the enable_cld test. + * Use GNU locales on hurd-i386 (Samuel Thibault). Closes: #485395. + * libstdc++-doc: Fix URL's for locally installed docs. Closes: #485133. + * libjava: On armel apply kludge to fix unwinder infinitely looping 'til + it runs out of memory. + * Adjust dependencies to require GCC 4.3.1. + + -- Matthias Klose Wed, 11 Jun 2008 00:35:38 +0200 + +gcc-4.3 (4.3.1-1) unstable; urgency=high + + [Samuel Tardieu, Ludovic Brenta] + * debian/patches/pr16087.dpatch: new. Fixes: #248173. + * Correct the patches from the previous upload. + + [Ludovic Brenta] + * debian/patches/ada-acats.dpatch: really run the just-built gnat, not the + bootstrap gnat. + * debian/rules2: when running the Ada test suite, do not run the multilib + tests as gnat does not support multilib yet. + * Run the ACATS testsuite again (patch it so it correctly finds gnatmake). + + [Thiemo Seufer] + * debian/patches/ada-libgnatprj.dpatch, + debian/patches/ada-mips{,el}.dpatch: complete support for mips and mipsel. + Fixes: #482433. + + [Matthias Klose] + * GCC-4.3.1 release. + * Do not include standard system paths in libgcj pkgconfig file. + * Suggest the correct libmudflap0-dbg package. + * Fix PR libjava/35020, taken from the trunk. + * Apply proposed patch for PR tree-optimization/36343. + * On hurd-i386 with -fstack-protector do not link with libssp_nonshared + (Samuel Thibault). Closes: #483613. + * Apply proposed patch for PR tree-optimization/34244. + * Remove debian-revision in symbols files. + * Fix installation of all biarch -multilib packages which are not triarch. + * Fix some lintian warnings. + * Include library symlinks in gobjc and gfortran multilib packages, when + not building the library packages. + * Fix sections in doc-base files. + * Don't apply the sparc-biarch patch when building the gcc-snapshot package. + * libjava: Add @file support for gjavah & gjar. + * Apply patch for PR rtl-optimization/36111, taken from the trunk. + + * Closing reports reported against gcc-4.0 and fixed in gcc-4.3: + - General + + Fix PR optimization/3511, inlined strlen() could be smarter. + Close: #86251. + - C + + Fix PR c/9072, Split of -Wconversion in two different flags. + Closes: #128950, #226952. + - C++/libstdc++ + + PR libstdc++/24660, implement versioning weak symbols in libstdc++. + Closes: #328421. + - Architecture specific: + - mips + + PR target/26560, unable to find a register to spill in class + 'FP_REGS'. Closes: #354439. + - sparc + + Fix PR rtl-optimization/23454, ICE in invert_exp_1. Closes: #340951. + * Closing reports reported against gcc-4.1 and fixed in gcc-4.2: + - General + + PR tree-optimization/30132, ICE in find_lattice_value. Closes: #400484. + + PR other/29534, ICE in "gcc -O -ftrapv" with decreasing array index. + Closes: #405065. + + Incorrect SSE2 code generation for vector initialization. + Closes: #406442. + + Fix segfault in cc1 due to infinite loop in error() when using -ftrapv. + Closes: #458072. + + Fix regression in code size with -Os compared to GCC-3.3. + Closes: #348298. + - C++ + + Fix initialization of global variables with non-constant initializer. + Closes: #446067. + + Fix ICE building muse. Closes: #429385. + * Closing reports reported against gcc-4.1 and fixed in gcc-4.3: + - C++ + + PR c++/28705, ICE: in type_dependent_expression_p. Closes: #406324. + + PR c++/7302, -Wnon-virtual-dtor should't complain of protected dtor. + Closes: #356316. + + PR c++/28316, PR c++/24791, PR c++/20133, ICE in instantiate_decl. + Closes: #327346, #355909. + - Fortran + + PR fortran/31639, ICE in gfc_conv_constant. Closes: #401496. + - Java + + Fix ICE using gcj with --coverage. Closes: #416326. + + PR libgcj/29869, LogManager class loading failure. Closes: #399251 + + PR swing/29547 setText (String) of JButton does not work + with HTML code. Closes: #392791. + + PR libgcj/29178, CharsetEncoder.canEncode() gives different results + than Sun version. Closes: #388596. + + PR java/8923, ICE when modifying a variable decleared "final static". + Closes: #351512. + + PR java/22507, segfault building Apache Cocoon. Closes: #318534. + + PR java/2499, class members should be inherited from implemented + interfaces. Closes: #225434. + + PR java/10581, ICE compiling freenet. Closes: #186922. + + PR libgcj/28340, gij ignores -Djava.security.manager. Closes: #421098. + + PR java/32846, build failure on GNU/Hurd. Closes: #408888. + + PR java/29194, fails to import package from project. Closes: #369873. + + PR libgcj/31700, -X options not recognised by JNI_CreateJavaVM. + Closes: #426742. + + java.util.Calendar.setTimeZone fails to set ZONE_OFFSET. + Closes: #433636. + - Architecture specific: + - alpha + + C++, fix segfault in constructor with -Os. Closes: #438436. + - hppa + + PR target/30131, ICE in propagate_one_insn. Closes: #397341. + - m32r + + PR target/28508, assembler error (operand out of range). + Closes: #417542. + - m68k + + PR target/34688, ICE in output_operand. Closes: #459429. + * Closing reports reported against gcc-4.2 and fixed in gcc-4.3: + - General + + PR tree-optimization/33826, wrong code generation for infinitely + recursive functions. Closes: #445536. + - C++ + + PR c++/24791, ICE on invalid instantiation of template's static member. + Closes: #446698. + + [Aurelien Jarno] + * Really apply arm-funroll-loops.dpatch on arm and armel. Closes: #476460. + + -- Matthias Klose Sat, 07 Jun 2008 23:16:21 +0200 + +gcc-4.3 (4.3.0-5) unstable; urgency=medium + + * Update to SVN 20080523 from the gcc-4_3-branch. + - Remove gcc-i386-emit-cld patch. + - On Debian amd64 and i386 configure with --enable-cld. + * Fix PR tree-optimization/36129, ICE with -fprofile-use. + * Add spu build dependencies independent of the architecture. + * Move arm -funroll-loops fix to arm-funroll-loops from + gfortran-armel-updates. Apply it on both arm and armel. + Closes: #476460. + * Use iceape-dev as a build dependency for Java enabled builds. + * Build the sru cross compiler from a separate source dir without applying + the hardening patches. + + -- Matthias Klose Fri, 23 May 2008 10:12:02 +0200 + +gcc-4.3 (4.3.0-4) unstable; urgency=low + + [ Aurelien Jarno ] + * Fix gnat-4.3 build on mips/mipsel. + * Update libgcc1 symbols for hurd-i386. + + [ Arthur Loiret ] + * Make gcc-4.3-spu Recommends newlib-spu. Closes: #476088 + * Build depend on spu build dependencies only when building + as gcc-4.x source package. + * Disable spu for snapshot builds. + * Support sh4 targets: + - sh4-multilib.dpatch: Add, fix multilib (m4/m4-nofpu) for sh4-linux + - multiarch-include.dpatch: Don't apply on sh4. + + [ Matthias Klose ] + * Stop building libffi packages. + * Update to SVN 20080501 from the gcc-4_3-branch. + - Fix PR target/35662, wrong gfortran code on mips/mipsel. Closes: #476427. + - Fixes mplayer build on powerpc. Closes: #475153. + * Stop building gij/gcj on alpha, arm and hppa. Closes: #459560. + * libstdc++6-4.3-doc: Fix file location in doc-base file. Closes: #476253. + * debian/patches/template.dpatch: Remove the `exit 0' line. + * Fix alternative names for amd64 cross builds. Addresses: #466422. + * debian/copyright: Update to GPLv3, remove the text of the GFDL + and reference the copy in common-licenses. + * Generate the locale data for the testsuite, if the locales package + is installed (not a dependency on all archs). + * Update libgcc2 symbols for m68k, libstdc++6 symbols for arm, m68k, mips + and mipsel. + * Do not include a symbols file for libobjc_gc.so. + * Add four more symbols to libgcj_bc, patch taken from the trunk. + * Adjust names of manual pages in the spu build on powerpc. + * ARM EABI (armel) updates (Andrew Jenner, Julian Brown): + - Add Objective-C support. + - Fortran support patches. + - Fix ICE in gfortran.dg/vector_subscript_1.f90 for -Os -mthumb reload. + * Build ObjC and Obj-C++ packages on armel. + * Reenable running the testsuite on m68k. + + [Samuel Tardieu, Ludovic Brenta] + * debian/patches/gnalasup_to_lapack.dpatch: new. + * debian/patches/pr34466.dpatch, + debian/patches/pr22255.dpatch, + debian/patches/pr33688.dpatch, + debian/patches/pr10768.dpatch, + debian/patches/pr28305.dpatch, + debian/patches/pr17985.dpatch (#278685) + debian/patches/pr15915.dpatch, + debian/patches/pr16098.dpatch, + debian/patches/pr18680.dpatch, + debian/patches/pr28733.dpatch, + debian/patches/pr22387.dpatch, + debian/patches/pr29015.dpatch: new; backport Ada bug fixes from GCC 4.4. + * debian/patches/rules.patch: apply them. + * debian/patches/pr35050.dpatch: update. + + [Andreas Jochens] + * debian/patches/ppc64-ada.dpatch: update, adding support for ppc64. + (#476868). + + [Ludovic Brenta] + * Apply ppc64-ada.dpatch whenever we build libgnat, not just on ppc64. + * debian/patches/pr28322.dpatch: never pass -Wno-overlength-strings to + the bootstrap compiler, as the patch breaks the detection of whether + the bootstrap compiler supports this option or not. + Fixes: #471192. Works around #471767. + * Merge Aurélien Jarno's mips patch. Fixes: #472854. + + [ Samuel Tardieu ] + * debian/patches/pr30740.dpatch: new Ada bug fix. + * debian/patches/pr35050.dpatch: new Ada bug fix. + + [ Xavier Grave ] + * debian/patches/ada-mips{,el}.dpatch: new; split mips/mipsel support + into new patches, out of ada-sjlj.dpatch. + * debian/rules.d/binary-ada.mk: fix the version number of libgnarl-4.3.a. + + [Roman Zippel] + * PR target/25343, fix gcc.dg/pch/pch for m68k. + + -- Matthias Klose Thu, 01 May 2008 21:08:09 +0200 + +gcc-4.3 (4.3.0-3) unstable; urgency=medium + + [ Matthias Klose ] + * Update to SVN 20080401 from the gcc-4_3-branch. + - Fix PR middle-end/35705 (hppa only). + * Update libstdc++6 symbols for hurd-i386. Closes: #472334. + * Update symbol files for libgomp (ppc64). + * Only apply the gcc-i386-emit-cld patch on amd64 and i386 architectures. + * Update libstdc++ baseline symbols for hppa. + * Install powerpc specific header files new in 4.3. + * gcc-4.3-hppa64: Don't include the install tools in the package. + + [ Aurelien Jarno ] + * Fix gobjc-4.3-multilib dependencies. Closes: #473455. + * Fix gnat-4.3 build on mips/mipsel. + * patches/ada-alpha.dpatch: new patch to fix gnat-4.3 build on alpha. + Closes: #472852. + * patches/config-ml.dpatch: also check for n32 multidir. + + [ Arthur Loiret ] + * Build-Depends on binutils (>= 2.18.1~cvs20080103-2) on mips and mipsel, + required for triarch. + * libstdc++-pic.dpatch: Update, don't fail anymore if shared lib is disabled. + + [ Andreas Jochens ] + * Fix build failures on ppc64. Closes: #472917. + - gcc-multilib64dir.dpatch: Remove "msoft-float" and "nof" from MULTILIB + variables. + - Removed ppc64-biarch.dpatch. + - Add debian/lib32gfortan3.symbols.ppc64. + + [ Arthur Loiret, Matthias Klose ] + * Build compilers for spu-elf target on powerpc and ppc64. + - Add gcc-4.3-spu, g++-4.3-spu and gfortran-4.3-spu packages. + - Partly based on the work in Ubuntu on the spu toolchain. + + -- Matthias Klose Tue, 01 Apr 2008 23:29:21 +0000 + +gcc-4.3 (4.3.0-2) unstable; urgency=low + + [Matthias Klose] + * Update to SVN 20080321 from the gcc-4_3-branch. + - Remove some broken code that attempts to enforce linker + constraints. Closes: #432541. + * Temporary fix, will be removed once a fixed kernel is available + in testing: Emit cld instruction when stringops are used (i386). + Do not expose the -mcld option until added upstream. Closes: #469567. + * Update NEWS files. + * libjava: Don't leak upon failed realloc (taken from the trunk). + * debian/rules2: The build is not yet prepared to take variables from + the environment; unexport and unset those. + + [Arthur Loiret/Aurelien Jarno] + * MIPS tri-arch support: + - mips-triarch.dpatch: new patch to default to o32 and follow the + glibc convention for n32 & 64 bit names. + - Rename $(biarch) and related vars into $(biarch64). + - Fix biarchsubdir to allow triarch. + - Add biarchn32 support. + - Add mips and mipsel to biarch64 and biarchn32 archs. + - Update binary rules for biarchn32 and libn32 targets. + - Fix multilib deps for triarch. + - control.m4: Add libn32 packages. + + -- Matthias Klose Sat, 22 Mar 2008 00:06:33 +0100 + +gcc-4.3 (4.3.0-1) unstable; urgency=low + + [Matthias Klose] + * GCC-4.3.0, final release. + * Update to SVN 20080309 from the gcc-4_3-branch. + * Build from a modified tarball, without GFDL documentation with + invariant sections and cover texts. + * debian/rules.unpack: Avoid make warnings. + * debian/rules.d/binary-cpp.mk: Add 4.3.0 symlink in gcclibdir. + * Stop building treelang (removed upstream). + * gcj-4.3: Hardcode libgcj-bc dependency, don't run dh_shlibdeps on ecj1. + + [Aurelien Jarno] + * Update libssp-gnu.dpatch and reenable it. + + -- Matthias Klose Sun, 09 Mar 2008 15:18:08 +0100 + +gcc-4.3 (4.3.0~rc2-1) unstable; urgency=medium + + * Update to SVN 20080301 from the gcc-4_3-branch. + * Include the biarch libobjc_gc library in the packages. + * Link libobjc_gc with libgcjgc_convenience.la. + * Add new symbols to libstdc++6 symbol files, remove the symbols for + support (reverted upstream for the 4.3 branch). + * Disable running the testsuite on m68k. + * Update PR other/28322, ignore only unknown -W* options. + + -- Matthias Klose Sat, 01 Mar 2008 15:09:16 +0100 + +gcc-4.3 (4.3-20080227-1) unstable; urgency=low + + [Matthias Klose] + * Update to SVN 20080227 from the gcc-4_3-branch. + * Fix PR other/28322, GCC new warnings and compatibility. + Addresses: #367657. + + [Hector Oron] + * Fix cross-compile builds. Closes: #467471. + + -- Matthias Klose Thu, 28 Feb 2008 00:30:38 +0100 + +gcc-4.3 (4.3-20080219-1) unstable; urgency=medium + + [Matthias Klose] + * Update to SVN 20080219 from the gcc-4_3-branch. + * Apply proposed patch for PR target/34571 (alpha). + * libgcj9-dev: Don't claim that the package contains the static + libraries. + * libjava-xulrunner1.9.dpatch: Add configure check for xulrunner-1.9. + Name the alternative xulrunner-1.9-javaplugin.so. + * libgcj-doc: Don't include the examples; these cannot be built + with the existing Makefile anyway. Addresses: #449608. + * Manpages for gc-analyze and grmic are GFDL. Don't include these when + building DFSG compliant packages. + * Fix build failure building amd64 cross-target libstdc++ packages + (Tim Bagot). Addresses: #464365. + * Fix typos in rename-info-files patch (Richard Guenther). + * Fix PR libgcj/24170. + + [Aurelien Jarno] + * kbsd-gnu-ada.dpatch: new patch to fix build on GNU/kFreeBSD. + + [Ludovic Brenta] + * debian/rules.defs: Temporarily disable the testsuite when building gnat. + * debian/patches/libffi-configure.dpatch: run autoconf in the top-level + directory, where we've changed configure.ac; not in src/gcc. + * debian/patches/ada-sjlj.dpatch: do not run autoconf since we don't + change configure.ac. + * debian/control.m4 (gnat-4.3-doc): conflict with gnat-4.[12]-doc. + Closes: #464801. + + -- Matthias Klose Tue, 19 Feb 2008 23:20:45 +0000 + +gcc-4.3 (4.3-20080202-1) unstable; urgency=low + + [ Matthias Klose ] + * Update to SVN 20080202 from the trunk. + - Fix PR c/35017, pedwarns about valid code. Closes: #450506. + - Fix PR target/35045, wrong code generation with -O3 on i386. + Closes: #463478. + * gcj-4.3: On armel depend on g++-4.3. + * Re-enable build of libobjc_gc, using the internal version of boehm-gc. + Closes: #212248. + + [Ludovic Brenta] + * debian/patches/ada-default-project-path.dpatch, + debian/patches/ada-gcc-name.dpatch, + debian/patches/ada-symbolic-tracebacks.dpatch, + debian/patches/ada-link-lib.dpatch, + debian/patches/ada-libgnatvsn.dpatch, + debian/patches/ada-libgnatprj.dpatch, + debian/patches/ada-sjlj.dpatch: adjust to GCC 4.3. + * debian/README.gnat, debian/TODO, + debian/rules.d/binary-ada.mk: merge from gnat-4.2. + * debian/README.maintainers: add instructions for patching GCC. + * debian/patches/ada-driver.dpatch: remove, no longer used. + * debian/patches/libffi-configure.dpatch: do not patch the top-level + configure anymore; instead, rerun autoconf. This allows removing the + patch cleanly. + * debian/rules2: use gnatgcc as the bootstrap compiler, not gcc-4.2. + + -- Matthias Klose Sat, 02 Feb 2008 19:58:48 +0100 + +gcc-4.3 (4.3-20080127-1) unstable; urgency=low + + [ Matthias Klose ] + * Update to SVN 20080126 from the trunk. + * Tighten build dependency on doxygen. + * Update libstdc++ patches to current svn. + * gij-4.3: Provide java*-runtime-headless instead of java*-runtime. + + [ Aurelien Jarno] + * debian/multiarch.inc: change mipsel64 into mips64el. + + -- Matthias Klose Sun, 27 Jan 2008 01:33:35 +0100 + +gcc-4.3 (4.3-20080116-1) unstable; urgency=medium + + * Update to SVN 20080116 from the trunk. + * Update debian/watch. + * Build libgomp documentation without building libgomp. Addresses: #460660. + * Handle lzma compressed tarballs. + * Fix dependency generation for the gcc-snapshot package: Addresses: #454667. + * Restore lost chunk in libjava-subdir.dpatch. + + -- Matthias Klose Wed, 16 Jan 2008 20:33:50 +0100 + +gcc-4.3 (4.3-20080112-1) unstable; urgency=low + + * Update to SVN 20080112 from the trunk. + * Tighten build-dependency on dpkg-dev (closes: #458894). + * Update symbol definitions for alpha. + * Build-depend on libmpfr-dev for all source packages. + + -- Matthias Klose Sun, 13 Jan 2008 00:40:28 +0100 + +gcc-4.3 (4.3-20080104-1) unstable; urgency=low + + * Update to SVN 20080104 from the trunk. + * Update symbol definitions for alpha, hppa, ia64, mips, mipsel, powerpc, + s390, sparc. + + -- Matthias Klose Fri, 04 Jan 2008 07:34:15 +0100 + +gcc-4.3 (4.3-20080102-1) unstable; urgency=low + + [ Matthias Klose ] + * Update to SVN 20080102 from the trunk. + - Fix 64bit biarch builds (addresses: #447443). + * debian/rules.d/binary-java.mk: Reorder packaging to get shlibs + dependencies right. + * Use lib instead of lib64 as multilibdir on amd64 and ppc64. + * Build the java plugin always using libxul-dev. + * Add libgcj_bc to the libgcj9-0 shlibs file. + * Add symbol files for libgcc1, lib32gcc1, lib64gcc1, libstdc++6, + lib32stdc++6, lib64stdc++6, libgomp1, lib32gomp1, lib64gomp1, libffi4, + lib32ffi4, lib64ffi4, libobjc2, lib32objc2, lib64objc2, libgfortran3, + lib32gfortran3, lib64gfortran3. + Adjust build dependencies on dpkg-dev and debhelper. + * Do not build the java packages from the gcc-4.3 source package. + + [ Aurelien Jarno ] + * Disable amd64-biarch patch on kfreebsd-amd64. + + -- Matthias Klose Wed, 02 Jan 2008 23:48:14 +0100 + +gcc-4.3 (4.3-20071124-1) experimental; urgency=low + + [ Matthias Klose ] + * Update to SVN 20071124 from the trunk. + * Fix dependencies of lib*gcc1-dbg packages. + * gcjwebplugin: Fix path of the gcj subdirectory. LP: #149792. + * gij-hppa: Call gij-4.2, not gij-4.1. Addresses: #446282. + * Don't run the testsuite on hppa when expect-tcl8.3 is not available. + * Fix libgcc1-dbg doc directory symlink. Closes: #447969. + + [ Aurelien Jarno ] + * Update kbsd-gnu patch. + * Remove kbsd-gnu-ada patch (merged upstream). + + -- Matthias Klose Sat, 24 Nov 2007 13:14:29 +0100 + +gcc-4.3 (4.3-20070930-1) experimental; urgency=low + + [Matthias Klose] + * Update to SVN 20070929 from the trunk. + * Update debian patches to the current trunk. + * Regenerate the control file. + * On powerpc-linux-gnu and i486-linux-gnu cross-compile the 64bit + multilib libraries to allow a sucessful build on 32bit kernels + (our buildds). Although we won't get 64bit test results this way ... + * Remove the build dependency on expect-tcl8.3. + * Fix MULTILIB_OSDIRNAMES for cross builds targeted for amd64 and ppc64. + * When -fstack-protector is the default (Ubuntu), do not enable + -fstack-protector when -nostdlib is specified. LP: #77865. + * Always set STAGE1_CFLAGS to -g -O2, only pass other settings + when configuring when required. + * Configure --with-bugurl, adjust the bug reporting instructions. + * gcc-4.3: Install new cpuid.h header. + * Fix installation of the s390 libstdc++ biarch headers. + * Install new bmmintrin.h, mmintrin-common.h headers. + * Build -dbg packages for libgcc, libgomp, libmudflap, libffi, libobjc, + libgfortran. + * Downgrade libmudflap-dev recommendation to a suggestion. Closes: #443929. + + [Riku Voipio] + * Configure armeabi with --disable-sjlj-exceptions. + * armel testsuite takes ages, adjust build accordingly. + + -- Matthias Klose Sun, 30 Sep 2007 12:06:02 +0200 + +gcc-4.3 (4.3-20070902-1) experimental; urgency=low + + * Upload to experimental. + + -- Matthias Klose Sun, 2 Sep 2007 20:51:16 +0200 + +gcc-4.3 (4.3-20070902-0ubuntu1) gutsy; urgency=low + + * Update to SVN 20070902 from the trunk. + * Fix the build logic for the Ubuntu i386 buildd; we can't build biarch. + * Only remove libgcj9's classmap db if no other libgcj9* library is + installed. + * A lot more updates for 4.3 packaging. + + -- Matthias Klose Sat, 01 Sep 2007 21:01:43 +0200 + +gcc-4.3 (4.3-20070901-0ubuntu1) gutsy; urgency=low + + * Update to SVN 20070901 from the trunk. + * First gcc-4.3 package build. + - Update patches for the *-linux-gnu builds. + - Update build files for 4.3. + * Add proposed patch for PR middle-end/33029. + * gcj-4.3: Install gc-analyze. + + -- Matthias Klose Sat, 1 Sep 2007 20:52:16 +0200 + +gcc-4.2 (4.2.2-7) unstable; urgency=low + + * Update to SVN 20080114 from the ubuntu/gcc-4_2-branch. + - Fix PR middle-end/34762. LP: #182412. + * Update debian/watch. Closes: #459259. Addresses: #459391, #459392. + * Build libgomp documentation without building libgomp. Closes: #460660. + * Restore gomp development files. Closes: #460736. + + -- Matthias Klose Mon, 14 Jan 2008 23:20:04 +0100 + +gcc-4.2 (4.2.2-6) unstable; urgency=low + + * Update to SVN 20080113 from the ubuntu/gcc-4_2-branch. + * Adjust build-dependency on debhelper, dpkg-dev. + * Fix gnat-4.2 build failure (addresses: #456867). + * Do not build packages built from the gcc-4.3 source. + + -- Matthias Klose Sun, 13 Jan 2008 13:48:49 +0100 + +gcc-4.2 (4.2.2-5) unstable; urgency=low + + [Matthias Klose] + * Update to SVN 20080102 from the ubuntu/gcc-4_2-branch. + - Fix PR middle-end/32889, ICE in delete_output_reload. + Closes: #444873, #445336, #451047. + - Fix PR target/34215, ICE in assign_386_stack_local. + Closes: #446714, #452451. + - Fix PR target/33848, reference to non-existent label at -O1 on + mips/mipsel. Closes: #441633. + * debian/rules.d/binary-java.mk: dpkg-shlibsdeps can't handle the dangling + symlink to libgcj_bc.so.1. Remove it temporarily. + * Add libgcj_bc to the libgcj8-1 shlibs file. + * Fix build failures for gnat-4.2, gpc-4.2, gdc-4.2 introduced by recent + gdc changes. + * Add symbol files for libgcc1, lib32gcc1, lib64gcc1, libstdc++6, + lib32stdc++6, lib64stdc++6, libgomp1, lib32gomp1, lib64gomp1, libffi4, + lib32ffi4, lib64ffi4, libobjc2, lib32objc2, lib64objc2. Adjust build + dependencies on dpkg-dev and debhelper. + Adjust build-dependency on dpkg-dev. + + [Arthur Loiret] + * Fix gdc-4.2 build failure. + * Update gdc to upstream SVN 20071124. + - d-bi-attrs: Support attributes on declarations in other modules. + - d-codegen.cc (IRState::attributes): Support constant declarations as + string arguments. + * Enable libphobos: + - gdc-4.2.dpatch: Fix ICEs. + - gdc-4.2-build.dpatch: Update, make it cleaner. + * Install libphobos in the private gcc lib dir. + * gdc-4.2.dpatch: Update from gdc-4.1.dpatch. + - gcc/tree-sra.c: Do not use SRA on structs with aliased fields created + for anonymous unions. + - gcc/predict.c: Add null-pointer check. + * debian/rules.defs: Disable phobos on hurd-i386. + - gdc-hurd-proc_maps.dpatch: Remove. + + -- Matthias Klose Wed, 02 Jan 2008 15:49:30 +0100 + +gcc-4.2 (4.2.2-4) unstable; urgency=low + + [Matthias Klose] + * Update to SVN 20071123 from the ubuntu/gcc-4_2-branch. + - Fix PR middle-end/34130, wrong code with some __builtin_abs expressions. + Closes: #452108. + * Don't run the testsuite on hppa when expect-tcl8.3 is not available. + * Fix libgcc1-dbg doc directory symlink. Closes: #447969. + * Use gcc-multilib as build-dependency instead of gcc-4.1-mulitlib. + * Support for fast-math on hurd-i386 (Michael Banck). Closes: #451520. + * Fix again profiling support on the Hurd (Thomas Schwinge). Closes: #434937. + + [Arthur Loiret] + * Merge gdc-4.1 patches and build infrastructure: + - gdc-4.2.dpatch: Add, setup gcc-4.2.x for D. + - gdc-4.2-build.dpatch: Add, update gdc builtins and driver objs. + - gdc-driver-zlib.dpatch: Add, use up-to-date system zlib. + - gdc-driver-defaultlib.dpatch: Add, add -defaultlib/-debuglib switches. + - gdc-driver-nophobos.dpatch: Add, disable libphobos when unsupported. + - gdc-libphobos-build.dpatch: Add, enable libphobos build when supported. + - gdc-fix-build.dpatch: Add, fix build on non-biarched 64bits targets. + - gdc-libphobos-std-format.dpatch: Add, replace assert when formating a + struct on non-x86_64 archs by a FormatError. + - gdc-arm-unwind_ptr.dpatch: Add, fix build on arm. + - gdc-mips-gcc-config.dpatch: Add, fix build on mips. + - gdc-hurd-proc_maps.dpatch: Add, fix build on hurd. + + -- Matthias Klose Sat, 24 Nov 2007 12:01:06 +0100 + +gcc-4.2 (4.2.2-3) unstable; urgency=low + + * Update to SVN 20071014 from the ubuntu/gcc-4_2-branch. + - Fix build failure in libjava on mips/mipsel. + * Make 4.2.2-2 a requirement for frontends built from separate sources. + Addresses: #446596. + + -- Matthias Klose Sun, 14 Oct 2007 14:13:00 +0200 + +gcc-4.2 (4.2.2-2) unstable; urgency=low + + * Update to SVN 20071011 from the ubuntu/gcc-4_2-branch. + - Fix PR middle-end/33448, ICE in create_tmp_var. Closes: #439687. + - Remove debian/patches/pr31899.dpatch, applied upstream. + - Remove debian/patches/pr33381.dpatch, applied upstream. + * gij-hppa: Call gij-4.2, not gij-4.1. Addresses: #446282. + + -- Matthias Klose Thu, 11 Oct 2007 23:41:52 +0200 + +gcc-4.2 (4.2.2-1) unstable; urgency=low + + * Update to SVN 20071008 from the ubuntu/gcc-4_2-branch, corresponding + to the GCC-4.2.2 release. + * Fix dependencies of lib*gcc1-dbg packages. Closes: #445190. + * Remove libjava-armeabi patch integrated upstream. + * gcjwebplugin: Fix path of the gcj subdirectory. LP: #149792. + * Apply proposed patch for PR debug/31899. Closes: #445268. + + * Add niagara2 optimization support (David Miller). + + -- Matthias Klose Mon, 08 Oct 2007 21:12:41 +0200 + +gcc-4.2 (4.2.1-6) unstable; urgency=high + + [Matthias Klose] + * Update to SVN 20070929 from the ubuntu/gcc-4_2-branch. + - Fix PR middle-end/33382, ICE (closes: #441481). + - Fix PR tree-optimization/28544 (4.2.1, closes: #380482). + - Fix PR libffi/28313, port to mips64 (closes: #358235). + * Fix PR tree-optimization/33099, PR tree-optimization/33381, + wrong code generation with VRP/SCEV. Closes: #440545, #443576. + * Update Hurd fixes (Samuel Thibault). + * When -fstack-protector is the default (Ubuntu), do not enable + -fstack-protector when -nostdlib is specified. LP: #77865. + * Add -g to BOOT_CFLAGS, set STAGE1_CFLAGS to -g -O, only pass + other settings when required. + * Fix installation of the s390 libstdc++ biarch headers. + * Allow the powerpc build on a 32bit machine (without running the + biarch testsuite). + * Build -dbg packages for libgcc, libgomp, libmudflap, libffi, libobjc, + libgfortran. + * Drop the build dependency on expect-tcl8.3 (the hppa testsuite seems + to complete sucessfully with the expect package). + * Downgrade libmudflap-dev recommendation to a suggestion. Closes: #443929. + + * Closing reports reported against gcc-4.1 and fixed in gcc-4.2: + - General + + PR rtl-optimization/21299, error in invalid asm statement. + Closes: #380121. + - C++ + + PR libstdc++/19664, libstdc++ headers have pop/push of the visibility + around the declarations (closes: #307207, #324290, #423547). + + PR c++/21581, functions in anonymous namespaces default to "hidden" + visibility (closes: #278310). + + PR c++/4882, specialization of inner template using outer template + argument (closes: #269513). + + PR c++/6634, wrong parsing of "long long double" (closes: #247112). + + PR c++/10891, code using dynamic_cast causes segfaults when -fno-rtti + is used (closes: #188943). + + PR libstdc++/14991, stream::attach(int fd) porting entry out-of-date. + Closes: #178561. + + PR libstdc++/31638, string usage leads to warning with -Wcast-align. + Closes: #382153. + + Fix memory hog seen with g++-4.1. Closes: #411234. + - Fortran + + PR fortran/29228, ICE in gfc_trans_deferred_array (closes: #387222). + + PR fortran/24285, allow dollars everywhere in format (closes: #324600). + + PR libfortran/28354, 0.99999 printed as 0. instead of 1. by + format(f3.0). Closes: #397671. + + Fix ICE in gfc_get_extern_function_decl (closes: #396292). + - Architecture specific: + - i386 + + Fix error with -m64 (unable to find a register to spill in class + 'DIREG'). Closes: #430049. + - mips + + Fix ICE in tsubst (closes: #422303). + - s390 + + Fix ICE (segmentation fault) building dcmtk (closes: #435736). + + [Roman Zippel] + * Update the m68k patches. + + [Riku Voipio] + * Configure armeabi with --disable-sjlj-exceptions. + * armel testsuite takes ages, adjust build accordingly. + + [Ludovic Brenta and Xavier Grave] + * Add a version of the Ada run-time library using the setjump/longjump + exception handling mechanism (static library only). Use with + gnatmake --RTS=sjlj. Particularly useful for distributed (Annex E) + programs. + * Restore building libgnatvsn-dev and libgnatprj-dev. + + -- Matthias Klose Sat, 29 Sep 2007 11:19:40 +0200 + +gcc-4.2 (4.2.1-5) unstable; urgency=low + + * Update to SVN 20070825 from the ubuntu/gcc-4_2-branch. + - Fix PR debug/32610, LP: #121911. + * Apply proposed patches: + - Improve debug info for packed arrays with constant bounds + (PR fortran/22244). + - Fix ICE in rtl_for_decl_init on const vector initializers + (PR debug/32914). + - Fix (neg (lt X 0)) optimization (PR rtl-optimization/33148). + - Fix libgcc.a(tramp.o) on ppc32. + - Fix redundant reg/mem stores/moves (PR target/30961). + * Update the -fdirectives-only backport. + * gappletviewer-4.2: Include the gcjwebplugin binary. LP: #131114. + * Update gpc patches and build support (not yet enabled). + * Fix gcc-snapshot hppa64 install target. + * Set the priority of the source package to optional. + * Remove .la files from the biarch libstdc++ debug packages, + conflict with the 3.4 package. Closes: #440490. + + [Arthur Loiret] + * Add build support for GDC. + + -- Matthias Klose Mon, 27 Aug 2007 01:39:32 +0200 + +gcc-4.2 (4.2.1-4) unstable; urgency=medium + + * gcc-4.2: Include missing std*.h header files. + + -- Matthias Klose Tue, 14 Aug 2007 11:14:35 +0200 + +gcc-4.2 (4.2.1-3) unstable; urgency=low + + * Update to SVN 20070812 from the ubuntu/gcc-4_2-branch. + * debian/rules.defs: Fix typo, run the checks in biarch mode too. + * libgcj8-awt: Loosen dependency on gcj-4.2-base. + * Build only needed multilib libraries when building as gcj or gnat. + * Always build biarch libgomp in biarch builds. + * debian/rules2: Adjust testsuite logs files for logwatch.sh. + * Include header files from $/gcc_lib_dir)/include-fixed. + * Backport from trunk: -fdirectives-only (when preprocessing, handle + directives, but do not expand macros). + * Report an ICE to apport (if apport is available and the environment + variable GCC_NOAPPORT is not set) + * Fix gcj build failure on the Hurd (Samuel Thibault). Closes: #437470. + + -- Matthias Klose Sun, 12 Aug 2007 21:11:00 +0200 + +gcc-4.2 (4.2.1-2) unstable; urgency=low + + [Matthias Klose] + * Update to SVN 20070804 from the ubuntu/gcc-4_2-branch (20070804): + - Merge gcc-4_2-branch SVN 20070804. + - Imported classpath CVS 20070727. + - Bump the libgcj soname, add conflict with java-gcj-compat (<< 1.0.76-4). + - Remove patches integrated in the branches: pr32862. + - Update patches: libjava-subdir, libjava-jar. + - Add regenerated class files: svn-class-updates. + + * Fix profiling support on the Hurd (Michael Casadeval). Closes: #434937. + * Fix build on kfreebsd-amd64 (Aurelien Jarno). Closes: #435053. + * Period of grace is over, run the testsuite on m68k-linux again. + * Update infrastructure for the gcc-source package (Bastian Blank). + * Update profiling on the Hurd (Samuel Thibault, Michael Casadevall). + Closes: #433539. + * debian/rules2: Allow DEB_BUILD_OPTIONS=parallel= to overwrite NJOBS. + * Allow lang=, nolang= in DEB_BUILD_OPTIONS; deprecating + WITHOUT_LANG, and WITHOUT_CHECK. + * debian/rules.defs, debian/rules.conf: Cache some often used macros. + + * Preliminary work: Enable Java for ARM EABI (Andrew Haley), build + libffi for armel. + * gcj: Don't build the browser plugin in gcc-snapshot builds to get + rid of the xulrunner dependency. + * gcjwebplugin: Register for more browsers (package currently not built). + * gij/boehm-gc: Use sysconf as fallback, if reading /proc/stat fails. + Closes: #422469. + * libjava: Avoid dependency on MAXHOSTNAMELEN (Samuel Thibault). + * gcj: On arm and armel, use the ecj1 binary built from the ecj package. + * gcj: Don't require javac without java maintainer mode, remove build + dependencies on gcj and ecj, add build dependency on libecj-java. + + -- Matthias Klose Sun, 05 Aug 2007 15:56:07 +0200 + +gcc-4.2 (4.2.1-1) unstable; urgency=medium + + [Ludovic Brenta] + * debian/patches/ada-symbolic-tracebacks.c: remove all trace of + the function convert_addresses from adaint.c. Fixes FTBFS on alpha, + s390 and possibly other platforms. Closes: #433633. + * debian/control.m4: list myself as uploader if the source package name + is gnat. Relax build-dependency on gnat-4.2-source. + * debian/control.m4, debian/rules.conf: Build-depend on libmpfr-dev only + if building Fortran. + + [Matthias Klose] + * debian/rules.conf: Fix breakage of Fortran build dependencies introduced + by merge of the Ada bits. + * Don't include the gccbug binary anymore in the gcc package; upstream bug + reports should be reported to the upstream bug tracker at + http://gcc.gnu.org/bugzilla. + * Don't build and test libjava for the biarch architecture. + * Install gappletviewer man page. Addresses: #423094. + * debian/patches/m68k-java.dpatch: Readd. + * gjar: support @ arguments. + * Update to SVN 20070726 from the ubuntu/gcc-4_2-branch. + - Fix mips/mipsel builds. + * libmudflap0: Fix update leaving an empty doc dir. Closes: #428306. + * arm/armel doesn't have ssp support. Closes: #433172. + * Update kbsd-gnu-ada patch (Aurelien Jarno): Addresses: #434754. + * gcj-4.2: Build depend on gcj-4.2 to build the classpath examples files + for the binary-indep target. + * Fix PR java/32862, bugs in EnumMap implementation. Addresses: #423160. + + [Arthur Loiret] + * Fix cross builds targeting x86_64. Closes: LP: #121834. + + -- Matthias Klose Thu, 26 Jul 2007 21:46:03 +0200 + +gcc-4.2 (4.2.1-0) unstable; urgency=low + + [Matthias Klose] + * Update to SVN 20070719 from the ubuntu/gcc-4_2-branch, corresponding + to the GCC-4.2.1 release. + - debian/patches/arm-gij.dpatch: Remove. Closes: #433714. + * Apply proposed patch for PR tree-optimization/32723. + * Tighten build dependency on libmpfr-dev. + * On ia64, apply proposed patch for PR target/27880. Closes: #433719. + + [Hector Oron] + * Fix cross and reverse-cross builds. Closes: #432356. + + -- Matthias Klose Thu, 19 Jul 2007 17:59:37 +0200 + +gnat-4.2 (4.2-20070712-1) unstable; urgency=low + + * debian/rules.d/binary-ada.mk, debian/control.m4: + disable building libgnatvsn-dev and libgnatprj-dev, as they conflict + with packages from gnat-4.1. Will reenable them for the transition to + gnat-4.2. + * Upload as gnat-4.2. Closes: #432525. + + -- Ludovic Brenta Sat, 14 Jul 2007 15:12:34 +0200 + +gcc-4.2 (4.2-20070712-1) unstable; urgency=high + + [Matthias Klose] + * Update to SVN 20070712 from the ubuntu/gcc-4_2-branch. + - 4.2.1 RC2, built from SVN. + - same as gcc-4_2-branch, plus backport of gcc/java, boehm-gc, libffi, + libjava, zlib from the trunk. + - debian/patches/arm-libffi.dpatch: Remove. + - Fixes ICE in update_equiv_regs. Closes: #432604. + * debian/control.m4: Restore build dependency on dejagnu. + * debian/patches/arm-gij.dpatch: Update. + * i386-biarch.dpatch: Update for the backport for PR target/31868. + Closes: #432599. + + -- Matthias Klose Fri, 13 Jul 2007 08:07:51 +0200 + +gcc-4.2 (4.2-20070707-1) unstable; urgency=low + + [Matthias Klose] + * Update to SVN 20070707 from the ubuntu/gcc-4_2-branch. + - debian/patches/libjava-soname.dpatch: Remove. + - debian/patches/disable-configure-run-check.dpatch: Update. + * Only suggest multilib packages on multilib architectures. + * Point ICE messages to the 4.2 docdir. + * Explicitely use fastjar to build gcj-4.1. Addresses: #416001. + * Configure with --enable-libgcj on m32r (Kazuhiro Inaoka). + * Include the hppa64 cross compiler on hppa snapshot builds. + * debian/patches/arm-libffi.dpatch: Update. + * libgcj-doc: Include the generated documentation. + * Fix building the libjava/classpath examples. + * Support reverse cross builds (Neil Williams). Closes: #431086. + + -- Matthias Klose Sat, 07 Jul 2007 10:59:26 +0200 + +gcc-4.2 (4.2-20070627-1) unstable; urgency=high + + [Matthias Klose] + * Update to SVN gcc-4_2-branch/20070626. + * Update to SVN trunk/20070626 (gcc/java, libjava, libffi, boehm-gc). + * On mips*-linux, always imply -lpthread for -pthread (Thiemo Seufer). + Addresses: #428741. + * Fix libstdc++ cross builds (Arthur Loiret). Closes: #430395. + * README.Debian: Point to debian-toolchain for general toolchain topics. + * Use the generated locales for the libstdc++ build to fix the setting + of the gnu locale model. Closes: #428926, #429660. + * For ix86 lpia targets, configure --with-tune=i586. + * Make build dependency on gcc-4.1-multilib architecture specific. + * Do not ignore bootstrap comparision failure on ia64. + + [Ludovic Brenta] + * ada-link-lib.dpatch: update to apply cleanly on GCC 4.2. + * ada-libgnat{vsn,prj}.dpatch: adjust to GCC 4.2. Reenable in rules.patch. + * rules.conf: do not build libgomp as part of gnat-4.2. + * rules.conf, control.m4: build-depend on libz-dev, lib32z-dev or + lib64-dev only when building Java. + * rules2, rules.defs: $(with_mudflap): remove, use $(with_libmudflap) only. + * config.m4, binary-ada.mk: tighten dependencies; no Ada package depends + on gcc-4.2-base anymore. + * TODO: rewrite. + * README.gnat: include in gnat-4.2-base. Remove outdated information. + * README.maintainers: new. Include in gnat-4.2-base. + + [Hector Oron] + * Merge DEB_CROSS_INDEPENDENT with DEB_CROSS. + * Disables libssp0 for arm and armel targets when cross compiling. + * Updates README.cross. + * Fixes linker mapping problem on binary-libstdcxx-cross.mk. Closes: #430688. + + -- Matthias Klose Wed, 27 Jun 2007 21:54:08 +0200 + +gcc-4.2 (4.2-20070609-1) unstable; urgency=low + + * Update to SVN gcc-4_2-branch/20070609. + - Remove patches integrated upstream: pr30052, hppa-caller-save-pic-tls. + * Update to SVN trunk/20070609 (gcc/java, libjava, libffi, boehm-gc). + - Remove patches integrated upstream: libjava-qt-peer, + classpath-config-guess. + * Do not build with --enable-java-maintainer-mode. + * debian/rules.patch: Comment out m68k-peephole, requires m68k-split_shift. + * Add target to apply patches up to a specific patch (Wouter Verhelst). + Closes: #424855. + * libstdc++6-4.2-*: Add conflicts with 4.1 packages. Closes: #419511. + * Apply proposed fix for PR target/28102. Closes: #426905. + * Fix build failure for cross compiler builds (Jiri Palecek). Closes: #393897. + * Update build macros for kfreebsd-amd64. Closes: #424693. + + -- Matthias Klose Sat, 9 Jun 2007 06:54:13 +0200 + +gcc-4.2 (4.2-20070528-1) unstable; urgency=low + + * Update to SVN gcc-4_2-branch/20070528. + * Add backport for PR middle-end/20218. + * Add proposed PTA solver backport, PR tree-optimization/30052. + * Add backport for PR target/31868. + * Reenable the testsuite for arm, mips, mipsel. + + -- Matthias Klose Mon, 28 May 2007 09:03:04 +0200 + +gcc-4.2 (4.2-20070525-1) unstable; urgency=low + + * Update to SVN gcc-4_2-branch/20070525. + * Update to SVN trunk/20070520 (gcc/java, libjava, libffi, boehm-gc). + * Do not explicitely configure for __cxa_atexit. + * libstdc++6-4.2-doc: Conflict with libstdc++6-4.1-doc. Closes: #424896. + * Update m68k patches: + - Remove patches applied upstream: m68k-jumptable, m68k-gc, + - Reenable patches: m68k-save_pic, m68k-dwarf, m68k-limit_reload, + m68k-prevent-qipush, m68k-peephole, m68k-return, m68k-sig-unwind, + m68k-align-code m68k-align-stack, m68k-symbolic-operand, + m68k-bitfield-offset. + - Update: m68k-return, m68k-secondary-addr-reload, m68k-notice-move + m68k-secondary-addr-reload, m68k-notice-move. + - TODO: m68k-split_shift, m68k-dwarf3, m68k-fpcompare. + * Update the kfreebsd and arm patches (Aurelien Jarno). Closes: #425011. + * Temporarily disable the testsuite on slow architectures to get the + package built soon. + + -- Matthias Klose Fri, 25 May 2007 07:14:36 +0200 + +gcc-4.2 (4.2-20070516-1) unstable; urgency=low + + * Update to SVN gcc-4_2-branch/20070516. + * Update to SVN trunk/20070516 (gcc/java, libjava, libffi, boehm-gc). + * Merge changes from gcc-4.1_4.1.2-7. + * Update NEWS files. + + -- Matthias Klose Wed, 16 May 2007 02:33:57 +0200 + +gcc-4.2 (4.2-20070502-1) unstable; urgency=low + + * Update to SVN gcc-4_2-branch/20070502. + - Remove pr11953 patch, integrated upstream. + * Update to SVN trunk/20070502 (gcc/java, libjava, libffi, boehm-gc). + * Adjust tetex/tex-live build dependency. + * Fix gobjc-4.2's, gobjc++-4.2's dependency on libobjc2. + * Tighten (build) dependency on binutils. Addresses: #421197. + * gfortran-4.2: Depend on libgfortran2, provide the libgfortran.so + symlink. Adresses: #421362. + * Build-depend on gcc-multilib [amd64 i386 powerpc ppc64 s390 sparc]. + * (Build-) depend on glibc (>= 2.5) for all architectures. + * Remove libssp packages from the control file. + + -- Matthias Klose Wed, 2 May 2007 18:46:57 +0200 + +gcc-4.2 (4.2-20070405-1) experimental; urgency=low + + * Update to SVN gcc-4_2-branch/20070405. + * Update to SVN trunk/20070405 (gcc/java, libjava, libffi, boehm-gc). + * gcc-4.2-hppa64: Don't depend on libc6-dev. + * Robustify setting of make's -j flag. Closes: #410919. + * gcc-snapshot: Use the install_snap_stamp target for installation. + + -- Matthias Klose Thu, 5 Apr 2007 23:56:35 +0200 + +gcc-4.2 (4.2-20070307-1) experimental; urgency=low + + * Update to SVN gcc-4_2-branch/20070307. + * Update to SVN trunk/20070307 (gcc/java, libjava, libffi, boehm-gc). + * Build gnat from separate sources. + * Merge changes from gcc-4.1-4.1.2-1. + * Install into /usr/lib/gcc//4.2, to ease upgrades + between subminor versions. + * Configure --with-gxx-include-dir=/usr/include/c++/4.2 + + -- Matthias Klose Thu, 8 Mar 2007 02:52:00 +0100 + +gcc-4.2 (4.2-20070210-1) experimental; urgency=low + + * Merge Java backport from Ubuntu: + - Update to SVN gcc-4_2-branch/20070210. + - Update to SVN trunk/20070210 (gcc/java, libjava). + - Backout trunk specific gcc/java changes. + - Build-depend on gcj-4.1 and ecj-bootstrap. + - gcj-4.2: Depend on ecj-bootstrap, recommend ecj-bootstrap-gcj. + - Merge libgcj8-awt-gtk back into libgcj8-awt; the Qt peers + are disabled by upstream again. + - Generate manual pages for the classpath tools from the classpath + documentation. + - Adopt packaging for the merged libjava. + - Update patches for the merged libjava: libjava-lib32-properties, + i386-biarch, reporting, libjava-soname, libjava-subdir, + libjava-lib32subdir. + - Remove obsolete patches: libjava-plugin-binary, libjava-ia32fix, + libstdc++-docfixes. + + * Set priority of development packages to optional. + * debian/libgcjGCJ.postrm: Don't fail on purge when directories + don't exist anymore. Closes: #406017. + * debian/patches/gcc-textdomain.dpatch: Update for 4.2. + * Generate and install libgomp docs into gcc-4.2-doc. + + -- Matthias Klose Sat, 10 Feb 2007 16:53:11 +0100 + +gcc-4.2 (4.2-20070105-1) experimental; urgency=low + + * Update to SVN 20070105. + * Add tetex-extra to Build-Depend-Indep (libstd++ doxygen docs), + fix doxygen build (libstdc++-docfixes.dpatch). + * Enable parallel build by default on SMP machines. + + -- Matthias Klose Fri, 5 Jan 2007 22:42:18 +0100 + +gcc-4.2 (4.2-20061217-1) experimental; urgency=low + + * Update to SVN 20061217. + * Merge changes from gcc-4.1_4.1.1-16 to gcc-4.1_4.1.1-21. + * Update patches to the current branch. + * Add multilib packages for gcc, g++, gobjc, gobjc++, gfortran. + * Link using --hash-style=gnu (alpha, amd64, ia64, i386, powerpc, ppc64, + s390, sparc). + + -- Matthias Klose Sun, 17 Dec 2006 15:54:54 +0100 + +gcc-4.2 (4.2-20061003-1) experimental; urgency=low + + * libgcj.postinst: Remove /var/lib/gcj-4.2 on package removal. + * Don't install backup files in the doc directory, only one gcc-4.1 + upgrade was broken. Closes: #389366. + * Merge gcc-biarch-generic.dpatch into i386-biarch.dpatch. + * Update link-libs.dpatch. + * Merge libgfortran2-dev into gfortran-4.2. + + -- Matthias Klose Tue, 3 Oct 2006 16:26:38 +0000 + +gcc-4.2 (4.2-20060923-1) experimental; urgency=low + + * Update to SVN 20060923. + * Remove patches applied upstream: kbsd-gnu-java, kbsd-gnu. + + -- Matthias Klose Sat, 23 Sep 2006 15:11:36 +0200 + +gcc-4.2 (4.2-20060905-1) experimental; urgency=low + + * Update to SVN 20060905. + * Merge changes from gcc-4.1 (4.1.1-10 - 4.1.1-12). + * Move gomp development files into gcc and gfortran. + * Build-depend on binutils (>= 2.17). + + -- Matthias Klose Tue, 5 Sep 2006 03:33:00 +0200 + +gcc-4.2 (4.2-20060818-1) experimental; urgency=low + + * Update to SVN 20060818. + - libjava-libgcjbc.dpatch: Remove, applied upstream. + * Merge changes from the Ubuntu gcj-4.2 package: + - libjava-soname.dpatch: Remove, applied upstream. + - libjava-native-libdir.dpatch: update. + - libffi-without-libgcj.dpatch: Remove, new libffi-configure to + enable --disable-libffi. + - Changes required for the classpath-0.92 update: + - New packages gappletviewer-4.2, gcjwebplugin-4.2. + - gij-4.2: Add keytool alternative. + - gcj-4.2: Add jarsigner alternative. + - libgcj8-dev: Remove conflicts with older libgcjX-dev packages. + - lib32gcj8: Populate the /usr/lib32/gcj-4.2 directory. + - libjava-library-path.dpatch: + - When running the i386 binaries on amd64, look in + /usr/lib32/gcj-x.y and /usr/lib32/jni instead. + - Add /usr/lib/jni to java.library.path. Adresses: #364820. + - Add more debugging symbols to libgcj8-dbg. Adresses: #383705. + - Fix and renable the biarch build for sparc. + * Disable gnat for alpha, fails to build. + * Configure without --enable-objc-gc, fails to build. + + -- Matthias Klose Sat, 19 Aug 2006 18:25:50 +0200 + +gcc-4.2 (4.2-20060709-1) experimental; urgency=low + + * Test build, SVN trunk 20060709. + * Merge libssp0-dev into gcc-4.1 (-fstack-protector is a common option). + * Rename libmudflap0-dev to libmudflap0-4.2-dev. + * Ignore compiler warnings when checking whether compiler driver understands + Ada fails. + * Merge changes from the gcc-4.1 package. + + -- Matthias Klose Sun, 9 Jul 2006 14:28:03 +0200 + +gcc-4.2 (4.2-20060617-1) experimental; urgency=low + + * Test build, SVN trunk 20060617. + + [Matthias Klose] + * Configure using --enable-objc-gc, using the internal boehm-gc. + * Build-depend on bison (>= 1:2.3). + * Build the QT based awt peer library, not yet the same functionality + as the GTK based peer library. + * Update libjava-* patches. + + [Ludovic Brenta] + * Do not provide the symbolic link /usr/bin/gnatgcc; this will now + be provided by package gnat from the source package gcc-defaults. + * debian/control.m4, debian/control (gnat): conflict with gnat (<< 4.1), + not all versions of gnat, since gcc-defaults will now provide gnat (= 4.1) + which depends on gnat-4.1. + + [Bastian Blank] + * Make it possible to overwrite arch per DEB_TARGET_ARCH and + DEB_TARGET_GNU_TYPE. + * Disable biarch only on request for cross builds. + * Use correct source directory for tarballs. + * Produce correct multiarch.inc for source builds. + + -- Matthias Klose Sat, 17 Jun 2006 19:02:01 +0200 + +gcc-4.2 (4.2-20060606-1) experimental; urgency=low + + * Test build, SVN trunk 20060606. + * Remove obsolete patches, update patches for 4.2. + * Update the biarch-include patches to work with mips-triarch. + * Disable Ada, not yet updated. + * New packages: libgomp*. + * Remove fastjar, not included upstream anymore. + + -- Matthias Klose Tue, 6 Jun 2006 10:52:28 +0200 + +gcc-4.1 (4.1.2-12) unstable; urgency=high + + * i386-biarch.dpatch: Update for the backport for PR target/31868. + Closes: #427185. + * m68k-libffi2.dpatch: Update. Closes: #425399. + + -- Matthias Klose Mon, 4 Jun 2007 23:53:23 +0200 + +gcc-4.1 (4.1.2-11) unstable; urgency=low + + * Update to SVN 20070601. + * Build the libmudflap0-dev package again. + * Don't build libffi, when the packages are not built. + + -- Matthias Klose Fri, 1 Jun 2007 23:55:22 +0200 + +gcc-4.1 (4.1.2-10) unstable; urgency=low + + * Regenerate the control file. + + -- Matthias Klose Wed, 30 May 2007 00:29:29 +0200 + +gcc-4.1 (4.1.2-9) unstable; urgency=low + + * Update to SVN 20070528. + * Don't build packages now built from the gcc-4.2 source (arm, m68k, + mips, mipsel). + * Add backport for PR middle-end/20218. + * Add backport for PR target/31868. + + -- Matthias Klose Tue, 29 May 2007 00:01:12 +0200 + +gcc-4.1 (4.1.2-8) unstable; urgency=low + + * Update to SVN 20070518. + * Don't build packages now built from the gcc-4.2 source. + + [ Aurelian Jarno ] + * Update libffi patch for ARM. Closes: #425011. + * arm-pr30486, arm-pr28516, arm-unbreak-eabi-armv4t: New. + * Disable FFI, Java, ObjC for armel. + + -- Matthias Klose Sun, 20 May 2007 10:31:24 +0200 + +gcc-4.1 (4.1.2-7) unstable; urgency=low + + * Update to SVN 20070514. + * Link using --hash-style=both on supported architectures. Addresses: #421790. + * On hppa, build ecjx as a native binary. + * note-gnu-stack.dpatch: Fix ARM comment marker (Daniel Jacobowitz). + Closes: #422978. + * Add build dependency on libxul-dev for *-freebsd. Closes: #422995. + * Update config.guess/config.sub and build gcjwebplugin on GNU/kFreeBSD + (Aurelian Jarno). Closes: #422995. + * Disable ssp on hurd-i386. Closes: #423757. + + -- Matthias Klose Mon, 14 May 2007 08:40:08 +0200 + +gcc-4.1 (4.1.2-6) unstable; urgency=low + + * Update libjava from the gcc-4.1 Fedora branch 20070504. + * gfortran-4.1: Fix the target of the libgfortran.so symlink. + Closes: #421362. + * Build-depend on gcc-multilib [amd64 i386 powerpc ppc64 s390 sparc]. + * Readd build dependency on binutils on arm. + * (Build-) depend on glibc (>= 2.5) for all architectures. + * Remove libssp packages from the control file. + * Fix wrong code generation on hppa when TLS variables are used. + Closes: #422421. + + -- Matthias Klose Sun, 6 May 2007 10:00:23 +0200 + +gcc-4.1 (4.1.2-5) unstable; urgency=low + + * Update to SVN 20070429. + * Update libjava from the gcc-4.1 Fedora branch 20070428. + * Update m68k patches: + - Remove pr25514, pr27736, applied upstream. + - Update m68k-java. + * Link using --hash-style=gnu/both. + * Tighten (build) dependency on binutils. Closes: #421197. + * gij-4.1: Add a conflict with java-gcj-compat (<< 1.0.69). + * gfortran-4.1: Depend on libgfortran1, provide the libgfortran.so + symlink. Closes: #421362. + * gcc-4.1, gcc-4.1-multilib: Fix compatibility symlinks. Closes: #421382. + * Temporarily remove build dependency on locales on arm, hppa, m68k, mipsel. + * Temporarily remove build dependency on binutils on arm. + * Fix FTBFS on GNU/kFreeBSD (Aurelian Jarno). Closes: #421423. + * gij-4.1 postinst: Create /var/lib/gcj-4.1. Closes: #421526. + + -- Matthias Klose Mon, 30 Apr 2007 08:13:32 +0200 + +gcc-4.1 (4.1.2-4) unstable; urgency=medium + + * Update to SVN 20070423. + - Remove pr11953, applied upstream. + - Fix ld version detection in libstdc++v3. + * Update libjava from the gcc-4.1 Fedora branch 20070423. + * Merge libgfortran1-dev into gfortran-4.1. + * Add multilib packages for gcc, g++, gobjc, gobjc++, gfortran. + * Don't link using --hash-style=gnu/both; loosen dependency on binutils. + * Don't revert the patch to fix PR c++/27227. + + -- Matthias Klose Mon, 23 Apr 2007 23:13:14 +0200 + +gcc-4.1 (4.1.2-3) experimental; urgency=low + + * Update to SVN 20070405. + * Update libjava from the gcc-4.1 Fedora branch 20070405. + * Robustify setting of make's -j flag. Closes: #414316. + * Only build the libssp packages, when building the common libraries. + * gcc-4.1-hppa64: Don't depend on libc6-dev. + + -- Matthias Klose Fri, 6 Apr 2007 00:28:29 +0200 + +gcc-4.1 (4.1.2-2) experimental; urgency=low + + * Update to SVN 20070306. + * Update libjava from the gcc-4.1 Fedora branch 20070306. + + [Matthias Klose] + * Don't install gij-wrapper anymore, directly register gij as a java + alternative. + * Don't install gcjh-wrapper anymore. + * Don't use exact versioned dependencies on gcj-base for libgcj and + libgcj-awt. + * Fix glibc build dependency for alpha. + * Support -ffast-math on hurd-i386 (Samuel Thibault). Closes: #413342. + * Update kfreebsd-amd64 patches (Aurelien Jarno). Closes: #406015. + * gij: Consistently use $(dbexecdir) to reference the gcj sub dir. + * Install into /usr/lib/gcc//4.1, to ease upgrades + between minor versions. + Add compatibility symlinks in /4.1.2 to build gnat-4.1 + and gcj-4.1 from separate sources. + + -- Matthias Klose Wed, 7 Mar 2007 03:51:47 +0100 + +gcc-4.1 (4.1.2-1) experimental; urgency=low + + [Matthias Klose] + * Update to gcc-4.1.2. + * Update libjava backport patches, split out boehm-gc-backport patch. + * Enable the cpu-default-generic patch (i386, amd64), backport from 4.2. + * Correct mfctl instruction syntax (hppa), backport from the trunk. + * Backport PR java/9861 (name mangling updates). + * gcc.c (main): Call expandargv (backport from 4.2). + * Apply gcc dwarf2 unwinding patches from the trunk. + * Apply backport for PR 20208 on amd64 i386 powerpc ppc64 sparc s390. + * Apply patches from the 4.1 branch for PR rtl-optimization/28772, + PR middle-end/30313, PR middle-end/30473, PR c++/30536, PR debug/30189, + PR fortran/30478, PR rtl-optimization/30787, PR tree-optimization/30823, + PR rtl-optimization/28173, PR ada/30684, bug in pointer dependency test, + PR rtl-optimization/30931, PR fortran/25392, PR fortran/30400, + PR libgfortran/30910, PR libgfortran/30918, PR fortran/29441, + PR target/30634. + * Update NEWS files. + * Include a backport of the ecj+generics java updates as + gcj-ecj-20070215.tar.bz2. Install it into the gcc-4.1-source package. + * Do not build fastjar anymore from this source. + * debian/control.m4: Move expect-tcl8.3 before dejagnu. + * Work around firefox/icewhatever dropping plugin dependencies on xpcom. + * Refactor naming of libgcj packages in the build files. + * Make libstdc++-doc's build dependencies depending on the source package. + * Do not build packages on architectures, which are already built by gcc-4.2. + + * Merge the gcj generics backport from Ubuntu: + + - Merge the Java bits (eclipse based compiler, 1.5 compatibility, + classpath generics) from the gcc-4.1 Fedora branch. + - Drop all previous patches from the classpath-0.93 merge, keep + the boehm-gc backport (splitted out as a separate patch). + - Add a gcj-ecj-generics.tar.bz2 tarball, containing gcc/java, libjava, + config/unwind_ipinfo.m4, taken from the Fedora branch. + - Drop the libjava-hppa, libjava-plugin-binary, pr29362, pr29805 patches + integrated in the backport. + - Update patches for the merge: reporting, libjava-subdir, i386-biarch, + classpath-tooldoc, pr26885 + - Add libjava-dropped, libjava-install; dropped chunks from the merge. + - Add pr9861-nojava mangling changes, non-java parts for PR 9861. + - Add gcc-expandv, expand `@' parameters on the commandline; backport + from the trunk. + - Disable the m68k-gc patch, needs update for the merge. + - Configure --with-java-home set for 1.5.0. + - Configure with --enable-java-maintainer-mode to build the header + and class files on the fly. + - Add build dependency on ecj-bootstrap, configure --with-ecj-jar. + - Build an empty libgcj-doc package; gjdoc currently cannot handle + generics. + - Apply gcc dwarf2 unwinding patches from the trunk, allowing the Events + testcase to pass. + - Tighten dependencies on shared libraries. + - Use /usr/lib/gcj-4-1-71 as private gcj subdir. + - Bump the libgcj soversion to 71, rename the libgcj7-0 package + to libgcj7-1, rename the libgcj7-awt package to libgcj7-1-awt. + - gij-4.1: Add and provide alternatives for gorbd, grmid, gserialver. + - gcj-4.1: Remove gcjh, gcjh-wrapper, gjnih. + - gcj-4.1: Add and provide alternatives for jar, javah, native2ascii, + tnameserv. + - gcj-4.1: Add dependency on ecj-bootstrap, recommend fastjar, + ecj-bootstrap-gcj. + - Add build dependency on ecj-bootstrap version providing the GCCMain + class. + - libgcj7-1: Recommend libgcj7-1-awt. + - Add build dependency on libmagic-dev. + - Build-depend on gcj-4.1; build our own ecj1 and gjdoc before + starting the build. + - Make ecj1 available when running the testsuite. + - Fix build failure on sparc-linux. + - Fix gjavah compatibility problems (PR cp-tools/3070[67]). + - Fixed driver issue source files (PR driver/30714). + - Add (rudimentary) manual pages for classpath tools. + + [Kevin Brown] + * debian/control.m4, debian/rules.d/binary-ada.mk: provide new packages + containing debugging symbols for Ada libraries: libgnat-4.1-dbg, + libgnatprj4.1-dbg, and libgnatvsn4.1-dbg. Adresses: #401385. + + -- Matthias Klose Sat, 3 Mar 2007 23:12:08 +0100 + +gcc-4.1 (4.1.1ds2-30) experimental; urgency=low + + * Update to SVN 20070106. + * Do not revert the fixes for PR 25878, PR 29138, PR 29408. + * Don't build the packages built by gcc-4.2 source. + * debian/patches/note-gnu-stack.dpatch: Add .note.GNU-stack sections + for gcc's crt files, libffi and boehm-gc. Taken from FC. Closes: #382741. + * Merge from Ubuntu: + - Backport g++ visibility patches from the FC gcc-4_1-branch. + - Update the long-double patches; require glibc-2.4 as a build dependency + on alpha, powerpc, sparc, s390. Bump the shlibs dependencies to + require 4.1.1-21. + - On powerpc-linux configure using --enable-secureplt. Closes: #382748. + - When using the cpu-default-generic patch, build for generic x86-64 + on amd64 and i386 biarch. + - Link using --hash-style=both (alpha, amd64, ia64, i386, powerpc, ppc64, + s390, sparc). + * gij-4.1: Recommends libgcj7-awt instead of suggesting it. Closes: #394917. + * Split the gcc-long-double patch into a code and doc part. + * Set priority of development packages to optional. + * Add support for kfreebsd-amd64 (Aurelian Jarno). Closes: #406015. + + -- Matthias Klose Sat, 6 Jan 2007 10:35:42 +0100 + +gcc-4.1 (4.1.1ds2-22) unstable; urgency=high + + * Enable -pthread for GNU/Hurd (Michael Banck). Closes: #400031. + * Update the m68k-fpcompare patch (Roman Zippel). Closes: #401585. + + -- Matthias Klose Sun, 10 Dec 2006 12:35:06 +0100 + +gcc-4.1 (4.1.1ds2-20) unstable; urgency=low + + [Matthias Klose] + * Update to SVN 20061115. + - Fix PR tree-optimization/27891, ICE in tree_split_edge. + Closes: #370248, #391657, #394630. + - Fix PR tree-optimization/9814, duplicate of PR tree-optimization/29797. + Closes: #181096. + * Apply the libjava/net backport from the redhat/gcc-4_1-branch. + * Apply proposed patch for PR java/29805. + + [Roman Zippel] + * Build the ObjC and ObjC++ compilers in cross builds. + * debian/patches/m68k-symbolic-operand.dpatch: Better recognize + symbolic operands in addresses. + * debian/patches/m68k-bitfield-offset.dpatch: Only use constant offset + for register bitfields (combine expects shifts, but does a rotate). + * debian/patches/m68k-bitfield-offset.dpatch: Update and apply. + + [Daniel Jacobowitz] + * Don't try to use _Unwind_Backtrace on SJLJ targets. + See bug #387875, #388505, GCC PR 29206. + + -- Matthias Klose Wed, 15 Nov 2006 08:59:53 -0800 + +gcc-4.1 (4.1.1ds2-19) unstable; urgency=low + + * Fix typo in arm-pragma-pack.dpatch. + + -- Matthias Klose Sat, 28 Oct 2006 11:04:00 +0200 + +gcc-4.1 (4.1.1ds2-18) unstable; urgency=medium + + [Matthias Klose] + * Update to SVN 20061028. + * Fix #pragma pack on ARM (Paul Brook). Closes: #394703. + * Revert PR c++/29138, PR c++/29408. Closes: #392559. + * Revert PR c++/25878. Addresses: #387989. + * fastjar: Provide jar. Closes: #395397. + + [Ludovic Brenta] + * debian/control.m4 (libgnatprj-dev): depend on libgnatvsn-dev. + debian/gnatprj.gpr: with gnatvsn.gpr. Closes: #395000. + + -- Matthias Klose Thu, 26 Oct 2006 23:51:10 +0200 + +gcc-4.1 (4.1.1ds2-17) unstable; urgency=low + + [Matthias Klose] + * Update to SVN 20061020. + - Fix PR debug/26881, ICE in dwarf2out_finish. Closes: #377613. + - Fix PR PR c++/29408, parse error for valid code. Closes: #392327, #393010. + - Fix PR c++/29435, segfault with sizeof and templates. Closes: #393071. + - Fix PR target/29338, segfault with -finline-limit on arm. Closes: 390620. + - Fix 3.4/4.0 backwards compatibility problem in libstdc++. + * Fix PR classpath/29362, taken from the redhat/gcc-4_1-branch. + * Remove the INSTALL directory from the source tarball. Closes: #392974. + * Disable building the static libgcj; non-functional, and cutting + down build times. + * libgcj7-0: Tighten dependency on libgcj-common. + * libgcj7-dev: Install .pc file as libgcj-4.1.pc. + * README.cross: Updated (Hector Oron). Addresses: #380251. + * config-ml.dpatch: Use *-linux-gnu as *_GNU_TYPE. Closes: #394034. + + [Nikita V. Youshchenko] + * Fix typo in the cross build scripts. Closes: #391445. + + [Falk Hueffner] + * alpha-no-ev4-directive.dpatch: Fix kernel build failure. + + [Roman Zippel] + * debian/patches/m68k-align-code.dpatch: Use "move.l %a4,%a4" to advance + within code. + * debian/patches/m68k-align-stack.dpatch: Try to keep the stack word aligned. + * debian/patches/m68k-dwarf3.dpatch: Emit correct dwarf info for cfa offset + and register with -fomit-frame-pointer. + * debian/patches/m68k-fpcompare.dpatch: Bring fp compare early to its + desired form to relieve reload. Closes: #390879. + * debian/patches/m68k-prevent-swap.dpatch: Don't swap operands + during reloads. + * debian/patches/m68k-reg-inc.dpatch: Reinsert REG_INC notes after splitting + an instruction. + * debian/patches/m68k-secondary-addr-reload.dpatch: Add secondary reloads + to allow reload to get byte values into addr regs. Closes: #385327. + * debian/patches/m68k-symbolic-operand.dpatch: Better recognize symbolic + operands in addresses. + * debian/patches/m68k-limit_reload.dpatch: Remove, superseded by + m68k-secondary-addr-reload.dpatch. + * debian/patches/m68k-notice-move.dpatch: Apply, was checked in in -16. + * debian/patches/m68k-autoinc.dpatch: Updated, don't attempt to increment + the register, if it's used multiple times in the instruction . + + -- Matthias Klose Sat, 21 Oct 2006 00:25:05 +0200 + +gcc-4.1 (4.1.1ds1-16) unstable; urgency=low + + [Matthias Klose] + * Update to SVN 20061008. + - Fix PR c++/29226, ICE in make_decl_rtl. Closes: #388263. + * libgcj7-0: Fix package removal. Closes: #390874. + * Configure with --disable-libssp on architectures that don't + support it (alpha, hppa, ia64, m68k, mips, mipsel). + * On hppa, remove build-dependency on dash. + * gij/gcj: Do not install slave links for the non DFSG manpages. + Closes: #390425, #390532. + * libgcj-common: rebuild-gcj-db: Don't do anything, if no classmap + files are found. Closes: #390966. + * Fix PR libstdc++/11953, extended for all linux architectures. + Closes: #391268. + * libffi4-dev: Conflict with libffi. Closes: #387561. + * Backport PR target/27880 to the gcc-4_1-branch. Patch by Steve Ellcey. + Closes: #390693. + * On ia64, don't use _Unwind_GetIPInfo in libjava and libstdc++. + * Add a README.ssp with minimal documentation about stack smashing + protection. Closes: #366094. + * Do not build libgcj-common from the gcc-4.1/gcj-4.1 sources anymore. + + [Roman Zippel] + * debian/patches/m68k-notice-move.dpatch: Don't set cc_status + for fp move without fp register. + + -- Matthias Klose Sun, 8 Oct 2006 02:21:49 +0200 + +gcc-4.1 (4.1.1ds1-15) unstable; urgency=medium + + * Update to SVN 20060927. + - Fix PR debug/29132, exception handling on mips. Closes: #389468, #390042. + - Fix typo in gcc documentation. Closes: #386180. + - Fix PR target/29230, wrong code generation on arm. Closes: #385505. + * libgcj-common: Ignore exit value of gcj-dbtool in rebuild-gcj-db on + arm, m68k, hppa. Adresses: #388505. + * libgcj-common: Replaces java-gcj-compat-dev and java-gcj-compat. + Closes: #389539. + * libgcj-common: /usr/share/gcj/debian_defaults: Define gcj_native_archs. + * Update the java backport from the redhat/gcc-4_1-branch upto 2006-09-27; + remove libjava-str2double.dpatch, pr28661.dpatch. + * Disable ssp on hppa, not supported. + * i386-biarch.dpatch: Avoid warnings about macro redefinitions. + + -- Matthias Klose Fri, 29 Sep 2006 22:32:41 +0200 + +gcc-4.1 (4.1.1ds1-14) unstable; urgency=medium + + [Matthias Klose] + * Update to SVN 20060920. + - Fix PR c++/26957. Closes: #373257, #386910. + - Fix PR rtl-optimization/28243. Closes: #378325. + * Remove patch for PR rtl-optimization/28634, applied upstream. + * Fix FTBFS on GNU/kFreeBSD (fallout from the backport of classpath-0.92). + (Petr Salinger). Closes: #385974. + * Merge from Ubuntu: + - Do not encode the subminor version in the jar files. + - Fix typo for the versioned gcj subdirectory in lib32gcj-0. + - When running the i386 binaries on amd64, adjust the properties + java.home, gnu.classpath.home.url, sun.boot.class.path, + gnu.gcj.precompiled.db.path. + - Configure the 32bit build on amd64 + --with-java-home=/usr/lib32/jvm/java-1.4.2-gcj-4.1-1.4.2.0/jre. + - Configure --with-long-double-128 for glibc-2.4 on alpha, powerpc, ppc64, + s390, s390x, sparc, sparc64. + - Update the java backport from the redhat/gcc-4_1-branch upto 2006-09-20. + - Fix PR java/29013, invalid byte code generation. Closes: #386926. + - debian/patches/gcc-pfrs-2.dpatch: Apply a fix for a regression in the + backport of PR 28946 from the trunk (H.J. Lu). + * Backport PR classpath/28661 from the trunk. + * Don't ship the .la files for the java modules. Closes: #386228. + * gcj-4.1: Remove dangling symlink. Closes: #386430. + * gij: Suggest java-gcj-compat, gcj: Suggest java-gcj-compat-dev. + Closes: #361942. + * Fix infinite loop in string-to-double conversion on 64bit targets. + Closes: #348792. + * gij-4.1: Ignore exit value of gcj-dbtool in postinst. Adresses: #388505. + * libgcj-common: Move rebuild-gcj-db from java-gcj-compat into libgcj-common. + * On hppa, install a wrapper around gij-4.1 to ignore unaligned memory + accesses. Works around buildd configurations enabling this check by + default. Addresses: #364819. + + [Ludovic Brenta] + * debian/patches/ada-libgnatprj.dpatch: Build mlib-tgt-linux.adb instead of + mlib-tgt.adb. Closes: #387826. + * debian/patches/ada-pr15802.dpatch: Backport from the trunk. + Closes: #246384. + * debian/control.m4 (gnat-4.1): do not provide gnat (supplied by + gcc-defaults instead); conflict with gnat-4.2 which will soon be in + unstable. + + [Roman Zippel] + * debian/patches/m68k-dwarf2.dpatch: Recognize stack adjustments also + in the src of an instruction. + * debian/patches/m68k-jumptable.dpatch: Don't force byte offset when + accessing the jumptable, gas can generate the correct offset size instead. + * debian/patches/m68k-peephole.dpatch: Convert some text peepholes to rtl + peepholes, so the correct DWARF2 information can be generated for stack + manipulations (Keep a few peepholes temporarily disabled). + * debian/patches/m68k-peephole-note.dpatch: Don't choke on notes while + reinserting REG_EH_REGION notes. + * debian/patches/m68k-return.dpatch: Don't use single return if fp register + have to be restored. Closes: #386864. + * debian/patches/m68k-sig-unwind.dpatch: Add support for unwinding over + signal frames. + * Fix PR rtl-optimization/27736, backport from the trunk. + * Add java support for m68k. Closes: #312830, #340874, #381022. + + -- Matthias Klose Sun, 24 Sep 2006 19:36:31 +0200 + +gcc-4.1 (4.1.1ds1-13) unstable; urgency=medium + + * Update to SVN 20060901; remove patches applied upstream: + - PR target/24367. + - PR c++/26670. + * Apply proposed patch for PR fortran/28908. + * Fix biarch symlinks in lib64stdc++ for cross builds. + * Fix biarch symlinks in lib32objc on amd64. + + -- Matthias Klose Fri, 1 Sep 2006 00:04:05 +0200 + +gcc-4.1 (4.1.1ds1-12) unstable; urgency=medium + + [Matthias Klose] + * Update to SVN 20060830. + * Add backport of PR other/26208, bump libgcc1 shlibs dependency. + * Add backport of PR c++/26670. Closes: #356548. + * Apply proposed patch for PR target/24367 (s390). + * Add /usr/lib/jni to the libjava dlsearch path. Closes: #364820. + * Build without GFDL licensed docs. Closes: #384036. + - debian/patches/{svn-doc-updates,pr25524-doc,pr26885-doc}.dpatch: + Split out -doc specific patches. + - debian/*.texi, debian/porting.html: Add dummy documentation. + - debian/rules.unpack, debian/rules.patch: Update for non-gfdl build. + - fastjar.texi: Directly define the gcctabopt and gccoptlist macros. + + * Merge from Ubuntu: + - Backport the classpath-0.92, libjava, gcc/java merge from the + redhat/gcc-4_1-branch branch. + - Apply the proposed patch for PR libgcj/28698. + - Change the libgcj/libgij sonames. Rename libgcj7 to libgcj7-0. + - Do not remove the rpath from libjvm.so and libjawt.so. Some + configure scripts rely on being able to link that libraries + directly. + - When running the i386 binaries on amd64, look in + /usr/lib32/gcj-x.y and /usr/lib32/jni instead. + - Add /usr/lib/jni to java.library.path. Closes: #364820. + - Add debugging symbols for more binary packages to libgcj7-dbg. + Closes: #383705. + - libgcj7-dev: Remove conflicts with older libgcjX-dev packages. + - Do not build the libgcj-bc and lib32gcj-bc packages anymore from + the gcj-4.1 source. + + [Roman Zippel] + * debian/patches/m68k-limit_reload.dpatch: Correctly limit reload class. + Closes: #375522. + * debian/patches/m68k-split_shift.dpatch: Use correct predicates for long long + shifts and use more splits. Closes: #381572. + * debian/patches/m68k-prevent-qipush.dpatch: Prevent combine from creating + a byte push on the stack (invalid on m68k). Closes: #385021. + * debian/patches/m68k-autoinc.dpatch: Recognize a few more autoinc possibilities. + * debian/patches/pr25514.dpatch: Backport from the trunk. + * debian/patches/m68k-gc.dpatch: Change STACKBOTTOM to LINUX_STACKBOTTOM + so it works with 2.6 kernels. + * Other m68k bug reports fixed in 4.1.1-11 and 4.1.1-12: + Closes: #378599, #345574, #344041, #323426, #340293. + * Build the stage1 compiler using -g -O2; saves a few hours build time + and apparently is working at the moment. + + -- Matthias Klose Tue, 29 Aug 2006 21:37:28 +0200 + +gcc-4.1 (4.1.1-11) unstable; urgency=low + + * The "Our priority are our users, remove the documentation!" release. + + [Matthias Klose] + * Fix build failure building the hppa->hppa64 cross compiler. + * Update to SVN 20060814. + - Fix directory traversal vulnerability in fastjar. Closes: #368397. + CVE-2006-3619. + - Fix PR rtl-optimization/23454, ICE in invert_exp_1 on sparc. + Closes: #321215. + - Fix PR c++/26757, C++ front-end producing two DECLs with the same UID. + Closes: #356569. + * Remove patch for PR rtl-optimization/28075, applied upstream. + * Apply proposed patch for PR rtl-optimization/28634, rounding problem with + -fdelayed-branch on hppa/mips. Closes: #381710. + * Fixed at least in 4.1.1-10: boost::date_time build failure. + Closes: #382352. + * Build-depend on make (>= 3.81), add make (>= 3.81) as dependency to + gcc-4.1-source. Closes: #381117. + * Backport of libffi from the trunk; needed for the java backport in + experimental. + * libffi4-dev: Install the libffi_convenience library as libffi_pic.a. + * When building a package without the GFDL'd documentation, don't create + the alternative's slave links for manual pages for the java tools. + * Do not build the -doc packages and derived manual pages licensed under + the GFDL with invariant sections or cover texts. + * Only build the libssp package, if the target libc doesn't provide + ssp support. + * Run the complete testsuite, when building a standalone gcj package. + + [Roman Zippel] + * debian/patches/m68k-fjump.dpatch: + Always use as fjcc pseudo op, we rely heavily on as to generate the + right size for the jump instructions. Closes: #359281. + * debian/patches/m68k-gc.dpatch: + The thread suspend handler has to save all registers. + Reenable MPROTECT_VDB, it should work, otherwise it's probably a kernel bug. + * debian/patches/m68k-save_pic.dpatch: + Correctly save the pic register, when not done by reload(). + (fixes _Unwind_RaiseException and thus exception handling). + * debian/patches/m68k-libffi.dpatch: Add support for closures. + * debian/patches/m68k-bitfield.dpatch: Avoid propagation of mem expression + past a zero_extract lvalue. + * debian/patches/m68k-dwarf.dpatch: Correct the dwarf frame information, + but preserve compatibility. + + [Christian Aichinger] + * Fix building a cross compiler targeted for ia64. Closes: #382627. + + -- Matthias Klose Tue, 15 Aug 2006 00:41:00 +0200 + +gcc-4.1 (4.1.1-10) unstable; urgency=low + + * Update to SVN 20060729. + - Fix PR c++/28225, segfault in type_dependent_expression_p. + Closes: #376148. + * Apply proposed patch for PR rtl-optimization/28075. + Closes: #373820. + * Apply proposed backport and proposed patch for PR rtl-optimization/28221. + Closes: #376084. + * libgcj7-jar: Loosen dependency on gcj-4.1-base. + * Add ssp header files to the private gcc includedir. + * Do not build the Ada packages from the gcc-4.1 source, introducing + a new gnat-4.1 source package. + * Build libgnat on alpha and s390 as well. + * Do not build the gnat-4.1-doc package (GFDL with invariant sections or + cover texts). + * Remove references to the stl-manual package. Closes: #378698. + + -- Matthias Klose Sat, 29 Jul 2006 22:08:59 +0200 + +gcc-4.1 (4.1.1-9) unstable; urgency=low + + * Update to SVN 20060715. + - Fix PR c++/28016, do not emit uninstantiated static data members. + Closes: #373895, #376871. + * Revert the patch to fix PR c++/27227. Closes: #378321. + * multiarch-include.dpatch: Renamed from biarch-include.dpatch; + apply for all architectures. + * Do not build the java compiler in gcc-4.1 package, just include the + options and specs in the gcc driver. + * Remove gnat-4.0 as an alternative build dependency. + * Add a patch to enable -fstack-protector by default for C, C++, ObjC, ObjC++. + The patch is disabled by default. + + -- Matthias Klose Sat, 15 Jul 2006 17:07:29 +0200 + +gcc-4.1 (4.1.1-8) unstable; urgency=medium + + * Update to SVN 20060708. + - Fix typo in gcov documentation. Closes: #375140. + - Fix typo in gccint documentation. Closes: #376412. + - [alpha], Fix -fvisibility-inlines-hidden segfaults on reference to + static method. PR target/27082. Closes: #369642. + + * Fix ppc64 architecture string in debian/multiarch.inc. Closes: #374535. + * Fix conflict, replace and provide libssp0-dev for cross compilers. + Closes: #377012. + * Ignore compiler warnings when checking whether compiler driver understands + Ada fails. Closes: #376660. + * Backport fix for PR libmudflap/26864 from the trunk. Closes: #26864. + * README.C++: Remove non-existing URL. Closes: #347601. + * gij-4.1: Provide java2-runtime. Closes: #360906. + + * Closed reports reported against gcc-3.0 and fixed in gcc-4.1: + - C++ + + PR libstdc++/13943, call of overloaded `llabs(int)' is ambiguous. + Closes: #228645. + - Java + + Fixed segmentation fault on compiling bad program. Closes: #165635 + * Closed reports reported against gcc-3.3 and fixed in gcc-4.1: + - Stack protector available. Closes: #213994, #233208. + - Better documentation of -finline-limit option. Closes: #296047. + * Closed reports reported against gcc-3.4 and fixed in gcc-4.1: + - General + + Fixed [unit-at-a-time] Using -O2 cannot detect missing return + statement in a function. Closes: #276843. + - C++ + + PR13943, call of overloaded `llabs(int)' is ambiguous. Closes: #228645. + + PR c++/21280, #pragma interface, templates, and "inline function used + but never defined". Closes: #364412. + - Architecture specific: + - m68k + + Segfault building glibc. Closes: #353618. + + ICE when trying to build boost. Closes: #321486. + * Closed reports reported against gcc-4.0 and fixed in gcc-4.1: + - General + + Handling of #pragma GCC visibility for builtin functions. + Closes: #330279. + + gettext interpretation the two conditional strings as one. + Closes: #227193. + + ICE due to if-conversion. Closes: #335078. + + Fix unaligned accesses with __attribute__(packed) and memcpy. + Closes: #355297. + + Fix ICE in expand_expr_real_1, at expr.c. Closes: #369817. + - Ada + + Link error not finding -laddr2line. Closes: #322849. + + ICE on invalid code. Closes: #333564. + - C++ + + libstdc++: bad thousand separator with fr_FR.UTF-8. Closes: #351786. + + The Compiler uses less memory than 4.0. Closes: #336225. + + Fix "fails to compare reverse map iterators". Closes: #362840. + + Fix "fail to generate code for base destructor defined inline with + pragma interface". Closes: #356435. + + Fix ICE in cp_expr_size, at cp/cp-objcp-common.c. Closes: #317455. + + Fix wrong warning: control may reach end of non-void function. + Closes: #319309. + + Fix bogus warning "statement has no effect" with template and + statement-expression. Closes: #336915. + + Fixed segfault on syntax error. Closes: #349087. + + Fix ICE with __builtin_constant_p in template argument. + Closes: #353366. + + Implement DR280 (fixing "no operator!= for const_reverse_iterator"). + Closes: #244894. + - Fortran + + Fix wrong behaviour in unformatted writing. Closes: #369547. + - Java + + Fixed segfault on -fdump-tree-all-all. Closes: #344265. + + Fixed ant code completion in eclipse generating a nullpointer + exception. Closes: #337510. + + Fixed abort in gnu_java_awt_peer_gtk_GtkImage.c. Closes: #343112. + + Fixed assertion failure in gij with rhdb-explain. Closes: #335650. + + Fixed assertion failure when calling JTabbedPane.addTab(null, ...). + Closes: #314704. + + Fixed error when displaying empty window with bound larger than the + displayed content. Closes: #324502. + + Fixed: Exception in JComboBox.removeAllItems(). Closes: #314706. + + Fixed assertian error in gnu_java_awt_peer_gtk_GtkImage.c. + Closes: #333733. + - libmudflap + + PR libmudflap/23170, libmudflap should not use functions marked + obsolescent by POSIX/SUS. Closes: #320398. + - Architecture specific: + - m68k + + FTBFS building tin. Closes: #323016. + + ICE with -g -fomit-frame-pointer. Closes: #331150. + + ICE in instantiate_virtual_regs_lossage. Closes: #333536. + + Wrong code generation with loop unrolling. Closes: #342121. + + ICEs while building gst-ffmpeg. Closes: #343692. + - mips + + Fix gjdoc build failure. Closes: #344986. + + Fix link failure for static libs and object files when xgot + needs to be used. Closes: #274942. + * gnat bug reports fixed since gnat-3.15p: + - GNAT miscounts UTF8 characters in string with -gnaty. Closes: #66175. + - Bug box from "with Text_IO" when compiling optimized. Closes: #243795. + - Nonconforming parameter lists not detected. Closes: #243796. + - Illegal use clause not detected. Closes: #243797. + - Compiler enters infinite loop on illegal program with tagged records. + Closes: #243799. + - Compiler crashes on illegal program (missing discriminant, unconstrained + parent). Closes: #243800. + - Bug box at sinfo.adb:1215 on illegal program. Closes: #243801. + - Bug box at sinfo.adb:1651 on illegal program. Closes: #243802. + - Illegal program not detected (entry families). Closes: #243803. + - Illegal program not detected, RM 10.1.1(14). Closes: #243807. + - Bug box at exp_ch9.adb:7254 on illegal code. Closes: #243812. + - Illegal program not detected, RM 4.1.4(14). Closes: #243816. + - Bug box in Gigi, code=116, on legal program. Closes: #244225. + - Illegal program not detected, 12.7(10) (generic parameter is visible, + shouldn't be). Closes: #244483. + - Illegal program not detected, ambiguous aggregate. Closes: #244496. + - Bug box at sem_ch3.adb:8003. Closes: #244940. + - Bug box in Gigi, code=103, on illegal program. Closes: #244945. + - Legal program rejected, overloaded procedures. Closes: #246188. + - Bug box in Gigi, code=999, on legal program. Closes: #246388. + - Illegal program not detected, RM 10.1.6(3). Closes: #246389. + - Illegal program not detected, RM 3.10.2(24). Closes: #247014. + - Illegal program not detected, RM 3.9(17). Closes: #247015. + - Legal program rejected. Closes: #247016. + - Legal program rejected. Closes: #247021. + - Illegal program not detected, RM 4.7(3). Closes: #247022. + - Illegal program not detected, RM 3.10.2(27). Closes: #247562. + - Legal program rejected, "limited type has no stream attributes". + Closes: #247563. + - Wrong output from legal program. Closes: #247565. + - Compiler enters infinite loop on illegal program. Closes: #247567. + - Illegal program not detected, RM 8.6(31). Closes: #247568. + - Legal program rejected, visible declaration not seen. Closes: #247572. + - Illegal program not detected, RM 8.2(9). Closes: #247573. + - Wrong output from legal program, dereferencing access all T'Class. + Closes: #248171. + - Compiler crashes on illegal program, RM 5.2(6). Closes: #248174. + - Cannot find generic package body, RM 1.1.3(4). Closes: #248677. + - Illegal program not detected, RM 3.4.1(5). Closes: #248679. + - Compiler ignores legal override of abstract subprogram. Closes: #248686. + - Bug box, Assert_Failure at sinfo.adb:2365 on illegal program. + Closes: #251266. + - Ada.Numerics.Generic_Elementary_Functions.Log erroneout with -gnatN. + Closes: #263498. + - Bug box, Assert_Failure at atree.adb:2906 or Gigi abort, code=102 + with -gnat -gnatc. Closes: #267788. + - Bug box in Gigi, code=116, 'Unrestricted_Access of a protected + subprogram. Closes: #269775. + - Stack overflow on illegal program, AI-306. Closes: #276225. + - Illegal program not detected, RM B.1(24). Closes: #276226. + - Wrong code generated with -O -fPIC. Closes: #306833. + - Obsolete: bashism's in debian/rules file. Closes: #370681. + - Supports more debian architectures. Closes: #171477. + + -- Matthias Klose Sat, 8 Jul 2006 16:24:47 +0200 + +gcc-4.1 (4.1.1-7) unstable; urgency=low + + * Prefer gnat-4.1 over gnat-4.0 as a build dependency. + * libssp0: Set priority to standard. + + -- Matthias Klose Sun, 2 Jul 2006 10:22:50 +0000 + +gcc-4.1 (4.1.1-6) unstable; urgency=low + + [Ludovic Brenta] + * Do not provide the symbolic link /usr/bin/gnatgcc; this will now + be provided by package gnat from the source package gcc-defaults. + * debian/control.m4, debian/control (gnat): conflict with gnat (<< 4.1), + not all versions of gnat, since gcc-defaults will now provide gnat (= 4.1) + which depends on gnat-4.1. + + [Matthias Klose] + * libjava: Change the default for enable_hash_synchronization_default + on PA-RISC. Tighten the libgcj7 shlibs version on hppa. + * Update to SVN 20060630. + * Apply proposed patch for PR 26991. + * Don't use the version for the libstdc++ shlibs dependency for the libgcj + shlibs dependency. + * Merge from Ubuntu edgy: + - Fix %g7 usage in TLS, add patch sparc-g7.dpatch, fixes glibc-2.4 build + failure on sparc (Fabio M. Di Nitto). + - Merge libssp0-dev into gcc-4.1 (-fstack-protector is a common option). + - Run the testsuite with -fstack-protector as well. + + [Bastian Blank] + * Make it possible to overwrite arch per DEB_TARGET_ARCH and DEB_TARGET_GNU_TYPE. + * Disable biarch only on request for cross builds. + * Use correct source directory for tarballs. + * Produce correct multiarch.inc for source builds. + + -- Matthias Klose Sat, 1 Jul 2006 01:49:55 +0200 + +gcc-4.1 (4.1.1-5) unstable; urgency=low + + * Fix build error running with dpkg-buildpackage -rsudo. + + -- Matthias Klose Wed, 14 Jun 2006 01:54:13 +0200 + +gcc-4.1 (4.1.1-4) unstable; urgency=low + + * Really do not backout the fix for PR c++/26068. + Closes: #372152, #372559. + * Update fastjar version string to 4.1. + * Disable pascal again. + + -- Matthias Klose Mon, 12 Jun 2006 20:29:57 +0200 + +gcc-4.1 (4.1.1-3) unstable; urgency=low + + * Update to SVN 20060608, do not revert the fix for PR c++/26068. + Closes: #372152, #372559. + * Fix build failures for Pascal, enable Pascal on all architectures. + * Fix another build failure on GNU/kFreeBSD (Aurelien Jarno). + Closes: #370661. + * Fix build fauilure in gcc/p with parallel make. + * Remove cross-configure patch (Kazuhiro Inaoka). Closes: #370649. + * Only build the gcc-4.1-source package, when building from the gcc-4.1 + source. + * Fix upgrade problem from standalone gcj-4.1. + * Fix build error using bison-2.2, build-depend on bison (>= 2.3). + Closes: #372605. + * Backport PR libstdc++/25524 from the trunk, update the biarch-include + patch. mips triarch support can be added more easily. + + -- Matthias Klose Mon, 12 Jun 2006 00:23:45 +0200 + +gcc-4.1 (4.1.1-2) unstable; urgency=low + + * Update to SVN 20060604. + - Fix PR c++/26757, C++ front-end producing two DECLs with the same UID. + Closes: #356569. + - Fix PR target/27158, ICE in extract_insn with -maltivec. + Closes: #362307. + * Revert PR c++/26068 to work around PR c++/27884 (Martin Michlmayr). + Closes: #370308. + * Mention Ada in copyright, update copyright file (Ludovic Brenta). + Closes: #366744. + * Fix kbsd-gnu-java.dpatch (Petr Salinger). Closes: #370320. + * Don't include version control files in gcc-4.1-source. + + -- Matthias Klose Sun, 4 Jun 2006 19:13:37 +0000 + +gcc-4.1 (4.1.1-1) unstable; urgency=low + + [Matthias Klose] + * Update to SVN 20060601. + * Reenable the gpc build. + * PR libgcj/26483, libffi patch for IA-64 denorms, taken from trunk. + * Disable Ada for m32r targets. Closes: #367595. + * lib32gfortran1: Do not create empty directory /usr/lib32. Closes: #367999. + * gcc-4.1: Add a conflict to the gcj-4.1 version with a different + gcc_libdir. + * Build gij/gcj for GNU/k*BSD. Closes: #367166. + * Update hurd-changes patch (Michael Banck). Closes: #369690. + * debian/copyright: Add exception for the gpc runtime library. + * Update gpc/gpc-doc package descriptions. + + [Ludovic Brenta] + * patches/ada-libgnatprj.dpatch: add prj-pars.ad[bs] and sfn_scan.ad[bs] + to libgnatprj; remove them from gnatmake. + + -- Matthias Klose Thu, 1 Jun 2006 20:35:54 +0200 + +gcc-4.1 (4.1.0-4) unstable; urgency=low + + [Ludovic Brenta] + * Fix a stupid bug whereby fname.ad{b,s} would be included in both + libgnatvsn-dev and libgnatprj-dev, preventing use of gnatprj.gpr. + Closes: #366733. + + -- Matthias Klose Thu, 11 May 2006 04:34:50 +0200 + +gcc-4.1 (4.1.0-3) unstable; urgency=low + + * Update to SVN 20060507. + * debian/rules.d/binary-java.mk: Use $(lib32) everywhere. Closes: #365388. + * Always configure hppa64-linux-gnu with + --includedir=/usr/hppa64-linux-gnu/include. + * Make libgnatvsn4.1 and libgnatprj4.1 priority optional. Closes: #365900. + * Call autoconf2.13 explicitely in the Ada patches, build-depend on + autoconf2.13. Closes: #365780. + * Fix libgnatprj-dev and libgnatvsn-dev dependencies on their shared + libraries. + * Deduce softfloat and vfp (ARM) configure options (Pjotr Kourzanov). + * Update proposed patch for PR26885 (May 2 version). + * Build the libxxstdc++-dbg packages, when not building the library pacakges. + * Do not include the _pic library in the libxxstdc++-dbg packages. + + -- Matthias Klose Sun, 7 May 2006 15:29:53 +0200 + +gcc-4.1 (4.1.0-2) unstable; urgency=medium + + * Update to SVN 20060428. + * Apply proposed patches for PR26885. + + * Keep libffi doc files in its own directory. Closes: #360466. + * Update ppc64 patches for 4.1 (Andreas Jochens). Closes: #360498. + * Fix PR tree-optimization/26763, wrong-code, taken from the 4.1 branch. + Closes: #356896. CVE-2006-1902. + * hppa-cbranch, hppa-cbranch2 patches: Fix for PR target/26743, + PR target/11254, PR target/10274, backport from trunk (Randolph Chung). + * Let libgccN provide -dcv1 when cross-compiling (Pjotr Kourzanov). + Closes: #363289. + * (Build-)depend on glibc-2.3.6-7. Closes: #360895, #361904. + * Fix a pedantic report about a package description. Add a hint that + we do not like bug reports with locales other than "C". Closes: #361409. + * Enable the libjava interpreter on mips/mipsel. + * gcc-4.1-source: Depend on gcc-4.1-base. + * gnat-4.1: Fix permissions of .ali files. + * Build lib32gcj7 on amd64. + * debian/patches/ada-gnatvsn.dpatch: New. Apply proposed fix for + PR27194. + + [Ludovic Brenta] + * debian/patches/ada-default-project-path.dpatch: new. Change the + default search path for project files to the one specified + by the Debian Policy for Ada: /usr/share/ada/adainclude. + * debian/patches/ada-symbolic-tracebacks.dpatch: new. Enable support for + symbolic tracebacks in exceptions. + * debian/patches/ada-missing-lib.dpatch: remove, superseded by the above. + * debian/patches/ada-link-lib.dpatch: changed. + - Instead of building libada as a target library only, build it as + both a host and, if different, target library. + - Build the GNAT tools in their top-level directory; do not use + recursive makefiles. + - Link the GNAT tools dynamically against libgnat. + - Apply proposed fix for PR27300. + - Rerun autoconf (Matthias Klose). + * debian/patches/ada-libgnatvsn.dpatch: new. + - Introduce a new shared library named libgnatvsn, containing + common components of GNAT under the GNAT-Modified GPL, for + use in GNAT tools, ASIS, GLADE and GPS. + - Link the gnat tools against this new library. + - Rerun autoconf (Matthias Klose). + * debian/patches/ada-libgnatprj.dpatch: new. + - Introduce a new shared library named libgnatprj, containing the + GNAT Project Manager, i.e. the parts of GNAT that parses project + files (*.gpr). Licensed under pure GPL; for use in GLADE and GPS. + - Link the gnat tools against this new library. + - Rerun autoconf (Matthias Klose). + * debian/patches/ada-acats.dpatch: new. + - When running the ACATS, look for the gnat tools in their new + directory (build/gnattools), and for the shared libraries in + build/gcc/ada/rts, build/libgnatvsn and build/libgnatprj. + * debian/gnatvsn.gpr, debian/gnatprj.gpr: new. + * debian/rules.d/binary-ada.mk, debian/control.m4: new binary packages: + libgnatvsn-dev, libgnatvsn4.1, libgnatprj-dev, libgnatprj4.1. Place + the *.gpr files in their respective -dev packages. + + -- Matthias Klose Sat, 29 Apr 2006 00:32:09 +0200 + +gcc-4.1 (4.1.0-1) unstable; urgency=low + + * libstdc++CXX-BV-dev.preinst: Remove (handling of c++ include dir for 4.0). + * libgcj-common: Move removal of docdir from preinst into postinst. + * libgcj7: Move removal of docdir from preinst into postinst. + * Drop alternative build dependency on gnat-3.4, not built anymore. + * Fix PR libgcj/26103, wrong exception thrown (4.1 branch). + * debian/patches/libjava-stacktrace.dpatch: Add support to print file names + and line numbers in stacktraces. + * Add debugging symbols for libgcjawt and lib-gnu-java-awt-peer-gtk + in the libgcj7-dbg and lib32gcj7-dbg packages. + * Remove dependency of the libgcj-dbg packages on the libgcj-dev packages, + add recommendations on binutils and libgcj-dev. Mention the requirement + of binutils for the stacktraces. + * Fix upgrade from version 4.0.2-9, loosing the Debian changelog. + Closes: #355439. + * gij/gcj: Install one alternative for each command, do not use slave + links for rmiregistry, javah, rmic. Ubuntu #26781. Closes: #342557. + * Fix for PR tree-optimization/26587, taken from the 4.1 branch. + * Fix PR libstdc++/26526 (link failure when _GLIBCXX_DEBUG is defined). + * Configure with --enable-clocale=gnu, even if not building C++ packages. + * Remove runtime path from biarch libraries as well. + * PR middle-end/26557 (ice-on-vaild-code, regression), taken from + the gcc-4_1-branch. Closes: #349083. + * PR tree-optimization/26672 (ice-on-vaild-code, regression), taken from + the gcc-4_1-branch. Closes: #356231. + * PR middle-end/26004 (rejects-vaild-code, regression), taken from + the gcc-4_1-branch. + * When building as standalone gcj, build libgcc4 (hppa only) and fastjar. + * Configure --with-cpu=v8 on sparc. + * debian/patches/libjava-hppa.dpatch: pa/pa32-linux.h + (CRT_CALL_STATIC_FUNCTION): Define when CRTSTUFFS_O is defined. + (John David Anglin). Closes: #353346. + * Point to the 4.1 version of README.Bugs (closes: #356230). + * Disable the libmudflap testsuite on alpha (getting killed). + + -- Matthias Klose Sat, 18 Mar 2006 23:00:39 +0100 + +gcc-4.1 (4.1.0-0) experimental; urgency=low + + * GCC 4.1.0 final release. + * Build the packages for the Java language from a separate source. + * Update NEWS.html, NEWS.gcc. + * libgcj-doc: Auto generated API documentation for libgcj7, classpath + example programs. + * Add gjdoc to Build-Depends-Indep. + * On amd64, build-depend on libc6-dev-i386 instead of ia32-libs-dev. + * Internal ssp headers now installed in the gcc libdir. + * Do not build gcj-4.1-base when building the gcc-4.1 packages. + * When building as gcj-4.1, use the tarball from the gcc-4.1-source + package. + + [Ludovic Brenta] + * Allow one to enable and disable NLS and bootstrapping from the environment. + - Adding "nls" to WITHOUT_LANG disables NLS support. + - If WITH_BOOTSTRAP is set, debian/rules2 calls configure + --enable-bootstrap=$(WITH_BOOTSTRAP) and just "make". If + WITH_BOOTSTRAP is unset, it calls configure without a bootstrapping + option and calls "make profiledbootstrap" or "make bootstrap-lean" + depending on the target CPU. + Currently overwritten to default to "bootstrap". + + -- Matthias Klose Thu, 2 Mar 2006 00:03:45 +0100 + +gcc-4.1 (4.1ds9-0exp9) experimental; urgency=low + + * Update to GCC 4.1.0 release candidate 1 (gcc-4.1.0-20060219 tarball). + * Update gcc-version patch for gcc-4.1. + * libgccN, libstdc++N*: Fix upgrade of /usr/share/doc symlinks. + * libjava awt & swing update, taken from trunk 2006-02-16. + * libgcj7-dev: Suggest libgcj-doc, built from a separate source package. + * Shorten build-dependency line (work around buildd problems + on arm* and mips*). + * New patch gcc-ice-hack (saving the preprocessed source on an ICE), + taken from Fedora. + + -- Matthias Klose Mon, 20 Feb 2006 10:07:23 +0100 + +gcc-4.1 (4.1ds8-0exp8) experimental; urgency=low + + * Update to SVN 20060212, taken from the 4.1 release branch. + * libgccN: Fix upgrade of /usr/share/doc/libgccN symlink. + + -- Matthias Klose Sun, 12 Feb 2006 19:48:31 +0000 + +gcc-4.1 (4.1ds7-0exp7) experimental; urgency=low + + * Update to SVN 20060127, taken from the 4.1 release branch. + - On hppa, bump the libgcc soversion to 4. + * Add an option not to depend on the system -base package for cross compiler + (Ian Wienand). Closes: #347484. + * Remove workaround increasing the stack size limit for some architectures, + not needed anymore on ia64. + * On amd64, build-depend on libc6-dev-i386, depend on libc6-i386, where + available. + * libstdc++6: Properly upgrade the doc directory. Closes: #346171. + * libstdc++6: Add a conflict to scim (<< 1.4.2-1). Closes: #343313. + * Set default 32bit ix86 architecture to i486. + + -- Matthias Klose Fri, 27 Jan 2006 22:23:22 +0100 + +gcc-4.1 (4.1ds6-0ubuntu6) experimental; urgency=low + + * Update to SVN 20060107, taken from the 4.1 release branch. + - Remove fix for PR ada/22533, fixed by patch for PR c++/23171. + * Remove binary packages from the control file, which aren't built + yet on any architecture. + * gcc-hppa64: Use /usr/hppa64-linux-gnu/include as location for the glibc + headers, tighten glibc (build-)dependency. + * libffi [arm]: Add support for closures, libjava [arm]: enable the gij + interpreter (Phil Blundell). Addresses: #337263. + * For the gcj standalone build, include cc1 into the gcj-4.1 package, + needed for linking java programs compiled to native code. + + -- Matthias Klose Sat, 7 Jan 2006 03:36:33 +0100 + +gcc-4.1 (4.1ds4-0exp4) experimental; urgency=low + + * Update to SVN 20051210, taken from the 4.1 release branch. + * Prepare to build the java packages from it's own source (merged + from Ubuntu). + - Build the java packages from the gcc-4.1 source, as long as packages + are prepared for experimental. + - When built as gcj, run only the libjava testsuite, don't build the + libstdc++ debug packages, don't package the gcc source. + - Loosen package dependencies, when java packages are built from + separate sources. + - Fix gcj hppa build, when java packages are built from separate sources. + - gij-4.1: Install test-summary, when doing separate builds. + - Allow java packages be installed independent from other packages built + from the source package. + - Rename libgcj7-common to libgcj7-jar. + - Introduce a gcj-4.1-base package to completely separate the two and not + duplicate the changelog in each gcj/gij package. + * Java related changes: + - libjava-xml-transform: Update from classpath trunk, needed for + eclipse (Michael Koch), applied upstream. + - Fix java wrapper scripts to point to 4.1 (closes: #341710). + - Reenable java on mips and mipsel. + - Fix libgcj6 dependency. Ubuntu #19935. + - Add libxt-dev as a java build dependency. autoconf explicitely checks + for X11/Intrinsic.h. + * Ada related changes: + - Apply proposed fix for PR ada/22533, reenable ada on alpha, powerpc, + mips, mipsel and s390. + - Add Ada support for GNU/kFreeBSD (Aurelien Jarno). Closes: #341356. + - Remove ada bootstrap workaround for alpha. + * Build a separate gcc-4.1-source package (Bastian Blank). Closes: #333922. + * Remove obsolete patch: libstdc++-automake. + * Remove patch integrated upstream: libffi-mips. + * Fix the installation of the hppa64 compiler in snapshot builds. + * Rename libgfortran0* to libgfortran1* (upstream soversion change). + * Add a dependency on libc-dev for all compilers / -dev packages except + gcc (which can be used for kernel builds without libc-dev). + * libffi4-dev: Fix package description. + * On amd64, install 32bit libraries into /emul/ia32-linux/usr/lib. + Addresses: #341147. + * Fix installation of biarch libstdc++ headers on amd64. + * Configure --with-tune=i686 on ix86 architectures (on Ubuntu with + -mtune=pentium4). Remove the cpu-default-* patches. + * debian/control.m4: Fix libxxgcc package names. + * Update the build infrastructure to build cross compilers + (Nikita V. Youshchenko). + * Tighten binutils (build-)dependency. Closes: #342484. + * Symlink more doc directories. + * debian/control.m4: Explicitely set Architecture for biarch packages. + + -- Matthias Klose Sat, 10 Dec 2005 16:56:45 +0100 + +gcc-4.1 (4.1ds1-0ubuntu1) UNRELEASED; urgency=low + + * Build Java packages only. + * Update to SVN 20051121, taken from the 4.1 release branch. + - Remove libjava-saxdriver-fix patch, applied upstream. + - Remove ada-gnat-version patch, applied upstream. + * Fix FTBFS in biarch builds on 32bit kernels. + * Update libstdc++-doc doc-base file (closes: #339046). + * Remove obsolete patch: gcc-alpha-ada_fix. + * Fix installation of biarch libstdc++ headers (Ubuntu #19655). + * Fix sparc and s390 biarch patches to build the 64bit libffi. + * Work around biarch build failure in libjava/classpath/native/jni/midi-alsa. + * Install spe.h header on powerpc. + * Add libasound build dependencies. + * libgcj: Fix installation of libgjsmalsa library. + * Remove patches not used anymore: libjava-no-rpath, i386-config-ml-nomf, + libobjc, multiarch-include, disable-biarch-check-mf, gpc-profiled, + gpc-no-gpidump, libgpc-shared, acats-expect. + * Fix references to manuals in gnat(1). Ubuntu #19772. + * Remove build dependency on xlibs-dev, add libxtst-dev. + * Do not configure with --disable-werror. + * Merge *-config-ml patches into one config-ml patch, configure the biarch + libs in debian/rules.defs. + * debian/gcj-wrapper: Accept -Xss. + * Do not build biarch java on Debian (missing biarch libasound). + * Do not build the java packages from this source package, avoiding + dependencies on X. + + -- Matthias Klose Mon, 21 Nov 2005 20:29:43 +0100 + +gcc-4.1 (4.1ds0-0exp0) experimental; urgency=low + + * Configure libstdc++ using the default allocator. + * Update to 20051112, taken from the svn trunk. + + -- Matthias Klose Sat, 12 Nov 2005 23:47:01 +0100 + +gcc-4.1 (4.1ds0-0ubuntu0) breezy; urgency=low + + * UNRELEASED + * First snapshot of gcc-4.1 (CVS 20051019). + - adds SSP support (closes: #213994, #233208). + * Remove patches applied upstream/not needed anymore. + * Update patches for 4.1: link-libs, gcc-textdomain, libjava-dlsearch-path, + rename-info-files, reporting, classmap-path, i386-biarch, sparc-biarch, + libjava-biarch-awt, ada-gcc-name. + * Disable patches: + - 323016, m68k, necessary for 4.1? + * debian/copyright: Update for 4.1. + * debian/control, debian/control.m4, debian/rules.defs, debian/rules.conf: + Update for 4.1, add support for Obj-C++ and SSP. + * Fix generation of Ada docs in info format. + * Set Ada library version to 4.1. + * Drop gnat-3.3 as an alternative build dependency. + * Use fortran instead of f95 for the build files. + * Update build support for awt peer libs. + * Add packaging support for SSP library. + * Add packaging support for Obj-C++. + * Run the testsuite for -march=i686 on i386 and amd64 as well. + * Fix generation of Pascal docs in html format. + * Update config-ml patches to build libssp biarch. + * Disable libssp for hppa64 build. + * libgcj7-dev: Install jni_md.h. + * Disable gnat for powerpc, currently fails to build. + * Add biarch runtime lib packages for ssp, mudflap, ffi. + * Do not explicitely configure with --enable-java-gc=boehm, which is the + default. + * libjava-saxdriver-fix: Fix a problem in the Aelfred2 SAX parser. + * libstdc++6-4.0-dev: Depend on the libc-dev package. Ubuntu #18885. + * Build-depend on expect-tcl8.3 on all architectures. + * Build-depend on lib32z1-dev on amd64 and ppc64, drop build dependency on + amd64-libs. + * Disable ada on alpha mips mipsel powerpc s390, currently broken. + + -- Matthias Klose Wed, 19 Oct 2005 11:02:31 +0200 + +gcc-4.0 (4.0.2-3) unstable; urgency=low + + * Update to CVS 20051015, taken from the gcc-4_0-branch. + - gcc man page fixes (closes: #327254, #330099). + - PR java/19870, PR java/20338, PR java/21844, PR java/21540: + Remove Debian patches. + - Applied libjava-echo-fix patch. + - Fix PR target/24284, ICE (Segmentation fault) on sparc-linux. + Closes: #329840. + - Fix PR c++/23797, ICE on typename outside template. Closes: #325545. + - Fix PR c++/22551, ICE in tree_low_cst. Closes: #318932. + * libstdc++6: Tighten libstdc++ shlibs version to 4.0.2-3 (new symbol). + * Update generated Ada files. + * Fix logic to disable mudflap and Obj-C++ via the environment. + * Remove f77 build bits. + * gij-4.0: Remove /var/lib/gcj-4.0/classmap.db on purge (closes: #330800). + * Let gcj-4.0 depend on libgcj6-dev, instead of recommending it. This is + not necessary for byte-code compilations, but for compilations to native + code. For compilations to byte-code, use a better compiler like ecj + for now (found in the ecj-bootstrap package). + * Disable biarch setup in cross compilers (Josh Triplett). Closes: #333952. + * Fix with_libnof logic for cross-compilations (Josh Triplett). + Closes: #333951. + * Depend on binutils (>= 2.16.1cvs20050902-1) on the alpha architecture. + Closes: #333954. + * On i386, build-depend on libc6-dev-amd64. Closes: #329108. + * (Build-)depend on glibc 2.3.5-5. + + -- Matthias Klose Sun, 2 Oct 2005 14:25:54 +0200 + +gcc-4.0 (4.0.2-2) unstable; urgency=low + + * Update to CVS 20051001, taken from the gcc-4_0-branch. Includes the + changes between 4.0.2 RC3 and the final 4.0.2 release, missing from + the upstream tarball. Remove patches applied upstream (gcc-c-decl, + pr23182, pr23043, pr23367, pr23891, pr21418, pr24018). + * On ix86 architectures run the testsuite for -march=i686 as well. + * Build libffi on the Hurd (closes: #328705). + * Add big-endian arm (armeb) support (Lennert Buytenhek). Closes: #330730. + * Update libjava xml to classpath CVS HEAD 20050930 (Michael Koch). + * Reapply patch to make -mieee the default on alpha-linux. Closes: #330826. + * Add workaround not to make libmudflap _start/_end not small data on + mips/mipsel, taken from CVS HEAD. + * Don't build the nof libraries on powerpc. + * Number crunching time on m68k, reenable gfortran on m68k-linux-gnu. + + -- Matthias Klose Sat, 1 Oct 2005 15:42:10 +0200 + +gcc-4.0 (4.0.2-1) unstable; urgency=low + + * GCC 4.0.2 release. + * lib64stdc++6: Set priority to optional. + * Fix bug in StreamSerializer, seen with eclipse-3.1 (Ubuntu 12744). + Backport from CVS HEAD, Michael Koch. + * Apply java patches, proposed for the 4.0 branch: PR java/24018, + PR libgcj/23182, PR java/19870, PR java/21844, PR libgcj/23367, + PR java/20338. + * Update the expect/pty test to actually call expect directly, rather + than test for the existence of PTYs, since a working expect is what + we really care about, not random device files (Adam Conrad). + Closes: #329715. + * Add build dependencies on lib64z1-dev. + * gcc-c-decl.dpatch: Fix C global decl handling regression in 4.0.2 from + 4.0.1 + + -- Matthias Klose Thu, 29 Sep 2005 19:50:08 +0200 + +gcc-4.0 (4.0.1-9) unstable; urgency=low + + * Update to CVS 20050922, taken from the gcc-4_0-branch (4.0.2 RC3). + * Apply patches: + - Fix PR java/21418: Order of source files matters when compiling, + backported from mainline. + - Fix for PR 23043, backported form mainline. + - Proposed patch for #323016 (m68k only). Patch by Roman Zippel. + * libstdc++6: Tighten libstdc++ shlibs version to 4.0.1-9 (new symbol). + * Fail the build early, if the system doesn't have any pty devices + created in /dev. Needed for running the testsuite. + * Update hurd changes again (closes: #328973). + + -- Matthias Klose Thu, 22 Sep 2005 07:28:18 +0200 + +gcc-4.0 (4.0.1-8) unstable; urgency=medium + + * Update to CVS 20050917, taken from the gcc-4_0-branch. + - Fix FTBFS for boost, introduced in 4.0.1-7 (closes: #328684). + * Fix PR java/23891, eclipse bootstrap. + * Set priority of gcc-4.0-hppa64 package to standard. + * Bump standards version to 3.6.2. + * Fix java wrapper script, mishandles command line options with arguments. + Patch from Olly Betts. Closes: #296456. + * Bump epoch of the lib32gcc1 package to the same epoch as for the the + libgcc1 and lib64gcc1 packages. + * Fix some lintian warnings. + * Build libffi on the Hurd (closes: #328705). + * For biarch builds, disable the testsuite for the non-default architecture + for runtime libraries, which are not built by default (libjava). + * Add gsfonts-x11 to Build-Depends-Indep to avoid warnings from doxygen. + * Install Ada .ali files read-only. + + -- Matthias Klose Sat, 17 Sep 2005 10:35:23 +0200 + +gcc-4.0 (4.0.1-7) unstable; urgency=low + + * Update to CVS 20050913, taken from the gcc-4_0-branch. + - Fix PR c++/19004, ICE in uses_template_parms (closes: #284777). + - Fix PR rtl-optimization/23454, ICE in invert_exp_1 on sparc. + Closes: #321215. + - Fix PR libstdc++/23417, make bits/stl_{list,tree}.h -Weffc++ clean. + Closes: ##322170. + * Install 'altivec.h' on ppc64 (closes: #323945). + * Install locale data with the versioned package name (closes: #321591). + * Fix fastjar build without building libjava. + * On hppa, don't build using gcc-3.3 when ada is disabled. + * On m68k, don't build the stage1 compiler using -O. + + * Ludovic Brenta + - Allow the choice whether or not to build with NLS. + - Fix a typo whereby libffi was always enabled on i386. + + -- Matthias Klose Tue, 13 Sep 2005 23:23:11 +0200 + +gcc-4.0 (4.0.1-6) unstable; urgency=low + + * Update to CVS 20050821, taken from the gcc-4_0-branch. + - debian/patches/pr21562.dpatch: Removed, applied upstream. + - debian/patches/libjava-awt-name.dpatch: Updated. + - debian/patches/classpath-20050618.dpatch: Updated. + * Use all available CPU's for the check target, unless USE_NJOBS == no. + * debian/patches/biarch-include.dpatch: Include + /usr/local/include/-linux-gnu before including /usr/local/include. + * Fix biarch system include directories for the non-default architecture. + * Prefer gnat-4.0 over gnat-3.4 over gnat-3.3 as a build-dependency. + + -- Matthias Klose Thu, 18 Aug 2005 18:36:23 +0200 + +gcc-4.0 (4.0.1-5) unstable; urgency=low + + * Update to CVS 20050816, taken from the gcc-4_0-branch. + - Fix PR middle-end/23369, wrong code generation for funcptr comparison + on hppa. Closes: #321785. + - Fix PR fortran/23368 ICE with NAG routines (closes: #322912). + * Build-depend on libcairo2-dev (they say, that's the final package name ...) + * libgcj: Search /usr/lib/gcj-4.0 for dlopened libraries, place a copy + of the .la files in the libgcj6 package into this directory. + Closes: #322576. + * Tighten the dependencies between the compiler packages to the same + version and release. Use some substitution variables for control file + generation. + * Remove build dependencies for gpc. + * Don't use '/emul/ia32-linux' on ppc64 (closes: #322890). + * Synchronize with Ubuntu. + + -- Matthias Klose Tue, 16 Aug 2005 22:45:47 +0200 + +gcc-4.0 (4.0.1-4ubuntu1) breezy; urgency=low + + * Jeff Bailey + + Enable i386 biarch using biarch glibc (not yet enabled for unstable). + - debian/rules.d/binary-libgcc.mk: Make i386 lib64gcc1 depend on + libc6-amd64 + - debian/control.m4: Suggest libc6-amd64 rather than amd64-libs. + - debian/rules.conf: Build-Dep on libc6-dev-amd64 [i386] + Build-Dep on binutils >= 2.16.1-2ubuntu3 + - debian/rules2: Enable biarch build in Ubuntu. + + * Matthias Klose + + - Add shlibs file and dependency information for the lib32gcc1 package. + - debian/patches/gcc-textdomain.dpatch: Update (closes: #321591). + - Set priority of gcc-4.0-base and libstdc++6 packages to `required'. + Closes: #321016. + - libffi-hppa.dpatch: Remove, applied upstream. + + -- Matthias Klose Mon, 8 Aug 2005 19:39:02 +0200 + +gcc-4.0 (4.0.1-4) unstable; urgency=low + + * Enable the biarch compiler for powerpc (closes: #268023). + * Update to CVS 20050806, taken from the gcc-4_0-branch. + * Build depend on libcairo0.6.0-dev (closes: #321540). + * Fix Ada build on the hurd (closes: #321350). + * Update libffi for mips (Thiemo Seufer). Closes: #321100. + * Fix segfault on 64bit archs in the AWT Gtk peer library (Dan Frazier). + Closes: #320915. + * Add libXXgcc1 build dependencies for biarch builds. + + -- Matthias Klose Sun, 7 Aug 2005 07:01:59 +0000 + +gcc-4.0 (4.0.1-3) unstable; urgency=medium + + * Update to CVS 20050725, taken from the gcc-4_0-branch. + - Fix ICE with -O and -mno-ieee-fp/-ffast-math (closes: #319087). + * Synchronize with Ubuntu. + * Fix applying hurd specific patches for the hurd build (closes: #318443). + * Do not build-depend on libmpfr-dev on architectures, where fortran + is not built. + * Apply biarch include patch on ppc64 as well (closes: #318603). + * Correct libstdc++-dev package description (closes: #319082). + * debian/rules.defs: Replace DEB_TARGET_GNU_CPU with DEB_TARGET_ARCH_CPU. + * gcc-4.0-hppa64: Rename hppa64-linux-gcc to hppa64-linux-gnu-gcc. + Closes: #319818. + + -- Matthias Klose Mon, 25 Jul 2005 10:43:06 +0200 + +gcc-4.0 (4.0.1-2ubuntu3) breezy; urgency=low + + * Update to CVS 20050720, taken from the gcc-4_0-branch. + - Fix PR22278, volatile issues, seen when building xorg. + * Build against new libcairo1-dev (0.5.2). + + -- Matthias Klose Wed, 20 Jul 2005 12:29:50 +0200 + +gcc-4.0 (4.0.1-2ubuntu2) breezy; urgency=low + + * Acknowledge that i386 biarch builds still need to be fixed for glibc-2.3.5. + + -- Matthias Klose Tue, 19 Jul 2005 08:29:30 +0000 + +gcc-4.0 (4.0.1-2ubuntu1) breezy; urgency=low + + * Synchronize with Debian. + * Update to CVS 20050718, taken from the gcc-4_0-branch. + - Fix PR c++/22132 (closes: #318488), upcasting a const class pointer + to struct the class derives from generates wrong code. + * Build biarch runtime libraries for Fortran and ObjC. + * Apply proposed patch for PR22309 (crash with mt_allocator if libstdc++ + is dlclosed). Closes: #293466. + + -- Matthias Klose Mon, 18 Jul 2005 17:10:18 +0200 + +gcc-4.0 (4.0.1-2) unstable; urgency=low + + * Don't apply the patch to make -mieee the default on alpha-linux-gnu. + Causes the bootstrap to fail on alpha-linux-gnu. + + -- Matthias Klose Tue, 12 Jul 2005 00:14:12 +0200 + +gcc-4.0 (4.0.1-1) unstable; urgency=high + + * GCC 4.0.1 final release. See /usr/share/doc/gcc-4.0/NEWS.{gcc,html}. + * Build fastjar on mips/mipsel, fix fastjar build without building java. + * Disable the comparision check on unstable/ia64. adaint.o differs, + currently cannot be reproduced with glibc-2.3.5 and binutils-2.16.1. + * libffi/hppa: Fix handling of 3 and 5-7 byte struct returns. + * amd64: Fix libgcc symlinks to point to /usr/lib32, instead of /lib32. + * On powerpc, don't build with -j >1, apparently doesn't succeeds + on the Debian buildd. + * Apply revised patch to make -mieee the default on alpha-linux, + and add -mieee-disable switch to turn the default off (Tyson Whitehead). + * Disable multiarch-includes; redo biarch-includes to include the paths + for the non-default biarch, when called with -m32/-m64. + * Move new java headers from libstdc++-dev to libgcj-dev, add replaces + line. + * Update classpath patch to work with cairo-0.5.1. Patch provided by + Michael Koch. + * Further classpath updates for gnu.xml and javax.swing.text.html. + Patch provided by Michael Koch. + * Require binutils (>= 2.16.1) as a build dependency and a dependency. + * On i386, require amd64-libs-dev (>= 1.2). + * Update debian/NEWS.{html,gcc}. + + * Closing bug reports reported against older gcc versions (some of them + still present in Debian, but not anymore as the default compiler). + Usually, forwarded bug reports are linked to + http://gcc.gnu.org/PR + The upstream bug number usually can be found in the Debian reports. + + * Closed reports reported against gcc-3.3 and fixed in gcc-3.4: + - General: + + PR rtl-optimization/2960: Duplicate loop conditions even with -Os + Closes: #94701. + + PR optimization/3995: i386 optimisation: joining tests. + Closes: #105309. + + PR rtl-optimization/11635: Unnecessary store onto stack, more + curefully expand union cast (closes: #202016). + + PR target/7618: vararg disallowed in virtual function. Closes: #205404. + + Large array problem on 64 bit platforms (closes: #209152). + + Mark more strings as translatable (closes: #227129). + + PR gcc/14711: ICE when compiling a huge source file Closes: #234711. + + Better code generation for if(!p) return NULL;return p; + Closes: #242318. + + PR rtl-optimization/16152: Perl ftbfs on {ia64,arm,m68k}-linux. + Closes: #255801. + + ICE (segfault) while compiling Linux 2.6.9 (closes: #277206). + + Link error building memtest (closes: #281445). + - Ada: + + PR ada/12450: Constraint error for valid input (closes: #210844). + + PR ada/13620: miscompilation of array initializer with + -O3 -fprofile-arcs. Closes: #226244. + - C: + + PR c/6897: Code produced with -fPIC reserves EBX, but compiles + bad __asm__ anyway (closes: #73065). + + PR c/9209: On i386, gcc-3.0 allows $ in indentifiers but not the asm. + Closes: #121282. + + PR c/11943: Accepts invalid declaration "int x[2, 3];" in C99 mode. + Closes: #177303. + + PR c/11942: restrict keyword broken in C99 mode. Closes: #187091. + + PR other/11370: -Wunreachable-code gives false complaints. + Closes: #196600. + + PR c/11369: Too relaxed checking with -Wstrict-prototypes. + Closes: #197504. + + PR c/11445: False positive warning with -Wunreachable-code. + Closes: #200140. + + PR c/11459: -stdc=c90 -pedantic warns about C90's non long-long + support when in C99 mode. Closes: #200392. + + PR c/456: Handling of constant expressions. Closes: #225935. + + ICE on invalid #define with -traditional (closes: #242916). + + No warning when initializing a variable with itself, new option + -Winit-self (closes: #293957). + - C++: + + C++ parse error (closes: #42946). + + PR libstdc++/9073: Replacement for __STL_ASSERTIONS (libstdc++v3 + debug mode). Closes: #128993. + + Parse errors in nested constructor calls (closes: #138561). + + PR optimization/1823: -ftrapv aborts with pointer difference due to + division optimization. Closes: #169862. + + ICE on invalid code (closes: #176101). + + PR c++/10199: ICE handling method parametrized by template. + Closes: #185604. + + High memory usage building packages OpenOffice.org and MythTV. + Closes: #194345, #194513. + + Improved documentation of std::lower_bound (closes: #196380). + + ICE in regenerate_decl_from_template (closes: #197674). + + PR c++/11444: Function fails to propagate up class tree + (template-related). Closes: #198042. + + ICE when using namespaced typedef of primitive type as struct. + Closes: #198261. + + Bug using streambuf / iostream to read from a named pipe. + Closes: #216105. + + PR c++/11437: ICE in lookup_name_real (closes: #200011). + + Add large file support (LFS) in libstdc++ (closes: #220000). + + PR c++/13621: ICE compiling a statement expression returning type + string (closes: #224413). + + g++ doesn't find inherited inner class after template instantiation. + Closes: #227518. + + PR libstdc++/13928: Add whatis info in man pages generated by doxygen. + Closes: #229642. + + Missing symbol _M_setstate in libstdc++ (closes: #232709). + + Unable to parse declaration of inline constructor explicit + specialization (closes: #234709). + + ICE (segfault) on invalid C++ code (closes: #246031). + + ICE in lookup_tempate_function (closes: #262441). + + Undefined symbols in libstdc++, when using specials char_traits. + Closes: #266110. + + PR libstdc++/16011: Outputting numbers with ostream in the locale fr_BE + causes infinite recursion (closes: #270795). + + ICE in tree_low_cst (closes: #276291). + + ICE in in expand_call (closes: #283503). + + typeof operator is misparsed in a template function (closes: #288555). + + ICE in tree_low_cs (closes: #291374). + + Improve uninformative error messages (closes: #292961, #293076). + + ICE on array initialization (closes: #294560). + + Failure to build xine-lib with -finline-functions (closes: #306854). + - Java: + + Fix error finding files in subdirectories (closes: #195480). + + Implement java.text.CollationElementIterator lacks getOffset(). + Closes: #259789. + - Treelang: + + Pointer truncation on 64bit architectures (closes: #308367). + - Architecture specific: + - alpha + + PR debug/10695: ICE on alpha while building agistudio. + Closes: #192568. + + ICE when building fceu (closes: #228018, #252764). + - amd64 + + Miscompilation of Objective-C code (closes: #250174). + + g++ hangs compiling k3d on amd64 (closes: #285364). + - arm + + PR target/19008: gcc -O3 -fPIC produces wrong code via auto inlining. + Closes: #285238. + - i386 + + PR target/4106: i386 -fPIC asm ebx clobber no error. + Closes: #153472. + + PR target/10984: x86/sse2 ICEs on vector intrinsics. Closes: #166940. + + Wrong code generation on at least ix86 (closes: #275655). + - m68k + + PR target/9201: ICE compiling octave-2.1 (closes: #175478). + + ICE in verify_initial_elim_offsets (closes: #204407, #257012). + + g77 generates invalid assembly code (closes: #225621). + + ICE in verify_local_live_at_start (closes #245584). + - powerpc + + PR optimization/12828: -floop-optimize is unstable on PowerPC (float + to int conversion problem). Closes: #218219. + + PR target/13619: ICE building altivec code in ffmpeg. + Closes: #226148. + + PR target/20046: Miscompilation of bind 9.3.0. Closes: #292958. + - sparc + + ICE (segfault) while building atlas3 on sparc32 (closes: #249108). + + Wrong optimization on sparc32 when building linux kernel. + Closes: #254626. + + * Closed reports reported against gcc-3.3 or gcc-3.4 and fixed in gcc-4.0: + - General: + + PR rtl-optimization/6901: Optimizer improvement (removing unused + local variables). Closes: #67206. + + PR middle-end/179: Failure to detect use of unitialized variable + with -O -Wall. Closes: #117765. + + ICE building glibc's nptl on amd64 (closes: #260710, #307993). + + PR middle-end/17827: ICE in make_decl_rtl. Closes: #270854. + + PR middle-end/21709: ICE on compile-time complex NaN. Closes: #305344. + - Ada: + + PR ada/10889: Convention Fortran matrices mishandled in generics. + Closes: #192135. + + PR ada/13897: Implement tasking on powerpc. Closes: #225346. + - C: + + PR c/13072: Bogus warning with VLA in switch. Closes: #218803. + + PR c/13519: typeof(nonconst+const) is const. Closes: #208981. + + PR c/12867: Incorrect warning message (void format, should be void* + format). Closes: #217360. + + PR c/16066: PR 16066] i386 loop strength reduction bug. + Closes: #254659. + - C++: + + PR c++/13518: -Wnon-virtual-dtor doesn't always work. Closes: #212260. + + PR translation/16025: ICE with unsupported locale(closes: #242158). + + PR c++/15125: -Wformat doesn't warn for different types in fprintf. + Closes: #243507. + + PR c++/15214: Warn only if the dtor is non-private or the class has + friends. (closes: #246639). + + PR libstdc++/17218: Unknown subjects in generated libstdc++ manpages. + Closes: #262934. + + PR libstdc++/17223: Missing .so references in generated libstdc++ + manpages. Closes: #262956. + + libstdc++-doc: Improve man pages (closes: #280910). + + PR c++/19006: ICE in tree_low_cst. Closes: #285692. + + g++ does not check arguments to fprintf. Closes: #281847. + - Java: + + PR java/7304: gcj ICE (closes: #152501). + + PR libgcj/7305: Installation of headers not directly in /usr/include. + Closes: #195483. + + PR libgcj/11941: libgcj timezone handling (closes: #203212). + + PR java/14709: gcj fails to wait for its child processes on exec(). + Closes: #238432. + + PR libgcj/21703: gcj hangs when rapidly calling String.intern(). + Closes: #275547. + + SocketChannel.get(ByteBuffer) returns 0 at EOF. Closes: #281602. + + PR java/19711: gcj segfaults instead of reporting the ambiguous + expression. Closes: #286715. + + Static libgcj contains repeated archive members (closes: #298263). + - Architecture specific: + - alpha + + Unaligned accesses with ?-operator (closes: #301983). + - arm + + Compilation error of glibc-2.3.4 on arm (closes: #298508). + - m68k + + ICE in add_insn_before (closes: #248432). + - mips + + Fix o32 ABI breakage in gcc 3.3/3.4 (closes: #270620). + - powerpc + + ICE in extract_insn (closes: #311128). + + * Closing bug reports as wontfix: + - g++ defines _GNU_SOURCE when using the libstdc++ header files. + Behaviour did change since 3.0. Closes: #126703, #164872. + + -- Matthias Klose Sat, 9 Jul 2005 17:10:54 +0000 + +gcc-4.0 (4.0.0ds2-12) unstable; urgency=high + + * Update to CVS 20050701, taken from the gcc-4_0-branch. + * Apply proposed patch for MMAP configure fix; aka PR 19877. Backport + from mainline. + * Disable Fortran on m68k. Currently FTBFS. + * Split multiarch-include/lib patches. Update multiarch-include patch. + * Fix FTBFS of the hppa64-linux cross compiler. Don't add the + multiarch include dirs when cross compiling. + * Configure --with-java-home, as used by java-gcj-compat. + Closes: #315646. + * Make libgcj-dbg packages priority extra. + * Set the path of classmap.db to /var/lib/gcj-@gcc_version@. + * On m68k, do not create the default classmap.db in the gcj postinst. + See #312830. + * On amd64, install the 32bit libraries into /emul/ia32-linux/usr/lib. + Restore the /usr/lib32 symlink. + * On amd64, don't reference lib64, but instead lib (lib64 is a symlink + to lib). Closes: #293050. + * Remove references to build directories from the .la files. + * Make cpp-X.Y conflict with earlier versions of gcc-X.Y, g++-X.Y, gobjc-X.Y, + gcj-X.Y, gfortran-X.Y, gnat-X.Y, treelang-X.Y, if a path component in + the gcc library path changes (i.e. version or target alias). + * Disable Ada for sh3 sh3eb sh4 sh4eb. + * For gcj-4.0, add a conflict to libgcj4-dev and libgcj5-dev. + Closes: #316499. + + -- Matthias Klose Sat, 2 Jul 2005 11:04:35 +0200 + +gcc-4.0 (4.0.0ds1-11) unstable; urgency=low + + * debian/rules.defs: Disable Ada for alpha. + * debian/rules.conf: Fix typo in type-handling replacement code. + * Don't ship an empty libgcj6-dbg package. + + -- Matthias Klose Thu, 23 Jun 2005 09:03:21 +0200 + +gcc-4.0 (4.0.0ds1-10) unstable; urgency=medium + + * debian/patches/libstdc++-api-compat.dpatch: Apply proposed patch + to fix libstdc++ 3.4.5/4.0 compatibility. + * type-handling output became insane. Don't use it anymore. + * Drop the reference to the stl-manual package (closes: #314983). + * Disable java on GNU/kFreeBSD targets, requested by Robert Millan. + Closes: #315140. + * Terminate the acats-killer process, even if the build is aborted + by the user (closes: #314405). + * debian/rules.defs: Define DEB_TARGET_ARCH_{OS,CPU}. + * Start converting the use of DEB_*_GNU_* to DEB_*_ARCH_* in the build + files. + * Do not configure with --enable-gtk-cairo. Needs newer gtk. Drop + build dependency on libcairo-dev. + * Fix setting of the system header directory for the hurd (Michael Banck). + Closes: #315386. + * Fix FTBFS on hurd-i386: MAXPATHLEN issue (Michael Banck). Closes: #315384. + + -- Matthias Klose Wed, 22 Jun 2005 19:45:50 +0200 + +gcc-4.0 (4.0.0ds1-9ubuntu2) breezy; urgency=low + + * Fix version number in libgcj shlibs file. + + -- Matthias Klose Sun, 19 Jun 2005 10:34:02 +0200 + +gcc-4.0 (4.0.0ds1-9ubuntu1) breezy; urgency=low + + * Update to 4.0.1, release candidate 2. + * libstdc++ shlibs file: Require 4.0.0ds1-9ubuntu1 as minimum version. + * Rename libawt to libgcjawt to avoid conflicts with other + libawt implementations (backport from HEAD). + * Update classpath awt, swing and xml parser for HTML support in swing. + Taken from classpath CVS HEAD 2005-06-18. Patch provided by Michael Koch. + * Remove the libgcj-buffer-strategy path, part of the classpath update. + * libgcj shlibs file: Require 4.0.0ds1-9ubuntu1 as minimum version. + * Require cairo-0.5 as build dependency. + * gij-4.0: Provide java1-runtime. + * gij-4.0: Provide an rmiregistry alternative (using grmiregistry-4.0). + * gcj-4.0: Provide an rmic alternative (using grmic-4.0). + * libgcj6-dev conflicts with libgcj5-dev, libgcj4-dev, not libgcj6. + Closes: #312741. + * libmudflap-entry-point.dpatch: Correct name of entry point on mips/mipsel. + * Apply proposed patch for PR 18421 and PR 18719 (m68k only). + * Apply proposed path for PR 21562. + * Add build dependency on dpkg (>= 1.13.7). + * On linux systems, configure for -linux-gnu. + * Configure the hppa64 cross compiler to target hppa64-linux-gnu. + * (Build-)depend on binutils-2.16.1. + * libstdc{32,64}++6-4.0-dbg: Depend on libstdc++6-4.0-dev. + * gnat-4.0: only depend on libgnat, when a shared libgnat is built. + * gfortran-4.0: Depend on libgmp3c2 | libgmp3. + * On hppa, explicitely use gcc-3.3 as a build dependency in the case + that Ada is disabled. + * libmudflap: Always build the library for the non-default biarch + architecture, or else the test results show link failures. + + -- Matthias Klose Sat, 18 Jun 2005 00:42:55 +0000 + +gcc-4.0 (4.0.0-9) unstable; urgency=low + + * Upload to unstable. + + -- Matthias Klose Wed, 25 May 2005 19:02:20 +0200 + +gcc-4.0 (4.0.0-8ubuntu3) breezy; urgency=low + + * debian/control: Regenerate. + + -- Matthias Klose Sat, 4 Jun 2005 10:56:27 +0200 + +gcc-4.0 (4.0.0-8ubuntu2) breezy; urgency=low + + * Fix powerpc-config-ml patch. + + -- Matthias Klose Fri, 3 Jun 2005 15:47:52 +0200 + +gcc-4.0 (4.0.0-8ubuntu1) breezy; urgency=low + + * powerpc biarch support: + - Enable powerpc biarch support, build lib64gcc1 on powerpc. + - Add patch to disable libstdc++'s configure checking, if it can't run + 64bit binaries on 32bit kernels (Sven Luther). + - Apply the same patch to the other runtime librararies as well. + - Run the testsuite with -m64, if we can execute 64bit binaries. + - Add libc6-dev-ppc64 as build dependency for powerpc. + * 32bit gcj libs for amd64. + * debian/logwatch.sh: Don't remove logwatch pid file on exit (suggested + by Ryan Murray). + * Update to CVS 20050603, taken from the gcc-4_0-branch. + * g++-4.0 provides c++abi2-dev. + * Loosen dependencies on packages of architecture `all' to not break + binary only uploads. + * Build libgfortran for biarch as well, else the testsuite will fail. + + -- Matthias Klose Fri, 3 Jun 2005 13:38:19 +0200 + +gcc-4.0 (4.0.0-8) experimental; urgency=low + + * Synchronize with Ubuntu. + + -- Matthias Klose Mon, 23 May 2005 01:56:28 +0000 + +gcc-4.0 (4.0.0-7ubuntu7) breezy; urgency=low + + * Fix build failures for builds with disabled testsuite. + * Adjust debian/rules conditionals to work with all dpkg versions. + * Build separate lib32stdc6-4.0-dbg/lib64stdc6-4.0-dbg packages. + * Add the debugging symbols of the optimzed libstdc++ build in the + lib*stdc++6-dbg packages as well. + * Build a libgcj6-dbg package. + * Update to CVS 20050522, taken from the gcc-4_0-branch. + * Add Ada support for the ppc64 architecture (Andreas Jochens): + * debian/patches/ppc64-ada.dpatch + - Add gcc/ada/system-linux-ppc64.ads, which has been copied from + gcc/ada/system-linux-ppc.ads and changed to use 'Word_Size' 64 + instead of 32. + - gcc/ada/Makefile.in: Use gcc/ada/system-linux-ppc64.ads on powerpc64. + * debian/rules.patch + - Use ppc64-ada patch on ppc64. + * debian/rules.d/binary-ada.mk + Place the symlinks libgnat.so, libgnat-4.0.so, libgnarl.so, + libgnarl-4.0.so in '/usr/lib' instead of '/adalib'. + Closes: #308948. + * Add libc6-dev-i386 as an alternative build dependency for amd64. + Closes: #305690. + + -- Matthias Klose Sun, 22 May 2005 22:14:20 +0200 + +gcc-4.0 (4.0.0-7ubuntu6) breezy; urgency=low + + * Don't trust dpkg-architecture (1.13.4), it "hurds" ... + + -- Matthias Klose Wed, 18 May 2005 11:36:38 +0200 + +gcc-4.0 (4.0.0-7ubuntu5) breezy; urgency=low + + * libgcj6-dev: Don't provide libgcj-dev. + + -- Matthias Klose Wed, 18 May 2005 00:30:32 +0000 + +gcc-4.0 (4.0.0-7ubuntu4) breezy; urgency=low + + * Update to CVS 20050517, taken from the gcc-4_0-branch. + * Apply proposed patch for PR21293. + + -- Matthias Klose Tue, 17 May 2005 23:05:40 +0000 + +gcc-4.0 (4.0.0-7ubuntu2) breezy; urgency=low + + * Update to CVS 20050515, taken from the gcc-4_0-branch. + + -- Matthias Klose Sun, 15 May 2005 23:48:00 +0200 + +gcc-4.0 (4.0.0-7ubuntu1) breezy; urgency=low + + * Synchronize with Debian. + + -- Matthias Klose Mon, 9 May 2005 19:35:29 +0200 + +gcc-4.0 (4.0.0-7) experimental; urgency=low + + * Update to CVS 20050509, taken from the gcc-4_0-branch. + * Remove the note from the fastjar package description, stating, that + fastjar is incomplete compared to the "standard" jar utility. + * Fix typo in build depends. dpkg-checkbuilddeps doesn't like a comma + inside []. + * Tighten shlibs dependencies to require the current version. + + -- Matthias Klose Mon, 9 May 2005 19:02:03 +0200 + +gcc-4.0 (4.0.0-6) experimental; urgency=low + + * Update to CVS 20050508, taken from the gcc-4_0-branch. + + -- Matthias Klose Sun, 8 May 2005 14:08:28 +0200 + +gcc-4.0 (4.0.0-5ubuntu1) breezy; urgency=low + + * Temporarily disable the i386 biarch build. Remove the amd64-libs-dev + build dependency, add (build-)conflict (<= 1.1ubuntu1). + + -- Matthias Klose Sat, 7 May 2005 16:56:21 +0200 + +gcc-4.0 (4.0.0-5) breezy; urgency=low + + * gnat-3.3 and gnat-4.0 are alternative build dependencies (closes: #308002). + * Update to CVS 20050507, taken from the gcc-4_0-branch. + * gcj-4.0: Install gjnih. + * Add libgcj buffer strategy framework (Thomas Fitzsimmons), needed for OOo2. + Backport from 4.1. + * Fix all lintian errors and most of the warnings. + + -- Matthias Klose Sat, 7 May 2005 12:26:15 +0200 + +gcc-4.0 (4.0.0-4) breezy; urgency=low + + * Still prefer gnat-3.3 over gnat-4.0 as a build dependency. + + -- Matthias Klose Fri, 6 May 2005 22:30:43 +0200 + +gcc-4.0 (4.0.0-3) breezy; urgency=low + + * Update to CVS 20050506, taken from the gcc-4_0-branch. + * Update priority of java alternatives to 40. + * Move gcj-dbtool to gij package, move the default classmap.db to + /var/lib/gcj-4.0/classmap.db. Create it in the postinst. + * Fix gcc-4.0-hppa64 postinst (closes: #307762). + * Fix gcc-4.0-hppa64, gij-4.0 and gcj-4.0 postinst, to not ignore errors + from update-alternatives. + * Fix gcc-4.0-hppa64, fastjar, gij-4.0 and gcj-4.0 prerm, + to not ignore errors from update-alternatives. + + -- Matthias Klose Fri, 6 May 2005 17:50:58 +0200 + +gcc-4.0 (4.0.0-2) experimental; urgency=low + + * GCC 4.0.0 release. + * Update to CVS 20050503, taken from the gcc-4_0-branch. + * Add gnat-4.0 as an alternative build dependency (closes: #305690). + + -- Matthias Klose Tue, 3 May 2005 15:41:26 +0200 + +gcc-4.0 (4.0.0-1) experimental; urgency=low + + * GCC 4.0.0 release. + + -- Matthias Klose Sun, 24 Apr 2005 11:28:42 +0200 + +gcc-4.0 (4.0ds11-0pre11) breezy; urgency=low + + * CVS 20050413, taken from the gcc-4_0-branch. + * Add proposed patches for PR20126, PR20490, PR20929. + + -- Matthias Klose Wed, 13 Apr 2005 09:43:00 +0200 + +gcc-4.0 (4.0ds10-0pre10) experimental; urgency=low + + * gcc-4.0.0-20050410 release candidate 1, built from the prerelease tarball. + - C++ fix for "optimizer breaks function inlining". Closes: #302989. + * Append the GCC version to the fastjar/grepjar version string. + * Use short file names in the libstdc++ docs (closes: #301140). + * Fix libstdc++-dbg dependencies (closes: #303866). + + -- Matthias Klose Mon, 11 Apr 2005 13:16:01 +0200 + +gcc-4.0 (4.0ds9-0pre9) experimental; urgency=low + + * CVS 20050326, taken from the gcc-4_0-branch. + * Reenable Ada on ia64. + * Build libgnat on hppa, sparc, s390 again. + * ppc64 support (Andreas Jochens): + * debian/control.m4 + - Add libc6-dev-powerpc [ppc64] to the Build-Depends. + - Change the Description for lib32gcc1: s/ia32/32 bit Version/ + * debian/rules.defs + - Define 'biarch_ia32' for ppc64 to use the same 32 bit multilib + facilities as amd64. + * debian/rules.d/binary-gcc.mk + - Correct an error in the 'files_gcc' definition for biarch_ia32 + (replace '64' by '32'). + * debian/rules2 + - Do not use '--disable-multilib' on powerpc64-linux. + Use '--disable-nof --disable-softfloat' instead. + * debian/rules.d/binary-libstdcxx.mk + - Put the 32 bit libstdc++ files in '/usr/lib32'. + * debian/rules.patch + - Apply 'ppc64-biarch' patch on ppc64. + * debian/patches/ppc64-biarch.dpatch + - MULTILIB_OSDIRNAMES: Use /lib for native 64 bit libraries and + /lib32 for 32 bit libraries. + - Add multilib handling to src/config-ml.in (taken from + amd64-biarch.dpatch). + * Rename biarch_ia32 to biarch32, as suggsted by Andreas. + * Use /bin/dash on hppa. + * Reenable the build of the hppa64 compiler. + * Enable parallel builds by defaults (set environment variale USE_NJOBS=no + or USE_NJOBS= to modify the default, which is to use the + number of available processors). + + -- Matthias Klose Sat, 26 Mar 2005 19:07:30 +0100 + +gcc-4.0 (4.0ds8-0pre8) experimental; urgency=low + + * CVS 20050322, taken from the gcc-4_0-branch. + - Add proposed fix for PR19406. + * Configure --with-gtk-cairo only if version 0.3.0 is found. + * Split out gcc-4.0-locales package. Better chance of getting + bug reports in english language. + + -- Matthias Klose Tue, 22 Mar 2005 14:20:24 +0100 + +gcc-4.0 (4.0ds7-0pre7) experimental; urgency=low + + * CVS 20050304, taken from the gcc-4_0-branch. + * Build the treelang compiler. + + -- Matthias Klose Fri, 4 Mar 2005 21:29:56 +0100 + +gcc-4.0 (4.0ds6-0pre6ubuntu6) hoary; urgency=low + + * Fix lib32gcc1 symlink on amd64. Ubuntu #7099. + + -- Matthias Klose Thu, 3 Mar 2005 00:17:26 +0100 + +gcc-4.0 (4.0ds6-0pre6ubuntu5) hoary; urgency=low + + * Add patch from PR20160, avoid creating archives with components + that have duplicate basenames. + + -- Matthias Klose Wed, 2 Mar 2005 14:22:04 +0100 + +gcc-4.0 (4.0ds6-0pre6ubuntu4) hoary; urgency=low + + * CVS 20050301, taken from the gcc-4_0-branch. + Test builds on i386, amd64, powerpc, ia64, check libgcc_s.so.1. + * Add fastjar-4.0 binary and manpage. Some java packages append it + for all java related tools. + * Add libgcj6-src package for source code availability in IDE's. + * On hppa, disable the build of the hppa64 cross compiler, disable + java, disable running the testsuite (request by Lamont). + * On amd64, lib32gcc1 replaces ia32-libs.openoffice.org (<< 1ubuntu3). + * Build-Depend on libcairo1-dev, configure with --enable-gtk-cairo. + Work around libtool problems install libjawt. + Install jawt header files in libgcj6-dev. + * Add workaround for PR debug/19769. + + -- Matthias Klose Tue, 1 Mar 2005 11:26:19 +0100 + +gcc-4.0 (4.0ds5-0pre6ubuntu3) hoary; urgency=low + + * Drop libgmp3-dev (<< 4.1.4-3) as an alterntative build dependency. + + -- Matthias Klose Thu, 10 Feb 2005 15:16:27 +0100 + +gcc-4.0 (4.0ds5-0pre6ubuntu2) hoary; urgency=low + + * Disable Ada for powerpc. + + -- Matthias Klose Wed, 9 Feb 2005 16:47:07 +0100 + +gcc-4.0 (4.0ds5-0pre6ubuntu1) hoary; urgency=low + + * Avoid build dependency on type-handling. + * Install 32bit libs on amd64 in /lib32 and /usr/lib32. + + -- Matthias Klose Wed, 9 Feb 2005 08:27:21 +0100 + +gcc-4.0 (4.0ds5-0pre6) experimental; urgency=low + + * gcc-4.0 snapshot, taken from the HEAD branch CVS 20050208. + * Build-depend on graphviz (moved to main), remove the pregenerated + libstdc++ docs from the diff. + * Fix PR19162, libobjc build failure on arm-linux (closes: #291497). + + -- Matthias Klose Tue, 8 Feb 2005 11:47:31 +0000 + +gcc-4.0 (4.0ds4-0pre5) experimental; urgency=low + + * gcc-4.0 snapshot, taken from the HEAD branch CVS 20050125. + * Call the 4.0 gcx versions in the java wrappers (closes: #291075). + * Correctly install libgij (closes: #291077). + * libgcj6-dev: Add conflicts to other libgcj-dev packages (closes: #290950). + + -- Matthias Klose Mon, 24 Jan 2005 23:59:54 +0100 + +gcc-4.0 (4.0ds3-0pre4) experimental; urgency=low + + * gcc-4.0 snapshot, taken from the HEAD branch CVS 20050115. + * Update cross build patches (Nikita V. Youshchenko). + * Enable Ada on i386, amd64, mips, mipsel, powerpc, sparc, s390. + Doesn't yet bootstrap on alpha, hppa, ia64. + + -- Matthias Klose Sat, 15 Jan 2005 18:44:03 +0100 + +gcc-4.0 (4.0ds2-0pre3) experimental; urgency=low + + * gcc-4.0 snapshot, taken from the HEAD branch CVS 20041224. + + -- Matthias Klose Wed, 22 Dec 2004 00:31:44 +0100 + +gcc-4.0 (4.0ds1-0pre2) experimental; urgency=low + + * gcc-4.0 snapshot, taken from the HEAD branch CVS 20041205. + * Lot's of merges and updates from the gcc-3.4 packages. + + -- Matthias Klose Sat, 04 Dec 2004 12:14:51 +0100 + +gcc-4.0 (4.0ds0-0pre1) experimental; urgency=low + + * gcc-4.0 snapshot, taken from the HEAD branch CVS 20041114. + - Addresses many issues with the libstdc++ man pages (closes: #278549). + * Disable Ada on hppa, ia64, mips, mipsel, powerpc, s390 and sparc, at least + these are known to be broken at the time of the snapshot. + * Minor kbsd.gnu build fixes (Robert Millan). Closes: #273004. + * For amd64, add missing libstdc++ files to 'libstdc++6-dev' package. + (Andreas Jochens). Fixes: #274362. + * Update libffi-mips patch (closes: #274096). + * Updated i386-biarch patch. Don't build 64bit libstdc++, ICE. + * Update sparc biarch patch. + * Fix symlinks for gfortran manpage (closes: #278548). + * Update cross build patches (Nikita V. Youshchenko). + * Update Ada patches (Ludovic Brenta). + + -- Matthias Klose Sat, 13 Nov 2004 10:38:25 +0100 + +gcc-4.0 (4.0-0pre0) experimental; urgency=low + + * gcc-4.0 snapshot, taken from the HEAD branch CVS 20040912. + + * Matthias Klose + + - Integrate accumulated packaging patches from gcc-3.4. + - Rename libstdc++6-* packages to libstdc++6-4-* (closes: #261693). + - libffi4-dev: conflict with libffi3-dev (closes: #265939). + + * Robert Millan + + * control.m4: + - s/locale_no_archs !hurd-i386/locale_no_archs/g + (This is now handled in rules.defs. [1]) + - s/procps [check_no_archs]/procps [linux_gnu_archs]/g [2] + - Add type-handling to build-deps. [3] + * rules.conf: + - Don't require (>= $(libc_ver)) for libc0.1-dev. [4] + - Generate *_no_archs variables with type-handling and use them for + for m4's -D parameters. [3] + * rules.defs: + - use filter instead of findstring [1]. + - s/netbsd-elf-gnu/netbsdelf-gnu/g [5]. + - enable java for kfreebsd-gnu [6] + - enable ffi for kfreebsd-gnu and knetbsd-gnu [6] + - enable libgc for kfreebsd-gnu [6] + - enable checks for kfreebsd-gnu and knetbsd-gnu [7] + - enable locales for kfreebsd-gnu and gnu [1] [8]. + * Closes: #264025. + + -- Matthias Klose Sun, 12 Sep 2004 12:52:56 +0200 + +gcc-3.5 (3.5ds1-0pre1) experimental; urgency=low + + * gcc-3.5 snapshot, taken from the HEAD branch CVS 20040724. + * Install locale data with versioned package name (closes: #260497). + * Fix libgnat symlinks. + + -- Matthias Klose Sat, 24 Jul 2004 21:26:23 +0200 + +gcc-3.5 (3.5-0pre0) experimental; urgency=low + + * gcc-3.5 snapshot, taken from the HEAD branch CVS 20040718. + + -- Matthias Klose Sun, 18 Jul 2004 12:26:00 +0200 + +gcc-3.4 (3.4.1-1) experimental; urgency=low + + * gcc-3.4.1 final release. + - configured wth --enable-libstdcxx-allocator=mt. + * Fixes for generating cross compiler packages (Jeff Bailey). + + -- Matthias Klose Fri, 2 Jul 2004 22:49:05 +0200 + +gcc-3.4 (3.4.0-4) experimental; urgency=low + + * gcc-3.4.1 release candidate 1. + * Add logic to build biarch compiler on powerpc (disabled, needs lib64c). + * Don't build the libg2c0 package on mipsel-linux (no clear answer on + debian-mips, if the libg2c0's built by gcc-3.3 and gcc-3.4 are compatible + (post-sarge issue). + * Don't use gcc-2.95 as bootstrap compiler on m68k anymore. + + -- Matthias Klose Sat, 26 Jun 2004 22:40:20 +0200 + +gcc-3.4 (3.4.0-3) experimental; urgency=low + + * Update to gcc-3.4 CVS 20040613. + * On sparc, set the the build target to sparc64-linux, build with + switch defaulting to code generation for v7. To generate code for + sparc64, use the -m64 switch. + * Add missing doc-base files to -doc packages. + * Add portability patches and kbsd-gnu patch (Robert Millan). + Closes: #251293, #251294. + * Apply fixes for cross build (Nikita V. Youshchenko). + * Do not include the precompiled libstdc++ header files into the -dev + package (still experimental). Closes: #251707. + * Reflect renaming of Ada user's guide. + * Move AWT peer libraries for libgcj into it's own package (fixes: #247791). + + -- Matthias Klose Mon, 14 Jun 2004 00:03:18 +0200 + +gcc-3.4 (3.4.0-2) experimental; urgency=low + + * Update to gcc-3.4 CVS 20040516. + * Do not provide the /usr/hppa64-linux/include in the gcc-hppa64 package, + migrated to libc6-dev. Adjust dependencies. + * Integrate gpc test results into the GCC test summary. + * gnatchop calls gcc-3.4 (closes: #245438). + * debian/locale-gen.sh: Update for recent libstdc+++ testsuite. + * debian/copyright: Add libstdc++-v3's exception clause. + * Add libffi update for mips (Thiemo Seufer). + * Reference Debian specific bug reporting instructions. + * Update README.Bugs. + * Fix FTBFS for libstdc++-doc. + * Update libjava patch for hppa (Randolph Chung). + * Fix installation of ffitarget.h header file. + * On amd64-linux, configure --without-multilib, disable Ada. + + -- Matthias Klose Sun, 16 May 2004 07:53:39 +0200 + +gcc-3.4 (3.4.0-1) experimental; urgency=low + + * gcc-3.4.0 final release. + + * Why experimental? + - Do not interfer with packages currently built from gcc-3.3 sources, + i.e. libgcc1, libobjc1, libffi2, libffi2-dev, libg2c0. + - Biarch sparc compiler doesn't built yet. + - Use of configure flags affecting binary ABI's not yet determined. + - Several ABI bugs have been fixed. Unfortunately, these changes will break + binary compatibility with earlier releases on several architectures: + alpha, mips, sparc, + - hppa and m68k changed sjlj based exception handling to dwarf2 based + exception handling. + + See NEWS.html or http://gcc.gnu.org/gcc-3.4/changes.html for more + specific information. + + -- Matthias Klose Tue, 20 Apr 2004 20:54:56 +0200 + +gcc-3.4 (3.4ds3-0pre4) experimental; urgency=low + + * Update to gcc-3.4 CVS 20040403. + * Add gpc tarball, gpc patches for 3.4 (Waldek Hebisch). + * Reenable sparc-biarch patches (closes: #239856). + * Build the shared libgnat library, needed to fix FTBFS for some + Ada library packages (Ludovic Brenta). + Currently enabled for hppa, i386, ia64. + + -- Matthias Klose Sat, 3 Apr 2004 08:47:55 +0200 + +gcc-3.4 (3.4ds1-0pre2) experimental; urgency=low + + * Update to gcc-3.4 CVS 20040320. + * For libstdc++6-doc, add a conflict to libstdc++5-3.3-doc (closes: #236560). + * For libstdc++6-dbg, add a conflict to libstdc++5-3.3-dbg (closes: #236798). + * Reenable s390-biarch patches. + * Update the cross compiler build files (Nikita V. Youshchenko). + + -- Matthias Klose Sat, 20 Mar 2004 09:15:10 +0100 + +gcc-3.4 (3.4ds0-0pre1) experimental; urgency=low + + * Start gcc-3.4 packaging, get rid of the epoch for most of the + packages. + + -- Matthias Klose Sun, 22 Feb 2004 16:00:03 +0100 + +gcc-3.3 (1:3.3.3ds6-6) unstable; urgency=medium + + * Update to gcc-3_3-branch CVS 20040401. + - Fixed ICE in emit_move_insn_1 on legal code (closed: #223215). + - Fix PR 14755, miscompilation of loops with bitfield counter. + Closes: #241255. + - Fix PR 16040, crash in function initializing const data with + reinterpret_cast-ed pointer-to-member function crashes (closes: #238621). + - Remove patches integrated upstream. + * Reenable build of gpidump on powerpc and s390. + + -- Matthias Klose Thu, 1 Apr 2004 23:51:54 +0200 + +gcc-3.3 (1:3.3.3ds6-5) unstable; urgency=medium + + * Update to gcc-3_3-branch CVS 20040321. + - Fix PR target/13889 (ICE on valid code on m68k). + * Fix FTFBS on s390. Do not build gpc's gpidump on s390. + * Reenable gpc on arm. + + -- Matthias Klose Mon, 22 Mar 2004 07:37:26 +0100 + +gcc-3.3 (1:3.3.3ds6-4) unstable; urgency=low + + * Update to gcc-3_3-branch CVS 20040320. + - Revert patch for PR14640 (with this, at least mozilla-firefox was + miscompiled on x86 (closes: #238621). + * Update the gpc tarball (there were two releases with the same name ...). + * Reenable gpc on alpha and ia64. + + -- Matthias Klose Sat, 20 Mar 2004 07:39:24 +0100 + +gcc-3.3 (1:3.3.3ds5-3) unstable; urgency=low + + * Update to gcc-3_3-branch CVS 20040314. + - Fixes miscompilation with -O -funroll-loops on powerpc (closes: #229567). + - Fix ICE in dwarf-2 on code using altivec (closes: #203835). + * Update hurd-changes patch. + * Add libgcj4-dev as a recommendation for gcj (closes: #236547). + * debian/copyright: Added exemption to static linking of libgcc. + + * Phil Blundell: + - debian/patches/arm-ldm.dpatch, debian/patches/arm-gotoff.dpatch: Update. + + -- Matthias Klose Sun, 14 Mar 2004 09:56:06 +0100 + +gcc-3.3 (1:3.3.3ds5-2) unstable; urgency=low + + * Update to gcc-3_3-branch CVS 20040306. + - Fixes bootstrap comparision error on ia64. + - Allows ghc build with gcc-3.3. + - On amd64, don't imply 3DNow! for -m64 by default. + - Some arm specific changes + - Fix C++/13944: exception in constructor of a class to be thrown is not + caught. Closes: #228099. + * Enable the build of gcc-3.3-hppa64 on hppa. + Add symlinks for as and ld to point to hppa64-linux-{as,ld}. + * gcj-3.3 depends on g++-3.3, recommends gij-3.3. gij-3.3 suggests gcj-3.3. + * Fix libgc2c-pic compatibility links (closes: #234333). + The link will be removed for gcc-3.4. + * g77-3.3: Conflict with other g77-x.y packages. + * Tighten shlibs dependencies to latest released versions. + + * Phil Blundell: + - debian/patches/arm-233633.dpatch: New Fixes problems with half-word + loads on ARMv3 architecture. (Closes: #233633) + - debian/patches/arm-ldm.dpatch: New. Avoids inefficient epilogue for + leaf functions in PIC code on ARM. + + -- Matthias Klose Sat, 6 Mar 2004 10:57:14 +0100 + +gcc-3.3 (1:3.3.3ds5-1) unstable; urgency=medium + + * gcc-3.3.3 final release. + See /usr/share/doc/gcc-3.3/NEWS.{gcc,html}. + + -- Matthias Klose Mon, 16 Feb 2004 08:59:52 +0100 + +gcc-3.3 (1:3.3.3ds4-0pre4) unstable; urgency=low + + * Update to gcc-3.3.3 CVS 20040214 (2nd gcc-3.3.3 prerelease). + * Fix title of libstdc++'s html main index (closes: #196381). + * Move libg2c libraray files out of the gcc specific libdir to /usr/lib. + For g77-3.3 add conflicts to other g77 packages. Closes: #224848. + * Update the stack protector patch to 3.3-7, but don't apply it by default. + Closes: #230338. + * On arm, use arm6 as the cpu default (backport from mainline, PR12527). + * Add libffi and libjava support for hppa (Randolph Chung). Closes: #232615. + + -- Matthias Klose Sat, 14 Feb 2004 09:26:15 +0100 + +gcc-3.3 (1:3.3.3ds3-0pre3) unstable; urgency=low + + * Update to gcc-3.3.3 CVS 20040125. + - Fixed PR11350, undefined labels with -Os -fPIC (closes: #195911). + - Fixed PR11793, ICE in extract_insn, at recog.c (closes: #203835). + - Fixed PR13544, removed backport for PR12862. + - Integrated backport for PR12441. + * Fixed since 3.3: java: not implemented interface methods of abstract + classes not found (closes: #225438). + * Disable pascal on arm architecture (currently broken). + * Update the build files to build a cross compiler (Nikita V. Youshchenko). + See debian/README.cross in the source package. + * Apply revised patch to make -mieee the default on alpha-linux, + and add -mieee-disable switch to turn the default off (closes: #212912). + (Tyson Whitehead) + + -- Matthias Klose Sun, 25 Jan 2004 17:41:04 +0100 + +gcc-3.3 (1:3.3.3ds2-0pre2) unstable; urgency=medium + + * Update to gcc-3.3.3 CVS 20040110. + - Fixes compilation not terminating at -O1 on hppa (closes: #207516). + * Add backport to fix PR12441 (closes: #224576). + * Revert backport to 3.3 branch to fix PR12862, which introduced another + regression (PR13544). Closes: #225663. + * Tighten dependency of gnat-3.3 on gcc-3.3 (closes: #226273). + * Disable treelang build for cross compiler build. + * Disable pascal on alpha and ia64 architectures (currently broken). + + -- Matthias Klose Sat, 10 Jan 2004 12:33:59 +0100 + +gcc-3.3 (1:3.3.3ds1-0pre1) unstable; urgency=low + + * Update to gcc-3.3.3 CVS 20031229. + - Fixes bootstrap error on ia64-linux. + - Fix -pthread on mips{,el}-linux (closes: #224875). + - Fix -Wformat for C++ (closes: #217075). + * Backport from mainline: Preserve inline-ness when redeclaring + a function template (closes: #195264). + * Add missing intrinsics headers on ix86 (closes: #224593). + * Fix location of libg2c libdir in libg2c.la file (closes: #224848). + + -- Matthias Klose Mon, 29 Dec 2003 10:36:29 +0100 + +gcc-3.3 (1:3.3.3ds0-0pre0.1) unstable; urgency=high + + * NMU + * Fixed mips(el) spec file for -pthread: (Closes: #224875) + * [debian/patches/mips-pthread.dpatch] New. + * [debian/rules.patch] Added it to debian_patches. + + -- J.H.M. Dassen (Ray) Sat, 27 Dec 2003 15:51:47 +0100 + +gcc-3.3 (1:3.3.3ds0-0pre0) unstable; urgency=low + + * Update to gcc-3.3.3 CVS 20031206. + - Fixes ICE in verify_local_live_at_start (hppa). Closes: #201550. + - Fixes miscompilation of linux-2.6/sound/core/oss/rate.c. + Closes: #219949. + * Add missing unwind.h to gcc package (closes: #220846). + * Regenerate control file to fix build dependencies for m68k. + * More gpc only patches to fix test failures on m68k. + * Reenable gpc for the Hurd (closes: #189851). + + -- Matthias Klose Sat, 6 Dec 2003 10:29:07 +0100 + +gcc-3.3 (1:3.3.2ds5-4) unstable; urgency=low + + * Update libffi-dev package description (closes: #219508). + * For gij and libgcj fix dependency on the libstdc++ package, if + the latter isn't installed during the build. + * Apply patch to emit .note.GNU-stack section on linux arches + which by default need executable stack. + * Prefer gnat-3.3 over gnat-3.2 as a build dependency. + * Update the pascal tarball (different version released with the + same name). + * Add pascal patches to address various gpc testsuite failures. + On alpha and ia64, build gpc from the 20030830 version. Reenable + the build on m68k. + Remove the 20030507 gpc version from the tarball. + * Apply patch to build the shared ada libs and link the ada tools + against the shared libs. Not enabled by default, because gnat + and gnatlib are rebuilt during install. (Ludovic Brenta) + + -- Matthias Klose Sun, 9 Nov 2003 22:34:33 +0100 + +gcc-3.3 (1:3.3.2ds4-3) unstable; urgency=low + + * Fix rules to omit inclusion of gnatpsta in mips(el) gnat package. + + -- Matthias Klose Sun, 2 Nov 2003 14:29:59 +0100 + +gcc-3.3 (1:3.3.2ds4-2) unstable; urgency=medium + + * s390-ifcvt patch added. Fixes gcl miscompilation (closes: #217240). + (Gerhard Tonn) + * Fix an infinite loop in g++ compiling lufs, regression from 3.3.1. + * Fix a wrong code generation bug on alpha. + (Falk Hueffner) + * Update NEWS files. + * Add Falk Hueffner to the Debian GCC maintainers. + * Enable ada on mips and mipsel, but don't build the gnatpsta tool. + + -- Matthias Klose Wed, 29 Oct 2003 00:12:37 +0100 + +gcc-3.3 (1:3.3.2ds4-1) unstable; urgency=medium + + * Update to gcc-3.3.2. + * Update NEWS files. + * Miscompilation in the pari package at -O3 fixed (closes: #198172). + * On alpha-linux, revert -mieee as the default (Falk Hueffner). + Reopens: #212912. + * Add ia64-unwind patch (Jeff Bailey). + * Closed reports reported against gcc-2.96 (ia64), fixed at least in gcc-3.3: + - ICE in verify_local_live_at_start, at flow.c:2733 (closes: #135404). + - Compilation failure of stlport (closes: #135224). + - Infinite loop compiling cssc's pfile.cc with -O2 (closes: #115390). + - Added missing some string::compare() members (closes: #141199). + - header declares std::pow (closes: #161853). + - does have at() method (closes: #59776). + - Fixed error in stl_deque.h (closes: #69530). + - Fixed problem with bastring (closes: #75759, #96539). + - bad_alloc and std:: namespace problem (closes: #75120). + - Excessive warnings from headers with -Weffc++ (closes: #76827). + + -- Matthias Klose Fri, 17 Oct 2003 08:07:01 +0200 + +gcc-3.3 (1:3.3.2ds3-0pre5) unstable; urgency=low + + * Update to gcc-3.3.2 CVS 20031005. + - Fixes cpp inserting a spurious newline (closes: #210478, #210482). + - Fixes generation of unrecognizable insn compiling kernel source + on alpha (closes: #202762). + - Fixes ICE in add_abstract_origin_attribute (closes: #212406). + - Fixes forward declaration in libstdc++ (closes: #209386). + - Fixes ICE in in extract_insn, at recog.c on alpha (closes: #207564). + * Make libgcj-common architecture all (closes: #211909). + * Build depend on: flex-old | flex (<< 2.5.31). + * Fix spec linking libraries with -pthread on powerpc (closes: #211054). + * debian/patches/arm-gotoff.dpatch: fix two kinds of PIC lossage. + (Phil Blundell) + * debian/patches/arm-common.dpatch: fix excessive alignment of common + blocks causing binutils testsuite failures. + (Phil Blundell) + * Update priorities in debian/control to match the archive. + (Ryan Murray) + * s390-nonlocal-goto patch added. Fixes some pascal testcase failures. + (Gerhard Tonn) + * On alpha-linux, make -mieee default and add -mieee-disable switch + to turn default off (closes: #212912). + (Tyson Whitehead) + * Add gpc upstream patch for memory corruption fix. + + -- Matthias Klose Sun, 5 Oct 2003 19:53:49 +0200 + +gcc-3.3 (1:3.3.2ds2-0pre4) unstable; urgency=low + + * Add gcc-unsharing_lhs patch (closes: #210848) + + -- Ryan Murray Fri, 19 Sep 2003 22:51:19 -0600 + +gcc-3.3 (1:3.3.2ds2-0pre3) unstable; urgency=low + + * Update to gcc-3.3.2 CVS 20030908. + * PR11716 (Michael Eager, Dan Jacobowitz): + Make GCC think that the maximum length of a short branch is + 64K instead of 128K. It's a big hammer, but it works. + Closes: #207915. + * Downgrade gpc to 20030507 on alpha and ia64 (closes: #208717). + + -- Matthias Klose Mon, 8 Sep 2003 21:49:52 +0200 + +gcc-3.3 (1:3.3.2ds1-0pre2) unstable; urgency=low + + * Update to gcc-3.3.2 CVS 20030831. + - Fix java NullPointerException detection with 2.6 kernels. + Closes: #206377. + - Fix bug in C++ typedef handling (closes: #205402). + - Fix -Wunreachable-code giving false complaints (closes: #196600). + * Update to gpc-20030830. + * Don't include /usr/share/java/repository into the class path according + to the new version of th Debian Java policy (closes: #205643). + * Build-Depend/Depend on libgc-dev. + + -- Matthias Klose Sun, 31 Aug 2003 08:56:53 +0200 + +gcc-3.3 (1:3.3.2ds0-0pre1) unstable; urgency=low + + * Remove the build dependency on locales for now. + + -- Matthias Klose Fri, 15 Aug 2003 07:48:18 +0200 + +gcc-3.3 (1:3.3.2ds0-0pre0) unstable; urgency=medium + + * Update to gcc-3.3.2 CVS 20030812. + - Fixes generation of wrong code for XDM-AUTHORIZATION-1 key generation + and/or validation. Closes: #196090. + * Update NEWS files. + * Change ix86 default CPU type for code generation: + - i386-linux -> i486-linux + - i386-gnu -> i586-gnu + - i386-freebsd-gnu -> i486-freebsd-gnu + Use -march=i386 to target i386 CPUs. + + -- Matthias Klose Tue, 12 Aug 2003 10:31:28 +0200 + +gcc-3.3 (1:3.3.1ds3-1) unstable; urgency=low + + * gcc-3.3.1 (taken from CVS 20030805). + - C++: Fix declaration conflicts (closes: #203351). + - Fix ICE on ia64 (closes: #203840). + + -- Matthias Klose Tue, 5 Aug 2003 20:38:02 +0200 + +gcc-3.3 (1:3.3.1ds2-0rc2) unstable; urgency=low + + * Update to gcc-3.3.1 CVS 20030728. + - Fix ICE in extract_insn, at recog.c:2148 on m68k. + Closes: #177840, #180375, #190818. + - Fix ICE while building libquicktime on alpha (closes: #192576). + - Fix failure to deal with using and private inheritance (closes: #202696). + * On sparc, /usr/lib was added to the library search path. Fix it. + * Closed reports reported against gcc-3.2.x and fixed in gcc-3.3: + - Fix error building the gcl package on arm (closes: #199835). + + -- Matthias Klose Mon, 28 Jul 2003 20:39:07 +0200 + +gcc-3.3 (1:3.3.1ds1-0rc1) unstable; urgency=low + + * Update to gcc-3.3.1 CVS 20030722 (3.3.1 release candidate 1). + - Fix ICE in copy_to_mode_reg on 64-bit targets (closes: #189365). + - Remove documentation about multi-line strings (closes: #194391). + - Correctly document -falign-* parameters (closes: #198269). + - out-of-class specialization of a private nested template class. + Closes: #193830. + - Tighten shlibs dependency due to new symbols in libgcc. + * README.Debian for libg2c0, describing the need for g77-x.y when + working with the g2c header and library (closes: #189059). + * Call make with -j, if USE_NJOBS is set and non-empty + in the environment. + * Add another two m68k patches, partly replacing the workarounds provided + by Roman Zippel. + * Add the stack protector patch, but don't apply it by default. Edit + debian/rules.patch to apply it (closes: #171699, #189494). + * Remove wrong symlinks from gnat package (closes: #201882). + * Closed reports reported against gcc-2.95 and fixed in newer versions: + - SMP kernel compilation on alpha (closes: #134197, #146883). + - ICE on arm while building imagemagick (closes: #173475). + * Closed reports reported against gcc-3.2.x and fixed in gcc-3.3: + - Miscompilation of octave2.1 on hppa (closes: #192296, #193804). + + -- Matthias Klose Sun, 13 Jul 2003 10:26:30 +0200 + +gcc-3.3 (1:3.3.1ds0-0pre0) unstable; urgency=medium + + * Update to gcc-3.3.1 CVS 20030626. + - Fix ICE on arm compiling xfree86 (closes: #195424). + - Fix ICE on arm compiling fftw (closes: #186185). + - Fix ICE on arm in change_address_1, affecting a few packages. + Closes: #197099. + - Fix ICE in merge_assigned_reloads building Linux 2.4.2x sched.c. + Closes: #195237. + - Do not warn about failing to inline functions declared in system headers. + Closes: #193049. + - Fix ICE on mips{,el} in propagate_one_insn (closes: #194330, #196091). + - Fix ICE on m68k in reg_overlap_mentioned_p (closes: #194749). + - Build crtbeginT.o on m68k (closes: #197613). + * Fix g++ man page symlink (closes: #196271). + * mips/mipsel: Depend on binutils (>= 2.14.90.0.4). Closes: #196744. + * Disable treelang on powerpc (again). Closes: #196915. + * Pass -encoding in gcj-wrapper. + + -- Matthias Klose Fri, 27 Jun 2003 00:14:43 +0200 + +gcc-3.3 (1:3.3ds9-3) unstable; urgency=low + + * Closing more reports, fixed in 3.2/3.3: + - ICE building texmacs on m68k (closes: #177433). + - libstdc++: doesn't define trunc(...) (closes: #105285). + - libstdc++: setw is ignored for strings output (closes: #52382, #76645). + * Add build support to omit the manual pages and info docs from the + packages, disabled by default. Wait for a Debian statement, which can + be cited. Adresses: #193787. + * Reenable the m68k-const patch, don't run the g77 testsuite on m68k. + Addresses ICEs (#177840, #190818). + * Update arm-xscale patch. + * libstdc++: use __attribute__(__unknown__), instead of (unknown). + Closes: #195796. + * Build-Depend on glibc (>= 2.3.1) to prevent incorrect builds on woody. + Request from Adrian Bunk. + * Add treelang-update patch (Tim Josling), reenable treelang on powerpc. + * Add -{cpp,gcc,g++,gcj,g77} symlinks (addresses: #189466). + * Make sure not to build using binutils-2.14.90.0.[12]. + + -- Matthias Klose Mon, 2 Jun 2003 22:35:45 +0200 + +gcc-3.3 (1:3.3ds9-2) unstable; urgency=medium + + * Correct autoconf-related snafu in newly added ARM patches (Phil Blundell). + * Correct libgcc1 dependency (closes: #193689). + * Work around ldd/dpkg-shlibs failure on s390x. + + -- Matthias Klose Sun, 18 May 2003 09:40:15 +0200 + +gcc-3.3 (1:3.3ds9-1) unstable; urgency=low + + * gcc-3.3 final release. + See /usr/share/doc/gcc-3.3/NEWS.{gcc,html}. + * First merge of i386/x86-64 biarch support (Arnd Bergmann). + Disabled by default. Closes: #190066. + * New gpc-20030507 version. + * Upstream gpc update to fix netbsd build failure (closes: #191407). + * Add arm-xscale.dpatch, arm-10730.dpatch, arm-tune.dpatch, copied + from gcc-3.2 (Phil Blundell). + * Closing bug reports reported against older gcc versions (some of them + still present in Debian, but not anymore as the default compiler). + Usually, forwarded bug reports are linked to + http://gcc.gnu.org/PR + The upstream bug number usually can be found in the Debian reports. + + * Closed reports reported against gcc-3.1.x, gcc-3.2.x and fixed in gcc-3.3: + - General: + + GCC accepts multi-line strings without \ or " " &c (closes: #2910). + + -print-file-name sometimes fails (closes: #161615). + + ICE: reporting routines re-entered (closes: #179597, #180937). + + Misplaced paragraph in gcc documentation (closes: #179363). + + Error: suffix or operands invalid for `div' (closes: #150558). + + builtin memcmp() could be optimised (closes: #85535). + - Ada: + + Preelaborate, exceptions, and -gnatN (closes: #181679). + - C: + + Duplicate loop conditions even with -Os (closes: #94701). + + ICE (signal 11) (closes: #65686). + - C++: + + C++ error on virtual function which uses ... (closes: #165829). + + ICE when warning about cleanup nastiness in switch statements + (closes: #184108). + + Fails to compile virtual inheritance with variable number of + argument method (closes: #151357). + + xmmintrin.h broken for c++ (closes: #168310). + + Stack corruption with variable-length automatic arrays and virtual + destructors (closes: #188527). + + ICE on illegal code (closes: #184862). + + _attribute__((unused)) is ignored in C++ (closes: #45440). + + g++ handles &(void *)foo bizzarely (closes: #79225). + + ICE (with wrong code, though) (closes: #81122). + - Java: + + Broken zip file handling (closes: #180567). + - ObjC: + + @protocol forward definitions do not work (closes: #80468). + - Architecture specific: + - alpha + + va_start is off by one (closes: #186139). + + ICE while building kseg/ddd (closes: #184753). + + g++ -O2 optimization error (closes: #70743). + - arm + + ICE with -O2 in change_address_1 (closes: #180750). + + gcc optimization error with -O2, affecting bison (closes: #185903). + - hppa + + ICE in insn_default_length (closes: #186447). + - ia64 + + gcc-3.2 fails w/ optimization (closes: #178830). + - i386 + + unnecessary generation of instruction cwtl (closes: #95318). + + {athlon} ICE building mplayer (closes: #184800). + + {pentium4} ICE while compiling mozilla with -march=pentium4 + (closes: #187910). + + i386 optimisation: joining tests (closes: #105309). + - m68k + + ICE in instantiate_virtual_regs_1 (closes: #180493). + + gcc optimizer bug on m68k (closes: #64832). + - powerpc + + ICE in extract_insn, at recog.c:2175 building php3 (closes: #186299). + + ICE with -O -Wunreachable-code (closes: #189702). + - s390 + + Operand out of range at assembly time when using -O2 + (closes: #178596). + - sparc + + gcc-3.2 regression (wrong code) (closes: #176387). + + ICE in mem_loc_descriptor when optimizing (closes: #178909). + + ICE in gen_reg_rtx when optimizing (closes: #178965). + + Optimisation leads to unaligned access in memcpy (closes: #136659). + + * Closed reports reported against gcc-3.0 and fixed in gcc-3.2.x: + - General: + + Use mkstemp instead of mktemp (closed: #127802). + - Preprocessor: + + Fix redundant error message from cpp (closed: #100722). + - C: + + Optimization issue on ix86 (pointless moving) (closed: #97904). + + Miscompilation of allegro on ix86 (closed: #105741). + + Fix generation of ..ng references for static aliases (alpha-linux). + (closed: #108036). + + ICE compiling pari on hppa (closed: #111613). + + ICE on ia64 in instantiate_virtual_regs_1 (closed: #121668). + + ICE in c-typeck.c (closed: #123687). + + ICE in gen_subprogram_die on alpha (closed: #127890). + + SEGV in initialization of flexible char array member (closed: #131399). + + ICE on arm compiling lapack (closed: #135967). + + ICE in incomplete_type_error (closed: #140606). + + Fix -Wswitch (also part of -Wall) (closed: #140995). + + Wrong code in mke2fs on hppa (closed: #150232). + + sin(a) * sin(b) gives wrong result (closed: #164135). + - C++: + + Error in std library headers on arm (closed: #107633). + + ICE nr. 19970302 (closed: #119635). + + std::wcout does not perform encoding conversions (closed: #128026). + + SEGV, when compiling iostream.h with -fPIC (closed: #134315). + + Fixed segmentation fault in included code for (closed: #137017). + + Fix with exception handling and -O (closed: #144232). + + Fix octave-2.1 build failure on ia64 (closed: #144584). + + nonstandard overloads in num_get facet (closed: #155900). + + ICE in expand_end_loop with -O (closed: #158371). + - Fortran: + + Fix blas build failure on arm (closed: #137959). + - Java: + + Interface members are public by default (closed: #94974). + + Strange message with -fno-bounds-check in combination with -W. + (closed: #102353). + + Crash in FileWriter using IOException (closed: #116128). + + Fix ObjectInputStream.readObject() calling constructors. + (closed: #121636). + + gij: better error reporting on `class not found' (closed: #125649). + + Lockup during .java->.class compilation (closed: #141899). + + Compile breaks using temporary inner class instance (closed: #141900). + + Default constructor for inner class causes broken bytecode. + (closed: #141902). + + gij-3.2 linked against libgcc1 (closed: #165180). + + gij-wrapper understands -classpath parameter (closed: #146634). + + gij-3.2 doesn't ignore -jar when run as "java" (closed: #167673). + - ObjC: + + ICE on alpha (closed: #172353). + + * Closed reports reported against gcc-2.95 and fixed in newer versions: + - General: + + Undocumented option -pthread (closes: #165110). + + stdbool.h broken (closes: #167439). + + regparm/profiling breakage (closes: #20695). + + another gcc optimization error (closes: #51456). + + ICE in `output_fix_trunc' (closes: #55967). + + Fix "Unable to generate reloads for" (closes: #58219, #131890). + + gcc -c -MD x/y.c -o x/y.o leaves y.d in cwd (closes: #59232). + + Compiler error with -O2 (closes: #67631). + + ICE (unrecognizable insn) compiling php4 (closes: #83550, #84969). + + Another ICE (closes: #90666). + + man versus info inconsistency (-W and -Wall) (closes: #93708). + + ICE on invalid extended asm (closes: #136630). + + ICE in `emit_no_conflict_block' compiling perl (closes: #154599). + + ICE in `gen_tagged_type_instantiation_die'(closes: #166766). + + ICE on __builtin_memset(s, 0, -1) (closes: #170994). + + -Q option to gcc appears twice in the documentation (closes: #137382). + + New options for specifying targets:- -MQ and -MT (closes: #27878). + + Configure using --enable-nls (closes: #51651). + + gcc -dumpspecs undocumented (closes: #65406). + - Preprocessor: + + cpp fails to parse macros with varargs correctly(closes: #154767). + + __VA_ARGS__ stringification crashes preprocessor if __VA_ARGS__ is + empty (closes: #152709). + + gcc doesn't handle empty args in macro function if there is only + one arg(closes: #156450). + - C: + + Uncaught floating point exception causes ICE (closes: #33786). + + gcc -fpack-struct doesn't pack structs (closes: #64628). + + ICE in kernel (matroxfb) code (closes: #151196). + + gcc doesn't warn about unreachable code (closes: #158704). + + Fix docs for __builtin_return_address(closes: #165992). + + C99 symbols in limits.h not defined (closes: #168346). + + %zd printf spec generates warning, even in c9x mode (closes: #94891). + + Update GCC attribute syntax (closes: #12253, #43119). + - C++ & libstdc++-v3: + + template and virtual inheritance bug (closes: #152315). + + g++ has some troubles with nested templates (closes: #21255). + + vtable thunks implementation is broken (closes: #34876, #35477). + + ICE for templated friend (closes: #42662). + + ICE compiling mnemonic (closes: #42989). + + Deprecated: result naming doesn't work for functions defined in a + class (closes: #43170). + + volatile undefined ... (closes: #50529). + + ICE concerning templates (closes: #53698). + + Program compiled -O3 -malign-double segfaults in ofstream::~ofstream + (closes: #56867). + + __attribute__ ((constructor)) doesn't work with C++ (closes: #61806). + + Another ICE (closes: #65687). + + ICE in `const_hash' (closes: #72933). + + ICE on illegal code (closes: #83221). + + Wrong code with -O2 (closes: #83363). + + ICE on template class (closes: #85934). + + No warning for missing return in non-void member func (closes: #88260). + + Not a bug/fixed in libgcc1: libgcc.a symbols end up exported by + shared libraries (closes: #118670). + + ICE using nested templates (closes: #118781). + + Another ICE with templates (closes: #127489). + + More ICEs (closes: #140427, #141797). + + ICE when template declared after use(closes: #148603). + + template function default arguments are not handled (closes: #157292). + + Warning when including stl.h (closes: #162074). + + g++ -pedantic-errors -D_GNU_SOURCE cannot #include + (closes: #151671). + + c++ error message improvement suggestion (closes: #46181). + + Compilation error in stl_alloc.h with -fhonor-std (closes: #59005). + + libstdc++ has no method at() in stl_= (closes: #68963). + - Fortran: + + g77 crash (closes: #130415). + - ObjC: + + ICE: program cc1obj got fatal signal 11 (closes: #62309). + + Interface to garbage collector is undocumented. (closes: #68987). + - Architecture specific: + - alpha + + Can't compile with define gnu_source with stdio and curses + (closes: #97603). + + Header conflicts on alpha (closes: #134558). + + lapack-dev: cannot link on alpha (closes: #144602). + + ICE `fixup_var_refs_1' (closes: #43001). + + Mutt segv on viewing list of attachments (closes: #47981). + + ICE building open-amulet (closes: #48530). + + ICE compiling hatman (closes: #55291). + + dead code removal in switch() broken (closes: #142844). + - arm + + Miscompilation using -fPIC on arm (closes: #90363). + + infinite loop with -O on arm (closes: #151675). + - i386 + + ICE when using -mno-ieee-fp and -march=i686 (closes: #87540). + - m68k + + Optimization (-O2) broken on m68k (closes: #146006). + - mips + + g++ exception catching does not work... (closes: #105569). + + update-menus gets Bus Error (closes: #120333). + - mipsel + + aspell: triggers ICE on mipsel (closes: #128367). + - powerpc + + -O2 produces wrong code (gnuchess example) (closes: #131454). + - sparc + + Misleading documentation for -malign-{jump,loop,function}s + (closes: #114029). + + Sparc GCC issue with -mcpu=ultrasparc (closes: #172956). + + flightgear: build failure on sparc (closes: #88694). + + -- Matthias Klose Fri, 16 May 2003 07:13:57 +0200 + +gcc-3.3 (1:3.3ds8-0pre9) unstable; urgency=high + + * gcc-3.3 second prerelease. + - Fixing exception handling on s390 (urgency high). + * Reenabled gpc build (I had it disabled ...). Closes: #192347. + + -- Matthias Klose Fri, 9 May 2003 07:32:14 +0200 + +gcc-3.3 (1:3.3ds8-0pre8) unstable; urgency=low + + * gcc-3.3 prerelease. + - Fixes gcj ICE (closes: #189545). + * For libstdc++ use the i486 atomicity implementation, introduced with + 0pre6, left out in 0pre7 (closes: #191684). + * Add README.Debian for treelang (closes: #190812). + * Apply NetBSD changes (Joel Baker). Closes: #191551. + * New symbols in libgcc1, tighten the shlibs dependency. + * Disable testsuite run on mips/mipsel because of an outdated libc-dev + package. + * Do not build libffi with debug information, although configuring + with --enable-debug. + + -- Matthias Klose Tue, 6 May 2003 06:53:49 +0200 + +gcc-3.3 (1:3.3ds7-0pre7) unstable; urgency=low + + * gcc-3.3 prerelease taken from the gcc-3_3-branch (CVS 20030429). + * Revert upstream libstdc++ change (closes: #191145, #191147, #191148, + #191149, #149159, #149151, and other reports). + Sorry for not detecting this before the upload, seems to be + broken on i386 "only". + * hurd-i386: Use /usr/include, not /include. + * Disable gpc on hurd-i386 (closes: #189851). + * Disable building the debug version of libstdc++ on powerpc-linux + (fixes about 200 java test cases). + * Install libstdc++v3 man pages (closes: #127263). + + -- Matthias Klose Tue, 29 Apr 2003 23:28:44 +0200 + +gcc-3.3 (1:3.3ds6-0pre6) unstable; urgency=high + + * gcc-3.3 prerelease taken from the gcc-3_3-branch (CVS 20030426). + * libstdc++-doc: Fix index.html link (closes: #189424). + * Revert back to the i486 atomicity implementation, that was used + for gcc-3.2 as well. Reopens: #184446, #185662. Closes: #189983. + For this reason, tighten the libstdc++5 shlibs dependency. See + http://lists.debian.org/debian-devel/2003/debian-devel-200304/msg01895.html + Don't build the ix86 specfic libstdc++ libs anymore. + + -- Matthias Klose Sun, 27 Apr 2003 19:47:54 +0200 + +gcc-3.3 (1:3.3ds5-0pre5) unstable; urgency=low + + * gcc-3.3 prerelease taken from the gcc-3_3-branch (CVS 20030415). + * Disable treelang on powerpc. + * Disable gpc on m68k. + * Install locale data. Conflict with gcc-3.2 (<= 1:3.2.3-0pre8). + * Fix generated bits/atomicity.h (closes: #189183). + * Tighten libgcc1 shlibs dependency (new symbol _Unwind_Backtrace). + + -- Matthias Klose Wed, 16 Apr 2003 00:37:05 +0200 + +gcc-3.3 (1:3.3ds4-0pre4) unstable; urgency=low + + * gcc-3.3 prerelease taken from the gcc-3_3-branch (CVS 20030412). + * Avoid sparc64 dependencies for libgcc1 on sparc (Clint Adams). + * Make the default sparc 32bit target v8 instead of v7. This mainly + enables hardmul, which should speed up v8 and v9 systems by a large + margin (Ben Collins). + * Tighten binutils dependency for sparc. + * On i386, build libstdc++ optimized for i486 and above. The library + in /usr/lib is built for i386. Closes: #184446, #185662. + * Add gpc build (from gcc-snapshot package). + * debian/control: Include all packages, that _can_ be built from + this source package (except the cross packages). + * Add m68k patches: m68k-const, m68k-subreg, m68k-loop. + * Run the 3.3 testsuite a second time with the installed gcc-3.2 + to check for regressions (promised, only this time, and for the + final release ;). Add build dependencies (gobjc-3.2, g77-3.2, g++-3.2). + + -- Matthias Klose Sat, 12 Apr 2003 10:11:11 +0200 + +gcc-3.3 (1:3.3ds3-0pre3) unstable; urgency=low + + * gcc-3.3 prerelease taken from the gcc-3_3-branch (CVS 20030331). + * Reenable java on arm. + * Build-Depend on binutils-2.13.90.0.18-1.3 on m68k. Fixes all + bprob/gcov testsuite failures. + * Enable C++ build on arm. + * Enable the sparc64 build. + + -- Matthias Klose Mon, 31 Mar 2003 23:24:54 +0200 + +gcc-3.3 (1:3.3ds2-0pre2) unstable; urgency=low + + * gcc-3.3 prerelease taken from the gcc-3_3-branch (CVS 20030317). + * Disable building the gcc-3.3-nof package. + * Disable Ada on mips and mipsel. + * Remove the workaround to build Ada on powerpc. + * Add GNU Free documentation license to copyright file. + * Update the sparc64 build patches (Clint Adams). Not yet enabled. + * Disable C++ on arm (Not yet tested). + * Add fix for ICE on powerpc (see: #184684). + + -- Matthias Klose Sun, 16 Mar 2003 21:40:57 +0100 + +gcc-3.3 (1:3.3ds1-0pre1) unstable; urgency=low + + * gcc-3.3 prerelease taken from the gcc-3_3-branch (CVS 20030310). + * Add gccbug manpage. + * Don't build libgnat package (no shared library). + * Configure with --enable-sjlj-exceptions on hppa and m68k for + binary compatibility with libstdc++ built with gcc-3.2. + * Disable Java on arm-linux (never seen it sucessfully bootstrap). + * Install non-conflicting baseline README. + * multilib *.so and *.a moved to /usr/lib/gcc-lib/... , so that several + compiler versions can be installed concurrently. + * Remove libstdc++-incdir patch applied upstream. + * libstdc++ 64 bit development files now handled in -dev target. + (Gerhard Tonn) + * Drop build dependencies for gpc (tetex-bin, help2man, libncurses5-dev). + * Add libstdc++5-3.3-dev confict to libstdc++5-dev (<= 1:3.2.3-0pre3). + * Enable builds on m68k (all but C++ for the moment). gcc-3.3 bootstraps, + while gcc-3.2 doesn't. + + -- Matthias Klose Mon, 10 Mar 2003 23:41:00 +0100 + +gcc-3.3 (1:3.3ds0-0pre0) unstable; urgency=low + + * First gcc-3.3 package, built for s390 only. All other architectures + build the gcc-3.3-base package only. + To build the package on other architectures, edit debian/rules.defs + (macro no_dummy_archs). + * gcc-3.3 prerelease taken from the gcc-3_3-branch (CVS 20030301). + * Don't include the gcc locale files (would conflict with 3.2). + * Remove libffi-install-fix patch. + * Fix netbsd-i386 patches. + * Change priority of libstdc++5 and gcc-3.2-base to important. + * Install gcjh-wrapper for javah. + * gij suggests fastjar, gcj recommends fastjar. + * Allow builds using automake1.4 | automake (<< 1.5). + * Backport fix for to output more correct line numbers. + * Add help2man to build dependencies needed for some gpc man pages. + * gpc: Install binobj and gpidump binaries and man pages. + * Apply cross compilation patches submitted by Bastian Blank. + * Replace s390-biarch patch and copy s390-config-ml patch from 3.2 + (Gerhard Tonn). + * Configure using --enable-debug. + * Add infrastructure to only build a subset of binary packages. + * Rename libstdc++-{dev,dbg,pic,doc} packages. + * Build treelang compiler. + + -- Matthias Klose Sat, 1 Mar 2003 12:56:42 +0100 + +gcc-3.2 (1:3.2.3ds2-0pre3) unstable; urgency=low + + * gcc-3.2.3 prerelease (CVS 20030228) + - Fixes bootstrap failure on alpha-linux. + - Fixes ICE on m68k (closes: #177016). + * Build Pascal with -O1 on powerpc, disable Pascal on arm, m68k and + sparc (due to wrong code generation for fwrite in glibc, + see PR optimization/9279). + * Apply cross compilation patches submitted by Bastian Blank. + + -- Matthias Klose Fri, 28 Feb 2003 20:26:30 +0100 + +gcc-3.2 (1:3.2.3ds1-0pre2) unstable; urgency=medium + + * gcc-3.2.3 prerelease (CVS 20030221) + - Fixes ICE on hppa (closes: #181813). + * Patch for ffitest in s390-java.dpatch deleted, since already fixed + upstream. (Gerhard Tonn) + * Build crtbeginT.o on m68k-linux (closes: #179807). + * Install gcjh-wrapper for javah (closes: #180218). + * gij suggests fastjar, gcj recommends fastjar (closes: #179298). + * Allow builds using automake1.4 | automake (<< 1.5) (closes: #180048). + * Backport fix for to output more correct line numbers (closes: #153965). + * Add help2man to build dependencies needed for some gpc man pages. + * gpc: Install binobj and gpidump binaries and man pages. + * Disable gpc on arm due to wrong code generation for fwrite in + glibc (see PR optimization/9279). + + -- Matthias Klose Sat, 22 Feb 2003 19:58:20 +0100 + +gcc-3.2 (1:3.2.3ds0-0pre1) unstable; urgency=low + + * gcc-3.2.3 prerelease (CVS 20030210) + - Fixes long millicode calls on hppa (closes: #180520) + * New gpc-20030209 version. Remove gpc-update.dpatch and gpc-testsuite.dptch + as they are no longer needed. + * Fix netbsd-i386 patches (closes: #180129, #179931) + * m68k-bootstrap.dpatch: backport gcse.c changes from 3.3/MAIN to 3.2 + * Change priority of libstdc++5 and gcc-3.2-base to important. + + -- Ryan Murray Tue, 11 Feb 2003 06:18:09 -0700 + +gcc-3.2 (1:3.2.2ds8-1) unstable; urgency=low + + * gcc-3.2.2 release. + - Fixes ICE, regression from 2.95 (closes: #176117). + - Fixes ICE, regression from 2.95 (closes: #179161). + * libstdc++ for biarch installs now upstream to usr/lib64, + therefore mv usr/lib/64 usr/lib64 no longer necessary. (Gerhard Tonn) + + -- Ryan Murray Wed, 5 Feb 2003 01:35:29 -0700 + +gcc-3.2 (1:3.2.2ds7-0pre8) unstable; urgency=low + + * gcc-3.2.2 prerelease (CVS 20030130). + * update s390 libffi patch + * debian/control: add myself to uploaders and change libc12-dev depends to + libc-dev on i386 (closes: #179128) + * Build-Depend on procps so that ps is available for logwatch + + -- Ryan Murray Fri, 31 Jan 2003 04:00:15 -0700 + +gcc-3.2 (1:3.2.2ds6-0pre7) unstable; urgency=low + + * gcc-3.2.2 prerelease (CVS 20030128). + - Update needed for hppa. + - Fixes ICE on arm, regression from 2.95.x (closes: #168086). + - Can use default bison (1.875). + * Apply netbsd build patches (closes: #177674, #178328, #178325, + #178326, #178327). + * Run the logwatch script on "slow" architectures (arm, m68k) only. + * autoreconf.dpatch: Only update libtool.m4, which is newer conceptually + than libtool 1.4 (Ryan Murray). + * Apply autoreconf patch universally (Ryan Murray). + * More robust gij/gcj wrapper scripts, include /usr/lib/jni in default + JNI search path (Ben Burton). Closes: #167932. + * Build crtbeginT.o on m68k (closes: #177036). + * Fixed libc-dev source dependency (closes: #178602). + * Tighten shlib dependency to the current package version; should be + 1:3.2.2-1 for the final release (closes: #178867). + + -- Matthias Klose Tue, 28 Jan 2003 21:59:30 +0100 + +gcc-3.2 (1:3.2.2ds5-0pre6) unstable; urgency=low + + * gcc-3.2 snapshot taken from the gcc-3_2-branch (CVS 20030123). + * Build locales needed by the libstdc++ testsuite. + * Update config.{guess,sub} files from autotools-dev (closes: #177674). + * Disable Ada and Java on netbsd-i386 (closes: #177679). + * gnat: Add suggests for gnat-doc and ada-reference-manual. + + -- Matthias Klose Thu, 23 Jan 2003 22:16:53 +0100 + +gcc-3.2 (1:3.2.2ds4-0pre5.1) unstable; urgency=low + + * Readd build dependency `locales' on arm. locales is now installable + * Add autoreconf patch for mips{,el}. (closes: #176311) + + -- Ryan Murray Wed, 22 Jan 2003 14:31:14 -0800 + +gcc-3.2 (1:3.2.2ds4-0pre5) unstable; urgency=low + + * Remove build dependency `libc6-dev-sparc64 [sparc]' for now. + * Remove build dependency `locales' on arm. locales is uninstallable + on arm due to the missing glibc-2.3. + * Use bison-1.35. bison-1.875 causes an hard error on the reduce/reduce + conflict in objc-parse.y. + + -- Matthias Klose Fri, 10 Jan 2003 10:10:43 +0100 + +gcc-3.2 (1:3.2.2ds4-0pre4) unstable; urgency=low + + * Try building with gcc-2.95 on m68k-linux. Building gcc-3.2 with gcc-3.2 + does not work for me. m68k-linux doesn't look good at all ... + * Fix s390 build error. + * Add locales to build dependencies. A still unsolved issue is the + presence of the locales de_DE, en_PH, en_US, es_MX, fr_FR and it_IT, + or else some tests in the libstdc++ testsuite will fail. + * Put all -nof files in the -nof package (closes: #175253). + * Correctly exit logwatch script (closes: #175251). + * Install linker-map.gnu file for libstdc++_pic (closes: #175144). + * Install versioned gpcs docs only (closes: #173844). + * Include gpc test results in gpc package. + * Link local libstdc++ documentation to local source-level documentation. + * Clarify libstdc++ description (so version and library version). + Closes: #175799. + * Include library in libstdc++-dbg package (closes: #176005). + + -- Matthias Klose Wed, 8 Jan 2003 23:39:50 +0100 + +gcc-3.2 (1:3.2.2ds3-0pre3) unstable; urgency=low + + * gcc-3.2 snapshot taken from the gcc-3_2-branch (CVS 20021231). + - Fix loop count computation for preconditioned unrolled loops. + Closes: #162919. + - Fix xmmintrin.h (_MM_TRANSPOSE4_PS) CVS 20021027 (closes: #163647). + - Fix [PR 8601] strlen/template interaction causes ICE CVS 20021201. + Closes: #166143. + * Watch the log files, which are written during the testsuite runs and print + out a message, if there is still activity. No more buildd timeouts on arm + and m68k ... + * Remove gpc's reference to librx1g-dev package (closes: #172953). + * Remove trailing dots on package descriptions. + * Fix external reference to cpp.info in gcc.info (closes: #174598). + + -- Matthias Klose Tue, 31 Dec 2002 13:47:52 +0100 + +gcc-3.2 (1:3.2.2ds2-0pre2) unstable; urgency=medium + + * Friday, 13th upload, so what do you expect ... + * gcc-3.2 snapshot taken from the gcc-3_2-branch (CVS 20021212). + * Fix gnat build (autobuild maintainers: please revert back to gnat-3.2 + (<= 1:3.2.1ds6-1) for building gnat-3.2, if the build fails building + gnatlib and gnattools). + * Really disable sparc64 support. + + -- Matthias Klose Fri, 13 Dec 2002 00:26:37 +0100 + +gcc-3.2 (1:3.2.2ds1-0pre1) unstable; urgency=low + + * A candidate for the transition ... + * gcc-3.2 snapshot taken from the gcc-3_2-branch (CVS 20021210). + - doc/invoke.texi: Remove last reference to -a (closes: #171748). + * Disable sparc64 support. For now please use egcs64 to build sparc64 + kernels. + * Disable Pascal on the sparc architecture (doesn't bootstrap). + + -- Matthias Klose Tue, 10 Dec 2002 22:33:13 +0100 + +gcc-3.2 (1:3.2.2ds0-0pre0) unstable; urgency=low + + * gcc-3.2 snapshot taken from the gcc-3_2-branch (CVS 20021202). + - Should fix _Pragma expansion within macros (closes: #157416). + * New gpc-20021128 version. Run check using EXTRA_TEST_PFLAGS=-g0 + * Add tetex-bin to build dependencies (gpc needs it). Closes: #171203. + + -- Matthias Klose Tue, 3 Dec 2002 08:22:33 +0100 + +gcc-3.2 (1:3.2.1ds6-1) unstable; urgency=low + + * gcc-3.2.1 final release. + * Build gpc-20021111 for all architectures. hppa and i386 are + known to work. For the other architectures, send the usual FTBFS ... + WARNING: this gpc version is an alpha version, especially debug info + doesn't work well, so use -g0 for compiling. If you need a stable + gpc compiler, use gpc-2.95. + * Encode the gpc upstream version in the package name, the gpc release + date in the version number (requested by gpc upstream). + * Added libncurses5-dev and libgmp3-dev as build dependencies for the + gpc tests and runtime. + * Clean CVS files as well (closes: #169101). + * s390-biarch.dpatch added, backported from CVS (Gerhard Tonn). + * s390-config-ml.dpatch added, disables biarch for java, + libffi and boehm-gc on s390. They need a 64 bit runtime + during build which is not yet available on s390 (Gerhard Tonn). + * Biarch support for packaging adapted (Gerhard Tonn). + biarch variable added and with-sparc64 variable substituted in + most places by biarch. + dh_shlibdeps is applied only to 32 bit libraries on s390, since + ldd for 64 bit libraries don't work on 32 bit runtime. + Build dependency to libc6-dev-s390x added. + + -- Matthias Klose Wed, 20 Nov 2002 00:20:58 +0100 + +gcc-3.2 (1:3.2.1ds5-0pre6) unstable; urgency=medium + + * gcc-3.2.1 prerelease. + * Removed arm patch integrated upstream. + * Adjust gnat build dependency (closes: #167116). + * Always configure with --enable-clocale=gnu. The autobuilders do have + locales installed, but not generated the "de_DE" locale needed for + the autoconf test in libstdcc++-v3/aclocal.m4. + * libstdc++ documentaion: Don't compresss '*.txt' referenced by html pages. + + -- Matthias Klose Tue, 12 Nov 2002 07:19:44 +0100 + +gcc-3.2 (1:3.2.1ds4-0pre5) unstable; urgency=medium + + * gcc-3.2.1 snapshot (CVS 20021103). + * sparc64-build.dpatch: Updated. Lets sparc boostrap again. + * s390-loop.dpatch removed, already fixed upstream (Gerhard Tonn). + * bison.dpatch: Removed, patch submitted upstream. + * backport-java-6865.dpatch: Apply again during build. + * Tighten glibc dependency (closes: #166703). + + -- Matthias Klose Sun, 3 Nov 2002 12:22:02 +0100 + +gcc-3.2 (1:3.2.1ds3-0pre4) unstable; urgency=high + + * gcc-3.2.1 snapshot (CVS 20021020). + - Expansion of _Pragma within macros fixed (closes: #157416). + * FTBFS: With the switch to bison-1.50 (and 1.75), gcc-3.2 fails to build from + source on Debian unstable systems. This is fixed in gcc HEAD, but not on + the current release branch. + HELP NEEDED: + - check what is missing from the patches in debian/patches/bison.dpatch. + This is a backport of the bison related patches, but showing regressions + in the gcc testsuite, so it cannot be applied. + - build gcc using byacc (bootstrap currently fails using byacc). + - build bison-1.35 in it's own package (the current 1.35-3 package fails + to build form source). + - and finally ask upstream to backport the patch to the branch. It's not + helpful not beeing able to follow the stable branch. Maybe we should + just switch to gcc HEAD as BSD does ... + As a terrible workaround, build the sources from CVS first on a machine, + with bison-1.35 installed, then package the tarball, so the bison + generated files are not rebuilt. + + * re-add lost patch: configure with --enable-__cxa_atexit (closes: #163422), + Therefore urgency high. + * gcj-wrapper, gij-wrapper: Accept names starting with `.' (closes: #163172, + #164009). + * Point g++ manpage to correct g++ version (closes: #162843). + * Support for i386-freebsd-gnu (closes: #163883). + * s390-java.dpatch replaced with backport from cvs head (Gerhard Tonn). + * Disable the testsuite run on the Hurd (closes: #159650). + * s390-loop.dpatch added, fixes runtime problem (Gerhard Tonn). + * debian/patches/bison.dpatch: Backport for bison-1.75 compatibility. + Don't use it due to regressions. + * debian/patches/backport-java-6865.dpatch: Directly applied in the + included tarball because of bison problems. + * Make fixincludes priority optional, so linda can depend on it. + * Tighten binutils dependency. + + -- Matthias Klose Sun, 20 Oct 2002 10:52:49 +0200 + +gcc-3.2 (1:3.2.1ds2-0pre3) unstable; urgency=low + + * gcc-3.2.1 snapshot (CVS 20020923). + * Run the libstdc++ check-abi script. Results are put into the file + /usr/share/doc/libstdc++5/README.libstdc++-baseline in the libstdc++5-dev + package. This file contains a new baseline, if no baseline for this + architecture is included in the gcc sources. + * gcj-wrapper: Accept files starting with an underscore, accept + path names (closes: #160859, #161517). + * Explicitely call automake-1.4 when rebuilding Makefiles (closes: #161438). + * Let installed fixincludes script find files in /usr/lib/fixincludes. + * debian/rules.patch: Add .NOTPARALLEL as target, so that patches are + applied sequentially (closes: #159395). + + -- Matthias Klose Tue, 24 Sep 2002 07:36:56 +0200 + +gcc-3.2 (1:3.2.1ds1-0pre2) unstable; urgency=low + + * gcc-3.2.1 snapshot (CVS 20020913). Welcome back m68k in bootstrap land! + * Fix arm-tune.dpatch (closes: #159354). + * Don't overwrite LD_LIBRARY_PATH in build (closes: #158459). + * --disable-__cxa_atexit on NetBSD (closes: #159620). + * Reenable installation of message catalogs (disabled in 3.2-0pre2). + Closes: #160175. + * Ben Collins + - Re-enable sparc64 build. This time, it's part of the default compiler. + I have disabled 64/alt libraries as they are too much overhead. All + libraries build 64bit, but currently only libgcc/libstdc++ include the + 64bit libraries. + Closes: #160404. + * Depend on autoconf2.13, instead of autoconf. + * Phil Blundell + - debian/patches/arm-update.dpatch: Fix python2.2 build failure. + + -- Matthias Klose Sat, 7 Sep 2002 08:05:02 +0200 + +gcc-3.2 (1:3.2.1ds0-0pre1) unstable; urgency=medium + + * gcc-3.2.1 snapshot (CVS 20020829). + New g++ option -Wabi: + Warn when G++ generates code that is probably not compatible with the + vendor-neutral C++ ABI. Although an effort has been made to warn about + all such cases, there are probably some cases that are not warned about, + even though G++ is generating incompatible code. There may also be + cases where warnings are emitted even though the code that is generated + will be compatible. + The current version of the ABI is 102, defined by the __GXX_ABI_VERSION + macro. + * debian/NEWS.*: Updated. + * Fix libstdc++-dev dependency on libc-dev for the Hurd (closes: #157004). + * Add versioned expect build dependency. + * Tighten binutils dependency to 2.13.90.0.4. + * debian/patches/arm-tune.dpatch: Increase stack limit for configure. + * 3.2-0pre4 did build gnat-3.2 compilers for all architectures. Build-Depend + on gnat-3.2 now (closes: #156734). + * Remove bashism's in gcj-wrapper (closes: #157982). + * Add -cp and -classpath options to gij(1). Backport from HEAD (#146634). + * Add fastjar documentation. + + -- Matthias Klose Fri, 30 Aug 2002 10:35:00 +0200 + +gcc-3.2 (1:3.2ds0-0pre4) unstable; urgency=low + + * Correct build dependency on gnat-3.1. + + -- Matthias Klose Mon, 12 Aug 2002 01:21:58 +0200 + +gcc-3.2 (1:3.2ds0-0pre3) unstable; urgency=low + + * gcc-3.2 upstream prerelease. + * Disable all configure options, which are standard: + --enable-threads=posix --enable-long-long, --enable-clocale=gnu + + -- Matthias Klose Fri, 9 Aug 2002 21:59:08 +0200 + +gcc-3.2 (1:3.2ds0-0pre2) unstable; urgency=low + + * gcc-3.2 snapshot (CVS 20020802). + * Fix g++-include dir. + * Don't install the locale files (temporarily, until we don't build + gcc-3.1 anymore). + * New package libgcj-common to avoid conflict with classpath package. + + -- Matthias Klose Sat, 3 Aug 2002 09:08:34 +0200 + +gcc-3.2 (1:3.2ds0-0pre1) unstable; urgency=low + + * gcc-3.2 snapshot (CVS 20020729). + + -- Matthias Klose Mon, 29 Jul 2002 20:36:54 +0200 + +gcc-3.1 (1:3.1.1ds3-1) unstable; urgency=low + + * gcc-3.1.1 release. Following this release we will have a gcc-3.2 + release soon, which is gcc-3.1.1 plus some C++ ABI changes. Once + gcc-3.2 hits the archives, gcc-3.1.1 will go away. + * Don't build the sparc64 compiler. The packaging/patches are + currently broken. + * Add missing headers on m68k and powerpc. + * Install libgcc_s_nof on powerpc. + * Install libffi's copyright and doc files (closes: #152198). + * Remove dangling symlink (closes: #149002). + * libgcj3: Add a conflict to the classpath package (closes: #148664). + * README.C++: Fix URLs. + * libstdc++-dbg: Install into /usr/lib/debug, document it. + * backport-java-6865.dpatch: backport from HEAD. + * Fix typo in gcj docs (closes: #148890). + * Change libstdc++ include dir: /usr/include/c++/3.1. + * libstdc++-codecvt.dpatch: New patch (closes: #149776). + * Build libstdc++-pic package. + * Move 64bit libgcc in its own package libgcc1-64 (closes: #147249). + * Tighten glibc dependency. + + -- Matthias Klose Mon, 29 Jul 2002 00:34:49 +0200 + +gcc-3.1 (1:3.1.1ds2-0pre3) unstable; urgency=low + + * Updated to CVS 2002-06-06 (gcc-3_1-branch). + * Updated s390-java patch (Gerhard Tonn). + * Don't use -O in STAGE1_FLAGS on m68k. + * Fix `-classpath' option in gcj-wrapper script (closes: #150142). + * Remove g++-cxa-atexit patch, use --enable-__cxa_atexit configure option. + + -- Matthias Klose Wed, 3 Jul 2002 23:52:58 +0200 + +gcc-3.1 (1:3.1.1ds1-0pre2) unstable; urgency=low + + * Updated to CVS 2002-06-06 (gcc-3_1-branch), fixing an ObjC regression. + * Welcome m68k to bootstrap land (thanks to Andreas Schwab). + * Add javac wrapper for gcj-3.1 (Michael Koch). + * Remove dangling symlink in /usr/share/doc/gcc-3.1 (closes: #149002). + + -- Matthias Klose Fri, 7 Jun 2002 00:26:05 +0200 + +gcc-3.1 (1:3.1.1ds0-0pre1) unstable; urgency=low + + * Updated to CVS 2002-05-31 (gcc-3_1-branch). + * Change priorities from fastjar and gij-wrapper-3.1 from 30 to 31. + * Update arm-tune patch. + * Install xmmintrin.h header on i386 (closes: #148181). + * Install altivec.h header on powerpc. + * Call correct gij in gij-wrapper (closes: #148662, #148682). + + -- Matthias Klose Wed, 29 May 2002 22:47:40 +0200 + +gcc-3.1 (1:3.1ds2-2) unstable; urgency=low + + * Tighten binutils dependency. + * Fix libstdc include dir for multilibs (Dan Jacobowitz). + + -- Matthias Klose Tue, 21 May 2002 08:03:49 +0200 + +gcc-3.1 (1:3.1ds2-1) unstable; urgency=low + + * GCC 3.1 release. + * Ada cannot be built by the autobuilders for the first time. Do it by hand. + gnatgcc and gnatbind need to be in the PATH. + * Build with CC=gnatgcc, when building the Ada compiler. + * Hurd fixes. + * Don't build the sparc64 compiler; the hack isn't up to date and glibc + isn't converted to use /lib64 and /usr/lib64. + * m68k-linux shows bootstrap comparision failures. If you want to build + the compiler anyway and ignore the bootstrap comparision failure, edit + debian/rules.patch and uncomment the patch to ignore the failure. See + /usr/share/doc/gcc-3.1/BOOTSTRAP_COMPARISION_FAILURE for the differences. + + -- Matthias Klose Wed, 15 May 2002 09:53:00 +0200 + +gcc-3.1 (1:3.1ds1-0pre6) unstable; urgency=low + + * Build from the "final prerelease" tarball (gcc-3.1-20020508.tar.gz). + * Build gnat-3.1-doc package. + * Build fastjar package without building java packages. + * Hurd fixes. + * Updated sparc64-build patch. + * Add s390-ada patch (Gerhard Tonn). + * Undo the dwarf2 support for hppa from -0pre5. + + -- Matthias Klose Thu, 9 May 2002 17:21:09 +0200 + +gcc-3.1 (1:3.1ds0-0pre5) unstable; urgency=low + + * Use /usr/include/g++-v3-3.1 as C++ include dir. + * Update s390-java patch (Gerhard Tonn). + * Tighten binutils dependency (gas patch for m68k-linux). + * Use gnat-3.1 as the gnat package name (as found in gcc/ada/gnatvsn.ads). + * dwarf2 support hppa: a snapshot of the gcc/config/pa directory + from the trunk dated 2002-05-02. + + -- Matthias Klose Fri, 3 May 2002 22:51:37 +0200 + +gcc-3.1 (1:3.1ds0-0pre4) unstable; urgency=low + + * Use gnat-5.00w as the gnat package name (as found in gcc/ada/gnatvsn.ads). + * Don't build the shared libgnat library. It assumes an existing shared + libiberty library. + * Don't install the libgcjgc library. + + -- Matthias Klose Thu, 25 Apr 2002 08:48:04 +0200 + +gcc-3.1 (1:3.1ds0-0pre3) unstable; urgency=low + + * Build fastjar on all architectures. + * Update m68k patches. + * Update s390-java patch (Gerhard Tonn). + + -- Matthias Klose Sun, 14 Apr 2002 15:34:47 +0200 + +gcc-3.1 (1:3.1ds0-0pre2) unstable; urgency=low + + * Add Ada support. To successfully build, a working gnatbind and gcc + driver with Ada support is needed. + * Apply needed arm patches from 3.0.4. + + -- Matthias Klose Sat, 6 Apr 2002 13:17:08 +0200 + +gcc-3.1 (1:3.1ds0-0pre1) unstable; urgency=low + + * First try for gcc-3.1. + + -- Matthias Klose Mon, 1 Apr 2002 23:39:30 +0200 + +gcc-3.0 (1:3.0.4ds3-6) unstable; urgency=medium + + * Second try at fixing sparc build problems. + + -- Phil Blundell Sun, 24 Mar 2002 14:49:26 +0000 + +gcc-3.0 (1:3.0.4ds3-5) unstable; urgency=medium + + * Enable java on ARM. + * Create missing directory to fix sparc build. + + -- Phil Blundell Fri, 22 Mar 2002 20:21:59 +0000 + +gcc-3.0 (1:3.0.4ds3-4) unstable; urgency=low + + * Link with system zlib (closes: #136359). + + -- Matthias Klose Tue, 12 Mar 2002 20:47:59 +0100 + +gcc-3.0 (1:3.0.4ds3-3) unstable; urgency=low + + * Build libf2c (pic and non-pic) with -mieee on alpha-linux. + + -- Matthias Klose Sun, 10 Mar 2002 00:37:24 +0100 + +gcc-3.0 (1:3.0.4ds3-2) unstable; urgency=medium + + * Apply hppa-build patch (Randolph Chung). Closes: #136731. + * Make libgcc1 conflict/replace with libgcc1-sparc64. Closes: #135709. + * gij-3.0 provides the `java' command. Closes: #128947. + * Depend on binutils (>= 2.11.93.0.2-2), allows stripping of libgcj.a + again. Closes: #99307. + * Update README.cross pointing to the README of the toolchain-source + package. + + -- Matthias Klose Wed, 6 Mar 2002 21:53:34 +0100 + +gcc-3.0 (1:3.0.4ds3-1) unstable; urgency=low + + * Final gcc-3.0.4 release. + * debian/rules.d/binary-java.mk: Fix dormant typo, exposed by removing the + duplicate libgcj dependency and adding the gij-3.0 package. + Closes: #134005. + * New patch by Phil Blundell to fix scalapack build error on m68k. + + -- Matthias Klose Wed, 20 Feb 2002 23:59:43 +0100 + +gcc-3.0 (1:3.0.4ds2-0pre020210) unstable; urgency=low + + * Make the base package dependent on the binary-arch target. Closes: #133433. + * Get libstdc++ on arm woring (define _GNU_SOURCE). Closes: #133435. + + -- Matthias Klose Mon, 11 Feb 2002 20:31:12 +0100 + +gcc-3.0 (1:3.0.4ds2-0pre020209) unstable; urgency=high + + * Update to CVS sources (20020209 gcc-3_0-branch). + * Apply patch to fix bootstrap error on arm-linux (submitted upstream + by Phil Blundell). Closes: #130422. + * Make base package architecture any. + * Decouple versioned shlib dependencies from release number for + libobjc as well. + + -- Matthias Klose Sat, 9 Feb 2002 01:30:11 +0100 + +gcc-3.0 (1:3.0.4ds1-0pre020203) unstable; urgency=medium + + * One release critical bug outstanding: + - bootstrap error on arm. + * Update to CVS sources (20020203 gcc-3_0-branch). + * Fixed upstream: PR c/3504: Correct documentation of __alignof__. + Closes: #85445. + * Remove libgcc-powerpc patch, integrated upstream (closes: #131977). + * Tighten binutils build dependency (to address #126162). + * Move jv-convert to gcj package (closes: #131985). + + -- Matthias Klose Sun, 3 Feb 2002 14:47:14 +0100 + +gcc-3.0 (1:3.0.4ds0-0pre020127) unstable; urgency=low + + * Two release critical bugs outstanding: + - bootstrap error on arm. + - bus errors for C++ and java executables on sparc (see the testsuite + results). + * Update to CVS sources (20020125 gcc-3_0-branch). + * Enable java support for s390 architecture (patch from Gerhard Tonn). + * Updated NEWS file for 3.0.3. + * Disable building the gcc-sparc64, but build a multilibbed compiler + for sparc as the default. + * Disabled the subreg-byte patch for sparc (request from Ben Collins). + * Fixed reference to libgcc1 package in README (closes: #126218). + * Do recommend libc-dev, not depend on it. For low-end or embedded systems + the dependency on libc-dev can make the difference between + having enough or having too little space to build a kernel. + * README.cross: Updated by Hakan Ardo. + * Decouple versioned shlib dependencies from release number. Closes: #118391. + * Fix diversions for gcc-3.0-sparc64 package (closes: #128178), + unconditionally remove `sparc64-linux-gcc' alternative. + * g77/README.libg2c.Debian: New file mentioning `libg2c-pic'. The next + g77 version (3.1) does build a static and shared library (closes: #104250). + * Fix formatting errors in the synopsis of the java man pages. Maybe the + reason for #127571. Closes: #127571. + * fastjar: Fail for the (currently incorrect) -u option. Addresses: #116145. + Add alternative for `jar' using priority 30 (closes: #118648). + * jv-convert: Add --help option and man page. Backport from HEAD branch. + * libgcj2-dev: Remove duplicate dependency (closes: #127805). + * Giving up and make just another new package gij-X.Y with only the gij-X.Y + binary for policy conformance (closes: #127111). + * gij: Provides an alternative for `java' (priority 30) using a wrapper + script (Stephen Zander) (closes: #128974). Added simple manpage. + + -- Matthias Klose Sun, 27 Jan 2002 13:33:41 +0100 + +gcc-3.0 (1:3.0.3ds3-1) unstable; urgency=low + + * Final gcc-3.0.3 release. + * Do not compress .txt files in libstdc++ docs referenced from html + pages (closes: #124136). + * libstdc++-dev suggests libstdc++-doc. + * debian/patches/gcc-ia64-NaT.dpatch: Update (closes: #123685). + + -- Matthias Klose Fri, 21 Dec 2001 02:54:11 +0100 + +gcc-3.0 (1:3.0.3ds2-0pre011215) unstable; urgency=low + + * Update to CVS sources (011215). + * libstdc++ documentation updated upstream (closes: #123790). + * debian/patches/gcc-ia64-NaT.dpatch: Disable. Fixes bootstrap error + on ia64 (#123685). + + -- Matthias Klose Sat, 15 Dec 2001 14:43:21 +0100 + +gcc-3.0 (1:3.0.3ds1-0pre011210) unstable; urgency=medium + + * Update to CVS sources (011208). + * Supposed to fix powerpc build error (closes: #123155). + + -- Matthias Klose Thu, 13 Dec 2001 07:26:05 +0100 + +gcc-3.0 (1:3.0.3ds0-0pre011209) unstable; urgency=medium + + * Update to CVS sources (011208). Frozen for upstream 3.0.3 release. + * Apply contrib/PR3145.patch, a backport of Nathan Sidwell's patch to + fix PR c++/3145, the infamous "virtual inheritance" bug. This affected + especially KDE2 (eg. artsd). Franz Sirl + * cc1plus segfault in strength reduction fixed upstream. Closes: #122547. + * debian/patches/gcc-ia64-NaT.dpatch: Add patch to avoid a bug that can + cause miscompiled userapps to crash the kernel. Closes: #121924. + * Reenable shared libgcc for powerpc. Fixed upstream. + http://gcc.gnu.org/ml/gcc-patches/2001-11/msg00340.html + debian/patches/libgcc-powerpc.dpatch: New patch. + * Add upstream changelogs. + * Remove gij alternative. Move to gij package. + + -- Matthias Klose Sun, 9 Dec 2001 09:36:48 +0100 + +gcc-3.0 (1:3.0.2ds4-4) unstable; urgency=medium + + * Disable building of libffi on mips and mipsel. + (closes: #117503). + * Enable building of shared libgcc on s390 + (closes: #120452). + + -- Christopher C. Chimelis Sat, 1 Dec 2001 06:15:29 -0500 + +gcc-3.0 (1:3.0.2ds4-3) unstable; urgency=medium + + * Fix logic to build libffi without java (closes: #117503). + + -- Matthias Klose Sun, 4 Nov 2001 14:34:50 +0100 + +gcc-3.0 (1:3.0.2ds4-2) unstable; urgency=medium + + * Enable java for ia64 (Jeff Licquia). Closes: #116798. + * Allow building of libffi without gcj (Jeff Licquia). + New libffi packages for arm hurd-i386 mips mipsel, + still missing: hppa, s390. + * debian/NEWS.gcc: Add 3.0.2 release notes. + * debian/patches/hppa-align.dpatch: New patch from Alan Modra, + submitted by Randolph Tausq. + + -- Matthias Klose Thu, 25 Oct 2001 23:59:31 +0200 + +gcc-3.0 (1:3.0.2ds4-1) unstable; urgency=medium + + * Final gcc-3.0.2 release. The source tarball is not the released + tarball, but taken from CVS 011024). + * Remove patch for s390, included upstream. + + -- Matthias Klose Wed, 24 Oct 2001 00:49:40 +0200 + +gcc-3.0 (1:3.0.2ds3-0pre011014) unstable; urgency=low + + * Update to CVS sources (011014). Frozen for upstream 3.0.2 release. + Closes: #109351, #114099, #114216, #105741 (allegro3938). + * Added debian/patches/fastjar.dpatch, which makes fastjar extract + filenames correctly (previously, some had incorrect names on extract). + Closes: #113236. + * Priorities fixed in the past (closes: #94404). + + -- Matthias Klose Sun, 14 Oct 2001 13:19:43 +0200 + +gcc-3.0 (1:3.0.2ds2-0pre010923) unstable; urgency=low + + * Bootstraps on powerpc again (closes: #112777). + + -- Matthias Klose Sun, 23 Sep 2001 01:32:11 +0200 + +gcc-3.0 (1:3.0.2ds2-0pre010922) unstable; urgency=low + + * Update to CVS sources (010922). + * Fixed upstream (closes: #111801). #105569 on hppa. + * Update hppa patch (Matt Taggart). + * Fix libstdc++-dev package description (closes: #112758). + * debian/rules.d/binary-objc.mk: Fix build error (closes: #112462). + * Make gobjc-3.0 conflict with gcc-3.0-sparc64 (closes: #111772). + + -- Matthias Klose Sat, 22 Sep 2001 09:34:49 +0200 + +gcc-3.0 (1:3.0.2ds1-0pre010908) unstable; urgency=low + + * Update to CVS sources (010908). + * Update hppa patch (Matt Taggart). + * Depend on libgc6-dev, not libgc5-dev, which got obsolete (during + the freeze ...). However adds s390 support (closes: #110189). + * debian/patches/m68k-reload.dpatch: New patch (Roman Zippel). + Fixes #89023. + * debian/patches/gcc-sparc.dpatch: New patch ("David S. Miller"). + Fixes libstdc++ testsuite failures on sparc. + + -- Matthias Klose Sat, 8 Sep 2001 14:26:20 +0200 + +gcc-3.0 (1:3.0.2ds0-0pre010826) unstable; urgency=low + + * gcc-3.0-nof: Fix symlink to gcc-3.0-base doc directory. + * debian/patches/gcj-without-rpath: New patch. + * Remove self dependency on libgcj package. + * Handle diversions for upgrades from 3.0 and 3.0.1 -> 3.0.2 + in gcc-3.0-sparc64 package. + * Build libg2c.a with -fPIC -DPIC and name the result libg2c-pic.a. + Link with this library to avoid linking with non-pic code. + Use this library when building dynamically loadable objects (python + modules, gimp plugins, ...), which need to be linked against g2c or + a library which is linked against g2c (i.e. lapack). + Packages needing '-lg2c-pic' must have a build dependency on + 'g77-3.0 (>= 1:3.0.2-0pre010826). + + -- Matthias Klose Sun, 26 Aug 2001 13:59:03 +0200 + +gcc-3.0 (1:3.0.2ds0-0pre010825) unstable; urgency=low + + * Update to CVS sources (010825). + * Add libc6-dev-sparc64 to gcc-3.0-sparc64 and to sparc build dependencies. + * Remove conflicts on egcc package (closes: #109718). + * Fix gcc-3.0-nof dependency. + * s390 patches against gcc-3.0.1 (Gerhard Tonn). + * debian/control: Require binutils (>= 2.11.90.0.27) + + -- Matthias Klose Sat, 25 Aug 2001 10:59:15 +0200 + +gcc-3.0 (1:3.0.1ds3-1) unstable; urgency=low + + * Final gcc-3.0.1 release. + * Changed upstream: default of -flimit-inline is 600 (closes: #106716). + * Add fastjar man page (submitted by "The Missing Man Pages Project", + http://www.netmeister.org/misc/m2p2i/) (closes: #103051). + * Fixed in last upload as well: #105246. + * debian/patches/cpp-memory-leak.dpatch: New patch + * Disable installation of shared libgcc on s390 (Gerhard Tonn). + + -- Matthias Klose Mon, 20 Aug 2001 20:47:13 +0200 + +gcc-3.0 (1:3.0.1ds2-0pre010811) unstable; urgency=high + + * Update to CVS sources (010811). Includes s390 support. + * Add xlibs-dev to Build-Depends (libgcj). + * Enable java for powerpc, disable java for ia64. + * Enable ObjC garbage collection for all archs, which have a libgc5-dev + package. + * New patch libstdc++-codecvt (Michael Piefel) (closes: #104614). + * Don't strip static libgcj library (work around binutils bug #107812). + * Handle diversions for upgrade 3.0 -> 3.0.1 in gcc-3.0-sparc64 package + (closes: #107569). + + -- Matthias Klose Sat, 11 Aug 2001 20:42:15 +0200 + +gcc-3.0 (1:3.0.1ds1-0pre010801) unstable; urgency=high + + * Update to CVS sources (010801). (closes: #107012). + * Remove build dependency on non-free graphviz and include pregenerated + docs (closes: #107124). + * Fixed in 3.0.1 (closes: #99307). + * Updated m68k-updates patch (Roman Zippel). + * Another fix for ia64 packaging bits (Randolph Chung). + + -- Matthias Klose Tue, 31 Jul 2001 21:52:55 +0200 + +gcc-3.0 (1:3.0.1ds0-0pre010727) unstable; urgency=high + + * Update to CVS sources (010727). + * Add epoch to source version. Change '.dsx' to 'dsx', so that + 3.1.1ds0 gt 3.1ds7 (closes: #106538). + + -- Matthias Klose Sat, 28 Jul 2001 09:56:29 +0200 + +gcc-3.0 (3.0.1.ds0-0pre010723) unstable; urgency=high + + * ia64 packaging bits (Randolph Chung) (closes: #106252). + + -- Matthias Klose Mon, 23 Jul 2001 23:02:03 +0200 + +gcc-3.0 (3.0.1.ds0-0pre010721) unstable; urgency=high + + * Update to CVS sources (010721). + - Remove patches applied upstream: libstdc++-limits.dpatch, + objc-data-references + - Updated other patches. + * Fix gij alternative (closes: #103468, #103883). + * Patch to fix bootstrap on sparc (closes: #103568). + * Corrected (closes: #105371) and updated README.Debian. + * m68k patches for sucessful bootstrap (Roman Zippel). + * Add libstdc++v3 porting hints to README.Debian and README.C++. + * m68k md fix (#105622) (Roman Zippel). + * debian/rules2: Disable non-functional ulimit on Hurd (#105884). + * debian/control: Require binutils (>= 2.11.90.0.24) + * Java is enabled for alpha (closes: #87300). + + -- Matthias Klose Sun, 22 Jul 2001 08:24:04 +0200 + +gcc-3.0 (3.0.ds9-4) unstable; urgency=high + + * Move this version to testing ASAP. testing still has a prerelease + version with now incompatible ABI's. If sparc doesn't build, + then IMHO it's better to remove it from testing. + * debian/control.m4: Set uploaders field. Adjust description of + gcc-3.0 (binary) package (closes: #102271, #102620). + * Separate gij.1 in it's own pseudo man page (closes: #99523). + * debian/patches/java-manpages.dpatch: New patch. + * libgcj: Install unversioned gij. + + -- Matthias Klose Tue, 3 Jul 2001 07:38:08 +0200 + +gcc-3.0 (3.0.ds9-3) unstable; urgency=high + + * Reenable configuration with posix threads on i386 (lost in hurd-i386 + merge). + + -- Matthias Klose Sun, 24 Jun 2001 22:21:45 +0200 + +gcc-3.0 (3.0.ds9-2) unstable; urgency=medium + + * Move this version to testing ASAP. testing still has a prerelease + version with now incompatible ABI's. + * Add libgcc0 and libgcc300 to the build conflicts (#102041). + * debian/README.FIRST: Removed (#101534). + * Updated subreg-byte patch (doc files). + * Disable java for the Hurd, mips and mipsel (#101570). + * Patch for building on the Hurd (#101708) (Jeff Bailey ). + * Packaging fixes for the Hurd (#101711) (Jeff Bailey ). + * Include pregenerated doxygen (1.2.6) docs for libstdc++-v3 (#101557). + The current doxygen-1.2.8.1 segaults. + * C++: Enable -fuse-cxa-atexit by default (#101901). + * Correct mail address in gccbug (#101743). + * Make rules resumable after failure in binary-xxx targets (#101637). + + -- Matthias Klose Sun, 24 Jun 2001 16:04:53 +0200 + +gcc-3.0 (3.0.ds9-1) unstable; urgency=low + + * Final 3.0 release. + * Update libgcc version number (#100983, #100988, #101069, #101115, #101328). + * Updated hppa-build patch (Matt Taggart ). + * Disable java for hppa. + * Updated subreg-byte patch for sparc (Ben Collins). + + -- Matthias Klose Mon, 18 Jun 2001 18:26:04 +0200 + +gcc-3.0 (3.0.ds8-0pre010613) unstable; urgency=low + + * Update patches for recent (010613 23:13 +0200) CVS sources. + * Fix packaging bugs (#100459, #100447, #100483). + * Build-Depend on gawk, mawk doesn't work well with test_summary. + + -- Matthias Klose Wed, 13 Jun 2001 23:13:38 +0200 + +gcc-3.0 (3.0.ds7-0pre010609) unstable; urgency=low + + * Fix build dependency for the hurd (#99164). + * Update patches for recent (010609) CVS sources. + * Disable java on powerpc (link error in libjava). + * gcc-3.0-base.postinst: Don't prompt for non-interactive installs (#100110). + + -- Matthias Klose Sun, 10 Jun 2001 09:45:57 +0200 + +gcc-3.0 (3.0.ds6-0pre010526) unstable; urgency=high + + * Urgency "high" for replacing the gcc-3.0 snapshots in testing, which + now are incompatile due to the changed ABIs. + * Upstream begins tagging with "gcc-3_0_pre_2001mmdd". + * Tighten dependencies to install only binary packages derived from + one source (#98851). Tighten libc6-dev dependency to match libc6. + + -- Matthias Klose Sun, 27 May 2001 11:35:31 +0200 + +gcc-3.0 (3.0.ds6-0pre010525) unstable; urgency=low + + * ATTENTION: The ABI (exception handling) changed. No upgrade path from + earlier snapshots (you had been warned in the postinst ...) + Closing #93597, #94576, #96448, #96461. + You have to rebuild + * HELP is appreciated for scanning the Debian BTS and sending followups + to bug reports!!! + * Should we name debian gcc uploads? What about a "still seeking + g++ maintainer" upload? + * Fixed in gcc-3.0: #97030 + * Update patches for recent (010525) CVS sources. + * Make check depend on build target (fakeroot problmes). + * debian/rules.d/binary-libgcc.mk: new file, build first. + * Free memory detection on the hurd for running the testsuite. + * Update debhelper build dependency. + * libstdc++-doc: Include doxygen generated docs. + * Fix boring packaging bugs, too tired for appropriate changelogs ... + #93343, #96348, #96262, #97134, #97905, #96451, #95812, #93157 + * Fixed bugs: #87000. + + -- Matthias Klose Sat, 26 May 2001 23:10:42 +0200 + +gcc-3.0 (3.0.ds5-0pre010510) unstable; urgency=low + + * Update patches for recent (010506) CVS sources. + * New version of source, as of 2001-05-10 + * New version of gpc source, as of 2001-05-06 (disabled by default). + * Make gcc-3.0-sparc64 provide an alternative for sparc64-linux-gcc, + since it can build kernels just fine (it seems) + * Add hppa patch from Matt Taggart + * Fix objc info inclusion...now merged with gcc info + * Do not install the .la for libstdc++, since it confuses libtool linked + applications when libstdc++3-dev and libstdc++2.10-dev are both + installed (closes #97905). + * Fixed gcc-base and libgcc section/prio to match overrides + + -- Ben Collins Mon, 7 May 2001 00:08:52 +0200 + +gcc-3.0 (3.0.ds5-0pre010427) unstable; urgency=low + + * Fixed priority for fastjar from optional to extra + * New version of source, as of 2001-04-27 + * Fix description of libgcj-dev + * libffi-install: Make libffi installable + * Add libffi and libffi-dev packages. libffi is only enabled for java + targets right now. Perhaps more will be enabled later. + * Fixes to build cross compiler package (for avr) + (Hakan Ardo ). + * Better fixincludes description (#93157). + * Remove all remnants of libg++ + * Remove all hacks around libstdc++ version. Since we are strictly v3 now, + we can treat it like a normal shared lib, and not worry about all those + ABI changes. + * Remove all cruft control scripts. Note, debhelper will create scripts + that it needs to. It will do the doc link stuff and the ldconfig stuff + explicitly. + * Clean up the SONAME parsing stuff, make it a little more cleaner over + all the lib packages + * Make libffi install when built (IOW, whenever java is enabled). This + should obsolete the libffi package, which is old and broken + * Revert to normal sonames, except for ia64 (for now) + * Remove all references to dh_testversion, since they are deprecated for + Build-Depends + * Fix powerpc nof build + * Remove all references to the MULTILIB stuff, since the arches are + using specialized builds anyway (nof, softfloat). + * Added 64bit sparc64 package (gcc-3.0-sparc64, libgcc0-sparc64) + * Removed obsolete shlibs.local file + + -- Ben Collins Sun, 15 Apr 2001 21:33:15 -0400 + +gcc-3.0 (3.0.ds4-0pre010403) unstable; urgency=low + + * debian/README: Updated for gcc-3.0 + * debian/rules.patch: Added subreg-byte patch for sparc + * debian/rules.unpack: Update to current CVS for gcc tarball name + * debian/patches/subreg-byte.dpatch: sparc subreg-byte support + * debian/patches/gcc-rawhide.dpatch: Removed + debian/patches/gpc-2.95.dpatch: Removed + debian/patches/sparc32-rfi.dpatch: Removed + debian/patches/temporary.dpatch: Removed + * Moving to unstable now + * debian/patches/gcc-ppc-disable-shared-libgcc.dpatch: New patch, + disables shared libgcc for powerpc target, since it isn't compatible + with the EABI objects. + * Create $(with_shared_libgcc) var + * debian/rules.d/binary-gcc.mk: Use this new variable to determine if + the libgcc package actually has any files + + -- Ben Collins Tue, 3 Apr 2001 23:00:55 -0400 + +gcc-3.0 (3.0.ds2-0pre010223) experimental; urgency=low + + * New snapshot. Use distinct shared object names for shared libraries: + we don't know if binary API's still change until the final release. + * Versioned package names. + * debian/control.m4: New file. Add gcc-base, libgcc0, libobjc1, + libstdc++-doc, libgcj1, libgcj1-dev, fastjar, fixincludes packages. + Remove gcc-docs package. + * debian/gcov.1: Remove. + * debian/*: Remove 2.95.x support. Prepare for 3.0. + * debian/patches: Remove 2.95.x patches. + * Changed source package name. It's not allowed anymore to overwrite + source packages with different content. Introducing a 'debian source + element' (.ds), which is stripped again from the version number + for the binary packages. + * Fixed bugs and added functionality: + #26436, #27878, #33786, #34876, #35477, #42662, #46181, #42989, + #47981, #48530, #50529, #51227, #51456, #51651, #52382, #53698, + #55291, #55967, #56867, #58219, #59005, #59232, #59776, #64628, + #65687, #67631, #68632, #68963, #68987, #69530, #72933, #75120, + #75759, #76645, #76827, #83221, #87540 + * libgcj fixes: 42894, #51266, #68560, #71187, #79984 + + -- Matthias Klose Sat, 24 Feb 2001 13:41:11 +0100 + +gcc-2.95 (2.95.3-2.001222) experimental; urgency=low + + * New upstream version 2.95.3 experimental (CVS 20001222). + * debian/control.in: Versioned package names, removal of snapshot logic. + Remove fake gcc-docs package. + * Reserve -1 release numbers for woody. + * Updated to gpc-20001218. + + -- Matthias Klose Fri, 22 Dec 2000 19:53:03 +0100 + +gcc (2.95.2-20) unstable; urgency=low + + * Apply patch from gcc-2_95-branch; remove ulimit for make check. + + -- Matthias Klose Sun, 10 Dec 2000 17:01:13 +0100 + +gcc (2.95.2-19) unstable; urgency=low + + * Added testsuite-20001207 from current snapshots. We'll need results + for 2.95.2 to make sure there are no regressions against that release. + Dear build daemons and porters to other architectures, please send an + email to gcc-testresults@gcc.gnu.org. + You can do this by running "debian/rules mail-summary". + * Updated to gpc-20001206. + * Added S/390 patch prepared by Chu-yeon Park (#78983). + * debian/patches/libio.dpatch: Fix iostream doc (fixes #77647). + * debian/patches/gcc-doc.dpatch: Update URL (fixes #77542). + * debian/patches/gcc-reload1.dpatch Patch from the gcc-bug list which + fixes a problem in "long long" on i[345]86 (i686 was not affected). + + -- Matthias Klose Sat, 9 Dec 2000 12:30:32 +0100 + +gcc (2.95.2-18) unstable; urgency=low + + * debian/control.in: Fix syntax errors (fixes #76146, #76458). + Disable gpc on the hurd by request (#75686). + * debian/patches/arm-various.dpatch: Patches from Philip Blundell + for ARM arch (fixes #75801). + * debian/patches/gcc-alpha-mi-thunk.dpatch: Patches from Chris Chimelis + for alpha arch. + * debian/patches/g77-docs.dpatch: Adjust g77 docs (fixes #72594). + * Update gpc to gpc-20001118. + * Reenable gpc for alpha. + * debian/README.C++: Merge debian/README.libstdc++ and C++ FAQ information + provided by Matt Zimmermann. + * Build gcj only on architectures, where libgcj-2.95.1 can be built as well. + Probably needs some adjustments ... + * Conditionalize for chill, fortran, java, objc and chill. + + * NOT APPLIED: + debian/patches/libstdc++-bastring.dpatch: Apply fix (fixes #75759). + + -- Matthias Klose Sun, 19 Nov 2000 10:40:41 +0100 + +gcc (2.95.2-17) unstable; urgency=low + + * Disable gpc for alpha. + * Include gpc-cpp in gpc package (fixes #74492). + * Don't build gcc-docs compatibility package anymore. + + -- Matthias Klose Wed, 11 Oct 2000 06:16:53 +0200 + +gcc (2.95.2-16) unstable; urgency=low + + * Applied the emdebian/cross compiler patch and documentation + (Frank Smith ). + * Applied patch for avr target (Hakan Ardo ). + * debian/control.in: Add awk to Build-Depends. + Tighten libc6-dev dependency for libstdc++-dev (fixes #73031, + #72531, #72534). + * Disable libobjc_gc for m68k again (fixes #74380). + * debian/patches/arm-namespace.dpatch: Apply patch from Philip + Blundell to fix name space pollution on arm + (fixes #70937). + * Fix more warnings in STL headers (fixes #69352, #71943). + + -- Matthias Klose Mon, 9 Oct 2000 21:51:41 +0200 + +gcc (2.95.2-15) unstable; urgency=low + + * debian/control.in: Add libgc5-dev to build depends (fixes #67015). + * debian/rules.def: Build GC enabled ObjC runtime for sparc. + * Bug #58741 fixed (in some version since 2.95.2-5). + * debian/control.in: Recommend librx1g-dev, libgmp2-dev, libncurses5-dev + (unit dependencies). + * Patches from Marcus Brinkmann for the hurd (fixes #67763): + - debian/rules.defs: Disable objc_gc on hurd-i386. + Disable libg++ on GNU systems. + - debian/rules2: Set correct names of libstdc++/libg++ + libraries on GNU systems. + Write out correct shlibs and shlibs.local file content. + - Keep _G_config.h for the Hurd. + * Apply patch for ObjC linker warnings. + * Don't apply gcj backport patch for sparc. + * Apply libio compatability patch + * debian/glibcver.sh: generate appropriate version for glibc + * debian/rules.conf: for everything after glibc 2.1, we always append + "-glibc$(ver)" to the C++ libs for linux. + * Back down gpc to -13 version (-14 wont compile on anything but i386 + and m68k becuase of gpc). + * Remove extraneous and obsolete sparc64 patches/files from debian/* + + -- Ben Collins Thu, 21 Sep 2000 08:08:35 -0400 + +gcc-snapshot (20000901-2.2) experimental; urgency=low + + * New snapshot. + * debian/rules2: Move tradcpp0 to cpp package. + + -- Matthias Klose Sat, 2 Sep 2000 01:14:28 +0200 + +gcc-snapshot (20000802-2.1) experimental; urgency=low + + * New snapshot. + * debian/rules2: Fixes. tradcpp0 is in gcc package, not cpp. + + -- Matthias Klose Thu, 3 Aug 2000 07:40:05 +0200 + +gcc-snapshot (20000720-2) experimental; urgency=low + + * New snapshot. + * Enable libstdc++-v3. + * debian/rules2: Don't use -D for /usr/bin/install. + + -- Matthias Klose Thu, 20 Jul 2000 22:33:37 +0200 + +gcc (2.95.2-14) unstable; urgency=low + + * Update gpc patch. + + -- Matthias Klose Wed, 5 Jul 2000 20:51:16 +0200 + +gcc (2.95.2-13) frozen unstable; urgency=low + + * Update debian/README: document how to compile 2.0.xx kernels; don't + register gcc272 as an alternative for gcc (closes #62419). + Clarify compiler setup (closes #65548). + * debian/control.in: Make libstdc++-dev depend on current version of g++. + * Undo CVS update from release -8 (problems on alpha, #55263). + + -- Matthias Klose Mon, 19 Jun 2000 23:06:48 +0200 + +gcc (2.95.2-12) frozen unstable; urgency=low + + * debian/gpc.postinst: Correct typo introduced with -11 (fixes #64193). + * debian/patches/gcc-rs600.dpatch: ppc codegen fix (fixes #63933). + + -- Matthias Klose Sun, 21 May 2000 15:56:05 +0200 + +gcc (2.95.2-11) frozen unstable; urgency=medium + + * Upload to unstable again (fixes critical #63784). + * Fix doc-base files (fixes important #63810). + * gpc wasn't built in -10 (fixes #63977). + * Make /usr/bin/pc an alternative (fixes #63888). + * Add SYSCALLS.c.X to gcc package. + + -- Matthias Klose Sun, 14 May 2000 22:17:44 +0200 + +gcc (2.95.2-10) frozen; urgency=low + + * debian/control.in: make gcc conflict on any version of egcc + (slink to potato upgrade problem, fixes grave #62084). + * Build protoize programs, separate out in new package (fixes #59436, + #62911). + * Create dummy gcc-docs package for smooth update from slink (fixes #62537). + * Add doc-base support for all -doc packages (fixes #63380). + + -- Matthias Klose Mon, 1 May 2000 22:24:28 +0200 + +gcc (2.95.2-9) frozen unstable; urgency=low + + * Disable the sparc-bi-arch.dpatch (patch from Ben Collins, built + for sparc as NMU 8.1) (fixes critical #61529 and #61511). + "Seems that when you compile gcc 2.95.x for sparc64-linux and compile + sparc32 programs, the code is not the same as sparc-linux compile for + sparc32 (this is a bug, and is fixed in gcc 2.96 CVS)." + * debian/patches/gcj-vs-iconv.dpatch: Option '--encoding' for + encoding of input files. Patch from Tom Tromey + backported to 2.95.2 (fixes #42895). + Compile a Latin-1 encoded file with `gcj --encoding=Latin1 ...'. + * debian/control.in: gcc, g++ and gobjc suggest their corresponding + task packages (fixes #59623). + + -- Matthias Klose Sat, 8 Apr 2000 20:19:15 +0200 + +gcc (2.95.2-8) frozen unstable; urgency=low + + * Post-2.95.2 CVS updates of the gcc-2_95-branch until 20000313. + * debian/rules2: configure with --enable-java-gc=no for sparc. Fixes + gcj side of #60535. + * debian/rules.patch: Disable gcc-emit-rtl patch for all archs but + alpha. Disable g++-is-tree patch ("just for 2.95.1"). + * debian/README: Update for gcc-2.95. + + -- Matthias Klose Mon, 27 Mar 2000 00:03:16 +0200 + +gcc (2.95.2-7) frozen unstable; urgency=low + + * debian/patches/gcc-empty-struct-init.dpatch; Apply patch from + http://gcc.gnu.org/ml/gcc-patches/2000-02/msg00637.html. Fixes + compilation of 2.3.4x kernels. + * debian/patches/gcc-emit-rtl.dpatch: Apply patch from David Huggins-Daines + (backport from 2.96 CVS to fix #55263). + * debian/patches/gcc-pointer-arith.dpatch: Apply patch from Jim Kingdon + (backport from 2.96 CVS to fix #54951). + + -- Matthias Klose Thu, 2 Mar 2000 23:16:43 +0100 + +gcc (2.95.2-6) frozen unstable; urgency=low + + * Post-2.95.2 CVS updates of the gcc-2_95-branch until 20000220. + * Remove dangling symlink probably left over from libstdc++2.9 + package (fixes #53661). + * debian/patches/gcc-alpha-complex-float.dpatch: Fixed patch by + David Huggins-Daines (fixes #58486). + * debian/g++.{postinst,prerm}: Remove outdated g++FAQ registration + (fixes #58253). + * debian/control.in: gcc-doc replaces gcc-docs (fixes #58108). + * debian/rules2: Include some fixed headers (asm, bits, linux, ...). + * debian/patches/{gcc-alpha-ev5-fix,libstdc++-valarray}.dpatch: Remove. + Applied upstream. + * debian/patches/libstdc++-bastring.dpatch: Add patch from + sicard@bigruth.solsoft.fr (fixes #56715). + + -- Matthias Klose Sun, 20 Feb 2000 15:08:13 +0100 + +gcc (2.95.2-5) frozen unstable; urgency=low + + * Post-2.95.2 CVS updates of the gcc-2_95-branch until 20000116. + * Add more build dependencies (fixes #53204). + * debian/patches/gcc-alpha-complex-float.dpatch: Patch from + Joel Klecker to compile glibc correctly on alpha. + "Should fix the g77 problems too." + * debian/patches/{libio,libstdc++-wall2}.dpatch. Remove patches + applied upstream. + + -- Matthias Klose Sun, 16 Jan 2000 19:16:54 +0100 + +gcc (2.95.2-4) unstable; urgency=low + + * debian/patches/libio.dpatch: Patch from Martin v. Loewis. + (fixes: #35628). + * debian/patches/libstdc++-deque.dpatch: Patch from Martin v. Loewis. + (fixes: #52689). + * debian/control.in: Updated Build-Depends, removed outdated README.build. + Fixes #51246. + * Tighten dependencies to cpp (>= 2.95.2-4) (closes: #50294). + * debian/rules.patch: Really do not apply patches/gcj-backport.dpatch. + Fixes #51636. + * Apply updated sparc-bi-arch.dpatch from Ben Collins. + * libstdc++: Define wstring type, if __ENABLE_WSTRING is defined. Request + from the author of the War FTP Daemon for Linux ("Jarle Aase" + ). + * debain/g++.preinst: Remove dangling sysmlinks (fixes #52359). + + -- Matthias Klose Sun, 19 Dec 1999 21:53:48 +0100 + +gcc (2.95.2-3) unstable; urgency=low + + * debian/rules2: Don't install $(gcc_lib_dir)/include/asm; these are + headers fixed for glibc-1.x (closes: #49434). + * debian/patches/cpp-dos-newlines.dpatch: Keep CR's without + following LF (closes: #49186). + * Bug #37358 (internal compiler errors when building vdk_0.6.0-5) + fixed in gcc-2.95.? (closes: #37358). + * Apply patch gcc-alpha-ev5-fix from Richard Henderson + (should fix #48527 and #46963). + * debian/README.Bugs: Documented non bug #44554. + * Applied patch from Alexandre Oliva to fix gpc boostrap on alpha. + Reenabled gpc on all architectures. + * Post-2.95.2 CVS updates of the gcc-2_95-branch until 19991108. + * Explicitely generate postinst/prerm chunks for usr/doc transition. + debhelper currently doesn't handle generation for packages with + symlinked directories. + * debian/patches/libstdc++-wall3.dpatch: Fix warnings in stl_deque.h + and stl_rope.h (closes: #46444, #46720). + * debian/patches/gcj-backport.dpatch: Add file, don't apply (yet). + + -- Matthias Klose Wed, 10 Nov 1999 18:58:45 +0100 + +gcc (2.95.2-2) unstable; urgency=low + + * New gpc-19991030 snapshot. + * Post-2.95.2 CVS updates of the gcc-2_95-branch until 19991103. + * Reintegrated sparc patches (bcollins@debian.org), which were lost + in 2.95.2-1. + * debian/rules2: Only install $(gcc_lib_dir)/include/asm, when existing. + * debian/patches/gpc-2.95.{dpatch,diff}: updated patch to drop + initialization in stor-layout.c. + * debian/NEWS.gcc: Updated for gcc-2.95.2. + * debian/bugs/bug-...: Removed testcases for fixed bugs. + * debian/patches/...dpatch: Removed patches applied upstream. + * debian/{rules2,g++.postinst,g++.prerm}: Handle c++ alternative. + * debian/changelog: Merged gcc272, egcs and snapshot changelogs. + + -- Matthias Klose Tue, 2 Nov 1999 23:09:23 +0200 + +gcc (2.95.2-1.1) unstable; urgency=low + + * Most of the powerpc patches have been applied upstream. Remove all + but ppc-ice, ppc-andrew-dwarf-eh, and ppc-descriptions. + * mulilib-install.dpatch was definitely a bad idea. Fix it properly + by using install -D. + * Also, don't make directories before installing any more. Simplifies + rules a (tiny) bit. + * Do not build with LDFLAGS=-s. Everything gets stripped out anyway by + dh_strip -a -X_debug; so leave the binaries in the build tree with + debugging symbols for simplified debugging of the packages. + + -- Daniel Jacobowitz Sat, 30 Oct 1999 12:40:12 -0400 + +gcc (2.95.2-1) unstable; urgency=low + + * gcc-2.95.2 release (taken from the CVS archive). -fstrict-aliasing + is disabled upstream. + + -- Matthias Klose Mon, 25 Oct 1999 10:26:19 +0200 + +gcc (2.95.2-0pre4) unstable; urgency=low + + * Updated to cvs updates of the gcc-2_95-branch until 19991021. + * Updated gpc to gpc-19991018 snapshot (closes: #33037, #47453). + Enable gpc for all architectures ... + * Document gcc exit codes (closes: #43863). + * According to the bug submitter (Sergey V Kovalyov ) + the original source of these CERN librarties is outdated now. The latest + version of cernlibs compiles and works fine with slink (closes #31546). + * According to the bug submitter (Gergely Madarasz ), + the problem triggered on i386 cannot be reproduced with the current + jade and php3 versions anymore (closes: #35215). + * Replace corrupted m68k-pic.dpatch (from Roman Hodek and Andreas Schwab + and apply to + all architectures (closes: #48011). + * According to the bug submitter (Herbert Xu ) + this bug "probably has been fixed". Setting it to severity "fixed" + (fixes: #39616), will close it later ... + * debian/README.Bugs: Document throwing C++ exceptions "through" C + libraries (closes: #22769). + + -- Matthias Klose Fri, 22 Oct 1999 20:33:00 +0200 + +gcc (2.95.2-0pre3) unstable; urgency=low + + * Updated to cvs updates of the gcc-2_95-branch until 19991019. + * Apply NMU patches (closes: #46217). + * debian/control.in: Fix egcs64 conflict-dependency for sparc + architecture (closes: #47088). + * debian/rules2: dbg-packages share doc dir with lib packages + (closes #45067). + * debian/patches/gcj-debian-policy.dpatch: Patch from Stephane + Bortzmeyer to conform to Debian policy (closes: #44463). + * debian/bugs/bug-*: Added test cases for new bug reports. + * debian/patches/libstdc++-bastring.dpatch: Patch by Richard Kettlewell + (closes #46550). + * debian/rules.patch: Apply libstdc++-wall2 patch (closes #46609). + * debian/README: Fix typo (closes: #45253). + * debian/control.in: Remove primary/secondary distinction; + dbg-packages don't provide their normal counterparts (closes #45206). + * debian/rules.patch: gcc-combine patch applied upstream. + * debian/rules2: Only use mail if with_check is set (off by default). + * debian/rules.conf: Tighten binutils dependency to 2.9.5.0.12. + + -- Matthias Klose Tue, 19 Oct 1999 20:33:00 +0200 + +gcc (2.95.2-0pre2.0.2) unstable; urgency=HIGH (for m68k) + + * Binary-only NMU for m68k as quick fix for another bug; the patch + is in CVS already, too. + * Applied another patch by Andreas Schwab to fix %a5 restauration in + some cases. + + -- Roman Hodek Thu, 30 Sep 1999 16:09:15 +0200 + +gcc (2.95.2-0pre2.0.1) unstable; urgency=HIGH (for m68k) + + * Binary-only NMU for m68k as quick fix for serious bugs; the patches + are already checked into gcc CVS and should be in the next official + version, too. + * Applied two patches by Andreas Schwab to fix -fpic and loop optimization. + + -- Roman Hodek Mon, 27 Sep 1999 15:32:49 +0200 + +gcc (2.95.2-0pre2) unstable; urgency=low + + * Fixed in 2.95.2 (closes: #43478). + * Previous version had Pascal examples missing in doc directory. + + -- Matthias Klose Wed, 8 Sep 1999 22:18:17 +0200 + +gcc (2.95.2-0pre1) unstable; urgency=low + + * Updated to cvs updates of the gcc-2_95-branch until 19990828. + * Apply work around memory corruption (just for 2.95.1) by + Daniel Jacobowitz . + * debian/patches/libstdc++-wall2.dpatch: Patch from Franck Sicard + to fix some warnings (closes: #44670). + * debian/patches/libstdc++-valarray.dpatch: Patch from Hideaki Fujitani + to fix a bug in valarray_array.h. + * Applied NMU from Jim Pick minus the jump.c and fold-const.c patches + already in the gcc-2_95-branch (closes: #44690). + * Conform to debian-java policy (closes: #44463). + * Move docs to /usr/share/doc (closes: #44782). + * Remove debian/patches/gcc-align.dpatch applied upstream. + * debian/*.postinst: Call install-info only, when configuring. + * debian/*.{postinst,prerm}: Add #DEBHELPER# comments to handle + /usr/doc -> /usr/share/doc transition. + + -- Matthias Klose Wed, 8 Sep 1999 22:18:17 +0200 + +gcc (2.95.1-2.1) unstable; urgency=low + + * Non-maintainer upload. + * ARM platform no longer needs library-prefix patch. + * Updated patches from Philip Blundell. + + -- Jim Pick Wed, 8 Sep 1999 20:14:07 -0700 + +gcc (2.95.1-2) unstable; urgency=low + + * debian/gcc.{postinst,prerm}: gcc provides an alternative for + sparc64-linux-gcc. + * Applied patch from Ben Collins to enable bi-architecture (32/64) + support for sparc. + * Rebuild debian/control and debian/rules.parameters after unpacking. + * debian/rules2: binary-indep. Conditionalize on with_pascal. + + -- Matthias Klose Sat, 4 Sep 1999 13:47:30 +0200 + +gcc (2.95.1-1) unstable; urgency=low + + * Updated to release gcc-2.95.1 and cvs updates of the gcc-2_95-branch + until 19990828. + * debian/README.gcc: Updated NEWS file to include 2.95 and 2.95.1 news. + * debian/README.java: New file. + * debian/rules.defs: Disabled gpc for alpha, arm. Disabled ObjC-GC + for alpha. + * debian/rules [clean]: Remove debian/rules.parameters. + * debian/rules2 [binary-arch]: Call dh_shlibdeps with LD_LIBRARY_PATH set + to installation dir of libstdc++. Why isn't this the default? + * debian/control.in: *-dev packages do not longer conflict with + libg++272-dev package. + * Apply http://egcs.cygnus.com/ml/gcc-patches/1999-08/msg00599.html. + * Only define BAD_THROW_ALLOC, when using exceptions (fixes #43462). + * For ObjC (when configured with GC) recommend libgc4-dev, not libgc4. + * New version of 68060 build patch. + * debian/rules.conf: For m68k, depend on binutils version 2.9.1. + + -- Matthias Klose Sat, 28 Aug 1999 18:16:31 +0200 + +gcc (2.95.1-0pre2) unstable; urgency=medium + + * gpc is back again (fixes grave #43022). + * debian/patches/gpc-updates.dpatch: Patches sent to upstream authors. + * Work around the fatal dependtry assertion failure bug in dpkg (hint + from "Antti-Juhani Kaijanaho" , fixes important #43072). + + -- Matthias Klose Mon, 16 Aug 1999 19:34:14 +0200 + +gcc (2.95.1-0pre1) unstable; urgency=low + + * Updated to cvs 19990815 gcc-2_95-branch; included install docs and + FAQ from 2.95 release; upload source package as well. + * Source package contains tarballs only (gcc, libg++, installdocs). + * debian/rules: Splitted into debian/rules{,.unpack,.patch,.conf,2}. + * debian/gcc.postinst: s/any key/RETURN; warn only when upgrading from + pre 2.95 version; reference /usr/doc, not /usr/share/doc. + * Checked syntax for attributes of functions; checked for #35068; + checked for bad gmon.out files (at least with libc6 2.1.2-0pre5 and + binutils 2.9.1.0.25-2 the problem doesn't show up anymore). + * debian/patches/cpp-macro-doc.dpatch: Document macro varargs in cpp.texi. + * gcc is primary compiler for all platforms but m68k. Setting + severity of #22513 to fixed. + * debian/patches/gcc-default-arch.dpatch: New patch to enable generation + of i386 instruction as default (fixes #42743). + * debian/rules: Removed outdated gcc NEWS file (fixes #42742). + * debian/patches/libstdc++-out-of-mem.dpatch: Throw exception instead + of aborting when out of memory (fixes #42622). + * debian/patches/cpp-dos-newlines.dpatch: Handle ibackslashes after + DOS newlines (fixes #29240). + * Fixed in gcc-2.95.1: #43001. + * Bugs closed in this version: + Closes: #11525, #12253, #22513, #29240, #35068, #36182, #42584, #42585, + #42602, #42622, #42742 #42743, #43001, #43002. + + -- Matthias Klose Sun, 15 Aug 1999 10:31:50 +0200 + +gcc (2.95-3) unstable; urgency=high + + * Provide /lib/cpp again (fixes important bug #42524). + * Updated to cvs 19990805 gcc-2_95-branch. + * Build with the default scheduler. + * Apply install-multilib patch from Dan Jacobowitz. + * Apply revised cpp-A- patch from Dan Jacobowitz. + + -- Matthias Klose Fri, 6 Aug 1999 07:25:19 +0200 + +gcc (2.95-2) unstable; urgency=low + + * Remove /lib/cpp. This driver uses files from /usr/lib/gcc-lib anyway. + * The following bugs are fixed (compared to egcs-1.1.2). + Closes: #4429, #20889, #21122, #26369, #28417, #28261, #31416, #35261, + #35900, #35906, #38246, #38872, #39098, #39526, #40659, #40991, #41117, + #41290, #41302, #41313. + * The following by Joel Klecker: + - Adopt dpkg-architecture variables. + - Go back to SHELL = bash -e or it breaks where /bin/sh is not bash. + - Disabled the testsuite, it is not included in the gcc 2.95 release. + + -- Matthias Klose Sat, 31 Jul 1999 18:00:42 +0200 + +gcc (2.95-1) unstable; urgency=low + + * Update for official gcc-2.95 release. + * Built without gpc. + * debian/rules: Remove g++FAQ from rules, which is outdated. + For ix86, build for i386, not i486. + * Apply patch from Jim Pick for building multilib package on arm. + + -- Matthias Klose Sat, 31 Jul 1999 16:38:21 +0200 + +gcc (2.95-0pre10) unstable; urgency=low + + * Use ../builddir-gcc-$(VER) by default instead of ./builddir; upstream + strongly advises configuring outside of the source tree, and it makes + some things much easier. + * Add patch to prevent @local branches to weak symbols on powerpc (fixes + apt compilation). + * Add patch to make cpp -A- work as expected. + * Renamed debian/patches/ppc-library-prefix.dpatch to library-prefix.dpatch; + apply on all architectures. + * debian/control.in: Remove snapshot dependencies. + * debian/*.postinst: Reflect use of /usr/share/{info,man}. + + -- Daniel Jacobowitz Thu, 22 Jul 1999 19:27:12 -0400 + +gcc (2.95-0pre9) unstable; urgency=low + + * The following bugs are fixed (compared to egcs-1.1.2): #4429, #20889, + #21122, #26369, #28417, #28261, #35261, #38246, #38872, #39526, #40659, + #40991, #41117, #41290. + * Updated to CVS gcc-19990718 snapshot. + * debian/control.in: Removed references to egcs in descriptions. + Changed gcj's Recommends libgcj-dev to Depends. + * debian/rules: Apply ppc-library-prefix for alpha as well. + * debian/patches/arm-config.dpatch: Updated patch sent by Jim Pick. + + -- Matthias Klose Sun, 18 Jul 1999 12:21:07 +0200 + +gcc (2.95-0pre8) unstable; urgency=low + + * Updated CVS. + * debian/copyright: s%doc/copyright%share/common-licenses% + * debian/README.Bugs: s/egcs.cygnus.com/gcc.gnu.org/ s/egcs-bugs/gcc-bugs/ + * debian/patches/reporting.dpatch: Remake diff for current sources. + * debian/libstdc++-dev.postinst: It's /usr/share/info/iostream.info. + * debian/rules: Current dejagnu snapshot reports a framework version + of 1.3.1. + + -- Joel Klecker Sun, 18 Jul 1999 02:09:57 -0700 + +gcc-snapshot (19990714-0pre6) experimental; urgency=low + + * Updated to CVS gcc-19990714 snapshot. + * Applied ARM patch (#40515). + * Converted DOS style linefeeds in debian/patches/ppc-* files. + * debian/rules: Reflect change in gcc/version.c; use sh -e as shell: + for some obscure reason, bash -e doesn't work. + * Reflect version change for libstdc++ (2.10). Remove libg++-name + patch; libg++ now has version 2.8.1.3. Removed libc version from + the package name. + + -- Matthias Klose Wed, 14 Jul 1999 18:43:57 +0200 + +gcc-snapshot (19990625-0pre5.1) experimental; urgency=low + + * Non-maintainer upload. + * Added ARM specific patch. + + -- Jim Pick Tue, 29 Jun 1999 22:36:08 -0700 + +gcc-snapshot (19990625-0pre5) experimental; urgency=low + + * Updated to CVS gcc-19990625 snapshot. + + -- Matthias Klose Fri, 25 Jun 1999 16:11:53 +0200 + +gcc-snapshot (19990609-0pre4.1) experimental; urgency=low + + * Added and re-added a few last PPC patches. + + -- Daniel Jacobowitz Sat, 12 Jun 1999 16:48:01 -0500 + +gcc-snapshot (19990609-0pre4) experimental; urgency=low + + * Updated to CVS egcs-19990611 snapshot. + + -- Matthias Klose Fri, 11 Jun 1999 10:20:09 +0200 + +gcc-snapshot (19990609-0pre3) experimental; urgency=low + + * CVS gcc-19990609 snapshot. + * New gpc-19990607 snapshot. + + -- Matthias Klose Wed, 9 Jun 1999 19:40:44 +0200 + +gcc-snapshot (19990524-0pre1) experimental; urgency=low + + * egcs-19990524 snapshot. + * First snapshot of the gcc-2_95-branch. egcs-1.2 is renamed to gcc-2.95, + which is now the "official" successor to gcc-2.8.1. The full version + name is: gcc-2.95 19990521 (prerelease). + * debian/control.in: Changed maintainers to `Debian GCC maintainers'. + * Moved all version numbers to epoch 1. + * debian/rules: Major changes. The support for secondary compilers + was already removed for the egcs-1.2 snapshots. Many fixes by + Joel Klecker . + - Send mail to Debian maintainers for successful builds. + - Fix VER and VERNO sed expressions. + - Replace remaining GNUARCH occurrences. + * New gpc snapshot (but don't build). + * debian/patches/valarray.dpatch: Backport from libstdc++-v3. + * debian/gcc-doc.*: Info is now gcc.info* (Joel Klecker ). + * Use cpp driver provided by the package. + * New script c89 (fixes #28261). + + -- Matthias Klose Sat, 22 May 1999 16:10:36 +0200 + +egcs (1.1.2-2) unstable; urgency=low + + * Integrate NMU's for arm and sparc (fixes #37582, #36857). + * Apply patch for the Hurd (fixes #37753). + * Describe open bugs in TODO.Debian. Please have a look if you can help. + * Update README / math functions section (fixes #35906). + * Done by J.H.M. Dassen (Ray) : + - At Richard Braakman's request, made -dbg packages for libstdc++ + and libg++. + - Provide egcc(1) (fixes lintian error). + + -- Matthias Klose Sun, 16 May 1999 14:30:56 +0200 + +egcs-snapshot (19990502-1) experimental; urgency=low + + * New snapshot. + + -- Matthias Klose Thu, 6 May 1999 11:51:02 +0200 + +egcs-snapshot (19990418-2) experimental; urgency=low + + * Merged Rays changes to build debug packages. + + -- Matthias Klose Wed, 21 Apr 1999 16:54:56 +0200 + +egcs-snapshot (19990418-1) experimental; urgency=low + + * New snapshot. + * Disable cpplib. + + -- Matthias Klose Mon, 19 Apr 1999 11:32:19 +0200 + +egcs (1.1.2-1.2) unstable; urgency=low + + * NMU for arm + * Added arm-optimizer.dpatch with optimizer workaround for ARM + + -- Jim Pick Mon, 19 Apr 1999 06:17:13 -0700 + +egcs (1.1.2-1.1) unstable; urgency=low + + * NMU for sparc + * Included dpatch to modify the references to gcc/crtstuff.c so that + __register_frame_info is not a weak reference. This allows potato to + remain binary compatible with slink, while still retaining compatibility + with other sparc/egcs1.1.2 distributions. Diff in .dpatch format has + been sent to the maintainer with a note it may not be needed for 1.1.3. + + -- Ben Collins Tue, 27 Apr 1999 10:15:03 -0600 + +egcs (1.1.2-1) unstable; urgency=low + + * Final egcs-1.1.2 release built for potato as primary compiler + for all architectures except m68k. + + -- J.H.M. Dassen (Ray) Thu, 8 Apr 1999 13:14:29 +0200 + +egcs-snapshot (19990321-1) experimental; urgency=low + + * New snapshot. + * Disable gpc. + * debian/rules: Simplified (no secondary compiler, bumped all versions + to same epoch, libapi patch is included upstream). + * Separated out cpp documentation to cpp-doc package. + * Fixed in this version: #28417. + + -- Matthias Klose Tue, 23 Mar 1999 02:11:18 +0100 + +egcs (1.1.2-0slink2) stable; urgency=low + + * Applied H.J.Lu's egcs-19990315.linux patch. + * Install faq.html and egcs-1.1.2 announcment. + + -- Matthias Klose Tue, 23 Mar 1999 01:14:54 +0100 + +egcs (1.1.2-0slink1) stable; urgency=low + + * Final egcs-1.1.2 release; compiled with glibc-2.0 for slink on i386. + * debian/control.in: gcc provides egcc, when FIRST_PRIMARY defined. + * Fixes #30767, #32278, #34252, #34352. + * Don't build the libstdc++.so.2.9 library on architectures, which have + switched to glibc-2.1. + + -- Matthias Klose Wed, 17 Mar 1999 12:55:59 +0100 + +egcs (1.1.1.63-2.2) unstable; urgency=low + + * Non-maintainer upload. + * Incorporate patch from Joel Klecker to fix snapshot packages + by moving/removing the application of libapi. + * Disable the new libstdc++-dev-config and the postinst message in + glibc 2.1 versions. + + -- Daniel Jacobowitz Mon, 12 Mar 1999 14:16:02 -0500 + +egcs (1.1.1.63-2.1) unstable; urgency=low + + * Non-maintainer upload. + * Compile with glibc 2.1 release version. + * New upstream version egcs-1.1.2 pre3. + * Miscellaneous rules updates (see changelog.snapshot). + * New set of powerpc-related patches from Franz Sirl, + . + * Disable libgcc.dpatch (new solution implemented upstream). Remove it. + * Also pass $target to config.if. + * Enable Dwarf2 EH for powerpc. Bump the C++ binary version. No + loss in -backwards- compatibility as far as I can tell, so add a + compatibility symlink, and add to shlibs file. + * Add --no-backup-if-mismatch to the debian/patches/*.dpatch files, + to prevent bogus .orig's in diffs. + * Merged with (unreleased) 1.1.1.62-1 and 1.1.1.63-{1,2} packages from + Matthias Klose . + * Stop adding a backwards compatibility link for egcs-nof on powerpc. + To my knowledge, nothing uses it. Do add the libstdc++ API change + link, though. + + -- Daniel Jacobowitz Mon, 8 Mar 1999 14:24:01 -0500 + +egcs (1.1.1.63-2) stable; urgency=low + + * Provide a libstdc++ with a shared object name, which is compatible + to other distributions. Documented the change in README.Debian, + the libstdc++-2.9.postinst and the libstdc++-dev-config script. + + -- Matthias Klose Fri, 12 Mar 1999 00:36:20 +0100 + +egcs (1.1.1.63-1.1) unstable; urgency=low + + * Non-Maintainer release. + * Build against glibc 2.1. + * Make egcs the primary compiler on i386. + * Also confilct with egcc (<< FIRST_PRIMARY) + if FIRST_PRIMARY is defined. + (this tells dpkg that gcc completely obsoletes egcc) + * Remove hjl-12 patch again, HJL says it should not be + necessary with egcs 1.1.2. + (as per forwarded reply from Christopher Chimelis) + * Apply libapi patch in clean target before regenerating debian/control + and remove the patch afterward. Otherwise, the libstdc++ and libg++ + package names are generated wrong on a glibc 2.1 system. + + -- Joel Klecker Tue, 9 Mar 1999 15:31:02 -0800 + +egcs (1.1.1.63-1) unstable; urgency=low + + * New upstream version egcs-1.1.1-pre3. + * Applied improved libstdc++ warning patch from Rob Browning. + + -- Matthias Klose Tue, 9 Mar 1999 16:14:07 +0100 + +egcs (1.1.1.62-1) unstable; urgency=low + + * New upstream version egcs-1.1.1-pre2. + * New upstream version libg++-2.8.1.3. + * Readded ARM support + * Readded hjl-12 per request from Christopher C Chimelis + + + -- Matthias Klose Fri, 26 Feb 1999 09:54:01 +0100 + +egcs-snapshot (19990224-0.1) experimental; urgency=low + + * New snapshot. + * Add the ability to disable CPPLIB by setting CPPLIB=no in + the environment. + * Disable gpc for powerpc; I spent a long time getting it to + make correctly, and then it goes and ICEs. + + -- Daniel Jacobowitz Tue, 24 Feb 1999 23:34:12 -0500 + +egcs (1.1.1.61-1) unstable; urgency=low + + * New upstream version egcs-1.1.1-pre1. + * debian/control.in: Applied patch from bug report #32987. + * Split up H.J.Lu's hjl-19990115-linux patch into several small + chunks: libapi, arm-mips, libgcc, hjl-other. The changelog.Linux + aren't included in the separate chunks. Please refer to the + unmodified hjl-19990115-linux patch file in the egcs source pkg. + * Apply warning patch to fix the annoying spew you get if you try to + use ropes or deques with -Wall (which makes -Wall mostly useless for + spotting errors in your own code). Fixes #32996. + * debian/rules: Unapply patches in the exact reverse order they were + applied. + + -- Matthias Klose Sat, 20 Feb 1999 22:06:21 +0100 + +egcs (1.1.1-5) frozen unstable; urgency=medium + + * Move libgcc.map file to g++ package, where gcc is the secondary + compiler (fixes #32329, #32605, #32631). + * Prepare to rename libstdc++2.9 package for glibc-2.1 (fixes #32148). + * Apply NMU patch for arm architecure (fixes #32367). + * Don't apply hjl-12 patch for alpha architectures (requested by the + alpha developers, Christopher C Chimelis ). + * Call makeinfo with --no-validate to fix obscure build failure on alpha. + * Build gpc info files in doc subdirectory. + * Remove c++filt diversion (C++ name demangling patch is now in binutils, + fixes #30820 and #32502). + + -- Matthias Klose Sun, 31 Jan 1999 23:19:35 +0100 + +egcs (1.1.1-4.1) unstable; urgency=low + + * Non-maintainer upload. + * Pascal doesn't build for ARM. + + -- Jim Pick Sun, 24 Jan 1999 16:13:34 -0800 + +egcs (1.1.1-4) frozen unstable; urgency=high + + * Don't strip compiler libraries libgcc.a libobjc.a libg2c.a libgpc.a + * Move Pascal examples to the right place (fixes #32149, part 1). + * Add dependencies for switching from secondary to primary compiler, + if FIRST_PRIMARY is defined (fixes #32149, part 2). + + -- Matthias Klose Wed, 20 Jan 1999 16:51:30 +0100 + +egcs (1.1.1-3) frozen unstable; urgency=low + + * Updated with the H.J.Lu's hjl-19990115-linux patch (fixes the + __register_frame_info problems, mips and arm port included). + * Update gpc to 19990118 (beta release candidate). + * Strip static libraries (fixes #31247 and #31248). + * Changed maintainer address. + + -- Matthias Klose Tue, 19 Jan 1999 16:34:28 +0100 + +egcs (1.1.1-2) frozen unstable; urgency=low + + * Moved egcs-docs, g77-doc and gpc-doc packages to doc section. + * Downgraded Recommends: egcs-docs to Suggests: egcs-docs dependencies + (for archs, where egcs is the primary compiler). + * Add 'Suggests: stl-manual' dependency to libstdc++2.9-dev. + * Applied one more alpha patch: + ftp://ftp.yggdrasil.com/private/hjl/egcs/1.1.1/egcs-1.1.1.diff.12.gz + * Applied PPro optimization patch. + * Apply emit-rtl-nan patch. + * Upgraded to libg++-2.8.1.2a-19981218.tar.gz. + * Upgraded to gpc-19981218. + * Make symlinks for gobjc, libstdc++2.9-dev and libg++2.8.2 doc directories. + + -- Matthias Klose Wed, 23 Dec 1998 18:04:53 +0200 + +egcs-snapshot (19981211-1) experimental; urgency=low + + * New snapshot. + * Adapted gpc to egcs-2.92.x (BOOT_CFLAGS must include -g). + * New libg++-2.8.1.2a-19981209.tar.gz. + * debian/rules: new target mail-summary. + + -- Matthias Klose Fri, 11 Dec 1998 18:14:53 +0200 + +egcs (1.1.1-1) frozen unstable; urgency=high + + * Final egcs-1.1.1 release. + * The last version depended on a versioned libc6 again. + * Add lost dependency for libg++ on libstdc++. + * Added debian-libstdc++.sh script to generate a libstdc++ on a Linux + system, which doesn't use the libapi patch. + + -- Matthias Klose Wed, 2 Dec 1998 12:06:15 +0200 + +egcs (1.1.0.91.59-2) frozen unstable; urgency=high + + * Fixes bugs from libc6 2.0.7u-6 upload without dependency line + Conflicts: libstdc++-2.9 (<< 2.91.59): #30019, #30066, #30078. + * debian/copyright: Updated URLs. + * gcc --help now mentions /usr/doc/debian/bug-reporting.txt. + * Install README.Debian and include information about patches applied. + * Depend on unversioned libc6 on i386, such that libstdc++2.9 can be used + on a hamm system. + + -- Matthias Klose Fri, 27 Nov 1998 18:32:02 +0200 + +egcs (1.1.0.91.59-1) frozen unstable; urgency=low + + * This is egcs-1.1.1 prerelease #3, compiled with libc6 2.0.7u-6. + * Added dependency for libstdc++2.9-dev on g++ (fixes #29631). + * Package g77 provides f77 (fixes #29817). + * Already fixed in earlier egcs-1.1 releases: #2493, #25271, #10620. + * Bugs reported for gcc-2.7.x and fixed in the egcs version of gcc: + #2493, #4430, #4954, #5367, #6047, #10612, #12375, #20606, #24788, #26100. + * Upgraded libg++ to libg++-2.8.1.2a-19981114. + * Upgraded gpc to gpc-19981124. + * Close #25869: egcs and splay maintainers are unable to reproduce this + bug with the current Debian packages. Bug submitter doesn't respond. + * Close #25407: egcs maintainer cannot reproduce this bug with the current + Debian compiler. Bug submitter doesn't respond. + * Use debhelper 1.2.7 for building. + * Replace the libstdc++ and libg++ compatibility links with fake libraries. + + -- Matthias Klose Wed, 25 Nov 1998 12:11:42 +0200 + +egcs (1.1.0.91.58-5) frozen unstable; urgency=low + + * Applied patch to build on the m68060. + * Added c++filt and c++filt.1 to the g++ package. + * Updated gpc to gpc-981105; fixes some regressions compared to egcs-1.1. + * Separated out g77 and gpc doumentation to new packages g77-doc and gpc-doc. + * Closed bugs (#22158). + * Close #20248; on platforms where gas and gld are the default versions, + it makes no difference to configure with or without enable-ld. + * Close #24349. The bugs are in the amulet source. + See http://www.cs.cmu.edu/afs/cs/project/amulet/www/FAQ.html#GCC28x + * Rename gcc.info* files to egcs.info* (fixes #24088). + * Documented known bugs (and workarounds) in BUGS.Debian. + * Fixed demangling of C++ names (fixes #28787). + * Applied patch form aspell to libstdc++/stl/stl_rope.h. + * Updated from cvs 16 Nov 1998. + + -- Matthias Klose Tue, 17 Nov 1998 09:41:24 +0200 + +egcs-snapshot (19981115-2) experimental; urgency=low + + * New snapshot. Disabled gpc. + * New packages g77-doc and gpc-doc. + + -- Matthias Klose Mon, 16 Nov 1998 12:48:09 +0200 + +egcs (1.1.0.91.58-3) frozen unstable; urgency=low + + * Previous version installed in potato, not slink. + * Updated from cvs 3 Nov 1998. + + -- Matthias Klose Tue, 3 Nov 1998 18:34:44 +0200 + +egcs (1.1.0.91.58-2) unstable; urgency=low + + * [debian/rules]: added targets to apply and unapply patches. + * [debian/README.patches]: New file. + * Moved patches dir to debian/patches. debian/rules has to select + the patches to apply. + * Manual pages for genclass and gcov (fixes #5995, #20950, #22196). + * Apply egcs-1.1-reload patch needed for powerpc architecture. + * Fixed bugs (#17768, #20252, #25508, #27788). + * Reapplied alpha patch (#20875). + * Fixes first part of #22513, extended README.Debian (combining C & C++). + * Already fixed in earlier egcs-1.1 releases: #17963, #20252, #20524, + #20640, #22450, #24244, #24288, #28520. + + -- Matthias Klose Fri, 30 Oct 1998 13:41:45 +0200 + +egcs (1.1.0.91.58-1) experimental; urgency=low + + * New upstream version. That's the egcs-1.1.1 prerelease plus patches from + the cvs archive upto 29 Oct 1998. + * Merged files from the egcs and snapshot packages. + * Updated libg++ to libg++-2.8.1.2 (although the Debian package name is still + 2.8.2). + * Moved patches dir to patches-1.1. + * Dan Jacobowitz: + * This is a snapshot from the egcs_1_1_branch, with + libapi, reload, builtin-apply, and egcs patches from + the debian/patches/ dir applied, along with the egcs-gpc-patches + and gcc/p/diffs/gcc-egcs-2.91.55.diff. + * Conditionalize gcj and chill (since they aren't in this branch). + * Fake snapshots drop the -snap-main. + + -- Matthias Klose Thu, 29 Oct 1998 15:15:19 +0200 + +egcs-snapshot (1.1-19981019-5.1) experimental; urgency=low + + * This is a snapshot from the egcs_1_1_branch, with + libapi, reload, builtin-apply, and egcs patches from + the debian/patches/ dir applied, along with the egcs-gpc-patches + and gcc/p/diffs/gcc-egcs-2.91.55.diff. + * Conditionalize gcj and chill (since they aren't in this + branch). + * Fake snapshots drop the -snap-main. + + -- Daniel Jacobowitz Mon, 19 Oct 1998 22:19:23 -0400 + +egcs (1.1b-5) unstable; urgency=low + + * [debian/control.in] Fixed typo in dependencies (#28076, #28087, #28092). + + -- J.H.M. Dassen (Ray) Sun, 18 Oct 1998 22:56:51 +0200 + +egcs (1.1b-4) unstable; urgency=low + + * Strengthened g++ dependency on libstdc++_LIB_SO_-dev from + `Recommends' to `Depends'. + * Updated README.Debian for egcs-1.1. + * Updated TODO. + + -- Matthias Klose Thu, 15 Oct 1998 12:38:47 +0200 + +egcs-snapshot (19981005-0.1) experimental; urgency=low + + * Make libstdc++2.9-snap-main and libg++-snap-main provide + their mainstream equivalents and put those equivalents into + their shlibs file. + * Package gcj, the GNU Compiler for Java(TM). + + * New upstream version of egcs (The -regcs_latest_snapshot branch). + * Build without libg++ entirely. + * Leave out gpc for now - the internals are sufficiently different + that it does not trivially compile. + * Include an experimental reload patch for powerpc - this is, + in the words of its author, not release quality, but it allows + powerpc linuxthreads to function. + * On architectures where we are the primary compiler, let snapshots + build with --prefix=/usr and conflict with the stable versions. + * Package chill, a front end for the language Chill. + * Other applied patches from debian/patches/: egcs-patches and + builtin-apply-patch. + * Use reload.c revision 1.43 to avoid a nasty bug. + + -- Daniel Jacobowitz Wed, 7 Oct 1998 00:27:42 -0400 + +egcs (1.1b-3.1) unstable; urgency=low + + * NMU to fix the egcc -> gcc link once and for all + + -- Christopher C. Chimelis Tue, 22 Sep 1998 16:11:19 -0500 + +egcs (1.1b-3) unstable; urgency=low + + * Oops. The egcc -> gcc link on archs where gcc is egcc was broken. + Thanks to Chris Chimelis for pointing this out. + + -- J.H.M. Dassen (Ray) Mon, 21 Sep 1998 20:51:35 +0200 + +egcs (1.1b-2) unstable; urgency=low + + * New upstream spellfix release (Debian revision is 2 as the internal + version numbers didn't change). + * Added egcc -> gcc symlink on architectures where egcc is the primary C + compiler. Thus, maintainers of packages that require egcc, can now + simply use "egcc" without conditionals. + * Porters: we hope/plan to make egcs's gcc the default C compiler on all + platforms once the 2.2.x kernels are available. Please test this version + thoroughly, and give us a GO / NO GO for your architecture. + * Some symbols cpp used to predefine were removed upstream in order to clean + up the cpp namespace, but imake requires them for determining the proper + settings for LinuxMachineDefines (see /usr/X11R6/lib/X11/{Imake,linux}.cf), + thus we put them back. Thanks to Paul Slootman for reporting his imake + problems on Alpha. + * [gcc/config/alpha/linux.h] Added -D__alpha to CPP_PREDEFINES . + Thanks to Chris Chimelis for the alpha-only 1.1a-1.1 NMU which fixed + this already. + * [gcc/config/i386/linux.h] Added -D__i386__ to CPP_PREDEFINES . + * [gcc/config/sparc/linux.h] Has -Dsparc in CPP_PREDEFINES . + * [gcc/config/sparc/linux64.h] Has -Dsparc in CPP_PREDEFINES . + * [gcc/config/m68k/linux.h] Has -Dmc68000 in CPP_PREDEFINES . + * [gcc/config/rs6000/linux.h] Has -Dpowerpc in CPP_PREDEFINES . + * [gcc/config/arm/linux.h] Has -Darm in CPP_PREDEFINES . + * [gcc/config/i386/gnu.h] Has -Di386 in CPP_PREDEFINES . + * Small fixes and updates in README. + * Changes affecting the source package only: + * [gcc/Makefile.in, gcc/cp/Make-lang.in, gcc/p/Make-lang.in] + Daniel Jacobowitz: Ugly hacks of various kinds to make cplib2.txt get + properly regenerated with multilib. + * [debian/TODO] Created. + * [INSTALL/index.html] Fixed broken link. + + -- J.H.M. Dassen (Ray) Sun, 20 Sep 1998 14:05:15 +0200 + +egcs (1.1a-1) unstable; urgency=low + + * New upstream release. + * Added README.libstdc++ . + * Updated Standards-Version. + * Matthias: + * Downgraded gobjc dependency on egcs-docs from Recommends: to Suggests: . + * [libg++/Makefile.in] Patched not to rely on a `-f' flag of `ln'. + + -- J.H.M. Dassen (Ray) Wed, 2 Sep 1998 19:57:43 +0200 + +egcs (1.1-1) unstable; urgency=low + + * egcs-1.1 prerelease (from the last Debian package only the version file + changed). + * "Final" gpc Beta 2.1 gpc-19980830. + * Included libg++ and gpc in the .orig tarball. so that diffs are getting + smaller. + * debian/control.in: Changed maintainer address to galenh-egcs@debian.org. + * debian/copyright: Updated URLs. + + -- Matthias Klose Mon, 31 Aug 1998 12:43:13 +0200 + +egcs (1.0.99.56-0.1) unstable; urgency=low + + * New upstream snapshot 19980830 from CVS (called egcs-1.1 19980830). + * New libg++ snapshot 980828. + * Put all patches patches subdirectory; see patches/README in the source. + * debian/control.in: readded for libg++2.8.2-dev: + Replaces: libstdc++2.8-dev (<= 2.90.29-0.5) + * Renamed libg++2.9 package to libg++2.8.2. + * gcc/p/gpc-decl.c: Fix from Peter@Gerwinski.de; fixes optimization errors. + * patches/gpc-patch2: Fix from Peter@Gerwinski.de; fixes alpha errors. + * debian/rules: New configuration flag for building with and without + libstdc++api patch; untested without ... + + -- Matthias Klose Sun, 30 Aug 1998 12:04:22 +0200 + +egcs (1.0.99-0.6) unstable; urgency=low + + * PowerPC fixes. + * On powerpc, generate the -msoft-float libs and package them + as egcs-nof. + * Fix signed char error in gpc. + * Create a libg++.so.2.9 compatibility symlink. + + -- Daniel Jacobowitz Tue, 25 Aug 1998 11:44:09 -0400 + +egcs (1.0.99-0.5) unstable; urgency=low + + * New upstream snapshot 19980824. + * New gpc snapshot gpc-980822; reenabled gpc for alpha. + + -- Matthias Klose Tue, 25 Aug 1998 01:21:08 +0200 + +egcs (1.0.99-0.4) unstable; urgency=low + + * New upstream snapshot 19980819. Should build glibc 2.0.9x on PPC. + + -- Matthias Klose Wed, 19 Aug 1998 14:18:07 +0200 + +egcs (1.0.99-0.3) unstable; urgency=low + + * New upstream snapshot 19980816. + * debian/rules: build correct debian/control and debian/*.shlibs + * Enabled Haifa scheduler for ix86. + + -- Matthias Klose Mon, 17 Aug 1998 16:29:35 +0200 + +egcs (1.0.99-0.2) unstable; urgency=low + + * New upstream snapshot: egcs-19980812, minor changes only. + * Fixes for building on `primary' targets. + * Disabled gpc on `alpha' architecture. + * Uses debhelper 1.1.6 + * debian/control.in: Replace older snapshot versions in favor of newer + normal versions. + * debian/rules: Fixes building of binary-arch target only. + + -- Matthias Klose Thu, 13 Aug 1998 11:59:41 +0200 + +egcs (1.0.99-0.1) unstable; urgency=low + + * New upstream version: pre egcs-1.1 version. + * Many changes ... for details see debian/changelog.snapshot in the + source package. + * New packages libstdc++2.9 and libstdc++2.9-dev. + * New libg++ snapshot 980731: new packages libg++2.9 and libg++2.9-dev. + * New gpc snapshot gpc-980729: new package gpc. + * Uses debhelper 1.1 + + -- Matthias Klose Mon, 10 Aug 1998 13:00:27 +0200 + +egcs-snapshot (19980803-4) experimental; urgency=low + + * rebuilt debian/control. + + -- Matthias Klose Wed, 5 Aug 1998 08:51:47 +0200 + +egcs-snapshot (19980803-3) experimental; urgency=low + + * debian/rules: fix installation locations of NEWS, header and + `undocumented' files. + * man pages aren't compressed for the snapshot package. + + -- Matthias Klose Tue, 4 Aug 1998 17:34:31 +0200 + +egcs-snapshot (19980803-2) experimental; urgency=low + + * debian/rules: Uses debhelper. Old in debian/rules.old. + renamed postinst, prerm files for use with debhelper. + * debian/{libg++2.9,libstdc++2.9}/postinst: call ldconfig only, + when called for configure. + * egcs-docs is architecture independent package. + * new libg++ snapshot 980731. + * installed libstdc++ api patch (still buggy). + + -- Matthias Klose Mon, 3 Aug 1998 13:20:59 +0200 + +egcs-snapshot (19980729-1) experimental; urgency=low + + * New snapshot version 19980729 from CVS archive. + * New gpc snapshot gpc-980729. + * Let gcc/configure decide about using the Haifa scheduler. + * Remove -DDEBIAN. That was needed for the security improvements with + regard to the /tmp problem. egcs-1.1 chooses another approach. + * Save test-protocol and extract gpc errors to gpc-test-summary. + * Tighten binutils dependency to 2.9.1. + * debian/rules: new build-info target + * debian/{control.in,rules}: _SO_ and BINUTILSV substitution. + * debian/rules: add dependency for debian/control. + * debian/rules: remove bin/c++filt + * TODO: next version will use debhelper; the unorganized moving of + files becomes unmanageable ... + * TODO: g++ headers in stdc++ package? check! + + -- Matthias Klose Thu, 30 Jul 1998 12:10:20 +0200 + +egcs-snapshot (19980721-1) experimental; urgency=low + + * Unreleased. Infinite loops in executables made by gpc. + + -- Matthias Klose Wed, 22 Jul 1998 18:07:20 +0200 + +egcs-snapshot (19980715-1) experimental; urgency=low + + * New snapshot version from CVS archive. + * New gpc snapshot gpc-980715. + * New libg++ version libg++-2.8.2-980708. Changed versioning + schema for library. The major versions of libc, libstdc++ and the + g++ interface are coded in the library name. Use this new schema, + but provide a symlink to our previous schema, since the library + seems to be binary compatible. + * [debian/rules]: Fixed bug in build target, when bootstrap returns + with an error + + -- Matthias Klose Wed, 15 Jul 1998 10:55:05 +0200 + +egcs-snapshot (19980701-1) experimental; urgency=low + + * New snapshot version from CVS archive. + Two check programs in libg++ had to be manually killed to finish the + testsuite (tBag and tSet). + * New gpc snapshot gpc-980629. + * Incorporated debian/rules changes from egcs-1.0.3a-0.5 (but don't remove + gcc/cp/parse.c gcc/c-parse.c gcc/c-parse.y gcc/objc/objc-parse.c + gcc/objc/objc-parse.y, since these files are part of the release). + * Disable the -DMKTEMP_EACH_FILE -DHAVE_MKSTEMP -DDEBIAN flags for the + snapshot. egcs-1.1 will have another solution. + * Don't bootstrap the snapshot with -fno-force-mem. Internal compiler + error :-( + * libf2c.a and f2c.h have changed names to libg2c.a and g2c.h and + have moved again into the gcc-lib dir. They are installed under + libg2c.a and g2c.h. Is it necessary to provide links f2c -> g2c ? + * debian/rules: reflect change of build dir of libraries. + + -- Matthias Klose Wed, 2 Jul 1998 13:15:28 +0200 + +egcs-snapshot (19980628-0.1) experimental; urgency=low + + * New upstream snapshot version. + * Non-maintainer upload; Matthias appears to be absent currently. + * Updated shlibs. + * Merged changes from regular egcs: + * [debian/control] Tightened dependency on binutils to 2.8.1.0.23 or + newer, as according to INSTALL/SPECIFIC PowerPC (and possibly Sparc) + need this. + * [debian/rules] Clean up some generated files outside builddir, + so the .diff.gz becomes smaller. + * [debian/rules] Partial sync/update with the one for the regular egcs + version. + * [debian/rules] Make gcc/p/configure executable. + + -- J.H.M. Dassen (Ray) Wed, 1 Jul 1998 07:12:15 +0200 + +egcs (1.0.3a-0.6) frozen unstable; urgency=low + + * Some libg++ development files were in libstdc++2.8-dev rather than + libg++2.8-dev. Fixed this and dealt with upgrading from the earlier + versions (fixes #23908; this bug is not marked release-critical, but + is annoying and can be quite confusing for users. Therefore, I think + this fix should go in 2.0). + + -- J.H.M. Dassen (Ray) Tue, 30 Jun 1998 11:10:14 +0200 + +egcs (1.0.3a-0.5) frozen unstable; urgency=low + + * Fixed location of .hP files (Fixes #23448). + * [debian/rules] simplified extraction of the files for libg++2.8-dev. + + -- J.H.M. Dassen (Ray) Wed, 17 Jun 1998 09:33:41 +0200 + +egcs (1.0.3a-0.4) frozen unstable; urgency=low + + * [gcc/gcc.c] There is one call to choose_temp_base for determining the + tempdir to be used only; #ifdef HAVE_MKSTEMP delete the tempfile created + as a side effect. (fixes #23123 for egcs). + * [gcc/collect2.c] There's still a vulnerability here; I don't see how + I can fix it without leaving behind tempfiles though. + * [debian/control] Tightened dependency on binutils to 2.8.1.0.23 or + newer, as according to INSTALL/SPECIFIC PowerPC (and possibly Sparc) + need this. + * [debian/rules] Clean up some generated files outside builddir, so the + .diff.gz becomes smaller. + + -- J.H.M. Dassen (Ray) Sat, 13 Jun 1998 09:06:52 +0200 + +egcs-snapshot (19980608-1) experimental; urgency=low + + * New snapshot version. + + -- Matthias Klose Tue, 9 Jun 1998 14:07:44 +0200 + +egcs (1.0.3a-0.3) frozen unstable; urgency=high (security fixes) + + * [gcc/toplev.c] set flag_force_mem to 1 at optimisation level 3 or higher. + This works around #17768 which is considered release-critical. + * Changes by Matthias: + * [debian/README] Documentation of the compiler situation for Objective C. + * [debian/rules, debian/control.*] Generate control file from a master + file. + * [debian/rules] Updates for Pascal and Fortran parts; brings it in sync + with the one for the egcs snapshots. + * Use the recommended settings LDFLAGS=-s CFLAGS= BOOT_CFLAGS='-O2'. + * Really compile -DMKTEMP_EACH_FILE -DHAVE_MKSTEMP (really fixes #19453 + for egcs). + * [gcc/gcc.c] A couple of temp files weren't marked for deletion. + + -- J.H.M. Dassen (Ray) Sun, 31 May 1998 22:56:22 +0200 + +egcs (1.0.3a-0.2) frozen unstable; urgency=high (security fixes) + + * Security improvements with regard to the /tmp problem + (gcc opens predictably named files in TMPDIR which can be abused via + symlinks) (Fixes #19453 for egcs). + * Compile -DMKTEMP_EACH_FILE to ensure the %u name is generated randomly + every time; affects gcc/gcc.c . + * [gcc/choose-temp.c, libiberty/choose-temp.c]: use mktemp(3) if compiled + -DUSE_MKSTEMP . + * Security improvements: don't use the result of choose_temp_base in a + predictable fashion. + [gcc/gcc.c]: + * @c, @objective-c: use random name rather then tempbasename.i for + intermediate preprocessor output (%g.i -> %d%u). + * @c, @objective-c: use random name rather then tempbasename.s for + intermediate compiler output (%g.s -> %d%u). + * @c, @objective-c, @cpp-output, @assembler-with-cpp: switched + "as [-o output file] " to + "as [-o output file]". + * @c, @objective-c, @assembler-with-cpp: use previous random name + (cc1|cpp output) rather then tempbasename.s for intermediate assembler + input (%g.s -> %U) + [gcc/f/lang-specs.h]: + * @f77-cpp-input: use random name rather then tempbasename.i for + intermediate cpp output (%g.i -> %d%u). + * @f77-cpp-input: use previous random name (cpp output) rather than + tempbasename.i for f771 input (%g.i -> %U). + * @f77-cpp-input: switched + "as [-o output file] " to + "as [-o output file]". + * @f77-cpp-input: use random name rather then tempbasename.s for + intermediate compiler output (%g.s -> %d%u). + * @ratfor: use random name rather then tempbasename.i for + intermediate ratfor output (%g.f -> %d%u). + * @ratfor: use previous random name (ratfor output) rather than + tempbasename.i for f771 input (%g.f -> %U). + * @ratfor: use random name rather then tempbasename.s for + intermediate compiler output (%g.s -> %d%u). + * @ratfor: switched + "as [-o output file] " to + "as [-o output file]". + * @ratfor: use previous random name + (ratfor output) rather then tempbasename.s for intermediate assembler + input (%g.s -> %U). + * @f77: use random name rather then tempbasename.s for + intermediate ratfor output (%g.f -> %d%u). + * @ratfor: use previous random name (ratfor output) rather than + tempbasename.i for f771 input (%g.f -> %U). + * @ratfor: use random name rather then tempbasename.s for + intermediate compiler output (%g.s -> %d%u). + * @ratfor: switched + "as [-o output file] " to + "as [-o output file]". + * @ratfor: use previous random name + (ratfor output) rather then tempbasename.s for intermediate assembler + input (%g.s -> %U). + * @f77: use random name rather then tempbasename.s for + intermediate compiler output (%g.s -> %d%u). + * @f77: switched + "as [-o output file] " to + "as [-o output file]". + * @ratfor: use random name rather then tempbasename.s for + intermediate compiler output (%g.s -> %U). + * Run the testsuite (this requires the dejagnu package in experimental; + unfortunately, it is difficult to distinguish this version from the one + in frozen). + if possible, and log the results in warn_summary and bootstrap-summary. + * [gcc/choose-temp.c, libiberty/choose-temp.c]: s|returh|return| in + comment. + * Added notes on the Debian compiler setup [debian/README] to the + development packages. + * Matthias: + * [libg++/etc/lf/Makefile.in] Replaced "-ltermcap" by "-lncurses". + * [debian/rules] Updated so it can be used for both egcs releases and + snapshots easily; added support for the GNU Pascal Compiler gpc. + * [contrib/test_summary, contrib/warn_summary] Added from CVS. + * Run compiler checks and include results in /usr/doc/. + * Updates to the README. + * [debian/rules] Use assignments to speed up startup. + * [debian/rules] Show the important variables at the start of the build + process. + * [debian/control.secondary] Added a dependency of gobjc on egcc on + architectures where egcs provides the secondary compiler, as + /usr/bin/egcc is the compiler driver for gobjc. (Fixes #22829). + * [debian/control.*] Bumped Standards-Version; used shorter version + numbers in the dependency relationships (esthetic difference only); + fixed typo. + + -- J.H.M. Dassen (Ray) Tue, 26 May 1998 21:47:41 +0200 + +egcs-snapshot (19980525-1) experimental; urgency=low + + * New snapshot version. + + -- Matthias Klose Tue, 26 May 1998 18:04:06 +0200 + +egcs-snapshot (19980517-1) experimental; urgency=low + + * "Initial" release of the egcs-snapshot package; many debian/* files + derived from the egcs-1.0.3a-0.1 package (maintained by Galen Hazelwood + , NMU's by J.H.M. Dassen (Ray) ) + * The egcs-snapshot packages can coexist with the packages of the + egcs release. Package names have a '-ss' appended. + * All packages are installed in a separate tree (/usr/lib/egcs-ss following + the FHSS). + * Made all snapshot packages extra, all snapshot packages conflict + with correspondent egcs packages, which are newer than the snapshot. + * Included libg++-2.8.1-980505. + * Included GNU Pascal (gpc-980511). + * Haifa scheduler enabled for all snapshot packages. + * Run compiler checks and include results in /usr/doc/. + * Further information in /usr/doc//README.snapshot. + + -- Matthias Klose Wed, 20 May 1998 11:14:06 +0200 + +egcs (1.0.3a-0.1) frozen unstable; urgency=low + + * New upstream release egcs-2.90.29 980515 (egcs-1.0.3 release) + (we were using 1.0.3-prerelease). This includes the Haifa patches + we had since 1.0.3-0.2 and the gcc/objc/thr-posix.c patch we had + since 1.0.3-0.1; the differences with 1.0.3-prerelease + patches + we had is negligable. + * iostream info documentation was in the wrong package (libg++2.8-dev). + Now it's in libstdc++2.8-dev. (Thanks to Jens Rosenboom for bringing + this to my attention). As 1.0.3-0.3 didn't make it out of Incoming, + I'm not adding "Replaces:" for this; folks who had 1.0.3-0.3 installed + already know enough to use --force-overwrite. + * [gcc/objc/objc-act.c] Applied patch Matthias Klose supplied me with that + demangles Objective C method names in gcc error messages. + * Explicitly disable Haifa scheduling on Alpha, to make it easier to use + this package's diff with egcs snapshots, which may turn on Haifa + scheduling even though it is still unstable. (Requested by Chris Chimelis) + * Don't run "configure" again if builddir already exists (makes it faster + to restart builds in case one is hacking internals). Requested by + Johnnie Ingram. + * [gcc/gbl-ctors.h] Don't use extern declaration for atexit on glibc 2.1 + and higher (the prototype has probably changed; having the declaration + broke Sparc compiles). + * [debian/rules] Determine all version number automatically (from the + version string in gcc/version.c). + * [debian/copyright] Updated FTP locations; added text about libg++ (fixes + #22465). + + -- J.H.M. Dassen (Ray) Sat, 16 May 1998 17:41:44 +0200 + +egcs (1.0.3-0.3) frozen unstable; urgency=low + + * Made an "egcs-doc" package containing documentation for egcs (e)gcc, + g++, gobjc, so that administrators can choose whether to have this + documenation or the documentation that comes with the GNU gcc package. + Dependency on this is Recommends: on architectures where egcs provides + the primary C compiler; Suggests: on the others (where GNU gcc is still + the primary C compiler). + * Use the g++ FAQ from gcc/cp rather than libg++, as that version is more + up to date. + * Added iostream info documentation to libstdc++2.8-dev. + + -- J.H.M. Dassen (Ray) Wed, 13 May 1998 08:46:10 +0200 + +egcs (1.0.3-0.2) frozen unstable; urgency=low + + * Added libg++ that works with egcs, found at + ftp://ftp.yggdrasil.com/private/hjl/libg++-2.8.1-980505.tar.gz + (fixes #20587 (Severity: important)). + * The "libg++" and "libg++-dev" virtual packages now refer to the GNU + extensions. + * Added the g++ FAQ that comes with libg++ to the g++ package. + * libg++/Makefile.in: added $(srcdir) to rule for g++FAQ.info so that it + builds OK in builddir. + * Added -D__i386__ to the cpp predefines on intel. + * Patches Matthias supplied me with: + * Further 1.0.3 prerelease patches from CVS. + This includes patches to the Haifa scheduler. Alpha porters, please + check if this makes the Haifa scheduler OK again. + * Objective C patches from CVS. + + -- J.H.M. Dassen (Ray) Fri, 8 May 1998 14:43:20 +0200 + +egcs (1.0.3-0.1) frozen unstable; urgency=low (high for maintainers that use objc) + + * bug fixes only in new upstream version + * Applied patches from egcs CVS archive (egcs_1_03_prerelease) + (see gcc/ChangeLog in the egcs source package). + * libstdc++2.8-dev no longer Provides: libg++-dev (fixes #21153). + * libstdc++2.8-dev now Conflicts: libg++27-dev (bo), + libg++272-dev (hamm) [regular packages] rather than + Conflicts: libg++-dev [virtual package] to prepare the way for "libg++" + to be used as a virtual package for a new libg++ package (i.e. an up to + date one, which not longer contains libstdc++, but only the GNU + extensions) that is compatible with the egcs g++ packages. Such a package + isn't available yet. Joel Klecker tried building libg++2.8.1.1a within + egcs's libstdc++ setup, but it appears to need true gcc 2.8.1 . + * Filed Severity: important bugs against wxxt1-dev (#21707) because these + still depend on libg++-dev, which is removed in this version. + A fixed libsidplay1-dev has already been uploaded. + * libstdc++2.8 is now Section: base and Priority: required (as dselect is + linked against it). + * Disabled Haifa scheduling on Alpha again; Chris Chimelis reported + that this caused problems on some machines. + * [gcc/extend.texi] + ftp://maya.idiap.ch/pub/tmb/usenix88-lexic.ps.Z is no longer available; + use http://master.debian.org/~karlheg/Usenix88-lexic.pdf . + (fixes the egcs part of #20002). + * Updated Standards-Version. + * Changed chmod in debian/rules at Johnie Ingram's request. + * Rather than hardwire the Debian part of the packages' version number, + extract it from debian/changelog . + * Use gcc/objc/thr-posix.c from 980418 egcs snapshot to make objc work. + (Fixes #21192). + * Applied workaround for the GNUstep packages on sparc systems. + See README.sparc (on sparc packages only) in the doc directory. + This affects the other compilers as well. + * Already done in 1.0.2-0.7: the gobjc package now provides a virtual + package objc-compiler. + + -- J.H.M. Dassen (Ray) Tue, 28 Apr 1998 12:05:28 +0200 + +egcs (1.0.2-0.7) frozen unstable; urgency=low + + * Separated out Objective-C compiler. + * Applied patch from http://www.cygnus.com/ml/egcs/1998-Apr/0614.html + + -- Matthias Klose Fri, 17 Apr 1998 10:25:48 +0200 + +egcs (1.0.2-0.6) frozen unstable; urgency=low + + * Due to upstream changes (libg++ is now only the GNU specific C++ + classes, and is no longer maintained; libstdc++ contains the C++ + standard library, including STL), the virtual "libg++-dev" + package's meaning has become confusing. Therefore, new or updated + packages should no longer use the virtual "libg++-dev" package. + * Corrected g++'s Recommends to libstdc++2.8-dev (>=2.90.27-0.1). + The previous version had Recommends: libstdc++-dev (>=2.90.27-0.1) + which doesn't work, as libstc++-dev is a virtual package. + * Bumped Standards-Version. + + -- J.H.M. Dassen (Ray) Tue, 14 Apr 1998 11:52:08 +0200 + +egcs (1.0.2-0.5) frozen unstable; urgency=low (high for maintainers of packages that use libstdc++) + + * Modified shlibs file for libstdc++ to generate versioned dependencies, + as it is not link compatible with the 1.0.1-x versions in + project/experimental. (Fixes #20247, #20033) + Packages depending on libstd++ should be recompiled to fix their + dependencies. + * Strenghtened g++'s Recommends: libstdc++-dev to the 1.0.2 version or + newer. + * Fixed problems with the unknown(7) symlink for gcov. + * Reordering links now works. + + -- Adam Heath Sun, 12 Apr 1998 13:09:30 -0400 + +egcs (1.0.2-0.4) frozen unstable; urgency=low + + * Unreleased. This is the version Adam Heath received from me. + * Replaces: gcc (<= 2.7.2.3-3) so that the overlap with the older gcc + packages (including bo's gcc_2.7.2.1-8) is handled properly + (fixes #19931, #19672, #20217, #20593). + * Alpha architecture (fixes #20875): + * Patched gcc/config/alpha/linux.h for the gmon functions to operate + properly. + * Made egcs the primary C compiler. + * Enabled Hafia scheduling. + * Lintian-detected problems: + * E: libstdc++2.8: ldconfig-symlink-before-shlib-in-deb usr/lib/libstdc++.so.2.8 + * E: egcc: binary-without-manpage gcov + Reported as wishlist bug; added link to undocumented(7). + * W: libstdc++2.8: non-standard-executable-perm usr/lib/libstdc++.so.2.8.0 0555 + * E: libstdc++2.8: shlib-with-executable-bit usr/lib/libstdc++.so.2.8.0 0555 + + -- J.H.M. Dassen (Ray) Fri, 10 Apr 1998 14:46:46 +0200 + +egcs (1.0.2-0.3) frozen unstable; urgency=low + + * Really fixed dependencies. + + -- J.H.M. Dassen (Ray) Mon, 30 Mar 1998 11:30:26 +0200 + +egcs (1.0.2-0.2) frozen unstable; urgency=low + + * Fixed dependencies. + + -- J.H.M. Dassen (Ray) Sat, 28 Mar 1998 13:58:58 +0100 + +egcs (1.0.2-0.1) frozen unstable; urgency=low + + * New upstream version; it now has -Di386 in CPP_PREDEFINES. + * Only used the debian/* patches from 1.0.1-2; the rest of it appears + to be in 1.0.2 already. + + -- J.H.M. Dassen (Ray) Fri, 27 Mar 1998 11:47:14 +0100 + +egcs (1.0.1-2) unstable; urgency=low + + * Integrated pre-release 1.0.2 patches + * Split out g++ + * egcs may now provide either the primary or secondary C compiler + + -- Galen Hazelwood Sat, 14 Mar 1998 14:15:32 -0700 + +egcs (1.0.1-1) unstable; urgency=low + + * New upstream version + * egcs is now the standard Debian gcc! + * gcc now provides c-compiler (#15248 et al.) + * g77 now provides fortran77-compiler + * g77 dependencies now correct (#16991) + * /usr/doc/gcc/changelog.gz now has correct permissions (#16139) + + -- Galen Hazelwood Sat, 7 Feb 1998 19:22:30 -0700 + +egcs (1.0-1) experimental; urgency=low + + * First official release + + -- Galen Hazelwood Thu, 4 Dec 1997 16:30:11 -0700 + +egcs (970917-1) experimental; urgency=low + + * New upstream snapshot (There's a lot of stuff here as well, including + a new libstdc++, but it _still_ won't build...) + * eg77 driver now works properly + + -- Galen Hazelwood Wed, 17 Sep 1997 20:44:29 -0600 + +egcs (970904-1) experimental; urgency=low + + * New upstream snapshot + + -- Galen Hazelwood Sun, 7 Sep 1997 18:25:06 -0600 + +egcs (970814-1) experimental; urgency=low + + * Initial packaging (of initial snapshot!) + + -- Galen Hazelwood Wed, 20 Aug 1997 00:36:28 +0000 + +gcc272 (2.7.2.3-12) unstable; urgency=low + + * Compiled on a glibc-2.0 based system. + * Reflect move of manpage to /usr/share in gcc.postinst as well. + * Moved gcc272-docs to section doc, priority optional. + + -- Matthias Klose Sat, 28 Aug 1999 13:42:13 +0200 + +gcc272 (2.7.2.3-11) unstable; urgency=low + + * Follow Debian policy for GNU system type (fixes #42657). + * config/i386/linux.h: Remove %[cpp_cpu] from CPP_SPEC. Stops gcc-2.95 + complaining about obsolete spec operators (using gcc -V 2.7.2.3). + Patch suggested by Zack Weinberg . + + -- Matthias Klose Sun, 15 Aug 1999 20:12:21 +0200 + +gcc272 (2.7.2.3-10) unstable; urgency=low + + * Renamed source package to gcc272. The egcs source package is renamed + to gcc, because it's now the "official" GNU C compiler. + * Changed maintainer address to "Debian GCC maintainers". + * Install info and man stuff to /usr/share. + + -- Matthias Klose Thu, 27 May 1999 12:29:23 +0200 + +gcc (2.7.2.3-9) unstable; urgency=low + + * debian/{postinst,prerm}-doc: handle gcc272.info, not gcc.info. + Fixes #36306. + + -- Matthias Klose Tue, 20 Apr 1999 07:32:58 +0200 + +gcc (2.7.2.3-8) unstable; urgency=low + + * Make gcc-2.7 the secondary compiler. Rename gcc package to gcc272. + On i386, sparc and m68k, this package is compiled against glibc2.0. + * The cpp package is built from the egcs source package. + + -- Matthias Klose Mon, 29 Mar 1999 22:48:50 +0200 + +gcc (2.7.2.3-7) frozen unstable; urgency=low + + * Separated out ObjC compiler to gobjc27 package. + * Changed maintainer address. + * Synchronized README.Debian with egcs-1.1.1-3. + + -- Matthias Klose Tue, 29 Dec 1998 19:05:26 +0100 + +gcc (2.7.2.3-6) frozen unstable; urgency=low + + * Link with -lc on i386, m68k, sparc, when building shared libraries + (fixes #25122). + + -- Matthias Klose Thu, 3 Dec 1998 12:12:12 +0200 + +gcc (2.7.2.3-5) frozen unstable; urgency=low + + * Updated maintainer info. + * Updated Standards-Version; made lintian-clean. + * gcc-docs can coexist with the latest egcs-docs, so added (<= version) to + the Conflicts. + * Updated the README and renamed it to README.Debian . + * Put a reference to /usr/doc/gcc/README.Debian in the info docs. + * Updated description of g++272 . + * Clean up generated info files, to keep the diff small. + + -- J.H.M. Dassen (Ray) Tue, 17 Nov 1998 20:05:59 +0100 + +gcc (2.7.2.3-4.8) frozen unstable; urgency=high + + * Non-maintainer release + * Fix type in extended description + * Removed wrong test in postinst + * Add preinst to clean up some stuff from an older gcc package properly + and stop man complaining about dangling symlinks + + -- Wichert Akkerman Fri, 17 Jul 1998 18:48:32 +0200 + +gcc (2.7.2.3-4.7) frozen unstable; urgency=high + + * Really fixed gcc-docs postinst (Fixes #23470), so that `gcc-docs' + becomes installable. + + -- J.H.M. Dassen (Ray) Mon, 15 Jun 1998 07:53:40 +0200 + +gcc (2.7.2.3-4.6) frozen unstable; urgency=high + + * [gcc.c] There is one call to choose_temp_base for determining the + tempdir to be used only; + #ifdef HAVE_MKSTEMP delete the tempfile created as a side effect. + (fixes #23123 for gcc). + * gcc-docs postinst was broken (due to a broken line) (fixes #23391, #23401). + * [debian/control] description for gcc-docs said `egcs' where it should have + said `gcc' (fixes #23396). + + -- J.H.M. Dassen (Ray) Thu, 11 Jun 1998 12:48:50 +0200 + +gcc (2.7.2.3-4.5) frozen unstable; urgency=high + + * The previous version left temporary files behind, as they were not + marked for deletion afterwards. + + -- J.H.M. Dassen (Ray) Sun, 31 May 1998 22:49:14 +0200 + +gcc (2.7.2.3-4.4) frozen unstable; urgency=high (security fixes) + + * Security improvements with regard to the /tmp problem + (gcc opens predictably named files in TMPDIR which can be abused via + symlinks) (Fixes #19453 for gcc): + * Compile -DMKTEMP_EACH_FILE to ensure the %u name is generated randomly + every time; affects gcc/gcc.c . + * [cp/g++.c, collect2.c, gcc.c] If compiled -DHAVE_MKSTEMP use mkstemp(3) + rather than mktemp(3). + * Security improvements: don't use the result of choose_temp_base in a + predictable fashion. + [gcc.c]: + * @c, @objective-c: use random name rather then tempbasename.i for + intermediate preprocessor output (%g.i -> %d%u). + * @c, @objective-c: use random name rather then tempbasename.s for + intermediate compiler output (%g.s -> %d%u). + * @c, @objective-c, @cpp-output, @assembler-with-cpp: switched + "as [-o output file] " to + "as [-o output file]". + * @c, @objective-c, @assembler-with-cpp: use previous random name + (cc1|cpp output) rather then tempbasename.s for intermediate assembler + input (%g.s -> %U) + [f/lang-specs.h]: + * @f77-cpp-input: use random name rather then tempbasename.i for + intermediate cpp output (%g.i -> %d%u). + * @f77-cpp-input: use previous random name (cpp output) rather than + tempbasename.i for f771 input (%g.i -> %U). + * @f77-cpp-input: switched + "as [-o output file] " to + "as [-o output file]". + * @f77-cpp-input: use random name rather then tempbasename.s for + intermediate compiler output (%g.s -> %d%u). + * @ratfor: use random name rather then tempbasename.i for + intermediate ratfor output (%g.f -> %d%u). + * @ratfor: use previous random name (ratfor output) rather than + tempbasename.i for f771 input (%g.f -> %U). + * @ratfor: use random name rather then tempbasename.s for + intermediate compiler output (%g.s -> %d%u). + * @ratfor: switched + "as [-o output file] " to + "as [-o output file]". + * @ratfor: use previous random name + (ratfor output) rather then tempbasename.s for intermediate assembler + input (%g.s -> %U). + * @f77: use random name rather then tempbasename.s for + intermediate ratfor output (%g.f -> %d%u). + * @ratfor: use previous random name (ratfor output) rather than + tempbasename.i for f771 input (%g.f -> %U). + * @ratfor: use random name rather then tempbasename.s for + intermediate compiler output (%g.s -> %d%u). + * @ratfor: switched + "as [-o output file] " to + "as [-o output file]". + * @ratfor: use previous random name + (ratfor output) rather then tempbasename.s for intermediate assembler + input (%g.s -> %U). + * @f77: use random name rather then tempbasename.s for + intermediate compiler output (%g.s -> %d%u). + * @f77: switched + "as [-o output file] " to + "as [-o output file]". + * @ratfor: use random name rather then tempbasename.s for + intermediate compiler output (%g.s -> %U). + + -- J.H.M. Dassen (Ray) Sat, 30 May 1998 17:27:03 +0200 + +gcc (2.7.2.3-4.3) frozen unstable; urgency=high + + * The "alpha" patches from -4 affected a lot more than alpha support, + and in all likeliness broke compilation of libc6 2.0.7pre3-1 + and 2.0.7pre1-4 . I removed them by selective application of the + diff between -4 and -4. (should fix #22292). + * Fixed reference to the trampolines paper (fixes #20002 for Debian; + this still needs to be forwarded). + * This is for frozen too. (obsoletes #22390 (request to move -4.2 to + frozen)). + * Split of gcc-docs package, so that the gcc can be succesfully installed + on systems that have egcs-docs installed. + * Added the README on the compiler situation that's already in the egcs + packages. + * Use the recommended settings LDFLAGS=-s CFLAGS= BOOT_CFLAGS='-O2'. + + -- J.H.M. Dassen (Ray) Thu, 28 May 1998 20:03:59 +0200 + +gcc (2.7.2.3-4.2) unstable; urgency=low + + * Still for unstable, as I have received no feedback about the g++272 + package yet. + * gcc now Provides: objc-compiler . + * Clean up /etc/alternatives/{g++,g++.1.gz} if they are dangling. + (fixes #19765, #20563) + + -- J.H.M. Dassen (Ray) Wed, 22 Apr 1998 12:40:45 +0200 + +gcc (2.7.2.3-4.1) unstable; urgency=low + + * Bumped Standards-Version. + * Forked off a g++272 package (e.g. for code that uses the GNU extensions + in libg++); for now this is in "unstable" only; feedback appreciated. + * Some cleanup (lintian): permissions, absolute link, gzip manpage. + + -- J.H.M. Dassen (Ray) Fri, 17 Apr 1998 13:05:25 +0200 + +gcc (2.7.2.3-4) unstable; urgency=low + + * Added alpha patches + * Only build C and objective-c compilers, split off g++ + + -- Galen Hazelwood Sun, 8 Mar 1998 21:16:39 -0700 + +gcc (2.7.2.3-3) unstable; urgency=low + + * Added patches for m68k + * Added patches for sparc (#13968) + + -- Galen Hazelwood Fri, 17 Oct 1997 18:25:21 -0600 + +gcc (2.7.2.3-2) unstable; urgency=low + + * Added g77 support (g77 0.5.21) + + -- Galen Hazelwood Wed, 10 Sep 1997 18:44:54 -0600 + +gcc (2.7.2.3-1) unstable; urgency=low + + * New upstream version + * Now using pristine source + * Removed misplaced paragraph in cpp.texi (#10877) + * Fix security bug for temporary files (#5298) + * Added Suggests: libg++-dev (#12335) + * Patched objc/thr-posix.c to support conditions (#12502) + + -- Galen Hazelwood Mon, 8 Sep 1997 12:20:07 -0600 + +gcc (2.7.2.2-7) unstable; urgency=low + + * Made cc and c++ managed through alternates mechanism (for egcs) + + -- Galen Hazelwood Tue, 19 Aug 1997 22:37:03 +0000 + +gcc (2.7.2.2-6) unstable; urgency=low + + * Tweaked Objective-C thread support (#11069) + + -- Galen Hazelwood Wed, 9 Jul 1997 11:56:57 -0600 + +gcc (2.7.2.2-5) unstable; urgency=low + + * More updated m68k patches + * Now conflicts with libc5-dev (#10006, #10112) + * More strict Depends: cpp, prevents version mismatch (#9954) + + -- Galen Hazelwood Thu, 19 Jun 1997 01:29:02 -0600 + +gcc (2.7.2.2-4) unstable; urgency=low + + * Moved to unstable + * Temporarily removed fortran support (waiting for new g77) + * Updated m68k patches + + -- Galen Hazelwood Fri, 9 May 1997 13:35:14 -0600 + +gcc (2.7.2.2-3) experimental; urgency=low + + * Built against libc6 (fixes bug #8511) + + -- Galen Hazelwood Fri, 4 Apr 1997 13:30:10 -0700 + +gcc (2.7.2.2-2) experimental; urgency=low + + * Fixed configure to build crt{begin,end}S.o on i386 + + -- Galen Hazelwood Tue, 11 Mar 1997 16:15:02 -0700 + +gcc (2.7.2.2-1) experimental; urgency=low + + * Built for use with libc6-dev (experimental purposes only!) + * Added m68k patches from Andreas Schwab + + -- Galen Hazelwood Fri, 7 Mar 1997 12:44:17 -0700 + +gcc (2.7.2.1-7) unstable; urgency=low + + * Patched to support g77 0.5.20 + + -- Galen Hazelwood Thu, 6 Mar 1997 22:20:23 -0700 + +gcc (2.7.2.1-6) unstable; urgency=low + + * Added (small) manpage for protoize/unprotoize (fixes bug #6904) + * Removed -lieee from specs file (fixes bug #7741) + * No longer builds aout-gcc + + -- Galen Hazelwood Mon, 3 Mar 1997 11:10:20 -0700 + +gcc (2.7.2.1-5) unstable; urgency=low + + * debian/control now lists cpp in section "interpreters" + * Re-added Objective-c patches for unstable + + -- Galen Hazelwood Wed, 22 Jan 1997 10:27:52 -0700 + +gcc (2.7.2.1-4) stable unstable; urgency=low + + * Changed original source file so dpkg-source -x works + * Removed Objective-c patches (unsafe for stable) + * Built against rex's libc, so fixes placed in -3 are available to + those still using rex + + -- Galen Hazelwood Tue, 21 Jan 1997 11:11:53 -0700 + +gcc (2.7.2.1-3) unstable; urgency=low + + * New (temporary) maintainer + * Updated to new standards and source format + * Integrated aout-gcc into gcc source package + * Demoted aout-gcc to Priority "extra" + * cpp package description more clear (fixes bug #5428) + * Removed cpp "Replaces: gcc" (fixes bug #5762) + * Minor fix to invoke.texi (fixes bug #2909) + * Added latest Objective-C patches for GNUstep people (fixes bug #4657) + + -- Galen Hazelwood Sun, 5 Jan 1997 09:57:36 -0700 diff --git a/debian/compat b/debian/compat new file mode 100644 index 0000000..ec63514 --- /dev/null +++ b/debian/compat @@ -0,0 +1 @@ +9 diff --git a/debian/control b/debian/control new file mode 100644 index 0000000..409a0c1 --- /dev/null +++ b/debian/control @@ -0,0 +1,1013 @@ +Source: gcc-8 +Section: devel +Priority: optional +Maintainer: Debian GCC Maintainers +Uploaders: Matthias Klose +Standards-Version: 4.5.1 +Build-Depends: debhelper (>= 9.20141010), dpkg-dev (>= 1.17.14), g++-multilib [amd64 i386 kfreebsd-amd64 mips mips64 mips64el mips64r6 mips64r6el mipsel mipsn32 mipsn32el mipsn32r6 mipsn32r6el mipsr6 mipsr6el powerpc ppc64 s390 s390x sparc sparc64 x32] , + libc6.1-dev (>= 2.13-5) [alpha ia64] | libc0.3-dev (>= 2.13-5) [hurd-i386] | libc0.1-dev (>= 2.13-5) [kfreebsd-i386 kfreebsd-amd64] | libc6-dev (>= 2.13-5), libc6-dev (>= 2.13-31) [armel armhf], libc6-dev-amd64 [i386 x32], libc6-dev-sparc64 [sparc], libc6-dev-sparc [sparc64], libc6-dev-s390 [s390x], libc6-dev-s390x [s390], libc6-dev-i386 [amd64 x32], libc6-dev-powerpc [ppc64], libc6-dev-ppc64 [powerpc], libc0.1-dev-i386 [kfreebsd-amd64], lib32gcc-s1 [amd64 ppc64 kfreebsd-amd64 mipsn32 mipsn32el mips64 mips64el mipsn32r6 mipsn32r6el mips64r6 mips64r6el s390x sparc64 x32], libn32gcc-s1 [mips mipsel mips64 mips64el mipsr6 mipsr6el mips64r6 mips64r6el], lib64gcc-s1 [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], libx32gcc-s1 [amd64 i386], libc6.1-dbg [alpha ia64] | libc0.3-dbg [hurd-i386] | libc0.1-dbg [kfreebsd-i386 kfreebsd-amd64] | libc6-dbg, + kfreebsd-kernel-headers (>= 0.84) [kfreebsd-any], linux-libc-dev [m68k], + m4, libtool, 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 (>= 0.20), libmpc-dev (>= 1.0), libmpfr-dev (>= 3.0.0-9~), libgmp-dev (>= 2:5.0.1~), lib32z1-dev [amd64 kfreebsd-amd64], lib64z1-dev [i386], + dejagnu [!m68k !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: 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: 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 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: 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 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: 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 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 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: 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 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: 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: 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 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: 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: 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: 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: 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: fixincludes +Architecture: any +Priority: optional +Depends: gcc-8-base (= ${gcc:Version}), gcc-8 (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +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. + +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). diff --git a/debian/control.m4 b/debian/control.m4 new file mode 100644 index 0000000..5049475 --- /dev/null +++ b/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.5.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 + +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 +')`'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 cdev + +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(`gompnvptx',` +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 gompnvptx +')`'dnl olnvptx + +ifdef(`TARGET',`',`dnl +ifenabled(`libnof',` +#Package: gcc`'PV-nof +#Architecture: powerpc +#Priority: PRI(optional) +#Depends: BASEDEP, ${shlibs:Depends}ifenabled(`cdev',`, gcc`'PV (= ${gcc:Version})'), ${misc:Depends} +#Conflicts: gcc-3.2-nof +#BUILT_USING`'dnl +#Description: GCC no-floating-point gcc libraries (powerpc) +# These are versions of basic static libraries such as libgcc.a compiled +# with the -msoft-float option, for CPUs without a floating-point unit. +')`'dnl libnof +')`'dnl + +ifenabled(`source',` +Package: gcc`'PV-source +Multi-Arch: foreign +Architecture: all +Priority: PRI(optional) +Depends: make, quilt, patchutils, sharutils, gawk, lsb-release, AUTO_BUILD_DEP + ${misc:Depends} +Description: Source of the GNU Compiler Collection + This package contains the sources and patches which are needed to + build the GNU Compiler Collection (GCC). +')`'dnl source +dnl +')`'dnl gcc-X.Y +dnl last line in file diff --git a/debian/copyright b/debian/copyright new file mode 100644 index 0000000..0aaea6c --- /dev/null +++ b/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. diff --git a/debian/copyright.in b/debian/copyright.in new file mode 100644 index 0000000..05755e9 --- /dev/null +++ b/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. diff --git a/debian/cpp-BV-CRB.preinst.in b/debian/cpp-BV-CRB.preinst.in new file mode 100644 index 0000000..408889b --- /dev/null +++ b/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 diff --git a/debian/cpp-BV-doc.doc-base.cpp b/debian/cpp-BV-doc.doc-base.cpp new file mode 100644 index 0000000..d64e86f --- /dev/null +++ b/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@* diff --git a/debian/cpp-BV-doc.doc-base.cppint b/debian/cpp-BV-doc.doc-base.cppint new file mode 100644 index 0000000..151d319 --- /dev/null +++ b/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@* diff --git a/debian/dh_doclink b/debian/dh_doclink new file mode 100644 index 0000000..8372658 --- /dev/null +++ b/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 diff --git a/debian/dh_rmemptydirs b/debian/dh_rmemptydirs new file mode 100644 index 0000000..4a010c7 --- /dev/null +++ b/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 diff --git a/debian/dummy-man.1 b/debian/dummy-man.1 new file mode 100644 index 0000000..966d935 --- /dev/null +++ b/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. diff --git a/debian/dummy.texi b/debian/dummy.texi new file mode 100644 index 0000000..127ccaa --- /dev/null +++ b/debian/dummy.texi @@ -0,0 +1 @@ +@c This file is empty because the original one has a non DFSG free license (GFDL) diff --git a/debian/fixincludes.in b/debian/fixincludes.in new file mode 100644 index 0000000..23c6e71 --- /dev/null +++ b/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 "$@" diff --git a/debian/g++-BV-CRB.preinst.in b/debian/g++-BV-CRB.preinst.in new file mode 100644 index 0000000..b69c8f8 --- /dev/null +++ b/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 diff --git a/debian/gcc-BV-CRB.preinst.in b/debian/gcc-BV-CRB.preinst.in new file mode 100644 index 0000000..ca34796 --- /dev/null +++ b/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 diff --git a/debian/gcc-BV-doc.doc-base.gcc b/debian/gcc-BV-doc.doc-base.gcc new file mode 100644 index 0000000..106e18d --- /dev/null +++ b/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@* diff --git a/debian/gcc-BV-doc.doc-base.gccint b/debian/gcc-BV-doc.doc-base.gccint new file mode 100644 index 0000000..85f4af1 --- /dev/null +++ b/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@* diff --git a/debian/gcc-BV-doc.doc-base.gomp b/debian/gcc-BV-doc.doc-base.gomp new file mode 100644 index 0000000..69ccede --- /dev/null +++ b/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@* diff --git a/debian/gcc-BV-doc.doc-base.itm b/debian/gcc-BV-doc.doc-base.itm new file mode 100644 index 0000000..130a70f --- /dev/null +++ b/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@* diff --git a/debian/gcc-BV-doc.doc-base.qmath b/debian/gcc-BV-doc.doc-base.qmath new file mode 100644 index 0000000..bdc2d4c --- /dev/null +++ b/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@* diff --git a/debian/gcc-BV-hppa64-linux-gnu.overrides b/debian/gcc-BV-hppa64-linux-gnu.overrides new file mode 100644 index 0000000..9f7ebd0 --- /dev/null +++ b/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 diff --git a/debian/gcc-BV-multilib.overrides b/debian/gcc-BV-multilib.overrides new file mode 100644 index 0000000..545ca0e --- /dev/null +++ b/debian/gcc-BV-multilib.overrides @@ -0,0 +1 @@ +gcc-@BV@-multilib binary: binary-from-other-architecture diff --git a/debian/gcc-BV-source.overrides b/debian/gcc-BV-source.overrides new file mode 100644 index 0000000..46e8559 --- /dev/null +++ b/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 diff --git a/debian/gcc-XX-BV.1 b/debian/gcc-XX-BV.1 new file mode 100644 index 0000000..4268c41 --- /dev/null +++ b/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) diff --git a/debian/gcc-dummy.texi b/debian/gcc-dummy.texi new file mode 100644 index 0000000..b84b670 --- /dev/null +++ b/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 diff --git a/debian/gcc-snapshot.overrides b/debian/gcc-snapshot.overrides new file mode 100644 index 0000000..fad2373 --- /dev/null +++ b/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 diff --git a/debian/gcc-snapshot.prerm b/debian/gcc-snapshot.prerm new file mode 100644 index 0000000..0e3d9bb --- /dev/null +++ b/debian/gcc-snapshot.prerm @@ -0,0 +1,5 @@ +#! /bin/sh -e + +rm -f /usr/lib/gcc-snapshot/share/python/*.py[co] + +#DEBHELPER# diff --git a/debian/gcc.css b/debian/gcc.css new file mode 100644 index 0000000..35321f1 --- /dev/null +++ b/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; } diff --git a/debian/gccgo-BV-doc.doc-base b/debian/gccgo-BV-doc.doc-base new file mode 100644 index 0000000..86ce258 --- /dev/null +++ b/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@* diff --git a/debian/gen-libstdc-breaks.sh b/debian/gen-libstdc-breaks.sh new file mode 100644 index 0000000..de35a4a --- /dev/null +++ b/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 diff --git a/debian/gfortran-BV-CRB.preinst.in b/debian/gfortran-BV-CRB.preinst.in new file mode 100644 index 0000000..f6e7cfd --- /dev/null +++ b/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 diff --git a/debian/gfortran-BV-doc.doc-base b/debian/gfortran-BV-doc.doc-base new file mode 100644 index 0000000..485d458 --- /dev/null +++ b/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@* diff --git a/debian/gnat-BV-doc.doc-base.rm b/debian/gnat-BV-doc.doc-base.rm new file mode 100644 index 0000000..7957275 --- /dev/null +++ b/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@* diff --git a/debian/gnat-BV-doc.doc-base.style b/debian/gnat-BV-doc.doc-base.style new file mode 100644 index 0000000..db6dfc8 --- /dev/null +++ b/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@* diff --git a/debian/gnat-BV-doc.doc-base.ug b/debian/gnat-BV-doc.doc-base.ug new file mode 100644 index 0000000..00dedf1 --- /dev/null +++ b/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@* diff --git a/debian/gnat.1 b/debian/gnat.1 new file mode 100644 index 0000000..33a42c7 --- /dev/null +++ b/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. diff --git a/debian/lib32asan5.overrides b/debian/lib32asan5.overrides new file mode 100644 index 0000000..c0da839 --- /dev/null +++ b/debian/lib32asan5.overrides @@ -0,0 +1,2 @@ +# automake gets it wrong for the multilib build +lib32asan5 binary: binary-or-shlib-defines-rpath diff --git a/debian/lib32asan5.symbols b/debian/lib32asan5.symbols new file mode 100644 index 0000000..5e1b2ce --- /dev/null +++ b/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 diff --git a/debian/lib32gccLC.postinst b/debian/lib32gccLC.postinst new file mode 100644 index 0000000..0163e03 --- /dev/null +++ b/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# diff --git a/debian/lib32gphobos68.lintian-overrides b/debian/lib32gphobos68.lintian-overrides new file mode 100644 index 0000000..5003249 --- /dev/null +++ b/debian/lib32gphobos68.lintian-overrides @@ -0,0 +1,2 @@ +# no usable zconf.h header in lib32z1-dev +lib32gphobos68 binary: embedded-library diff --git a/debian/lib32stdc++6.symbols.amd64 b/debian/lib32stdc++6.symbols.amd64 new file mode 100644 index 0000000..bf31899 --- /dev/null +++ b/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 diff --git a/debian/lib32stdc++6.symbols.kfreebsd-amd64 b/debian/lib32stdc++6.symbols.kfreebsd-amd64 new file mode 100644 index 0000000..50f10af --- /dev/null +++ b/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 diff --git a/debian/lib32stdc++6.symbols.ppc64 b/debian/lib32stdc++6.symbols.ppc64 new file mode 100644 index 0000000..61fc768 --- /dev/null +++ b/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 diff --git a/debian/lib32stdc++6.symbols.s390x b/debian/lib32stdc++6.symbols.s390x new file mode 100644 index 0000000..bcb77f6 --- /dev/null +++ b/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 diff --git a/debian/lib32stdc++6.symbols.sparc64 b/debian/lib32stdc++6.symbols.sparc64 new file mode 100644 index 0000000..61fc768 --- /dev/null +++ b/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 diff --git a/debian/lib32stdc++CXX.postinst b/debian/lib32stdc++CXX.postinst new file mode 100644 index 0000000..0ebbeb0 --- /dev/null +++ b/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# diff --git a/debian/lib64asan5.overrides b/debian/lib64asan5.overrides new file mode 100644 index 0000000..36c2486 --- /dev/null +++ b/debian/lib64asan5.overrides @@ -0,0 +1,2 @@ +# automake gets it wrong for the multilib build +lib64asan5 binary: binary-or-shlib-defines-rpath diff --git a/debian/lib64asan5.symbols b/debian/lib64asan5.symbols new file mode 100644 index 0000000..5037f64 --- /dev/null +++ b/debian/lib64asan5.symbols @@ -0,0 +1,3 @@ +libasan.so.5 lib64asan5 #MINVER# +#include "libasan.symbols.common" +#include "libasan.symbols.64" diff --git a/debian/lib64gccLC.postinst b/debian/lib64gccLC.postinst new file mode 100644 index 0000000..f671fd6 --- /dev/null +++ b/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# diff --git a/debian/lib64gphobos68.lintian-overrides b/debian/lib64gphobos68.lintian-overrides new file mode 100644 index 0000000..2b71d9d --- /dev/null +++ b/debian/lib64gphobos68.lintian-overrides @@ -0,0 +1,2 @@ +# no usable zconf.h header in lib64z1-dev +lib64gphobos68 binary: embedded-library diff --git a/debian/lib64stdc++6.symbols.i386 b/debian/lib64stdc++6.symbols.i386 new file mode 100644 index 0000000..4b60b1e --- /dev/null +++ b/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 diff --git a/debian/lib64stdc++6.symbols.powerpc b/debian/lib64stdc++6.symbols.powerpc new file mode 100644 index 0000000..6dd040b --- /dev/null +++ b/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 diff --git a/debian/lib64stdc++6.symbols.s390 b/debian/lib64stdc++6.symbols.s390 new file mode 100644 index 0000000..1a5a960 --- /dev/null +++ b/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 diff --git a/debian/lib64stdc++6.symbols.sparc b/debian/lib64stdc++6.symbols.sparc new file mode 100644 index 0000000..f00b05a --- /dev/null +++ b/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 diff --git a/debian/lib64stdc++CXX.postinst b/debian/lib64stdc++CXX.postinst new file mode 100644 index 0000000..1c8e979 --- /dev/null +++ b/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# diff --git a/debian/libasan.symbols.16 b/debian/libasan.symbols.16 new file mode 100644 index 0000000..c6ae6da --- /dev/null +++ b/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 diff --git a/debian/libasan.symbols.32 b/debian/libasan.symbols.32 new file mode 100644 index 0000000..6ba6027 --- /dev/null +++ b/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 diff --git a/debian/libasan.symbols.64 b/debian/libasan.symbols.64 new file mode 100644 index 0000000..708f653 --- /dev/null +++ b/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 diff --git a/debian/libasan.symbols.common b/debian/libasan.symbols.common new file mode 100644 index 0000000..23f414a --- /dev/null +++ b/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 diff --git a/debian/libasan5.symbols b/debian/libasan5.symbols new file mode 100644 index 0000000..d4d580e --- /dev/null +++ b/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 diff --git a/debian/libatomic.symbols b/debian/libatomic.symbols new file mode 100644 index 0000000..f50770d --- /dev/null +++ b/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 diff --git a/debian/libcc1-0.symbols b/debian/libcc1-0.symbols new file mode 100644 index 0000000..d6ec38b --- /dev/null +++ b/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 diff --git a/debian/libgcc.symbols b/debian/libgcc.symbols new file mode 100644 index 0000000..c15e16e --- /dev/null +++ b/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 diff --git a/debian/libgcc.symbols.aeabi b/debian/libgcc.symbols.aeabi new file mode 100644 index 0000000..64e9af3 --- /dev/null +++ b/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 diff --git a/debian/libgcc2.symbols.m68k b/debian/libgcc2.symbols.m68k new file mode 100644 index 0000000..a49f0b3 --- /dev/null +++ b/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 diff --git a/debian/libgcc4.symbols.hppa b/debian/libgcc4.symbols.hppa new file mode 100644 index 0000000..0f6863d --- /dev/null +++ b/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 diff --git a/debian/libgccLC.postinst b/debian/libgccLC.postinst new file mode 100644 index 0000000..36abb94 --- /dev/null +++ b/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# diff --git a/debian/libgccjit0.symbols b/debian/libgccjit0.symbols new file mode 100644 index 0000000..a07bb32 --- /dev/null +++ b/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 diff --git a/debian/libgfortran.symbols b/debian/libgfortran.symbols new file mode 100644 index 0000000..594c01b --- /dev/null +++ b/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 diff --git a/debian/libgomp.symbols b/debian/libgomp.symbols new file mode 100644 index 0000000..4564af3 --- /dev/null +++ b/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 diff --git a/debian/libhsail-rt.symbols b/debian/libhsail-rt.symbols new file mode 100644 index 0000000..634fe59 --- /dev/null +++ b/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 diff --git a/debian/libitm.symbols b/debian/libitm.symbols new file mode 100644 index 0000000..c97c8bc --- /dev/null +++ b/debian/libitm.symbols @@ -0,0 +1,3 @@ +libitm.so.1 #PACKAGE# #MINVER# + (symver)LIBITM_1.0 4.7 + (symver)LIBITM_1.1 6 diff --git a/debian/liblsan0.symbols b/debian/liblsan0.symbols new file mode 100644 index 0000000..ae56c34 --- /dev/null +++ b/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 diff --git a/debian/libmpx.symbols b/debian/libmpx.symbols new file mode 100644 index 0000000..0a8a3f3 --- /dev/null +++ b/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 diff --git a/debian/libobjc.symbols b/debian/libobjc.symbols new file mode 100644 index 0000000..5b1ed43 --- /dev/null +++ b/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 diff --git a/debian/libobjc.symbols.common b/debian/libobjc.symbols.common new file mode 100644 index 0000000..6eb80b2 --- /dev/null +++ b/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 diff --git a/debian/libobjc.symbols.gc b/debian/libobjc.symbols.gc new file mode 100644 index 0000000..87681af --- /dev/null +++ b/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 diff --git a/debian/libquadmath.symbols b/debian/libquadmath.symbols new file mode 100644 index 0000000..4b94e28 --- /dev/null +++ b/debian/libquadmath.symbols @@ -0,0 +1,3 @@ +libquadmath.so.0 #PACKAGE# #MINVER# + (symver)QUADMATH_1.0 4.6 + (symver)QUADMATH_1.1 6 diff --git a/debian/libstdc++-BV-doc.doc-base b/debian/libstdc++-BV-doc.doc-base new file mode 100644 index 0000000..c5fd048 --- /dev/null +++ b/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++/* diff --git a/debian/libstdc++-BV-doc.overrides b/debian/libstdc++-BV-doc.overrides new file mode 100644 index 0000000..1ff4cbb --- /dev/null +++ b/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 diff --git a/debian/libstdc++-breaks.Debian b/debian/libstdc++-breaks.Debian new file mode 100644 index 0000000..2610190 --- /dev/null +++ b/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), diff --git a/debian/libstdc++-breaks.Ubuntu b/debian/libstdc++-breaks.Ubuntu new file mode 100644 index 0000000..1f513ca --- /dev/null +++ b/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), diff --git a/debian/libstdc++6.symbols.128bit b/debian/libstdc++6.symbols.128bit new file mode 100644 index 0000000..5f9736d --- /dev/null +++ b/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 diff --git a/debian/libstdc++6.symbols.32bit b/debian/libstdc++6.symbols.32bit new file mode 100644 index 0000000..6f50228 --- /dev/null +++ b/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 diff --git a/debian/libstdc++6.symbols.32bit.cxx11 b/debian/libstdc++6.symbols.32bit.cxx11 new file mode 100644 index 0000000..6318173 --- /dev/null +++ b/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 diff --git a/debian/libstdc++6.symbols.32bit.hurd b/debian/libstdc++6.symbols.32bit.hurd new file mode 100644 index 0000000..24952b1 --- /dev/null +++ b/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 diff --git a/debian/libstdc++6.symbols.64bit b/debian/libstdc++6.symbols.64bit new file mode 100644 index 0000000..79cd9b7 --- /dev/null +++ b/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 diff --git a/debian/libstdc++6.symbols.64bit.cxx11 b/debian/libstdc++6.symbols.64bit.cxx11 new file mode 100644 index 0000000..ed924cd --- /dev/null +++ b/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 diff --git a/debian/libstdc++6.symbols.alpha b/debian/libstdc++6.symbols.alpha new file mode 100644 index 0000000..a561f24 --- /dev/null +++ b/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 diff --git a/debian/libstdc++6.symbols.amd64 b/debian/libstdc++6.symbols.amd64 new file mode 100644 index 0000000..cf922d1 --- /dev/null +++ b/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 diff --git a/debian/libstdc++6.symbols.arm b/debian/libstdc++6.symbols.arm new file mode 100644 index 0000000..6369a31 --- /dev/null +++ b/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 diff --git a/debian/libstdc++6.symbols.arm64 b/debian/libstdc++6.symbols.arm64 new file mode 100644 index 0000000..bb8a739 --- /dev/null +++ b/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 diff --git a/debian/libstdc++6.symbols.armel b/debian/libstdc++6.symbols.armel new file mode 100644 index 0000000..6b9ea38 --- /dev/null +++ b/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 diff --git a/debian/libstdc++6.symbols.armhf b/debian/libstdc++6.symbols.armhf new file mode 100644 index 0000000..86d4b52 --- /dev/null +++ b/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 diff --git a/debian/libstdc++6.symbols.common b/debian/libstdc++6.symbols.common new file mode 100644 index 0000000..2fcc20a --- /dev/null +++ b/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 diff --git a/debian/libstdc++6.symbols.common.cxx11 b/debian/libstdc++6.symbols.common.cxx11 new file mode 100644 index 0000000..9dfe8db --- /dev/null +++ b/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 diff --git a/debian/libstdc++6.symbols.excprop b/debian/libstdc++6.symbols.excprop new file mode 100644 index 0000000..6d72109 --- /dev/null +++ b/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 diff --git a/debian/libstdc++6.symbols.float128 b/debian/libstdc++6.symbols.float128 new file mode 100644 index 0000000..f20e67a --- /dev/null +++ b/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 diff --git a/debian/libstdc++6.symbols.glibcxxmath b/debian/libstdc++6.symbols.glibcxxmath new file mode 100644 index 0000000..04b7104 --- /dev/null +++ b/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 diff --git a/debian/libstdc++6.symbols.hppa b/debian/libstdc++6.symbols.hppa new file mode 100644 index 0000000..a139283 --- /dev/null +++ b/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 diff --git a/debian/libstdc++6.symbols.hurd-i386 b/debian/libstdc++6.symbols.hurd-i386 new file mode 100644 index 0000000..f18ffca --- /dev/null +++ b/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 diff --git a/debian/libstdc++6.symbols.i386 b/debian/libstdc++6.symbols.i386 new file mode 100644 index 0000000..eb26051 --- /dev/null +++ b/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 diff --git a/debian/libstdc++6.symbols.ia64 b/debian/libstdc++6.symbols.ia64 new file mode 100644 index 0000000..5f74173 --- /dev/null +++ b/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 diff --git a/debian/libstdc++6.symbols.kfreebsd-amd64 b/debian/libstdc++6.symbols.kfreebsd-amd64 new file mode 100644 index 0000000..6e16529 --- /dev/null +++ b/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 diff --git a/debian/libstdc++6.symbols.kfreebsd-i386 b/debian/libstdc++6.symbols.kfreebsd-i386 new file mode 100644 index 0000000..d86ebfa --- /dev/null +++ b/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 diff --git a/debian/libstdc++6.symbols.ldbl.32bit b/debian/libstdc++6.symbols.ldbl.32bit new file mode 100644 index 0000000..feaffd3 --- /dev/null +++ b/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 diff --git a/debian/libstdc++6.symbols.ldbl.32bit.s390 b/debian/libstdc++6.symbols.ldbl.32bit.s390 new file mode 100644 index 0000000..8432138 --- /dev/null +++ b/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 diff --git a/debian/libstdc++6.symbols.ldbl.64bit b/debian/libstdc++6.symbols.ldbl.64bit new file mode 100644 index 0000000..a5c3abf --- /dev/null +++ b/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 diff --git a/debian/libstdc++6.symbols.m68k b/debian/libstdc++6.symbols.m68k new file mode 100644 index 0000000..1e18564 --- /dev/null +++ b/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 diff --git a/debian/libstdc++6.symbols.mips b/debian/libstdc++6.symbols.mips new file mode 100644 index 0000000..70ed99b --- /dev/null +++ b/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 diff --git a/debian/libstdc++6.symbols.mips64 b/debian/libstdc++6.symbols.mips64 new file mode 100644 index 0000000..7aa71da --- /dev/null +++ b/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 diff --git a/debian/libstdc++6.symbols.mips64el b/debian/libstdc++6.symbols.mips64el new file mode 100644 index 0000000..fcc4963 --- /dev/null +++ b/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 diff --git a/debian/libstdc++6.symbols.mips64r6 b/debian/libstdc++6.symbols.mips64r6 new file mode 100644 index 0000000..c499e58 --- /dev/null +++ b/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 diff --git a/debian/libstdc++6.symbols.mips64r6el b/debian/libstdc++6.symbols.mips64r6el new file mode 100644 index 0000000..83716a3 --- /dev/null +++ b/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 diff --git a/debian/libstdc++6.symbols.mipsel b/debian/libstdc++6.symbols.mipsel new file mode 100644 index 0000000..70ed99b --- /dev/null +++ b/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 diff --git a/debian/libstdc++6.symbols.mipsr6 b/debian/libstdc++6.symbols.mipsr6 new file mode 100644 index 0000000..33a3d58 --- /dev/null +++ b/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 diff --git a/debian/libstdc++6.symbols.mipsr6el b/debian/libstdc++6.symbols.mipsr6el new file mode 100644 index 0000000..a0ed1ab --- /dev/null +++ b/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 diff --git a/debian/libstdc++6.symbols.money.f128 b/debian/libstdc++6.symbols.money.f128 new file mode 100644 index 0000000..eb08feb --- /dev/null +++ b/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 diff --git a/debian/libstdc++6.symbols.money.ldbl b/debian/libstdc++6.symbols.money.ldbl new file mode 100644 index 0000000..90ca289 --- /dev/null +++ b/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 diff --git a/debian/libstdc++6.symbols.not-armel b/debian/libstdc++6.symbols.not-armel new file mode 100644 index 0000000..9d9a404 --- /dev/null +++ b/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 diff --git a/debian/libstdc++6.symbols.powerpc b/debian/libstdc++6.symbols.powerpc new file mode 100644 index 0000000..c731a55 --- /dev/null +++ b/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 diff --git a/debian/libstdc++6.symbols.powerpcspe b/debian/libstdc++6.symbols.powerpcspe new file mode 100644 index 0000000..653ed1a --- /dev/null +++ b/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 diff --git a/debian/libstdc++6.symbols.ppc64 b/debian/libstdc++6.symbols.ppc64 new file mode 100644 index 0000000..617f232 --- /dev/null +++ b/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 diff --git a/debian/libstdc++6.symbols.ppc64el b/debian/libstdc++6.symbols.ppc64el new file mode 100644 index 0000000..617f232 --- /dev/null +++ b/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 diff --git a/debian/libstdc++6.symbols.s390 b/debian/libstdc++6.symbols.s390 new file mode 100644 index 0000000..bc45065 --- /dev/null +++ b/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 diff --git a/debian/libstdc++6.symbols.s390x b/debian/libstdc++6.symbols.s390x new file mode 100644 index 0000000..d1fa3ac --- /dev/null +++ b/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 diff --git a/debian/libstdc++6.symbols.sh4 b/debian/libstdc++6.symbols.sh4 new file mode 100644 index 0000000..70ed99b --- /dev/null +++ b/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 diff --git a/debian/libstdc++6.symbols.sparc b/debian/libstdc++6.symbols.sparc new file mode 100644 index 0000000..c731a55 --- /dev/null +++ b/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 diff --git a/debian/libstdc++6.symbols.sparc64 b/debian/libstdc++6.symbols.sparc64 new file mode 100644 index 0000000..f9446bb --- /dev/null +++ b/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 diff --git a/debian/libstdc++6.symbols.x32 b/debian/libstdc++6.symbols.x32 new file mode 100644 index 0000000..eab6e1d --- /dev/null +++ b/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 diff --git a/debian/libstdc++CXX.postinst b/debian/libstdc++CXX.postinst new file mode 100644 index 0000000..9a9c868 --- /dev/null +++ b/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# diff --git a/debian/libstdc++CXX.prerm b/debian/libstdc++CXX.prerm new file mode 100644 index 0000000..d4a6b38 --- /dev/null +++ b/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# diff --git a/debian/libtsan0.symbols b/debian/libtsan0.symbols new file mode 100644 index 0000000..b685737 --- /dev/null +++ b/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 diff --git a/debian/libubsan1.symbols b/debian/libubsan1.symbols new file mode 100644 index 0000000..76f7986 --- /dev/null +++ b/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 diff --git a/debian/libvtv0.symbols b/debian/libvtv0.symbols new file mode 100644 index 0000000..908a64e --- /dev/null +++ b/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 diff --git a/debian/libx32asan5.overrides b/debian/libx32asan5.overrides new file mode 100644 index 0000000..fa35182 --- /dev/null +++ b/debian/libx32asan5.overrides @@ -0,0 +1,2 @@ +# automake gets it wrong for the multilib build +libx32asan5 binary: binary-or-shlib-defines-rpath diff --git a/debian/libx32asan5.symbols b/debian/libx32asan5.symbols new file mode 100644 index 0000000..5fc72d6 --- /dev/null +++ b/debian/libx32asan5.symbols @@ -0,0 +1,4 @@ +libasan.so.5 libx32asan5 #MINVER# +#include "libasan.symbols.common" +#include "libasan.symbols.32" +#include "libasan.symbols.16" diff --git a/debian/libx32gphobos68.lintian-overrides b/debian/libx32gphobos68.lintian-overrides new file mode 100644 index 0000000..9539864 --- /dev/null +++ b/debian/libx32gphobos68.lintian-overrides @@ -0,0 +1,2 @@ +# no multilib zlib for x32 +libx32gphobos68 binary: embedded-library diff --git a/debian/libx32stdc++6.symbols b/debian/libx32stdc++6.symbols new file mode 100644 index 0000000..93a1f88 --- /dev/null +++ b/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 diff --git a/debian/locale-gen b/debian/locale-gen new file mode 100644 index 0000000..f07fa55 --- /dev/null +++ b/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 diff --git a/debian/patches/ada-749574.diff b/debian/patches/ada-749574.diff new file mode 100644 index 0000000..887a8cf --- /dev/null +++ b/debian/patches/ada-749574.diff @@ -0,0 +1,114 @@ +From: Ludovic Brenta +From: Nicolas Boulenguez +Forwarded: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81087 +Bug-Debian: http://bugs.debian.org/749574 +Description: array index out of range in gnatlink + The procedure gnatlink assumes that the Linker_Options.Table contains access + values to strings whose 'First index is always 1. This assumption is wrong + for the string returned by function Base_Name. + . + The wrong indices are not detected because gnatlink is compiled with + -gnatp, but the test result is wrong. + . + The following program normally raises Constraint_Error, prints FALSE + if compiled with -gnatp, while the expected result is TRUE. + . + procedure A is + G : constant String (3 .. 5) := "abc"; + begin + Ada.Text_IO.Put_Line (Boolean'Image (G (1 .. 2) = "ab")); + end A; + +--- a/src/gcc/ada/gnatlink.adb ++++ b/src/gcc/ada/gnatlink.adb +@@ -238,6 +238,9 @@ procedure Gnatlink is + procedure Write_Usage; + -- Show user the program options + ++ function Starts_With (Source, Pattern : String) return Boolean; ++ pragma Inline (Starts_With); ++ + --------------- + -- Base_Name -- + --------------- +@@ -494,7 +497,7 @@ procedure Gnatlink is + Binder_Options.Table (Binder_Options.Last) := + Linker_Options.Table (Linker_Options.Last); + +- elsif Arg'Length >= 7 and then Arg (1 .. 7) = "--LINK=" then ++ elsif Starts_With (Arg, "--LINK=") then + if Arg'Length = 7 then + Exit_With_Error ("Missing argument for --LINK="); + end if; +@@ -528,7 +531,7 @@ procedure Gnatlink is + end loop; + end; + +- elsif Arg'Length >= 6 and then Arg (1 .. 6) = "--GCC=" then ++ elsif Starts_With (Arg, "--GCC=") then + if Arg'Length = 6 then + Exit_With_Error ("Missing argument for --GCC="); + end if; +@@ -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 -- + ----------- +@@ -1889,8 +1899,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) := +@@ -1935,13 +1945,9 @@ begin + -- Here we just check for a canonical form that matches the + -- pragma Linker_Options set in the NT runtime. + +- if (Linker_Options.Table (J)'Length > 17 +- and then Linker_Options.Table (J) (1 .. 17) = +- "-Xlinker --stack=") +- or else +- (Linker_Options.Table (J)'Length > 12 +- and then Linker_Options.Table (J) (1 .. 12) = +- "-Wl,--stack=") ++ if Starts_With (Linker_Options.Table (J).all, "-Xlinker --stack=") ++ or else Starts_With (Linker_Options.Table (J).all, ++ "-Wl,--stack=") + then + if Stack_Op then + Linker_Options.Table (J .. Linker_Options.Last - 1) := diff --git a/debian/patches/ada-arm.diff b/debian/patches/ada-arm.diff new file mode 100644 index 0000000..81c53f0 --- /dev/null +++ b/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}" \ +@@ -51605,26 +52090,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}" \ +@@ -51632,26 +52117,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}" \ +@@ -51659,26 +52144,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}" \ +@@ -51686,25 +52171,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}" \ +@@ -51712,24 +52197,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}" \ +@@ -51737,24 +52222,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}" \ +@@ -51762,24 +52247,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}" \ +@@ -51787,24 +52272,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}" \ +@@ -51812,7 +52297,7 @@ maintainer-clean-target-libada: + maintainer-clean) \ + || exit 1 + +-@endif target-libada ++@endif target-libada-sjlj + + + +@@ -57290,6 +57775,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 +@@ -57326,6 +57813,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 +@@ -57823,8 +58312,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 +@@ -58582,6 +59076,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 +@@ -58631,6 +59127,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 diff --git a/debian/patches/ada-drop-termio-h.diff b/debian/patches/ada-drop-termio-h.diff new file mode 100644 index 0000000..b7a1d80 --- /dev/null +++ b/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 + diff --git a/debian/patches/ada-gcc-name.diff b/debian/patches/ada-gcc-name.diff new file mode 100644 index 0000000..b5f1061 --- /dev/null +++ b/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 @@ package Osint is + -- path) in Name_Buffer, with the length in Name_Len. + + function Program_Name (Nam : String; Prog : String) return String_Access; +- -- In the native compilation case, Create a string containing Nam. In the +- -- cross compilation case, looks at the prefix of the current program being +- -- run and prepend it to Nam. For instance if the program being run is +- -- -gnatmake and Nam is "gcc", the returned value will be a pointer +- -- to "-gcc". In the specific case where AAMP_On_Target is set, the +- -- name "gcc" is mapped to "gnaamp", and names of the form "gnat*" are +- -- mapped to "gnaamp*". This function clobbers Name_Buffer and Name_Len. +- -- Also look at any suffix, e.g. gnatmake-4.1 -> "gcc-4.1". Prog is the +- -- default name of the current program being executed, e.g. "gnatmake", +- -- "gnatlink". ++ -- On Debian, always create a string containing ++ -- Sdefault.Target_Name & '-' & Nam & '-' & Gnatvsn.Library_Version. ++ -- Fail if the program base name differs from Prog, ++ -- maybe extended with the same prefix or suffix. + + procedure Write_Program_Name; + -- Writes name of program as invoked to the current output (normally +--- a/src/gcc/ada/osint.adb ++++ b/src/gcc/ada/osint.adb +@@ -2204,51 +2204,51 @@ package body Osint is + ------------------ + + function Program_Name (Nam : String; Prog : String) return String_Access is +- End_Of_Prefix : Natural := 0; +- Start_Of_Prefix : Positive := 1; +- Start_Of_Suffix : Positive; +- ++ -- Most of the work is to check that the current program name ++ -- is consistent with the two static constants below. ++ Suffix : constant String := '-' & Gnatvsn.Library_Version; ++ Prefix : Types.String_Ptr := Sdefault.Target_Name; ++ First : Integer; ++ Result : System.OS_Lib.String_Access; + begin + -- Get the name of the current program being executed +- + Find_Program_Name; + +- Start_Of_Suffix := Name_Len + 1; ++ -- If our version is present, skip it. ++ First := Name_Len - Suffix'Length + 1; ++ if 0 < First and then Name_Buffer (First .. Name_Len) = Suffix then ++ Name_Len := First - 1; ++ end if; ++ ++ -- The central part must be Prog. ++ First := Name_Len - Prog'Length + 1; ++ if First <= 0 or else Name_Buffer (First .. Name_Len) /= Prog then ++ Fail ("Osint.Program_Name: must end with " & Prog ++ & " or " & Prog & Suffix); ++ end if; ++ Name_Len := First - 1; + +- -- Find the target prefix if any, for the cross compilation case. +- -- For instance in "powerpc-elf-gcc" the target prefix is +- -- "powerpc-elf-" +- -- Ditto for suffix, e.g. in "gcc-4.1", the suffix is "-4.1" +- +- for J in reverse 1 .. Name_Len loop +- if 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.OS_Lib; use GNA + with GNAT.Heap_Sort_G; + with GNAT.Table; + ++with Osint; + with Switch; use Switch; + with Types; + +@@ -44,12 +45,9 @@ procedure Gnatchop is + Config_File_Name : constant String_Access := new String'("gnat.adc"); + -- The name of the file holding the GNAT configuration pragmas + +- Gcc : String_Access := new String'("gcc"); ++ Gcc : String_Access := null; + -- May be modified by switch --GCC= + +- Gcc_Set : Boolean := False; +- -- True if a switch --GCC= is used +- + Gnat_Cmd : String_Access; + -- Command to execute the GNAT compiler + +@@ -222,12 +220,6 @@ procedure Gnatchop is + Integer'Image + (Maximum_File_Name_Length); + +- function Locate_Executable +- (Program_Name : String; +- Look_For_Prefix : Boolean := True) return String_Access; +- -- Locate executable for given program name. This takes into account +- -- the target-prefix of the current command, if Look_For_Prefix is True. +- + subtype EOL_Length is Natural range 0 .. 2; + -- Possible lengths of end of line sequence + +@@ -492,76 +484,6 @@ procedure Gnatchop is + Unit.Table (Sorted_Units.Table (U + 1)).File_Name.all; + end Is_Duplicated; + +- ----------------------- +- -- Locate_Executable -- +- ----------------------- +- +- function Locate_Executable +- (Program_Name : String; +- Look_For_Prefix : Boolean := True) return String_Access +- is +- Gnatchop_Str : constant String := "gnatchop"; +- Current_Command : constant String := Normalize_Pathname (Command_Name); +- End_Of_Prefix : Natural; +- Start_Of_Prefix : Positive; +- Start_Of_Suffix : Positive; +- Result : String_Access; +- +- begin +- Start_Of_Prefix := Current_Command'First; +- Start_Of_Suffix := Current_Command'Last + 1; +- End_Of_Prefix := Start_Of_Prefix - 1; +- +- if Look_For_Prefix then +- +- -- Find Start_Of_Prefix +- +- for J in reverse Current_Command'Range loop +- if Current_Command (J) = '/' or else +- Current_Command (J) = Directory_Separator or else +- Current_Command (J) = ':' +- then +- Start_Of_Prefix := J + 1; +- exit; +- end if; +- end loop; +- +- -- Find End_Of_Prefix +- +- for J in Start_Of_Prefix .. +- Current_Command'Last - Gnatchop_Str'Length + 1 +- loop +- if Current_Command (J .. J + Gnatchop_Str'Length - 1) = +- Gnatchop_Str +- then +- End_Of_Prefix := J - 1; +- exit; +- end if; +- end loop; +- end if; +- +- if End_Of_Prefix > Current_Command'First then +- Start_Of_Suffix := End_Of_Prefix + Gnatchop_Str'Length + 1; +- end if; +- +- declare +- Command : constant String := +- Current_Command (Start_Of_Prefix .. End_Of_Prefix) +- & Program_Name +- & Current_Command (Start_Of_Suffix .. +- Current_Command'Last); +- begin +- Result := Locate_Exec_On_Path (Command); +- +- if Result = null then +- Error_Msg +- (Command & ": installation problem, executable not found"); +- end if; +- end; +- +- return Result; +- end Locate_Executable; +- + --------------- + -- Parse_EOL -- + --------------- +@@ -1088,8 +1010,8 @@ procedure Gnatchop is + exit; + + when '-' => +- Gcc := new String'(Parameter); +- Gcc_Set := True; ++ Free (Gcc); ++ Gcc := new String'(Parameter); + + when 'c' => + Compilation_Mode := True; +@@ -1767,9 +1689,13 @@ begin + + -- Check presence of required executables + +- Gnat_Cmd := Locate_Executable (Gcc.all, not Gcc_Set); ++ if Gcc = null then ++ Gcc := Osint.Program_Name ("gcc", "gnatchop"); ++ end if; ++ Gnat_Cmd := Locate_Exec_On_Path (Gcc.all); + + if Gnat_Cmd = null then ++ Error_Msg (Gcc.all & ": installation problem, executable not found"); + goto No_Files_Written; + end if; + diff --git a/debian/patches/ada-gnattools-cross.diff b/debian/patches/ada-gnattools-cross.diff new file mode 100644 index 0000000..b24b719 --- /dev/null +++ b/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 +@@ -2313,14 +2332,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); \ +@@ -2345,8 +2360,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 +@@ -2410,7 +2424,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) \ +@@ -2444,36 +2458,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) +@@ -2484,6 +2513,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) \ +@@ -2492,21 +2523,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) \ +@@ -2516,17 +2541,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 +@@ -78,15 +78,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)" \ +@@ -192,6 +198,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 \ +@@ -200,6 +210,13 @@ gnattools-native: $(GCC_DIR)/stamp-tools + # gnattools2 + $(MAKE) -C $(GCC_DIR)/ada/tools -f ../Makefile \ + $(TOOLS_FLAGS_TO_PASS_NATIVE) common-tools ++# The hard-coded object lists for gnatbind/make/link contain unneeded ++# objects. Use the fresh tools to recompute dependencies. ++# A separate Make run avoids race conditions between gnatmakes ++# building the same object for common-tools and gnat*-re. ++# (parallelism is already forbidden between gnat*-re targets) ++ $(MAKE) -C $(GCC_DIR)/ada/tools -f ../Makefile \ ++ $(TOOLS_FLAGS_TO_PASS_NATIVE) gnatbind-re gnatmake-re gnatlink-re + + # gnatmake/link can be built with recent gnatmake/link if they are available. + # This is especially convenient for building cross tools or for rebuilding diff --git a/debian/patches/ada-kfreebsd.diff b/debian/patches/ada-kfreebsd.diff new file mode 100644 index 0000000..9142970 --- /dev/null +++ b/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). diff --git a/debian/patches/ada-lib-info-file-prefix-map.diff b/debian/patches/ada-lib-info-file-prefix-map.diff new file mode 100644 index 0000000..3aba373 --- /dev/null +++ b/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 diff --git a/debian/patches/ada-lib-info-source-date-epoch.diff b/debian/patches/ada-lib-info-source-date-epoch.diff new file mode 100644 index 0000000..7ad57b5 --- /dev/null +++ b/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 +@@ -1679,6 +1679,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 +@@ -680,6 +680,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 -- + ---------------- diff --git a/debian/patches/ada-libgnatvsn.diff b/debian/patches/ada-libgnatvsn.diff new file mode 100644 index 0000000..ad6b049 --- /dev/null +++ b/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 + } + } diff --git a/debian/patches/ada-link-lib.diff b/debian/patches/ada-link-lib.diff new file mode 100644 index 0000000..a250af1 --- /dev/null +++ b/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" diff --git a/debian/patches/ada-nobiarch-check.diff b/debian/patches/ada-nobiarch-check.diff new file mode 100644 index 0000000..35190a7 --- /dev/null +++ b/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-$* diff --git a/debian/patches/ada-perl-shebang.diff b/debian/patches/ada-perl-shebang.diff new file mode 100644 index 0000000..ea930b1 --- /dev/null +++ b/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 + + #----------------------------------------------------------------------------- + #- -- diff --git a/debian/patches/ada-sjlj.diff b/debian/patches/ada-sjlj.diff new file mode 100644 index 0000000..804cdeb --- /dev/null +++ b/debian/patches/ada-sjlj.diff @@ -0,0 +1,493 @@ +# Please read ada-changes-in-autogen-output.diff about src/Makefile.def. + +# !!! Must be applied after ada-libgnatvsn.diff + +--- /dev/null ++++ b/src/libada-sjlj/Makefile.in +@@ -0,0 +1,203 @@ ++# Makefile for libada. ++# Copyright (C) 2003-2017 Free Software Foundation, Inc. ++# ++# This file is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 3 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with this program; see the file COPYING3. If not see ++# . ++ ++# Default target; must be first. ++all: gnatlib ++ $(MULTIDO) $(AM_MAKEFLAGS) DO=all multi-do # $(MAKE) ++ ++.PHONY: all ++ ++## Multilib support variables. ++MULTISRCTOP = ++MULTIBUILDTOP = ++MULTIDIRS = ++MULTISUBDIR = ++MULTIDO = true ++MULTICLEAN = true ++ ++# Standard autoconf-set variables. ++SHELL = @SHELL@ ++srcdir = @srcdir@ ++libdir = @libdir@ ++build = @build@ ++target = @target@ ++prefix = @prefix@ ++ ++# Nonstandard autoconf-set variables. ++enable_shared = @enable_shared@ ++ ++LN_S=@LN_S@ ++AWK=@AWK@ ++ ++ifeq (cp -p,$(LN_S)) ++LN_S_RECURSIVE = cp -pR ++else ++LN_S_RECURSIVE = $(LN_S) ++endif ++ ++# Variables for the user (or the top level) to override. ++objext=.o ++THREAD_KIND=native ++TRACE=no ++LDFLAGS= ++ ++# The tedious process of getting CFLAGS right. ++CFLAGS=-g ++PICFLAG = @PICFLAG@ ++GNATLIBFLAGS= -W -Wall -gnatpg -nostdinc ++GNATLIBCFLAGS= -g -O2 ++GNATLIBCFLAGS_FOR_C = -W -Wall $(GNATLIBCFLAGS) $(CFLAGS_FOR_TARGET) \ ++ -fexceptions -DIN_RTS @have_getipinfo@ @have_capability@ ++ ++host_subdir = @host_subdir@ ++GCC_DIR=$(MULTIBUILDTOP)../../$(host_subdir)/gcc ++ ++target_noncanonical:=@target_noncanonical@ ++version := $(shell @get_gcc_base_ver@ $(srcdir)/../gcc/BASE-VER) ++libsubdir := $(libdir)/gcc/$(target_noncanonical)/$(version)$(MULTISUBDIR) ++ADA_RTS_DIR=$(GCC_DIR)/ada/rts$(subst /,_,$(MULTISUBDIR)) ++ADA_RTS_SUBDIR=./rts$(subst /,_,$(MULTISUBDIR)) ++ ++# exeext should not be used because it's the *host* exeext. We're building ++# a *target* library, aren't we?!? Likewise for CC. Still, provide bogus ++# definitions just in case something slips through the safety net provided ++# by recursive make invocations in gcc/ada/Makefile.in ++LIBADA_FLAGS_TO_PASS = \ ++ "MAKEOVERRIDES=" \ ++ "LDFLAGS=$(LDFLAGS) -Wl,--as-needed -Wl,-z,defs" \ ++ "LN_S=$(LN_S)" \ ++ "SHELL=$(SHELL)" \ ++ "GNATLIBFLAGS=$(GNATLIBFLAGS) $(MULTIFLAGS) -gnatn" \ ++ "GNATLIBCFLAGS=$(GNATLIBCFLAGS) $(MULTIFLAGS)" \ ++ "GNATLIBCFLAGS_FOR_C=$(GNATLIBCFLAGS_FOR_C) $(MULTIFLAGS)" \ ++ "PICFLAG_FOR_TARGET=$(PICFLAG)" \ ++ "THREAD_KIND=$(THREAD_KIND)" \ ++ "TRACE=$(TRACE)" \ ++ "MULTISUBDIR=$(MULTISUBDIR)" \ ++ "libsubdir=$(libsubdir)" \ ++ "objext=$(objext)" \ ++ "prefix=$(prefix)" \ ++ "exeext=.exeext.should.not.be.used " \ ++ 'CC=the.host.compiler.should.not.be.needed' \ ++ "GCC_FOR_TARGET=$(CC)" \ ++ "CFLAGS=$(CFLAGS)" \ ++ "RTSDIR=rts-sjlj" ++ ++# Rules to build gnatlib. ++.PHONY: gnatlib gnatlib-plain gnatlib-sjlj gnatlib-zcx gnatlib-shared osconstool ++gnatlib: gnatlib-sjlj ++ ++gnatlib-plain: osconstool $(GCC_DIR)/ada/Makefile ++ test -f stamp-libada || \ ++ $(MAKE) -C $(GCC_DIR)/ada $(LIBADA_FLAGS_TO_PASS) gnatlib \ ++ && touch stamp-libada ++ -rm -rf adainclude ++ -rm -rf adalib ++ $(LN_S_RECURSIVE) $(ADA_RTS_DIR) adainclude ++ $(LN_S_RECURSIVE) $(ADA_RTS_DIR) adalib ++ ++gnatlib-sjlj gnatlib-zcx gnatlib-shared: osconstool $(GCC_DIR)/ada/Makefile ++ test -f stamp-libada || \ ++ $(MAKE) -C $(GCC_DIR)/ada $(LIBADA_FLAGS_TO_PASS) $@ \ ++ && touch stamp-libada-sjlj ++ -rm -rf adainclude ++ -rm -rf adalib ++ $(LN_S_RECURSIVE) $(ADA_RTS_DIR) adainclude ++ $(LN_S_RECURSIVE) $(ADA_RTS_DIR) adalib ++ ++osconstool: ++ $(MAKE) -C $(GCC_DIR)/ada $(LIBADA_FLAGS_TO_PASS) ./bldtools/oscons/xoscons ++ ++install-gnatlib: $(GCC_DIR)/ada/Makefile ++ $(MAKE) -C $(GCC_DIR)/ada $(LIBADA_FLAGS_TO_PASS) install-gnatlib-sjlj ++ ++# Check uninstalled version. ++check: ++ ++# Check installed version. ++installcheck: ++ ++# Build info (none here). ++info: ++ ++# Build DVI (none here). ++dvi: ++ ++# Build PDF (none here). ++pdf: ++ ++# Build html (none here). ++html: ++ ++# Build TAGS (none here). ++TAGS: ++ ++.PHONY: check installcheck info dvi pdf html ++ ++# Installation rules. ++install: install-gnatlib ++ $(MULTIDO) $(AM_MAKEFLAGS) DO=install multi-do # $(MAKE) ++ ++install-strip: install ++ ++install-info: ++ ++install-pdf: ++ ++install-html: ++ ++.PHONY: install install-strip install-info install-pdf install-html ++ ++# Cleaning rules. ++mostlyclean: ++ $(MULTICLEAN) $(AM_MAKEFLAGS) DO=mostlyclean multi-clean # $(MAKE) ++ ++clean: ++ $(MULTICLEAN) $(AM_MAKEFLAGS) DO=clean multi-clean # $(MAKE) ++ ++distclean: ++ $(MULTICLEAN) $(AM_MAKEFLAGS) DO=distclean multi-clean # $(MAKE) ++ $(RM) Makefile config.status config.log ++ ++maintainer-clean: ++ ++.PHONY: mostlyclean clean distclean maintainer-clean ++ ++# Rules for rebuilding this Makefile. ++Makefile: $(srcdir)/Makefile.in config.status ++ CONFIG_FILES=$@ ; \ ++ CONFIG_HEADERS= ; \ ++ $(SHELL) ./config.status ++ ++config.status: $(srcdir)/configure ++ $(SHELL) ./config.status --recheck ++ ++AUTOCONF = autoconf ++configure_deps = \ ++ $(srcdir)/configure.ac \ ++ $(srcdir)/../config/acx.m4 \ ++ $(srcdir)/../config/multi.m4 \ ++ $(srcdir)/../config/override.m4 \ ++ $(srcdir)/../config/picflag.m4 \ ++ $(srcdir)/../config/unwind_ipinfo.m4 ++ ++$(srcdir)/configure: @MAINT@ $(configure_deps) ++ cd $(srcdir) && $(AUTOCONF) ++ ++# Don't export variables to the environment, in order to not confuse ++# configure. ++.NOEXPORT: +--- /dev/null ++++ b/src/libada-sjlj/configure.ac +@@ -0,0 +1,156 @@ ++# Configure script for libada. ++# Copyright (C) 2003-2017 Free Software Foundation, Inc. ++# ++# This file is free software; you can redistribute it and/or modify it ++# under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 3 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, but ++# WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++# General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with this program; see the file COPYING3. If not see ++# . ++ ++sinclude(../config/acx.m4) ++sinclude(../config/multi.m4) ++sinclude(../config/override.m4) ++sinclude(../config/picflag.m4) ++sinclude(../config/unwind_ipinfo.m4) ++ ++AC_INIT ++AC_PREREQ([2.64]) ++ ++AC_CONFIG_SRCDIR([Makefile.in]) ++ ++# Determine the host, build, and target systems ++AC_CANONICAL_BUILD ++AC_CANONICAL_HOST ++AC_CANONICAL_TARGET ++target_alias=${target_alias-$host_alias} ++ ++# Determine the noncanonical target name, for directory use. ++ACX_NONCANONICAL_TARGET ++ ++# Determine the target- and build-specific subdirectories ++GCC_TOPLEV_SUBDIRS ++ ++# Command-line options. ++# Very limited version of AC_MAINTAINER_MODE. ++AC_ARG_ENABLE([maintainer-mode], ++ [AC_HELP_STRING([--enable-maintainer-mode], ++ [enable make rules and dependencies not useful (and ++ sometimes confusing) to the casual installer])], ++ [case ${enable_maintainer_mode} in ++ yes) MAINT='' ;; ++ no) MAINT='#' ;; ++ *) AC_MSG_ERROR([--enable-maintainer-mode must be yes or no]) ;; ++ esac ++ maintainer_mode=${enableval}], ++ [MAINT='#']) ++AC_SUBST([MAINT])dnl ++ ++AM_ENABLE_MULTILIB(, ..) ++# Calculate toolexeclibdir ++# Also toolexecdir, though it's only used in toolexeclibdir ++case ${enable_version_specific_runtime_libs} in ++ yes) ++ # Need the gcc compiler version to know where to install libraries ++ # and header files if --enable-version-specific-runtime-libs option ++ # is selected. ++ toolexecdir='$(libdir)/gcc/$(target_alias)' ++ toolexeclibdir='$(toolexecdir)/$(gcc_version)$(MULTISUBDIR)' ++ ;; ++ no) ++ if test -n "$with_cross_host" && ++ test x"$with_cross_host" != x"no"; then ++ # Install a library built with a cross compiler in tooldir, not libdir. ++ toolexecdir='$(exec_prefix)/$(target_alias)' ++ toolexeclibdir='$(toolexecdir)/lib' ++ else ++ toolexecdir='$(libdir)/gcc-lib/$(target_alias)' ++ toolexeclibdir='$(libdir)' ++ fi ++ multi_os_directory=`$CC -print-multi-os-directory` ++ case $multi_os_directory in ++ .) ;; # Avoid trailing /. ++ *) toolexeclibdir=$toolexeclibdir/$multi_os_directory ;; ++ esac ++ ;; ++esac ++AC_SUBST(toolexecdir) ++AC_SUBST(toolexeclibdir) ++#TODO: toolexeclibdir is currently disregarded ++ ++# Check the compiler. ++# The same as in boehm-gc and libstdc++. Have to borrow it from there. ++# We must force CC to /not/ be precious variables; otherwise ++# the wrong, non-multilib-adjusted value will be used in multilibs. ++# As a side effect, we have to subst CFLAGS ourselves. ++ ++m4_rename([_AC_ARG_VAR_PRECIOUS],[real_PRECIOUS]) ++m4_define([_AC_ARG_VAR_PRECIOUS],[]) ++AC_PROG_CC ++m4_rename_force([real_PRECIOUS],[_AC_ARG_VAR_PRECIOUS]) ++ ++AC_SUBST(CFLAGS) ++ ++AC_ARG_ENABLE([shared], ++[AC_HELP_STRING([--disable-shared], ++ [don't provide a shared libgnat])], ++[ ++case $enable_shared in ++ yes | no) ;; ++ *) ++ enable_shared=no ++ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," ++ for pkg in $enableval; do ++ case $pkg in ++ ada | libada) ++ enable_shared=yes ;; ++ esac ++ done ++ IFS="$ac_save_ifs" ++ ;; ++esac ++], [enable_shared=yes]) ++AC_SUBST([enable_shared]) ++ ++GCC_PICFLAG ++AC_SUBST([PICFLAG]) ++ ++# These must be passed down, or are needed by gcc/libgcc.mvars ++AC_PROG_AWK ++AC_PROG_LN_S ++ ++# Determine what to build for 'gnatlib' ++if test ${enable_shared} = yes; then ++ default_gnatlib_target="gnatlib-shared" ++else ++ default_gnatlib_target="gnatlib-plain" ++fi ++AC_SUBST([default_gnatlib_target]) ++ ++# Check for _Unwind_GetIPInfo ++GCC_CHECK_UNWIND_GETIPINFO ++if test x$have_unwind_getipinfo = xyes; then ++ have_getipinfo=-DHAVE_GETIPINFO ++else ++ have_getipinfo= ++fi ++AC_SUBST([have_getipinfo]) ++ ++# Check for ++AC_CHECK_HEADER([sys/capability.h], have_capability=-DHAVE_CAPABILITY, have_capability=) ++AC_SUBST([have_capability]) ++ ++# Determine what GCC version number to use in filesystem paths. ++GCC_BASE_VER ++ ++# Output: create a Makefile. ++AC_CONFIG_FILES([Makefile]) ++ ++AC_OUTPUT +--- a/src/Makefile.def ++++ b/src/Makefile.def +@@ -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; }; +--- 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, +--- 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 +@@ -2348,6 +2348,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) +@@ -2629,7 +2649,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;/' \ +@@ -2638,6 +2658,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)" \ +@@ -2689,6 +2710,8 @@ b_gnatm.o : b_gnatm.adb + + ADA_INCLUDE_DIR = $(libsubdir)/adainclude + ADA_RTL_OBJ_DIR = $(libsubdir)/adalib ++ADA_INCLUDE_DIR_SJLJ = $(libsubdir)/rts-sjlj/adainclude ++ADA_RTL_OBJ_DIR_SJLJ = $(libsubdir)/rts-sjlj/adalib + + # Special flags + +--- a/src/gcc/ada/gcc-interface/config-lang.in ++++ b/src/gcc/ada/gcc-interface/config-lang.in +@@ -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 +--- 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 diff --git a/debian/patches/ada-tools-move-ldflags.diff b/debian/patches/ada-tools-move-ldflags.diff new file mode 100644 index 0000000..0850102 --- /dev/null +++ b/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)" diff --git a/debian/patches/ada-verbose.diff b/debian/patches/ada-verbose.diff new file mode 100644 index 0000000..8c759d9 --- /dev/null +++ b/debian/patches/ada-verbose.diff @@ -0,0 +1,61 @@ +Description: Display subprocess command lines when building Ada. + The log can be a page longer if it helps debugging. +Forwarded: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87778 +Author: Nicolas Boulenguez + +--- a/src/gcc/ada/Make-generated.in ++++ b/src/gcc/ada/Make-generated.in +@@ -28,21 +28,21 @@ $(ADA_GEN_SUBDIR)/treeprs.ads : $(ADA_GE + -$(MKDIR) $(ADA_GEN_SUBDIR)/bldtools/treeprs + $(RM) $(addprefix $(ADA_GEN_SUBDIR)/bldtools/treeprs/,$(notdir $^)) + $(CP) $^ $(ADA_GEN_SUBDIR)/bldtools/treeprs +- (cd $(ADA_GEN_SUBDIR)/bldtools/treeprs; gnatmake -q xtreeprs ; ./xtreeprs treeprs.ads ) ++ cd $(ADA_GEN_SUBDIR)/bldtools/treeprs && gnatmake -v xtreeprs && ./xtreeprs treeprs.ads + $(MOVE_IF_CHANGE) $(ADA_GEN_SUBDIR)/bldtools/treeprs/treeprs.ads $(ADA_GEN_SUBDIR)/treeprs.ads + + $(ADA_GEN_SUBDIR)/einfo.h : $(ADA_GEN_SUBDIR)/einfo.ads $(ADA_GEN_SUBDIR)/einfo.adb $(ADA_GEN_SUBDIR)/xeinfo.adb $(ADA_GEN_SUBDIR)/ceinfo.adb + -$(MKDIR) $(ADA_GEN_SUBDIR)/bldtools/einfo + $(RM) $(addprefix $(ADA_GEN_SUBDIR)/bldtools/einfo/,$(notdir $^)) + $(CP) $^ $(ADA_GEN_SUBDIR)/bldtools/einfo +- (cd $(ADA_GEN_SUBDIR)/bldtools/einfo; gnatmake -q xeinfo ; ./xeinfo einfo.h ) ++ cd $(ADA_GEN_SUBDIR)/bldtools/einfo && gnatmake -v xeinfo && ./xeinfo einfo.h + $(MOVE_IF_CHANGE) $(ADA_GEN_SUBDIR)/bldtools/einfo/einfo.h $(ADA_GEN_SUBDIR)/einfo.h + + $(ADA_GEN_SUBDIR)/sinfo.h : $(ADA_GEN_SUBDIR)/sinfo.ads $(ADA_GEN_SUBDIR)/sinfo.adb $(ADA_GEN_SUBDIR)/xsinfo.adb $(ADA_GEN_SUBDIR)/csinfo.adb + -$(MKDIR) $(ADA_GEN_SUBDIR)/bldtools/sinfo + $(RM) $(addprefix $(ADA_GEN_SUBDIR)/bldtools/sinfo/,$(notdir $^)) + $(CP) $^ $(ADA_GEN_SUBDIR)/bldtools/sinfo +- (cd $(ADA_GEN_SUBDIR)/bldtools/sinfo; gnatmake -q xsinfo ; ./xsinfo sinfo.h ) ++ cd $(ADA_GEN_SUBDIR)/bldtools/sinfo && gnatmake -v xsinfo && ./xsinfo sinfo.h + $(MOVE_IF_CHANGE) $(ADA_GEN_SUBDIR)/bldtools/sinfo/sinfo.h $(ADA_GEN_SUBDIR)/sinfo.h + + $(ADA_GEN_SUBDIR)/snames.h $(ADA_GEN_SUBDIR)/snames.ads $(ADA_GEN_SUBDIR)/snames.adb : $(ADA_GEN_SUBDIR)/stamp-snames ; @true +@@ -50,7 +50,7 @@ $(ADA_GEN_SUBDIR)/stamp-snames : $(ADA_G + -$(MKDIR) $(ADA_GEN_SUBDIR)/bldtools/snamest + $(RM) $(addprefix $(ADA_GEN_SUBDIR)/bldtools/snamest/,$(notdir $^)) + $(CP) $^ $(ADA_GEN_SUBDIR)/bldtools/snamest +- (cd $(ADA_GEN_SUBDIR)/bldtools/snamest; gnatmake -q xsnamest ; ./xsnamest ) ++ cd $(ADA_GEN_SUBDIR)/bldtools/snamest && gnatmake -v xsnamest && ./xsnamest + $(MOVE_IF_CHANGE) $(ADA_GEN_SUBDIR)/bldtools/snamest/snames.ns $(ADA_GEN_SUBDIR)/snames.ads + $(MOVE_IF_CHANGE) $(ADA_GEN_SUBDIR)/bldtools/snamest/snames.nb $(ADA_GEN_SUBDIR)/snames.adb + $(MOVE_IF_CHANGE) $(ADA_GEN_SUBDIR)/bldtools/snamest/snames.nh $(ADA_GEN_SUBDIR)/snames.h +@@ -61,7 +61,7 @@ $(ADA_GEN_SUBDIR)/stamp-nmake: $(ADA_GEN + -$(MKDIR) $(ADA_GEN_SUBDIR)/bldtools/nmake + $(RM) $(addprefix $(ADA_GEN_SUBDIR)/bldtools/nmake/,$(notdir $^)) + $(CP) $^ $(ADA_GEN_SUBDIR)/bldtools/nmake +- (cd $(ADA_GEN_SUBDIR)/bldtools/nmake; gnatmake -q xnmake ; ./xnmake -b nmake.adb ; ./xnmake -s nmake.ads) ++ cd $(ADA_GEN_SUBDIR)/bldtools/nmake && gnatmake -v xnmake && ./xnmake -b nmake.adb && ./xnmake -s nmake.ads + $(MOVE_IF_CHANGE) $(ADA_GEN_SUBDIR)/bldtools/nmake/nmake.ads $(ADA_GEN_SUBDIR)/nmake.ads + $(MOVE_IF_CHANGE) $(ADA_GEN_SUBDIR)/bldtools/nmake/nmake.adb $(ADA_GEN_SUBDIR)/nmake.adb + touch $(ADA_GEN_SUBDIR)/stamp-nmake +--- a/src/gcc/ada/gcc-interface/Makefile.in ++++ b/src/gcc/ada/gcc-interface/Makefile.in +@@ -2401,7 +2401,7 @@ OSCONS_EXTRACT=$(OSCONS_CC) $(GNATLIBCFL + -$(MKDIR) ./bldtools/oscons + $(RM) $(addprefix ./bldtools/oscons/,$(notdir $^)) + $(CP) $^ ./bldtools/oscons +- (cd ./bldtools/oscons ; gnatmake -q xoscons) ++ cd ./bldtools/oscons && gnatmake -v xoscons + + $(RTSDIR)/s-oscons.ads: ../stamp-gnatlib1-$(RTSDIR) s-oscons-tmplt.c gsocket.h ./bldtools/oscons/xoscons + $(RM) $(RTSDIR)/s-oscons-tmplt.i $(RTSDIR)/s-oscons-tmplt.s diff --git a/debian/patches/add-gnu-to-libgo-headers.diff b/debian/patches/add-gnu-to-libgo-headers.diff new file mode 100644 index 0000000..9a69a25 --- /dev/null +++ b/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. diff --git a/debian/patches/add-gnu-to-libgo-test-headers.diff b/debian/patches/add-gnu-to-libgo-test-headers.diff new file mode 100644 index 0000000..3c3bf38 --- /dev/null +++ b/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 + diff --git a/debian/patches/alpha-ieee-doc.diff b/debian/patches/alpha-ieee-doc.diff new file mode 100644 index 0000000..0564158 --- /dev/null +++ b/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 diff --git a/debian/patches/alpha-ieee.diff b/debian/patches/alpha-ieee.diff new file mode 100644 index 0000000..40497fb --- /dev/null +++ b/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 diff --git a/debian/patches/alpha-no-ev4-directive.diff b/debian/patches/alpha-no-ev4-directive.diff new file mode 100644 index 0000000..df7d960 --- /dev/null +++ b/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 +@@ -9539,7 +9539,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"; +@@ -9549,10 +9549,9 @@ alpha_file_start (void) + arch = "ev56"; + else if (alpha_cpu == PROCESSOR_EV5) + arch = "ev5"; +- else +- arch = "ev4"; + +- fprintf (asm_out_file, "\t.arch %s\n", arch); ++ if (arch) ++ fprintf (asm_out_file, "\t.arch %s\n", arch); + } + } + diff --git a/debian/patches/arm-multilib-defaults.diff b/debian/patches/arm-multilib-defaults.diff new file mode 100644 index 0000000..9c14f5e --- /dev/null +++ b/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 +@@ -3881,10 +3881,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 +@@ -3918,6 +3926,9 @@ case "${target}" in + "" \ + | arm | thumb ) + #OK ++ if test "$with_mode" = thumb; then ++ tm_defines="${tm_defines} TARGET_CONFIGURED_THUMB_MODE=1" ++ fi + ;; + *) + echo "Unknown mode used in --with-mode=$with_mode" +--- a/src/gcc/config/arm/linux-eabi.h ++++ b/src/gcc/config/arm/linux-eabi.h +@@ -37,7 +37,21 @@ + target hardware. If you override this to use the hard-float ABI then + change the setting of GLIBC_DYNAMIC_LINKER_DEFAULT as well. */ + #undef TARGET_DEFAULT_FLOAT_ABI ++#ifdef TARGET_CONFIGURED_FLOAT_ABI ++#if TARGET_CONFIGURED_FLOAT_ABI == 2 ++#define TARGET_DEFAULT_FLOAT_ABI ARM_FLOAT_ABI_HARD ++#define MULTILIB_DEFAULT_FLOAT_ABI "mfloat-abi=hard" ++#elif TARGET_CONFIGURED_FLOAT_ABI == 1 ++#define TARGET_DEFAULT_FLOAT_ABI ARM_FLOAT_ABI_SOFTFP ++#define MULTILIB_DEFAULT_FLOAT_ABI "mfloat-abi=softfp" ++#else ++#define TARGET_DEFAULT_FLOAT_ABI ARM_FLOAT_ABI_SOFT ++#define MULTILIB_DEFAULT_FLOAT_ABI "mfloat-abi=soft" ++#endif ++#else + #define TARGET_DEFAULT_FLOAT_ABI ARM_FLOAT_ABI_SOFT ++#define MULTILIB_DEFAULT_FLOAT_ABI "mfloat-abi=soft" ++#endif + + /* We default to the "aapcs-linux" ABI so that enums are int-sized by + default. */ +@@ -91,6 +105,28 @@ + #define MUSL_DYNAMIC_LINKER \ + "/lib/ld-musl-arm" MUSL_DYNAMIC_LINKER_E "%{mfloat-abi=hard:hf}.so.1" + ++/* Set the multilib defaults according the configuration, needed to ++ let gcc -print-multi-dir do the right thing. */ ++ ++#if TARGET_BIG_ENDIAN_DEFAULT ++#define MULTILIB_DEFAULT_ENDIAN "mbig-endian" ++#else ++#define MULTILIB_DEFAULT_ENDIAN "mlittle-endian" ++#endif ++ ++#ifndef TARGET_CONFIGURED_THUMB_MODE ++#define MULTILIB_DEFAULT_MODE "marm" ++#elif TARGET_CONFIGURED_THUMB_MODE == 1 ++#define MULTILIB_DEFAULT_MODE "mthumb" ++#else ++#define MULTILIB_DEFAULT_MODE "marm" ++#endif ++ ++#undef MULTILIB_DEFAULTS ++#define MULTILIB_DEFAULTS \ ++ { MULTILIB_DEFAULT_MODE, MULTILIB_DEFAULT_ENDIAN, \ ++ MULTILIB_DEFAULT_FLOAT_ABI, "mno-thumb-interwork" } ++ + /* At this point, bpabi.h will have clobbered LINK_SPEC. We want to + use the GNU/Linux version, not the generic BPABI version. */ + #undef LINK_SPEC diff --git a/debian/patches/arm-multilib-soft-cross.diff b/debian/patches/arm-multilib-soft-cross.diff new file mode 100644 index 0000000..00a83d3 --- /dev/null +++ b/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* diff --git a/debian/patches/arm-multilib-soft-float.diff b/debian/patches/arm-multilib-soft-float.diff new file mode 100644 index 0000000..18f51fb --- /dev/null +++ b/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* diff --git a/debian/patches/arm-multilib-soft.diff b/debian/patches/arm-multilib-soft.diff new file mode 100644 index 0000000..5988f98 --- /dev/null +++ b/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* diff --git a/debian/patches/arm-multilib-softfp-cross.diff b/debian/patches/arm-multilib-softfp-cross.diff new file mode 100644 index 0000000..89ed142 --- /dev/null +++ b/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* diff --git a/debian/patches/arm-multilib-softfp.diff b/debian/patches/arm-multilib-softfp.diff new file mode 100644 index 0000000..f4268da --- /dev/null +++ b/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* diff --git a/debian/patches/bind_now_when_pie.diff b/debian/patches/bind_now_when_pie.diff new file mode 100644 index 0000000..4fe24fe --- /dev/null +++ b/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 "" diff --git a/debian/patches/bootstrap-no-unneeded-libs.diff b/debian/patches/bootstrap-no-unneeded-libs.diff new file mode 100644 index 0000000..4939110 --- /dev/null +++ b/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; }; diff --git a/debian/patches/canonical-cpppath.diff b/debian/patches/canonical-cpppath.diff new file mode 100644 index 0000000..235a243 --- /dev/null +++ b/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); + } diff --git a/debian/patches/config-ml.diff b/debian/patches/config-ml.diff new file mode 100644 index 0000000..8e8d46e --- /dev/null +++ b/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 diff --git a/debian/patches/cross-biarch.diff b/debian/patches/cross-biarch.diff new file mode 100644 index 0000000..862bb7c --- /dev/null +++ b/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"`' ' ;; + *) diff --git a/debian/patches/cross-fixes.diff b/debian/patches/cross-fixes.diff new file mode 100644 index 0000000..cfe223f --- /dev/null +++ b/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 *); diff --git a/debian/patches/cross-install-location.diff b/debian/patches/cross-install-location.diff new file mode 100644 index 0000000..4edeae0 --- /dev/null +++ b/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 \ diff --git a/debian/patches/cross-no-locale-include.diff b/debian/patches/cross-no-locale-include.diff new file mode 100644 index 0000000..7b7c18a --- /dev/null +++ b/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 diff --git a/debian/patches/cuda-float128.diff b/debian/patches/cuda-float128.diff new file mode 100644 index 0000000..5a87860 --- /dev/null +++ b/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) diff --git a/debian/patches/disable-gdc-tests.diff b/debian/patches/disable-gdc-tests.diff new file mode 100644 index 0000000..ef9e21c --- /dev/null +++ b/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. + diff --git a/debian/patches/g++-multiarch-incdir.diff b/debian/patches/g++-multiarch-incdir.diff new file mode 100644 index 0000000..4091d8b --- /dev/null +++ b/debian/patches/g++-multiarch-incdir.diff @@ -0,0 +1,109 @@ +# DP: Use /usr/include//c++/4.x as the include directory +# DP: for host dependent c++ header files. + +--- a/src/libstdc++-v3/include/Makefile.am ++++ b/src/libstdc++-v3/include/Makefile.am +@@ -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 \ +--- a/src/libstdc++-v3/include/Makefile.in ++++ b/src/libstdc++-v3/include/Makefile.in +@@ -1216,7 +1216,7 @@ profile_impl_headers = \ + @GLIBCXX_C_HEADERS_COMPATIBILITY_TRUE@c_compatibility_headers_extra = ${c_compatibility_headers} + host_srcdir = ${glibcxx_srcdir}/$(OS_INC_SRCDIR) + host_builddir = ./${host_alias}/bits +-host_installdir = ${gxx_include_dir}/${host_alias}$(MULTISUBDIR)/bits ++host_installdir = $(if $(shell $(CC) -print-multiarch),/usr/include/$(shell $(filter-out -m%,$(CC)) -print-multiarch)/c++/$(notdir ${gxx_include_dir})$(MULTISUBDIR)/bits,${gxx_include_dir}/${default_host_alias}$(MULTISUBDIR)/bits) + host_headers = \ + ${host_srcdir}/ctype_base.h \ + ${host_srcdir}/ctype_inline.h \ +--- a/src/gcc/Makefile.in ++++ b/src/gcc/Makefile.in +@@ -1171,6 +1171,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)" \ +@@ -1719,6 +1720,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 +@@ -2882,7 +2891,7 @@ PREPROCESSOR_DEFINES = \ + -DFIXED_INCLUDE_DIR=\"$(libsubdir)/include-fixed\" \ + -DGPLUSPLUS_INCLUDE_DIR=\"$(gcc_gxx_include_dir)\" \ + -DGPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT=$(gcc_gxx_include_dir_add_sysroot) \ +- -DGPLUSPLUS_TOOL_INCLUDE_DIR=\"$(gcc_gxx_include_dir)/$(target_noncanonical)\" \ ++ -DGPLUSPLUS_TOOL_INCLUDE_DIR=\"$(gcc_gxx_tool_include_dir)\" \ + -DGPLUSPLUS_BACKWARD_INCLUDE_DIR=\"$(gcc_gxx_include_dir)/backward\" \ + -DLOCAL_INCLUDE_DIR=\"$(local_includedir)\" \ + -DCROSS_INCLUDE_DIR=\"$(CROSS_SYSTEM_HEADER_DIR)\" \ +--- a/src/gcc/cppdefault.c ++++ b/src/gcc/cppdefault.c +@@ -49,6 +49,8 @@ const struct default_include cpp_include + /* Pick up GNU C++ target-dependent include files. */ + { GPLUSPLUS_TOOL_INCLUDE_DIR, "G++", 1, 1, + GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 1 }, ++ { GPLUSPLUS_INCLUDE_DIR, "G++", 1, 1, ++ GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 2 }, + #endif + #ifdef GPLUSPLUS_BACKWARD_INCLUDE_DIR + /* Pick up GNU C++ backward and deprecated include files. */ +--- a/src/gcc/incpath.c ++++ b/src/gcc/incpath.c +@@ -159,6 +159,18 @@ add_standard_paths (const char *sysroot, + } + str = reconcat (str, str, dir_separator_str, + imultiarch, NULL); ++ if (p->cplusplus && strstr (str, "/c++/")) ++ { ++ char *suffix = strstr (str, "/c++/"); ++ *suffix++ = '\0'; ++ suffix = xstrdup (suffix); ++ str = reconcat (str, str, dir_separator_str, ++ imultiarch, ++ dir_separator_str, suffix, NULL); ++ } ++ else ++ str = reconcat (str, str, dir_separator_str, ++ imultiarch, NULL); + } + add_path (str, INC_SYSTEM, p->cxx_aware, false); + } +@@ -223,7 +235,16 @@ add_standard_paths (const char *sysroot, + free (str); + continue; + } +- str = reconcat (str, str, dir_separator_str, imultiarch, NULL); ++ if (p->cplusplus && strstr (str, "/c++/")) ++ { ++ char *suffix = strstr (str, "/c++/"); ++ *suffix++ = '\0'; ++ suffix = xstrdup (suffix); ++ str = reconcat (str, str, dir_separator_str, imultiarch, ++ dir_separator_str, suffix, NULL); ++ } ++ else ++ str = reconcat (str, str, dir_separator_str, imultiarch, NULL); + } + + add_path (str, INC_SYSTEM, p->cxx_aware, false); diff --git a/debian/patches/gcc-alpha-bs-ignore.diff b/debian/patches/gcc-alpha-bs-ignore.diff new file mode 100644 index 0000000..b862e59 --- /dev/null +++ b/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) + diff --git a/debian/patches/gcc-as-needed-gold.diff b/debian/patches/gcc-as-needed-gold.diff new file mode 100644 index 0000000..df3dfdf --- /dev/null +++ b/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 diff --git a/debian/patches/gcc-as-needed-push-pop.diff b/debian/patches/gcc-as-needed-push-pop.diff new file mode 100644 index 0000000..5dc4826 --- /dev/null +++ b/debian/patches/gcc-as-needed-push-pop.diff @@ -0,0 +1,41 @@ +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. + +--- a/src/gcc/configure.ac ++++ b/src/gcc/configure.ac +@@ -5514,11 +5514,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) diff --git a/debian/patches/gcc-as-needed.diff b/debian/patches/gcc-as-needed.diff new file mode 100644 index 0000000..c9f67ac --- /dev/null +++ b/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: \ diff --git a/debian/patches/gcc-auto-build.diff b/debian/patches/gcc-auto-build.diff new file mode 100644 index 0000000..c13e2d1 --- /dev/null +++ b/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" \ diff --git a/debian/patches/gcc-d-lang.diff b/debian/patches/gcc-d-lang.diff new file mode 100644 index 0000000..a214841 --- /dev/null +++ b/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 ++ diff --git a/debian/patches/gcc-default-fortify-source.diff b/debian/patches/gcc-default-fortify-source.diff new file mode 100644 index 0000000..74d7ed0 --- /dev/null +++ b/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__"); diff --git a/debian/patches/gcc-default-relro.diff b/debian/patches/gcc-default-relro.diff new file mode 100644 index 0000000..2d1cea8 --- /dev/null +++ b/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}, diff --git a/debian/patches/gcc-driver-extra-langs-linaro.diff b/debian/patches/gcc-driver-extra-langs-linaro.diff new file mode 100644 index 0000000..6fd50a3 --- /dev/null +++ b/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@ diff --git a/debian/patches/gcc-driver-extra-langs.diff b/debian/patches/gcc-driver-extra-langs.diff new file mode 100644 index 0000000..009acd6 --- /dev/null +++ b/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@ diff --git a/debian/patches/gcc-foffload-default.diff b/debian/patches/gcc-foffload-default.diff new file mode 100644 index 0000000..802f75a --- /dev/null +++ b/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 +@@ -296,6 +296,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. */ + +@@ -4553,7 +4557,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 +@@ -7832,6 +7839,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, diff --git a/debian/patches/gcc-force-cross-layout.diff b/debian/patches/gcc-force-cross-layout.diff new file mode 100644 index 0000000..8b3c3da --- /dev/null +++ b/debian/patches/gcc-force-cross-layout.diff @@ -0,0 +1,60 @@ +# DP: Add FORCE_CROSS_LAYOUT env var to force a cross directory layout. + +--- 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 + +--- 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 +@@ -6391,14 +6391,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 +--- a/src/gnattools/configure.ac ++++ b/src/gnattools/configure.ac +@@ -53,7 +53,7 @@ + AC_PROG_LN_S + + # Determine what to build for 'gnattools' +-if test $build = $target ; then ++if test $build = $target && test x$FORCE_CROSS_LAYOUT = x; then + # Note that build=target is almost certainly the wrong test; FIXME + default_gnattools_target="gnattools-native" + else diff --git a/debian/patches/gcc-fuse-ld-lld-doc.diff b/debian/patches/gcc-fuse-ld-lld-doc.diff new file mode 100644 index 0000000..6483281 --- /dev/null +++ b/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} diff --git a/debian/patches/gcc-fuse-ld-lld.diff b/debian/patches/gcc-fuse-ld-lld.diff new file mode 100644 index 0000000..f34c019 --- /dev/null +++ b/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 +@@ -2489,6 +2489,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; diff --git a/debian/patches/gcc-gfdl-build.diff b/debian/patches/gcc-gfdl-build.diff new file mode 100644 index 0000000..87b5ca2 --- /dev/null +++ b/debian/patches/gcc-gfdl-build.diff @@ -0,0 +1,37 @@ +# DP: Build a dummy s-tm-texi without access to the texinfo sources + +--- a/src/gcc/Makefile.in ++++ b/src/gcc/Makefile.in +@@ -2480,30 +2480,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 diff --git a/debian/patches/gcc-hash-style-both.diff b/debian/patches/gcc-hash-style-both.diff new file mode 100644 index 0000000..f0af163 --- /dev/null +++ b/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: \ diff --git a/debian/patches/gcc-hash-style-gnu.diff b/debian/patches/gcc-hash-style-gnu.diff new file mode 100644 index 0000000..cfd89c3 --- /dev/null +++ b/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} \ diff --git a/debian/patches/gcc-ice-apport.diff b/debian/patches/gcc-ice-apport.diff new file mode 100644 index 0000000..be6df08 --- /dev/null +++ b/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 +@@ -7038,6 +7038,16 @@ do_report_bug (const char **new_argv, co + fflush(stderr); + free(cmd); + } ++ if (!env.get ("GCC_NOAPPORT") ++ && !access ("/usr/share/apport/gcc_ice_hook", R_OK | X_OK)) ++ { ++ char *cmd = XNEWVEC (char, 50 + strlen (*out_file) ++ + strlen (new_argv[0])); ++ sprintf (cmd, "/usr/share/apport/gcc_ice_hook %s %s", ++ new_argv[0], *out_file); ++ system (cmd); ++ free (cmd); ++ } + /* Make sure it is not deleted. */ + free (*out_file); + *out_file = NULL; diff --git a/debian/patches/gcc-ice-dump.diff b/debian/patches/gcc-ice-dump.diff new file mode 100644 index 0000000..80bd618 --- /dev/null +++ b/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 +@@ -3257,7 +3257,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)) +@@ -7020,8 +7021,23 @@ do_report_bug (const char **new_argv, co + + if (status == ATTEMPT_STATUS_SUCCESS) + { ++ const char *deb_build_options = env.get("DEB_BUILD_OPTIONS"); ++ + fnotice (stderr, "Preprocessed source stored into %s file," + " please attach this to your bugreport.\n", *out_file); ++ if (deb_build_options) ++ { ++ char *cmd = XNEWVEC (char, 50 + strlen (*out_file)); ++ ++ sprintf(cmd, "/usr/bin/awk '{print \"%d:\", $0}' %s >&2", getpid(), *out_file); ++ fprintf(stderr, "=== BEGIN GCC DUMP ===\n"); ++ fflush(stderr); ++ system(cmd); ++ fflush(stderr); ++ fprintf(stderr, "=== END GCC DUMP ===\n"); ++ fflush(stderr); ++ free(cmd); ++ } + /* Make sure it is not deleted. */ + free (*out_file); + *out_file = NULL; diff --git a/debian/patches/gcc-linaro-doc.diff b/debian/patches/gcc-linaro-doc.diff new file mode 100644 index 0000000..6478a2e --- /dev/null +++ b/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 diff --git a/debian/patches/gcc-linaro-no-macros.diff b/debian/patches/gcc-linaro-no-macros.diff new file mode 100644 index 0000000..38adf2f --- /dev/null +++ b/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 diff --git a/debian/patches/gcc-linaro-revert-r270683.diff b/debian/patches/gcc-linaro-revert-r270683.diff new file mode 100644 index 0000000..a5c7e6a --- /dev/null +++ b/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 diff --git a/debian/patches/gcc-linaro.diff b/debian/patches/gcc-linaro.diff new file mode 100644 index 0000000..7d437b2 --- /dev/null +++ b/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" diff --git a/debian/patches/gcc-multiarch.diff b/debian/patches/gcc-multiarch.diff new file mode 100644 index 0000000..83be026 --- /dev/null +++ b/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 +@@ -2187,6 +2187,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 +@@ -2197,6 +2202,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" +@@ -3207,6 +3216,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-*) +@@ -4713,7 +4732,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) diff --git a/debian/patches/gcc-multilib-multiarch.diff b/debian/patches/gcc-multilib-multiarch.diff new file mode 100644 index 0000000..8e64315 --- /dev/null +++ b/debian/patches/gcc-multilib-multiarch.diff @@ -0,0 +1,114 @@ +# DP: Don't auto-detect multilib osdirnames. + +--- a/src/gcc/config/sparc/t-linux64 ++++ b/src/gcc/config/sparc/t-linux64 +@@ -25,7 +25,12 @@ + + MULTILIB_OPTIONS = m64/m32 + MULTILIB_DIRNAMES = 64 32 ++ifneq (,$(findstring sparc64,$(target))) ++MULTILIB_OSDIRNAMES = ../lib$(call if_multiarch,:sparc64-linux-gnu) ++MULTILIB_OSDIRNAMES += ../lib32$(call if_multiarch,:sparc-linux-gnu) ++else + MULTILIB_OSDIRNAMES = ../lib64$(call if_multiarch,:sparc64-linux-gnu) +-MULTILIB_OSDIRNAMES += $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)$(call if_multiarch,:sparc-linux-gnu) ++MULTILIB_OSDIRNAMES += ../lib$(call if_multiarch,:sparc-linux-gnu) ++endif + + MULTIARCH_DIRNAME = $(call if_multiarch,sparc$(if $(findstring 64,$(target)),64)-linux-gnu) +--- a/src/gcc/config/s390/t-linux64 ++++ b/src/gcc/config/s390/t-linux64 +@@ -7,7 +7,12 @@ + + MULTILIB_OPTIONS = m64/m31 + MULTILIB_DIRNAMES = 64 32 ++ifneq (,$(findstring s390x,$(target))) ++MULTILIB_OSDIRNAMES = ../lib$(call if_multiarch,:s390x-linux-gnu) ++MULTILIB_OSDIRNAMES += ../lib32$(call if_multiarch,:s390-linux-gnu) ++else + MULTILIB_OSDIRNAMES = ../lib64$(call if_multiarch,:s390x-linux-gnu) +-MULTILIB_OSDIRNAMES += $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)$(call if_multiarch,:s390-linux-gnu) ++MULTILIB_OSDIRNAMES += ../lib$(call if_multiarch,:s390-linux-gnu) ++endif + + MULTIARCH_DIRNAME = $(call if_multiarch,s390$(if $(findstring s390x,$(target)),x)-linux-gnu) +--- a/src/gcc/config/rs6000/t-linux64 ++++ b/src/gcc/config/rs6000/t-linux64 +@@ -28,8 +28,13 @@ + MULTILIB_OPTIONS := m64/m32 + MULTILIB_DIRNAMES := 64 32 + MULTILIB_EXTRA_OPTS := ++ifneq (,$(findstring powerpc64,$(target))) ++MULTILIB_OSDIRNAMES := m64=../lib$(call if_multiarch,:powerpc64-linux-gnu) ++MULTILIB_OSDIRNAMES += m32=../lib32$(call if_multiarch,:powerpc-linux-gnu) ++else + MULTILIB_OSDIRNAMES := m64=../lib64$(call if_multiarch,:powerpc64-linux-gnu) +-MULTILIB_OSDIRNAMES += m32=$(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)$(call if_multiarch,:powerpc-linux-gnu) ++MULTILIB_OSDIRNAMES += m32=../lib$(call if_multiarch,:powerpc-linux-gnu) ++endif + + MULTIARCH_DIRNAME = $(call if_multiarch,powerpc$(if $(findstring 64,$(target)),64)-linux-gnu) + +--- a/src/gcc/config/i386/t-linux64 ++++ b/src/gcc/config/i386/t-linux64 +@@ -33,9 +33,19 @@ + comma=, + MULTILIB_OPTIONS = $(subst $(comma),/,$(TM_MULTILIB_CONFIG)) + MULTILIB_DIRNAMES = $(patsubst m%, %, $(subst /, ,$(MULTILIB_OPTIONS))) ++ifneq (,$(findstring gnux32,$(target))) + MULTILIB_OSDIRNAMES = m64=../lib64$(call if_multiarch,:x86_64-linux-gnu) +-MULTILIB_OSDIRNAMES+= m32=$(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)$(call if_multiarch,:i386-linux-gnu) ++MULTILIB_OSDIRNAMES+= m32=../lib32$(call if_multiarch,:i386-linux-gnu) ++MULTILIB_OSDIRNAMES+= mx32=../lib$(call if_multiarch,:x86_64-linux-gnux32) ++else ifneq (,$(findstring x86_64,$(target))) ++MULTILIB_OSDIRNAMES = m64=../lib$(call if_multiarch,:x86_64-linux-gnu) ++MULTILIB_OSDIRNAMES+= m32=../lib32$(call if_multiarch,:i386-linux-gnu) + MULTILIB_OSDIRNAMES+= mx32=../libx32$(call if_multiarch,:x86_64-linux-gnux32) ++else ++MULTILIB_OSDIRNAMES = m64=../lib64$(call if_multiarch,:x86_64-linux-gnu) ++MULTILIB_OSDIRNAMES+= m32=../lib$(call if_multiarch,:i386-linux-gnu) ++MULTILIB_OSDIRNAMES+= mx32=../libx32$(call if_multiarch,:x86_64-linux-gnux32) ++endif + + ifneq (,$(findstring x86_64,$(target))) + ifneq (,$(findstring biarchx32.h,$(tm_include_list))) +--- a/src/gcc/config/mips/t-linux64 ++++ b/src/gcc/config/mips/t-linux64 +@@ -23,10 +23,23 @@ MIPS_32 = $(if $(findstring r6, $(firstw + MIPS_ISA = $(if $(findstring r6, $(firstword $(subst -, ,$(target)))),isa) + MIPS_EL = $(if $(filter %el, $(firstword $(subst -, ,$(target)))),el) + MIPS_SOFT = $(if $(strip $(filter MASK_SOFT_FLOAT_ABI, $(target_cpu_default)) $(filter soft, $(with_float))),soft) ++ ++ifneq (,$(findstring gnuabi64,$(target))) ++MULTILIB_OSDIRNAMES = \ ++ ../lib32$(call if_multiarch,:mips$(MIPS_ISA)64$(MIPS_R6)$(MIPS_EL)-linux-gnuabin32$(MIPS_SOFT)) \ ++ ../libo32$(call if_multiarch,:mips$(MIPS_ISA)$(MIPS_32)$(MIPS_R6)$(MIPS_EL)-linux-gnu$(MIPS_SOFT)) \ ++ ../lib$(call if_multiarch,:mips$(MIPS_ISA)64$(MIPS_R6)$(MIPS_EL)-linux-gnuabi64$(MIPS_SOFT)) ++else ifneq (,$(findstring gnuabin32,$(target))) ++MULTILIB_OSDIRNAMES = \ ++ ../lib$(call if_multiarch,:mips$(MIPS_ISA)64$(MIPS_R6)$(MIPS_EL)-linux-gnuabin32$(MIPS_SOFT)) \ ++ ../libo32$(call if_multiarch,:mips$(MIPS_ISA)$(MIPS_32)$(MIPS_R6)$(MIPS_EL)-linux-gnu$(MIPS_SOFT)) \ ++ ../lib64$(call if_multiarch,:mips$(MIPS_ISA)64$(MIPS_R6)$(MIPS_EL)-linux-gnuabi64$(MIPS_SOFT)) ++else + MULTILIB_OSDIRNAMES = \ +- ../lib32$(call if_multiarch,:mips64$(MIPS_EL)-linux-gnuabin32$(MIPS_SOFT)) \ +- ../lib$(call if_multiarch,:mips$(MIPS_EL)-linux-gnu$(MIPS_SOFT)) \ +- ../lib64$(call if_multiarch,:mips64$(MIPS_EL)-linux-gnuabi64$(MIPS_SOFT)) ++ ../lib32$(call if_multiarch,:mips$(MIPS_ISA)64$(MIPS_R6)$(MIPS_EL)-linux-gnuabin32$(MIPS_SOFT)) \ ++ ../lib$(call if_multiarch,:mips$(MIPS_ISA)$(MIPS_32)$(MIPS_R6)$(MIPS_EL)-linux-gnu$(MIPS_SOFT)) \ ++ ../lib64$(call if_multiarch,:mips$(MIPS_ISA)64$(MIPS_R6)$(MIPS_EL)-linux-gnuabi64$(MIPS_SOFT)) ++endif + + ifneq (,$(findstring abin32,$(target))) + MULTIARCH_DIRNAME = $(call if_multiarch,mips$(MIPS_ISA)64$(MIPS_R6)$(MIPS_EL)-linux-gnuabin32$(MIPS_SOFT)) +--- a/src/gcc/config/rs6000/t-linux ++++ b/src/gcc/config/rs6000/t-linux +@@ -2,7 +2,7 @@ + # or soft-float. + ifeq (,$(filter $(with_cpu),$(SOFT_FLOAT_CPUS))$(findstring soft,$(with_float))) + ifneq (,$(findstring powerpc64,$(target))) +-MULTILIB_OSDIRNAMES := .=../lib64$(call if_multiarch,:powerpc64-linux-gnu) ++MULTILIB_OSDIRNAMES := .=../lib$(call if_multiarch,:powerpc64-linux-gnu) + else + MULTIARCH_DIRNAME := $(call if_multiarch,powerpc-linux-gnu) + endif diff --git a/debian/patches/gcc-search-prefixed-as-ld.diff b/debian/patches/gcc-search-prefixed-as-ld.diff new file mode 100644 index 0000000..18eabb0 --- /dev/null +++ b/debian/patches/gcc-search-prefixed-as-ld.diff @@ -0,0 +1,37 @@ +# DP: Search for the -as / -ld before serching for as / ld. + +--- a/src/gcc/gcc.c ++++ b/src/gcc/gcc.c +@@ -2686,6 +2686,7 @@ for_each_path (const struct path_prefix + { + len = paths->max_len + extra_space + 1; + len += MAX (MAX (suffix_len, multi_os_dir_len), multiarch_len); ++ len += strlen (DEFAULT_REAL_TARGET_MACHINE) + 2; /* triplet prefix for as, ld. */ + path = XNEWVEC (char, len); + } + +@@ -2899,6 +2900,24 @@ file_at_path (char *path, void *data) + struct file_at_path_info *info = (struct file_at_path_info *) data; + size_t len = strlen (path); + ++ /* search for the -as / -ld first. */ ++ if (! strcmp (info->name, "as") || ! strcmp (info->name, "ld")) ++ { ++ struct file_at_path_info prefix_info = *info; ++ char *prefixed_name = XNEWVEC (char, info->name_len + 2 ++ + strlen (DEFAULT_REAL_TARGET_MACHINE)); ++ strcpy (prefixed_name, DEFAULT_REAL_TARGET_MACHINE); ++ strcat (prefixed_name, "-"); ++ strcat (prefixed_name, info->name); ++ prefix_info.name = (const char *) prefixed_name; ++ prefix_info.name_len = strlen (prefixed_name); ++ if (file_at_path (path, &prefix_info)) ++ { ++ XDELETEVEC (prefixed_name); ++ return path; ++ } ++ XDELETEVEC (prefixed_name); ++ } + memcpy (path + len, info->name, info->name_len); + len += info->name_len; + diff --git a/debian/patches/gcc-target-include-asm.diff b/debian/patches/gcc-target-include-asm.diff new file mode 100644 index 0000000..b71a4d4 --- /dev/null +++ b/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 && diff --git a/debian/patches/gcc-textdomain.diff b/debian/patches/gcc-textdomain.diff new file mode 100644 index 0000000..1df12c5 --- /dev/null +++ b/debian/patches/gcc-textdomain.diff @@ -0,0 +1,86 @@ +# DP: Set gettext's domain and textdomain to the versioned package name. + +--- a/src/gcc/intl.c ++++ b/src/gcc/intl.c +@@ -55,8 +55,8 @@ gcc_init_libintl (void) + setlocale (LC_ALL, ""); + #endif + +- (void) bindtextdomain ("gcc", LOCALEDIR); +- (void) textdomain ("gcc"); ++ (void) bindtextdomain ("gcc-8", LOCALEDIR); ++ (void) textdomain ("gcc-8"); + + /* Opening quotation mark. */ + open_quote = _("`"); +--- a/src/gcc/Makefile.in ++++ b/src/gcc/Makefile.in +@@ -4202,8 +4202,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). +--- 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 + } + } +--- 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_ +--- 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: diff --git a/debian/patches/gdc-8-doc.diff b/debian/patches/gdc-8-doc.diff new file mode 100644 index 0000000..f4be90f --- /dev/null +++ b/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, diff --git a/debian/patches/gdc-8.diff b/debian/patches/gdc-8.diff new file mode 100644 index 0000000..0ef868d --- /dev/null +++ b/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 +@@ -29589,11 +29589,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 +@@ -5475,6 +5475,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. */ + +@@ -24565,6 +24575,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) +@@ -26165,7 +26177,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); +@@ -26188,7 +26200,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. */ +@@ -26260,7 +26272,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. */ +@@ -26853,7 +26865,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 +@@ -1374,6 +1374,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 diff --git a/debian/patches/gdc-cross-biarch.diff b/debian/patches/gdc-cross-biarch.diff new file mode 100644 index 0000000..24dd5bc --- /dev/null +++ b/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"`' ' ;; + *) diff --git a/debian/patches/gdc-cross-build.diff b/debian/patches/gdc-cross-build.diff new file mode 100644 index 0000000..80f3a92 --- /dev/null +++ b/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 diff --git a/debian/patches/gdc-cross-install-location.diff b/debian/patches/gdc-cross-install-location.diff new file mode 100644 index 0000000..350f322 --- /dev/null +++ b/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) + ]) + diff --git a/debian/patches/gdc-driver-nophobos.diff b/debian/patches/gdc-driver-nophobos.diff new file mode 100644 index 0000000..6cb41ff --- /dev/null +++ b/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, diff --git a/debian/patches/gdc-frontend-posix.diff b/debian/patches/gdc-frontend-posix.diff new file mode 100644 index 0000000..3c70021 --- /dev/null +++ b/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 diff --git a/debian/patches/gdc-libphobos-build.diff b/debian/patches/gdc-libphobos-build.diff new file mode 100644 index 0000000..5e77141 --- /dev/null +++ b/debian/patches/gdc-libphobos-build.diff @@ -0,0 +1,998 @@ +# DP: This implements building of libphobos library in GCC. + +# Please read ada-changes-in-autogen-output.diff about src/Makefile.[def|tpl]. + +--- 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 ; }; +--- 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; \ +@@ -280,6 +283,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; \ +@@ -344,6 +348,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@ +@@ -410,6 +415,7 @@ LIBCFLAGS = $(CFLAGS) + CXXFLAGS = @CXXFLAGS@ + LIBCXXFLAGS = $(CXXFLAGS) -fno-implicit-templates + GOCFLAGS = $(CFLAGS) ++GDCFLAGS = $(CFLAGS) + + CREATE_GCOV = create_gcov + +@@ -566,6 +572,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@ + +@@ -590,6 +597,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@ +@@ -785,6 +793,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)" \ +@@ -847,6 +857,7 @@ EXTRA_HOST_FLAGS = \ + 'DLLTOOL=$(DLLTOOL)' \ + 'GFORTRAN=$(GFORTRAN)' \ + 'GOC=$(GOC)' \ ++ 'GDC=$(GDC)' \ + 'LD=$(LD)' \ + 'LIPO=$(LIPO)' \ + 'NM=$(NM)' \ +@@ -903,6 +914,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)' \ +@@ -1005,6 +1018,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 \ +@@ -1170,6 +1184,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 +@@ -1262,6 +1277,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 +@@ -1347,6 +1363,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 +@@ -1432,6 +1449,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 +@@ -1517,6 +1535,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 +@@ -1602,6 +1621,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 +@@ -1687,6 +1707,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 +@@ -1772,6 +1793,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 +@@ -1857,6 +1879,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 +@@ -1942,6 +1965,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 +@@ -2027,6 +2051,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 +@@ -2112,6 +2137,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 +@@ -2197,6 +2223,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 +@@ -2282,6 +2309,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 +@@ -2423,6 +2451,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 \ +@@ -2604,6 +2633,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 \ +@@ -2709,6 +2739,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 \ +@@ -48203,6 +48234,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 +@@ -53584,6 +54073,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. +@@ -56785,6 +57282,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 +@@ -56820,6 +57318,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 +@@ -57936,6 +58435,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 +@@ -57985,6 +58489,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 +@@ -58069,6 +58574,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 +@@ -58109,6 +58615,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 +--- 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; \ +@@ -283,6 +286,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; \ +@@ -347,6 +351,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@ +@@ -413,6 +418,7 @@ LIBCFLAGS = $(CFLAGS) + CXXFLAGS = @CXXFLAGS@ + LIBCXXFLAGS = $(CXXFLAGS) -fno-implicit-templates + GOCFLAGS = $(CFLAGS) ++GDCFLAGS = $(CFLAGS) + + CREATE_GCOV = create_gcov + +@@ -489,6 +495,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@ + +@@ -513,6 +520,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@ +@@ -614,6 +622,7 @@ EXTRA_HOST_FLAGS = \ + 'DLLTOOL=$(DLLTOOL)' \ + 'GFORTRAN=$(GFORTRAN)' \ + 'GOC=$(GOC)' \ ++ 'GDC=$(GDC)' \ + 'LD=$(LD)' \ + 'LIPO=$(LIPO)' \ + 'NM=$(NM)' \ +@@ -670,6 +679,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)' \ +--- 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 +--- 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 +--- 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]) diff --git a/debian/patches/gdc-multiarch.diff b/debian/patches/gdc-multiarch.diff new file mode 100644 index 0000000..1925e1a --- /dev/null +++ b/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\" diff --git a/debian/patches/gdc-profiledbuild.diff b/debian/patches/gdc-profiledbuild.diff new file mode 100644 index 0000000..1c0de27 --- /dev/null +++ b/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 diff --git a/debian/patches/gdc-shared-by-default.diff b/debian/patches/gdc-shared-by-default.diff new file mode 100644 index 0000000..e2463fc --- /dev/null +++ b/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) diff --git a/debian/patches/gdc-sparc-fix.diff b/debian/patches/gdc-sparc-fix.diff new file mode 100644 index 0000000..026388e --- /dev/null +++ b/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" diff --git a/debian/patches/gdc-targetdm-doc.diff b/debian/patches/gdc-targetdm-doc.diff new file mode 100644 index 0000000..6a6e42d --- /dev/null +++ b/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 diff --git a/debian/patches/gdc-targetdm.diff b/debian/patches/gdc-targetdm.diff new file mode 100644 index 0000000..55c4ef0 --- /dev/null +++ b/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) +@@ -1186,6 +1191,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@ + +@@ -1784,6 +1792,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="" \ +@@ -1810,6 +1819,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 +@@ -2176,6 +2190,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 = \ +@@ -2471,6 +2491,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 +@@ -2610,14 +2639,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 + + # +@@ -2760,7 +2790,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" +@@ -3204,6 +3228,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 +@@ -4749,6 +4777,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 +@@ -112,4 +112,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 +@@ -11811,6 +11814,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. +@@ -12180,6 +12184,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 +@@ -6389,6 +6405,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) +@@ -6396,6 +6414,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 + }; + diff --git a/debian/patches/gdc-texinfo.diff b/debian/patches/gdc-texinfo.diff new file mode 100644 index 0000000..0998e71 --- /dev/null +++ b/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 diff --git a/debian/patches/gdc-updates.diff b/debian/patches/gdc-updates.diff new file mode 100644 index 0000000..9c81677 --- /dev/null +++ b/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; diff --git a/debian/patches/git-doc-updates.diff b/debian/patches/git-doc-updates.diff new file mode 100644 index 0000000..415022e --- /dev/null +++ b/debian/patches/git-doc-updates.diff @@ -0,0 +1,21 @@ +# DP: updates from the 8 branch upto 20200323 (documentation). + +LANG=C git diff --no-renames --src-prefix=a/src/ --dst-prefix=b/src/ \ + 8cd3bffead2ed1d1998c190865694f920fbc93ab 3c1be1b68cbbc7324ab6ac0c6c689dbf35600293 \ + | awk '/^diff .*\.texi/ {skip=0; print; next} /^diff / {skip=1; next} skip==0' \ + | grep -v -E '^(diff|index)' + +--- a/src/gcc/doc/invoke.texi ++++ b/src/gcc/doc/invoke.texi +@@ -3859,6 +3859,11 @@ are being produced. This allows the use of new @option{-Wno-} options + with old compilers, but if something goes wrong, the compiler + warns that an unrecognized option is present. + ++The effectiveness of some warnings depends on optimizations also being ++enabled. For example @option{-Wsuggest-final-types} is more effective ++with link-time optimization and @option{-Wmaybe-uninitialized} will not ++warn at all unless optimization is enabled. ++ + @table @gcctabopt + @item -Wpedantic + @itemx -pedantic diff --git a/debian/patches/git-updates.diff b/debian/patches/git-updates.diff new file mode 100644 index 0000000..6377f1e --- /dev/null +++ b/debian/patches/git-updates.diff @@ -0,0 +1,46230 @@ +# DP: updates from the 8 branch upto 20201125 (1dbf117ce5d). + +LANG=C git diff --no-renames --src-prefix=a/src/ --dst-prefix=b/src/ \ + 8cd3bffead2ed1d1998c190865694f920fbc93ab 1dbf117ce5df08e3303f89c0af9e601b2cbd6163 \ + | awk '/^diff .*\.texi/ {skip=1; next} /^diff / { skip=0 } skip==0' \ + | grep -v -E '^(diff|index)' + +--- a/src/ChangeLog ++++ b/src/ChangeLog +@@ -1,3 +1,7 @@ ++2020-06-02 Martin Liska ++ ++ * -: Remove. ++ + 2020-03-04 Release Manager + + * GCC 8.4.0 released. +--- a/src/contrib/ChangeLog ++++ b/src/contrib/ChangeLog +@@ -1,3 +1,67 @@ ++2020-11-25 Martin Liska ++ ++ * gcc-changelog/git_commit.py: Use revert_regex instead ++ of string prefix. Convert sets to literals. ++ ++2020-11-06 Martin Liska ++ ++ * gcc-changelog/git_commit.py: Sync. ++ * gcc-changelog/git_email.py: Likewise. ++ * gcc-changelog/git_repository.py: Likewise. ++ * gcc-changelog/test_email.py: Likewise. ++ * gcc-changelog/test_patches.txt: Likewise. ++ * gcc-changelog/setup.cfg: New file. ++ ++2020-07-29 Martin Liska ++ ++ * git-backport.py: fix how are ChangeLog paths combined. ++ ++2020-07-23 Martin Liska ++ ++ Backported from master: ++ 2020-07-23 Martin Liska ++ ++ * gcc-changelog/git_commit.py: When reverting a backport, ++ we should print only Revert header. ++ ++2020-07-23 Jonathan Wakely ++ ++ Backported from master: ++ 2020-07-17 Jonathan Wakely ++ ++ * gcc-changelog/git_update_version.py: Fix typo. ++ ++2020-07-08 Alexandre Oliva ++ ++ Backported from master: ++ 2020-07-07 Alexandre Oliva ++ Martin Liska ++ ++ * gcc-changelog/git_commit.py: Support CASE and COND. ++ * gcc-changelog/test_patches.txt: Add test. ++ * gcc-changelog/test_email.py: Add test. ++ ++2020-07-02 Martin Liska ++ ++ * gcc-changelog/git_check_commit.py: New file. ++ * gcc-changelog/git_commit.py: New file. ++ * gcc-changelog/git_email.py: New file. ++ * gcc-changelog/git_repository.py: New file. ++ * gcc-changelog/git_update_version.py: New file. ++ * gcc-changelog/test_email.py: New file. ++ * gcc-changelog/test_patches.txt: New file. ++ ++2020-05-29 Martin Liska ++ ++ * git-backport.py: The script did 'git co HEAD~' when ++ there was no modified ChangeLog file in a successful ++ git cherry pick. ++ Run cherry-pick --continue without editor. ++ ++2020-05-27 Martin Liska ++ ++ * git-backport.py: New file. ++ + 2020-03-04 Release Manager + + * GCC 8.4.0 released. +new file mode 100755 +--- /dev/null ++++ b/src/contrib/gcc-changelog/git_check_commit.py +@@ -0,0 +1,49 @@ ++#!/usr/bin/env python3 ++# ++# 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 ++# . */ ++ ++import argparse ++ ++from git_repository import parse_git_revisions ++ ++parser = argparse.ArgumentParser(description='Check git ChangeLog format ' ++ 'of a commit') ++parser.add_argument('revisions', default='HEAD', nargs='?', ++ help='Git revisions (e.g. hash~5..hash or just hash)') ++parser.add_argument('-g', '--git-path', default='.', ++ help='Path to git repository') ++parser.add_argument('-p', '--print-changelog', action='store_true', ++ help='Print final changelog entires') ++parser.add_argument('-n', '--non-strict-mode', action='store_true', ++ help='Use non-strict mode (allow changes in ChangeLog and ' ++ 'other automatically updated files).') ++args = parser.parse_args() ++ ++retval = 0 ++for git_commit in parse_git_revisions(args.git_path, args.revisions, ++ not args.non_strict_mode): ++ res = 'OK' if git_commit.success else 'FAILED' ++ print('Checking %s: %s' % (git_commit.original_info.hexsha, res)) ++ if git_commit.success: ++ if args.print_changelog: ++ git_commit.print_output() ++ else: ++ for error in git_commit.errors: ++ print('ERR: %s' % error) ++ retval = 1 ++ ++exit(retval) +new file mode 100755 +--- /dev/null ++++ b/src/contrib/gcc-changelog/git_commit.py +@@ -0,0 +1,692 @@ ++#!/usr/bin/env python3 ++# ++# 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 ++# . */ ++ ++import os ++import re ++ ++changelog_locations = { ++ 'config', ++ 'contrib', ++ 'contrib/header-tools', ++ 'contrib/reghunt', ++ 'contrib/regression', ++ 'fixincludes', ++ 'gcc/ada', ++ 'gcc/analyzer', ++ 'gcc/brig', ++ 'gcc/c', ++ 'gcc/c-family', ++ 'gcc', ++ 'gcc/cp', ++ 'gcc/d', ++ 'gcc/fortran', ++ 'gcc/go', ++ 'gcc/jit', ++ 'gcc/lto', ++ 'gcc/objc', ++ 'gcc/objcp', ++ 'gcc/po', ++ 'gcc/testsuite', ++ 'gnattools', ++ 'gotools', ++ 'include', ++ 'intl', ++ 'libada', ++ 'libatomic', ++ 'libbacktrace', ++ 'libcc1', ++ 'libcpp', ++ 'libcpp/po', ++ 'libdecnumber', ++ 'libffi', ++ 'libgcc', ++ 'libgcc/config/avr/libf7', ++ 'libgcc/config/libbid', ++ 'libgfortran', ++ 'libgomp', ++ 'libhsail-rt', ++ 'libiberty', ++ 'libitm', ++ 'libobjc', ++ 'liboffloadmic', ++ 'libphobos', ++ 'libquadmath', ++ 'libsanitizer', ++ 'libssp', ++ 'libstdc++-v3', ++ 'libvtv', ++ 'lto-plugin', ++ 'maintainer-scripts', ++ 'zlib'} ++ ++bug_components = { ++ 'ada', ++ 'analyzer', ++ 'boehm-gc', ++ 'bootstrap', ++ 'c', ++ 'c++', ++ 'd', ++ 'debug', ++ 'demangler', ++ 'driver', ++ 'fastjar', ++ 'fortran', ++ 'gcov-profile', ++ 'go', ++ 'hsa', ++ 'inline-asm', ++ 'ipa', ++ 'java', ++ 'jit', ++ 'libbacktrace', ++ 'libf2c', ++ 'libffi', ++ 'libfortran', ++ 'libgcc', ++ 'libgcj', ++ 'libgomp', ++ 'libitm', ++ 'libobjc', ++ 'libquadmath', ++ 'libstdc++', ++ 'lto', ++ 'middle-end', ++ 'modula2', ++ 'objc', ++ 'objc++', ++ 'other', ++ 'pch', ++ 'pending', ++ 'plugins', ++ 'preprocessor', ++ 'regression', ++ 'rtl-optimization', ++ 'sanitizer', ++ 'spam', ++ 'target', ++ 'testsuite', ++ 'translation', ++ 'tree-optimization', ++ 'web'} ++ ++ignored_prefixes = { ++ 'gcc/d/dmd/', ++ 'gcc/go/gofrontend/', ++ 'gcc/testsuite/gdc.test/', ++ 'gcc/testsuite/go.test/test/', ++ 'libgo/', ++ 'libphobos/libdruntime/', ++ 'libphobos/src/', ++ 'libsanitizer/', ++ } ++ ++wildcard_prefixes = { ++ 'gcc/testsuite/', ++ 'libstdc++-v3/doc/html/' ++ } ++ ++misc_files = { ++ 'gcc/DATESTAMP', ++ 'gcc/BASE-VER', ++ 'gcc/DEV-PHASE' ++ } ++ ++author_line_regex = \ ++ re.compile(r'^(?P\d{4}-\d{2}-\d{2})\ {2}(?P.* <.*>)') ++additional_author_regex = re.compile(r'^\t(?P\ *)?(?P.* <.*>)') ++changelog_regex = re.compile(r'^(?:[fF]or +)?([a-z0-9+-/]*)ChangeLog:?') ++pr_regex = re.compile(r'\tPR (?P[a-z+-]+\/)?([0-9]+)$') ++dr_regex = re.compile(r'\tDR ([0-9]+)$') ++star_prefix_regex = re.compile(r'\t\*(?P\ *)(?P.*)') ++end_of_location_regex = re.compile(r'[\[<(:]') ++item_empty_regex = re.compile(r'\t(\* \S+ )?\(\S+\):\s*$') ++item_parenthesis_regex = re.compile(r'\t(\*|\(\S+\):)') ++revert_regex = re.compile(r'This reverts commit (?P\w+).$') ++ ++LINE_LIMIT = 100 ++TAB_WIDTH = 8 ++CO_AUTHORED_BY_PREFIX = 'co-authored-by: ' ++CHERRY_PICK_PREFIX = '(cherry picked from commit ' ++ ++REVIEW_PREFIXES = ('reviewed-by: ', 'reviewed-on: ', 'signed-off-by: ', ++ 'acked-by: ', 'tested-by: ', 'reported-by: ', ++ 'suggested-by: ') ++DATE_FORMAT = '%Y-%m-%d' ++ ++ ++class Error: ++ def __init__(self, message, line=None): ++ self.message = message ++ self.line = line ++ ++ def __repr__(self): ++ s = self.message ++ if self.line: ++ s += ':"%s"' % self.line ++ return s ++ ++ ++class ChangeLogEntry: ++ def __init__(self, folder, authors, prs): ++ self.folder = folder ++ # The 'list.copy()' function is not available before Python 3.3 ++ self.author_lines = list(authors) ++ self.initial_prs = list(prs) ++ self.prs = list(prs) ++ self.lines = [] ++ self.files = [] ++ self.file_patterns = [] ++ ++ def parse_file_names(self): ++ # Whether the content currently processed is between a star prefix the ++ # end of the file list: a colon or an open paren. ++ in_location = False ++ ++ for line in self.lines: ++ # If this line matches the star prefix, start the location ++ # processing on the information that follows the star. ++ m = star_prefix_regex.match(line) ++ if m: ++ in_location = True ++ line = m.group('content') ++ ++ if in_location: ++ # Strip everything that is not a filename in "line": ++ # entities "(NAME)", cases "", conditions ++ # "[COND]", entry text (the colon, if present, and ++ # anything that follows it). ++ m = end_of_location_regex.search(line) ++ if m: ++ line = line[:m.start()] ++ in_location = False ++ ++ # At this point, all that's left is a list of filenames ++ # separated by commas and whitespaces. ++ for file in line.split(','): ++ file = file.strip() ++ if file: ++ if file.endswith('*'): ++ self.file_patterns.append(file[:-1]) ++ else: ++ self.files.append(file) ++ ++ @property ++ def datetime(self): ++ for author in self.author_lines: ++ if author[1]: ++ return author[1] ++ return None ++ ++ @property ++ def authors(self): ++ return [author_line[0] for author_line in self.author_lines] ++ ++ @property ++ def is_empty(self): ++ return not self.lines and self.prs == self.initial_prs ++ ++ def contains_author(self, author): ++ for author_lines in self.author_lines: ++ if author_lines[0] == author: ++ return True ++ return False ++ ++ ++class GitInfo: ++ def __init__(self, hexsha, date, author, lines, modified_files): ++ self.hexsha = hexsha ++ self.date = date ++ self.author = author ++ self.lines = lines ++ self.modified_files = modified_files ++ ++ ++class GitCommit: ++ def __init__(self, info, strict=True, commit_to_info_hook=None): ++ self.original_info = info ++ self.info = info ++ self.message = None ++ self.changes = None ++ self.changelog_entries = [] ++ self.errors = [] ++ self.top_level_authors = [] ++ self.co_authors = [] ++ self.top_level_prs = [] ++ self.cherry_pick_commit = None ++ self.revert_commit = None ++ self.commit_to_info_hook = commit_to_info_hook ++ ++ # Identify first if the commit is a Revert commit ++ for line in self.info.lines: ++ m = revert_regex.match(line) ++ if m: ++ self.revert_commit = m.group('hash') ++ break ++ if self.revert_commit: ++ self.info = self.commit_to_info_hook(self.revert_commit) ++ ++ project_files = [f for f in self.info.modified_files ++ if self.is_changelog_filename(f[0]) ++ or f[0] in misc_files] ++ ignored_files = [f for f in self.info.modified_files ++ if self.in_ignored_location(f[0])] ++ if len(project_files) == len(self.info.modified_files): ++ # All modified files are only MISC files ++ return ++ elif project_files and strict: ++ self.errors.append(Error('ChangeLog, DATESTAMP, BASE-VER and ' ++ 'DEV-PHASE updates should be done ' ++ 'separately from normal commits')) ++ return ++ ++ all_are_ignored = (len(project_files) + len(ignored_files) ++ == len(self.info.modified_files)) ++ self.parse_lines(all_are_ignored) ++ if self.changes: ++ self.parse_changelog() ++ self.parse_file_names() ++ self.check_for_empty_description() ++ self.deduce_changelog_locations() ++ self.check_file_patterns() ++ if not self.errors: ++ self.check_mentioned_files() ++ self.check_for_correct_changelog() ++ ++ @property ++ def success(self): ++ return not self.errors ++ ++ @property ++ def new_files(self): ++ return [x[0] for x in self.info.modified_files if x[1] == 'A'] ++ ++ @classmethod ++ def is_changelog_filename(cls, path): ++ return path.endswith('/ChangeLog') or path == 'ChangeLog' ++ ++ @classmethod ++ def find_changelog_location(cls, name): ++ if name.startswith('\t'): ++ name = name[1:] ++ if name.endswith(':'): ++ name = name[:-1] ++ if name.endswith('/'): ++ name = name[:-1] ++ return name if name in changelog_locations else None ++ ++ @classmethod ++ def format_git_author(cls, author): ++ assert '<' in author ++ return author.replace('<', ' <') ++ ++ @classmethod ++ def parse_git_name_status(cls, string): ++ modified_files = [] ++ for entry in string.split('\n'): ++ parts = entry.split('\t') ++ t = parts[0] ++ if t == 'A' or t == 'D' or t == 'M': ++ modified_files.append((parts[1], t)) ++ elif t.startswith('R'): ++ modified_files.append((parts[1], 'D')) ++ modified_files.append((parts[2], 'A')) ++ return modified_files ++ ++ def parse_lines(self, all_are_ignored): ++ body = self.info.lines ++ ++ for i, b in enumerate(body): ++ if not b: ++ continue ++ if (changelog_regex.match(b) or self.find_changelog_location(b) ++ or star_prefix_regex.match(b) or pr_regex.match(b) ++ or dr_regex.match(b) or author_line_regex.match(b)): ++ self.changes = body[i:] ++ return ++ if not all_are_ignored: ++ self.errors.append(Error('cannot find a ChangeLog location in ' ++ 'message')) ++ ++ def parse_changelog(self): ++ last_entry = None ++ will_deduce = False ++ for line in self.changes: ++ if not line: ++ if last_entry and will_deduce: ++ last_entry = None ++ continue ++ if line != line.rstrip(): ++ self.errors.append(Error('trailing whitespace', line)) ++ if len(line.replace('\t', ' ' * TAB_WIDTH)) > LINE_LIMIT: ++ self.errors.append(Error('line exceeds %d character limit' ++ % LINE_LIMIT, line)) ++ m = changelog_regex.match(line) ++ if m: ++ last_entry = ChangeLogEntry(m.group(1).rstrip('/'), ++ self.top_level_authors, ++ self.top_level_prs) ++ self.changelog_entries.append(last_entry) ++ elif self.find_changelog_location(line): ++ last_entry = ChangeLogEntry(self.find_changelog_location(line), ++ self.top_level_authors, ++ self.top_level_prs) ++ self.changelog_entries.append(last_entry) ++ else: ++ author_tuple = None ++ pr_line = None ++ if author_line_regex.match(line): ++ m = author_line_regex.match(line) ++ author_tuple = (m.group('name'), m.group('datetime')) ++ elif additional_author_regex.match(line): ++ m = additional_author_regex.match(line) ++ if len(m.group('spaces')) != 4: ++ msg = 'additional author must be indented with '\ ++ 'one tab and four spaces' ++ self.errors.append(Error(msg, line)) ++ else: ++ author_tuple = (m.group('name'), None) ++ elif pr_regex.match(line): ++ component = pr_regex.match(line).group('component') ++ if not component: ++ self.errors.append(Error('missing PR component', line)) ++ continue ++ elif not component[:-1] in bug_components: ++ self.errors.append(Error('invalid PR component', line)) ++ continue ++ else: ++ pr_line = line.lstrip() ++ elif dr_regex.match(line): ++ pr_line = line.lstrip() ++ ++ lowered_line = line.lower() ++ if lowered_line.startswith(CO_AUTHORED_BY_PREFIX): ++ name = line[len(CO_AUTHORED_BY_PREFIX):] ++ author = self.format_git_author(name) ++ self.co_authors.append(author) ++ continue ++ elif lowered_line.startswith(REVIEW_PREFIXES): ++ continue ++ elif line.startswith(CHERRY_PICK_PREFIX): ++ commit = line[len(CHERRY_PICK_PREFIX):].rstrip(')') ++ if self.cherry_pick_commit: ++ self.errors.append(Error('multiple cherry pick lines', ++ line)) ++ else: ++ self.cherry_pick_commit = commit ++ continue ++ ++ # ChangeLog name will be deduced later ++ if not last_entry: ++ if author_tuple: ++ self.top_level_authors.append(author_tuple) ++ continue ++ elif pr_line: ++ # append to top_level_prs only when we haven't met ++ # a ChangeLog entry ++ if (pr_line not in self.top_level_prs ++ and not self.changelog_entries): ++ self.top_level_prs.append(pr_line) ++ continue ++ else: ++ last_entry = ChangeLogEntry(None, ++ self.top_level_authors, ++ self.top_level_prs) ++ self.changelog_entries.append(last_entry) ++ will_deduce = True ++ elif author_tuple: ++ if not last_entry.contains_author(author_tuple[0]): ++ last_entry.author_lines.append(author_tuple) ++ continue ++ ++ if not line.startswith('\t'): ++ err = Error('line should start with a tab', line) ++ self.errors.append(err) ++ elif pr_line: ++ last_entry.prs.append(pr_line) ++ else: ++ m = star_prefix_regex.match(line) ++ if m: ++ if len(m.group('spaces')) != 1: ++ msg = 'one space should follow asterisk' ++ self.errors.append(Error(msg, line)) ++ else: ++ content = m.group('content') ++ parts = content.split(':') ++ if len(parts) > 1: ++ for needle in ('()', '[]', '<>'): ++ if ' ' + needle in parts[0]: ++ msg = f'empty group "{needle}" found' ++ self.errors.append(Error(msg, line)) ++ last_entry.lines.append(line) ++ else: ++ if last_entry.is_empty: ++ msg = 'first line should start with a tab, ' \ ++ 'an asterisk and a space' ++ self.errors.append(Error(msg, line)) ++ else: ++ last_entry.lines.append(line) ++ ++ def parse_file_names(self): ++ for entry in self.changelog_entries: ++ entry.parse_file_names() ++ ++ def check_file_patterns(self): ++ for entry in self.changelog_entries: ++ for pattern in entry.file_patterns: ++ name = os.path.join(entry.folder, pattern) ++ if name not in wildcard_prefixes: ++ msg = 'unsupported wildcard prefix' ++ self.errors.append(Error(msg, name)) ++ ++ def check_for_empty_description(self): ++ for entry in self.changelog_entries: ++ for i, line in enumerate(entry.lines): ++ if (item_empty_regex.match(line) and ++ (i == len(entry.lines) - 1 ++ or not entry.lines[i+1].strip() ++ or item_parenthesis_regex.match(entry.lines[i+1]))): ++ msg = 'missing description of a change' ++ self.errors.append(Error(msg, line)) ++ ++ def get_file_changelog_location(self, changelog_file): ++ for file in self.info.modified_files: ++ if file[0] == changelog_file: ++ # root ChangeLog file ++ return '' ++ index = file[0].find('/' + changelog_file) ++ if index != -1: ++ return file[0][:index] ++ return None ++ ++ def deduce_changelog_locations(self): ++ for entry in self.changelog_entries: ++ if not entry.folder: ++ changelog = None ++ for file in entry.files: ++ location = self.get_file_changelog_location(file) ++ if (location == '' ++ or (location and location in changelog_locations)): ++ if changelog and changelog != location: ++ msg = 'could not deduce ChangeLog file, ' \ ++ 'not unique location' ++ self.errors.append(Error(msg)) ++ return ++ changelog = location ++ if changelog is not None: ++ entry.folder = changelog ++ else: ++ msg = 'could not deduce ChangeLog file' ++ self.errors.append(Error(msg)) ++ ++ @classmethod ++ def in_ignored_location(cls, path): ++ for ignored in ignored_prefixes: ++ if path.startswith(ignored): ++ return True ++ return False ++ ++ @classmethod ++ def get_changelog_by_path(cls, path): ++ components = path.split('/') ++ while components: ++ if '/'.join(components) in changelog_locations: ++ break ++ components = components[:-1] ++ return '/'.join(components) ++ ++ def check_mentioned_files(self): ++ folder_count = len([x.folder for x in self.changelog_entries]) ++ assert folder_count == len(self.changelog_entries) ++ ++ mentioned_files = set() ++ mentioned_patterns = [] ++ used_patterns = set() ++ for entry in self.changelog_entries: ++ if not entry.files: ++ msg = 'no files mentioned for ChangeLog in directory' ++ self.errors.append(Error(msg, entry.folder)) ++ assert not entry.folder.endswith('/') ++ for file in entry.files: ++ if not self.is_changelog_filename(file): ++ mentioned_files.add(os.path.join(entry.folder, file)) ++ for pattern in entry.file_patterns: ++ mentioned_patterns.append(os.path.join(entry.folder, pattern)) ++ ++ cand = [x[0] for x in self.info.modified_files ++ if not self.is_changelog_filename(x[0])] ++ changed_files = set(cand) ++ for file in sorted(mentioned_files - changed_files): ++ msg = 'unchanged file mentioned in a ChangeLog' ++ self.errors.append(Error(msg, file)) ++ for file in sorted(changed_files - mentioned_files): ++ if not self.in_ignored_location(file): ++ if file in self.new_files: ++ changelog_location = self.get_changelog_by_path(file) ++ # Python2: we cannot use next(filter(...)) ++ entries = filter(lambda x: x.folder == changelog_location, ++ self.changelog_entries) ++ entries = list(entries) ++ entry = entries[0] if entries else None ++ if not entry: ++ prs = self.top_level_prs ++ if not prs: ++ # if all ChangeLog entries have identical PRs ++ # then use them ++ prs = self.changelog_entries[0].prs ++ for entry in self.changelog_entries: ++ if entry.prs != prs: ++ prs = [] ++ break ++ entry = ChangeLogEntry(changelog_location, ++ self.top_level_authors, ++ prs) ++ self.changelog_entries.append(entry) ++ # strip prefix of the file ++ assert file.startswith(entry.folder) ++ file = file[len(entry.folder):].lstrip('/') ++ entry.lines.append('\t* %s: New file.' % file) ++ entry.files.append(file) ++ else: ++ used_pattern = [p for p in mentioned_patterns ++ if file.startswith(p)] ++ used_pattern = used_pattern[0] if used_pattern else None ++ if used_pattern: ++ used_patterns.add(used_pattern) ++ else: ++ msg = 'changed file not mentioned in a ChangeLog' ++ self.errors.append(Error(msg, file)) ++ ++ for pattern in mentioned_patterns: ++ if pattern not in used_patterns: ++ error = 'pattern doesn''t match any changed files' ++ self.errors.append(Error(error, pattern)) ++ ++ def check_for_correct_changelog(self): ++ for entry in self.changelog_entries: ++ for file in entry.files: ++ full_path = os.path.join(entry.folder, file) ++ changelog_location = self.get_changelog_by_path(full_path) ++ if changelog_location != entry.folder: ++ msg = 'wrong ChangeLog location "%s", should be "%s"' ++ err = Error(msg % (entry.folder, changelog_location), file) ++ self.errors.append(err) ++ ++ @classmethod ++ def format_authors_in_changelog(cls, authors, timestamp, prefix=''): ++ output = '' ++ for i, author in enumerate(authors): ++ if i == 0: ++ output += '%s%s %s\n' % (prefix, timestamp, author) ++ else: ++ output += '%s\t %s\n' % (prefix, author) ++ output += '\n' ++ return output ++ ++ def to_changelog_entries(self, use_commit_ts=False): ++ current_timestamp = self.info.date.strftime(DATE_FORMAT) ++ for entry in self.changelog_entries: ++ output = '' ++ timestamp = entry.datetime ++ if self.revert_commit: ++ timestamp = current_timestamp ++ orig_date = self.original_info.date ++ current_timestamp = orig_date.strftime(DATE_FORMAT) ++ elif self.cherry_pick_commit: ++ info = self.commit_to_info_hook(self.cherry_pick_commit) ++ # it can happen that it is a cherry-pick for a different ++ # repository ++ if info: ++ timestamp = info.date.strftime(DATE_FORMAT) ++ else: ++ timestamp = current_timestamp ++ elif not timestamp or use_commit_ts: ++ timestamp = current_timestamp ++ authors = entry.authors if entry.authors else [self.info.author] ++ # add Co-Authored-By authors to all ChangeLog entries ++ for author in self.co_authors: ++ if author not in authors: ++ authors.append(author) ++ ++ if self.cherry_pick_commit or self.revert_commit: ++ original_author = self.original_info.author ++ output += self.format_authors_in_changelog([original_author], ++ current_timestamp) ++ if self.revert_commit: ++ output += '\tRevert:\n' ++ else: ++ output += '\tBackported from master:\n' ++ output += self.format_authors_in_changelog(authors, ++ timestamp, '\t') ++ else: ++ output += self.format_authors_in_changelog(authors, timestamp) ++ for pr in entry.prs: ++ output += '\t%s\n' % pr ++ for line in entry.lines: ++ output += line + '\n' ++ yield (entry.folder, output.rstrip()) ++ ++ def print_output(self): ++ for entry, output in self.to_changelog_entries(): ++ print('------ %s/ChangeLog ------ ' % entry) ++ print(output) ++ ++ def print_errors(self): ++ print('Errors:') ++ for error in self.errors: ++ print(error) +new file mode 100755 +--- /dev/null ++++ b/src/contrib/gcc-changelog/git_email.py +@@ -0,0 +1,108 @@ ++#!/usr/bin/env python3 ++# ++# 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 ++# . */ ++ ++import os ++import sys ++from itertools import takewhile ++ ++from dateutil.parser import parse ++ ++from git_commit import GitCommit, GitInfo ++ ++from unidiff import PatchSet, PatchedFile ++ ++DATE_PREFIX = 'Date: ' ++FROM_PREFIX = 'From: ' ++unidiff_supports_renaming = hasattr(PatchedFile(), 'is_rename') ++ ++ ++class GitEmail(GitCommit): ++ def __init__(self, filename, strict=False): ++ self.filename = filename ++ diff = PatchSet.from_filename(filename) ++ date = None ++ author = None ++ ++ with open(self.filename, 'r') as f: ++ lines = f.read().splitlines() ++ lines = list(takewhile(lambda line: line != '---', lines)) ++ for line in lines: ++ if line.startswith(DATE_PREFIX): ++ date = parse(line[len(DATE_PREFIX):]) ++ elif line.startswith(FROM_PREFIX): ++ author = GitCommit.format_git_author(line[len(FROM_PREFIX):]) ++ header = list(takewhile(lambda line: line != '', lines)) ++ body = lines[len(header) + 1:] ++ ++ modified_files = [] ++ for f in diff: ++ # Strip "a/" and "b/" prefixes ++ source = f.source_file[2:] ++ target = f.target_file[2:] ++ ++ if f.is_added_file: ++ t = 'A' ++ elif f.is_removed_file: ++ t = 'D' ++ elif unidiff_supports_renaming and f.is_rename: ++ # Consider that renamed files are two operations: the deletion ++ # of the original name and the addition of the new one. ++ modified_files.append((source, 'D')) ++ t = 'A' ++ else: ++ t = 'M' ++ modified_files.append((target, t)) ++ git_info = GitInfo(None, date, author, body, modified_files) ++ super().__init__(git_info, strict=strict, ++ commit_to_info_hook=lambda x: None) ++ ++ ++# With zero arguments, process every patch file in the ./patches directory. ++# With one argument, process the named patch file. ++# Patch files must be in 'git format-patch' format. ++if __name__ == '__main__': ++ if len(sys.argv) == 1: ++ allfiles = [] ++ for root, _dirs, files in os.walk('patches'): ++ for f in files: ++ full = os.path.join(root, f) ++ allfiles.append(full) ++ ++ success = 0 ++ for full in sorted(allfiles): ++ email = GitEmail(full, False) ++ print(email.filename) ++ if email.success: ++ success += 1 ++ print(' OK') ++ else: ++ for error in email.errors: ++ print(' ERR: %s' % error) ++ ++ print() ++ print('Successfully parsed: %d/%d' % (success, len(allfiles))) ++ else: ++ email = GitEmail(sys.argv[1], False) ++ if email.success: ++ print('OK') ++ email.print_output() ++ else: ++ if not email.info.lines: ++ print('Error: patch contains no parsed lines', file=sys.stderr) ++ email.print_errors() ++ sys.exit(1) +new file mode 100755 +--- /dev/null ++++ b/src/contrib/gcc-changelog/git_repository.py +@@ -0,0 +1,78 @@ ++#!/usr/bin/env python3 ++# ++# 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 ++# . */ ++ ++from datetime import datetime ++ ++try: ++ from git import Repo ++except ImportError: ++ print('Cannot import GitPython package, please install the package:') ++ print(' Fedora, openSUSE: python3-GitPython') ++ print(' Debian, Ubuntu: python3-git') ++ exit(1) ++ ++from git_commit import GitCommit, GitInfo ++ ++ ++def parse_git_revisions(repo_path, revisions, strict=True): ++ repo = Repo(repo_path) ++ ++ def commit_to_info(commit): ++ try: ++ c = repo.commit(commit) ++ diff = repo.commit(commit + '~').diff(commit) ++ ++ modified_files = [] ++ for file in diff: ++ if hasattr(file, 'renamed_file'): ++ is_renamed = file.renamed_file ++ else: ++ is_renamed = file.renamed ++ if file.new_file: ++ t = 'A' ++ elif file.deleted_file: ++ t = 'D' ++ elif is_renamed: ++ # Consider that renamed files are two operations: ++ # the deletion of the original name ++ # and the addition of the new one. ++ modified_files.append((file.a_path, 'D')) ++ t = 'A' ++ else: ++ t = 'M' ++ modified_files.append((file.b_path, t)) ++ ++ date = datetime.utcfromtimestamp(c.committed_date) ++ author = '%s <%s>' % (c.author.name, c.author.email) ++ git_info = GitInfo(c.hexsha, date, author, ++ c.message.split('\n'), modified_files) ++ return git_info ++ except ValueError: ++ return None ++ ++ parsed_commits = [] ++ if '..' in revisions: ++ commits = list(repo.iter_commits(revisions)) ++ else: ++ commits = [repo.commit(revisions)] ++ ++ for commit in commits: ++ git_commit = GitCommit(commit_to_info(commit.hexsha), strict=strict, ++ commit_to_info_hook=commit_to_info) ++ parsed_commits.append(git_commit) ++ return parsed_commits +new file mode 100755 +--- /dev/null ++++ b/src/contrib/gcc-changelog/git_update_version.py +@@ -0,0 +1,145 @@ ++#!/usr/bin/env python3 ++# ++# 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 ++# . */ ++ ++import argparse ++import datetime ++import os ++ ++from git import Repo ++ ++from git_repository import parse_git_revisions ++ ++current_timestamp = datetime.datetime.now().strftime('%Y%m%d\n') ++ ++ ++def read_timestamp(path): ++ with open(path) as f: ++ return f.read() ++ ++ ++def prepend_to_changelog_files(repo, folder, git_commit, add_to_git): ++ if not git_commit.success: ++ for error in git_commit.errors: ++ print(error) ++ raise AssertionError() ++ for entry, output in git_commit.to_changelog_entries(use_commit_ts=True): ++ full_path = os.path.join(folder, entry, 'ChangeLog') ++ print('writing to %s' % full_path) ++ if os.path.exists(full_path): ++ with open(full_path) as f: ++ content = f.read() ++ else: ++ content = '' ++ with open(full_path, 'w+') as f: ++ f.write(output) ++ if content: ++ f.write('\n\n') ++ f.write(content) ++ if add_to_git: ++ repo.git.add(full_path) ++ ++ ++active_refs = ['master', 'releases/gcc-8', 'releases/gcc-9', 'releases/gcc-10'] ++ ++parser = argparse.ArgumentParser(description='Update DATESTAMP and generate ' ++ 'ChangeLog entries') ++parser.add_argument('-g', '--git-path', default='.', ++ help='Path to git repository') ++parser.add_argument('-p', '--push', action='store_true', ++ help='Push updated active branches') ++parser.add_argument('-d', '--dry-mode', ++ help='Generate patch for ChangeLog entries and do it' ++ ' even if DATESTAMP is unchanged; folder argument' ++ ' is expected') ++parser.add_argument('-c', '--current', action='store_true', ++ help='Modify current branch (--push argument is ignored)') ++args = parser.parse_args() ++ ++repo = Repo(args.git_path) ++origin = repo.remotes['origin'] ++ ++ ++def update_current_branch(): ++ commit = repo.head.commit ++ commit_count = 1 ++ while commit: ++ if (commit.author.email == 'gccadmin@gcc.gnu.org' ++ and commit.message.strip() == 'Daily bump.'): ++ break ++ # We support merge commits but only with 2 parensts ++ assert len(commit.parents) <= 2 ++ commit = commit.parents[-1] ++ commit_count += 1 ++ ++ print('%d revisions since last Daily bump' % commit_count) ++ datestamp_path = os.path.join(args.git_path, 'gcc/DATESTAMP') ++ if (read_timestamp(datestamp_path) != current_timestamp ++ or args.dry_mode or args.current): ++ head = repo.head.commit ++ # if HEAD is a merge commit, start with second parent ++ # (branched that is being merged into the current one) ++ assert len(head.parents) <= 2 ++ if len(head.parents) == 2: ++ head = head.parents[1] ++ commits = parse_git_revisions(args.git_path, '%s..%s' ++ % (commit.hexsha, head.hexsha)) ++ for git_commit in reversed(commits): ++ prepend_to_changelog_files(repo, args.git_path, git_commit, ++ not args.dry_mode) ++ if args.dry_mode: ++ diff = repo.git.diff('HEAD') ++ patch = os.path.join(args.dry_mode, ++ branch.name.split('/')[-1] + '.patch') ++ with open(patch, 'w+') as f: ++ f.write(diff) ++ print('branch diff written to %s' % patch) ++ repo.git.checkout(force=True) ++ else: ++ # update timestamp ++ print('DATESTAMP will be changed:') ++ with open(datestamp_path, 'w+') as f: ++ f.write(current_timestamp) ++ repo.git.add(datestamp_path) ++ if not args.current: ++ repo.index.commit('Daily bump.') ++ if args.push: ++ repo.git.push('origin', branch) ++ print('branch is pushed') ++ else: ++ print('DATESTAMP unchanged') ++ ++ ++if args.current: ++ print('=== Working on the current branch ===', flush=True) ++ update_current_branch() ++else: ++ for ref in origin.refs: ++ assert ref.name.startswith('origin/') ++ name = ref.name[len('origin/'):] ++ if name in active_refs: ++ if name in repo.branches: ++ branch = repo.branches[name] ++ else: ++ branch = repo.create_head(name, ref).set_tracking_branch(ref) ++ print('=== Working on: %s ===' % branch, flush=True) ++ branch.checkout() ++ origin.pull(rebase=True) ++ print('branch pulled and checked out') ++ update_current_branch() ++ assert not repo.index.diff(None) ++ print('branch is done\n', flush=True) +new file mode 100644 +--- /dev/null ++++ b/src/contrib/gcc-changelog/setup.cfg +@@ -0,0 +1,2 @@ ++[tool:pytest] ++addopts = -vv --flake8 +new file mode 100755 +--- /dev/null ++++ b/src/contrib/gcc-changelog/test_email.py +@@ -0,0 +1,386 @@ ++#!/usr/bin/env python3 ++# ++# 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 ++# . */ ++ ++import os ++import tempfile ++import unittest ++ ++from git_commit import GitCommit ++ ++from git_email import GitEmail ++ ++import unidiff ++ ++script_path = os.path.dirname(os.path.realpath(__file__)) ++ ++unidiff_supports_renaming = hasattr(unidiff.PatchedFile(), 'is_rename') ++ ++ ++NAME_STATUS1 = """ ++M gcc/ada/impunit.adb' ++R097 gcc/ada/libgnat/s-atopar.adb gcc/ada/libgnat/s-aoinar.adb ++""" ++ ++ ++class TestGccChangelog(unittest.TestCase): ++ def setUp(self): ++ self.patches = {} ++ self.temps = [] ++ ++ filename = None ++ patch_lines = [] ++ with open(os.path.join(script_path, 'test_patches.txt')) as f: ++ lines = f.read() ++ for line in lines.split('\n'): ++ if line.startswith('==='): ++ if patch_lines: ++ self.patches[filename] = patch_lines ++ filename = line.split(' ')[1] ++ patch_lines = [] ++ else: ++ patch_lines.append(line) ++ if patch_lines: ++ self.patches[filename] = patch_lines ++ ++ def tearDown(self): ++ for t in self.temps: ++ assert t.endswith('.patch') ++ os.remove(t) ++ ++ def get_git_email(self, filename, strict=False): ++ with tempfile.NamedTemporaryFile(mode='w+', suffix='.patch', ++ delete=False) as f: ++ f.write('\n'.join(self.patches[filename])) ++ self.temps.append(f.name) ++ return GitEmail(f.name, strict) ++ ++ def from_patch_glob(self, name, strict=False): ++ files = [f for f in self.patches.keys() if f.startswith(name)] ++ assert len(files) == 1 ++ return self.get_git_email(files[0], strict) ++ ++ def test_simple_patch_format(self): ++ email = self.get_git_email('0577-aarch64-Add-an-and.patch') ++ assert not email.errors ++ assert len(email.changelog_entries) == 2 ++ entry = email.changelog_entries[0] ++ assert (entry.author_lines == ++ [('Richard Sandiford ', ++ '2020-02-06')]) ++ assert len(entry.authors) == 1 ++ assert (entry.authors[0] ++ == 'Richard Sandiford ') ++ assert entry.folder == 'gcc' ++ assert entry.prs == ['PR target/87763'] ++ assert len(entry.files) == 3 ++ assert entry.files[0] == 'config/aarch64/aarch64-protos.h' ++ ++ def test_daily_bump(self): ++ email = self.get_git_email('0085-Daily-bump.patch') ++ assert not email.errors ++ assert not email.changelog_entries ++ ++ def test_deduce_changelog_entries(self): ++ email = self.from_patch_glob('0040') ++ assert len(email.changelog_entries) == 2 ++ assert email.changelog_entries[0].folder == 'gcc/cp' ++ assert email.changelog_entries[0].prs == ['PR c++/90916'] ++ assert email.changelog_entries[0].files == ['pt.c'] ++ # this one is added automatically ++ assert email.changelog_entries[1].folder == 'gcc/testsuite' ++ ++ def test_only_changelog_updated(self): ++ email = self.from_patch_glob('0129') ++ assert not email.errors ++ assert not email.changelog_entries ++ ++ def test_wrong_mentioned_filename(self): ++ email = self.from_patch_glob('0096') ++ assert email.errors ++ err = email.errors[0] ++ assert err.message == 'unchanged file mentioned in a ChangeLog' ++ assert err.line == 'gcc/testsuite/gcc.target/aarch64/' \ ++ 'advsimd-intrinsics/vdot-compile-3-1.c' ++ ++ def test_missing_tab(self): ++ email = self.from_patch_glob('0031') ++ assert len(email.errors) == 2 ++ err = email.errors[0] ++ assert err.message == 'line should start with a tab' ++ assert err.line == ' * cfgloopanal.c (average_num_loop_insns): ' \ ++ 'Free bbs when early' ++ ++ def test_leading_changelog_format(self): ++ email = self.from_patch_glob('0184') ++ assert len(email.errors) == 4 ++ assert email.errors[0].line == 'gcc/c-family/c-cppbuiltins.c' ++ assert email.errors[2].line == 'gcc/c-family/c-cppbuiltin.c' ++ ++ def test_cannot_deduce_no_blank_line(self): ++ email = self.from_patch_glob('0334') ++ assert len(email.errors) == 1 ++ assert len(email.changelog_entries) == 1 ++ assert email.changelog_entries[0].folder is None ++ ++ def test_author_lines(self): ++ email = self.from_patch_glob('0814') ++ assert not email.errors ++ assert (email.changelog_entries[0].author_lines == ++ [('Martin Jambor ', '2020-02-19')]) ++ ++ def test_multiple_authors_and_prs(self): ++ email = self.from_patch_glob('0735') ++ assert len(email.changelog_entries) == 1 ++ entry = email.changelog_entries[0] ++ assert len(entry.author_lines) == 2 ++ assert len(entry.authors) == 2 ++ assert (entry.author_lines[1] == ++ ('Bernd Edlinger ', None)) ++ ++ def test_multiple_prs(self): ++ email = self.from_patch_glob('1699') ++ assert len(email.changelog_entries) == 2 ++ assert len(email.changelog_entries[0].prs) == 2 ++ ++ def test_missing_PR_component(self): ++ email = self.from_patch_glob('0735') ++ assert len(email.errors) == 1 ++ assert email.errors[0].message == 'missing PR component' ++ ++ def test_invalid_PR_component(self): ++ email = self.from_patch_glob('0198') ++ assert len(email.errors) == 1 ++ assert email.errors[0].message == 'invalid PR component' ++ ++ def test_additional_author_list(self): ++ email = self.from_patch_glob('0342') ++ msg = 'additional author must be indented ' \ ++ 'with one tab and four spaces' ++ assert email.errors[1].message == msg ++ ++ def test_trailing_whitespaces(self): ++ email = self.get_git_email('trailing-whitespaces.patch') ++ assert len(email.errors) == 3 ++ ++ def test_space_after_asterisk(self): ++ email = self.from_patch_glob('1999') ++ assert len(email.errors) == 1 ++ assert email.errors[0].message == 'one space should follow asterisk' ++ ++ def test_long_lines(self): ++ email = self.get_git_email('long-lines.patch') ++ assert len(email.errors) == 1 ++ assert email.errors[0].message == 'line exceeds 100 character limit' ++ ++ def test_new_files(self): ++ email = self.from_patch_glob('0030') ++ assert not email.errors ++ ++ def test_wrong_changelog_location(self): ++ email = self.from_patch_glob('0043') ++ assert len(email.errors) == 2 ++ assert (email.errors[0].message == ++ 'wrong ChangeLog location "gcc", should be "gcc/testsuite"') ++ ++ def test_single_author_name(self): ++ email = self.from_patch_glob('1975') ++ assert len(email.changelog_entries) == 2 ++ assert len(email.changelog_entries[0].author_lines) == 1 ++ assert len(email.changelog_entries[1].author_lines) == 1 ++ ++ def test_bad_first_line(self): ++ email = self.from_patch_glob('0413') ++ assert len(email.errors) == 1 ++ ++ def test_co_authored_by(self): ++ email = self.from_patch_glob('1850') ++ assert email.co_authors == ['Jakub Jelinek '] ++ output_entries = list(email.to_changelog_entries()) ++ assert len(output_entries) == 2 ++ ent0 = output_entries[0] ++ assert ent0[1].startswith('2020-04-16 Martin Liska ' ++ '\n\t' ++ ' Jakub Jelinek ') ++ ++ def test_multiple_co_author_formats(self): ++ email = self.get_git_email('co-authored-by.patch') ++ assert len(email.co_authors) == 3 ++ assert email.co_authors[0] == 'Jakub Jelinek ' ++ assert email.co_authors[1] == 'John Miller ' ++ assert email.co_authors[2] == 'John Miller2 ' ++ ++ def test_new_file_added_entry(self): ++ email = self.from_patch_glob('1957') ++ output_entries = list(email.to_changelog_entries()) ++ assert len(output_entries) == 2 ++ needle = ('\t* g++.dg/cpp2a/lambda-generic-variadic20.C' ++ ': New file.') ++ assert output_entries[1][1].endswith(needle) ++ assert email.changelog_entries[1].prs == ['PR c++/94546'] ++ ++ def test_global_pr_entry(self): ++ email = self.from_patch_glob('2004') ++ assert not email.errors ++ assert email.changelog_entries[0].prs == ['PR other/94629'] ++ ++ def test_unique_prs(self): ++ email = self.get_git_email('pr-check1.patch') ++ assert not email.errors ++ assert email.changelog_entries[0].prs == ['PR ipa/12345'] ++ assert email.changelog_entries[1].prs == [] ++ ++ def test_multiple_prs_not_added(self): ++ email = self.from_patch_glob('0001-Add-patch_are') ++ assert not email.errors ++ assert email.changelog_entries[0].prs == ['PR target/93492'] ++ assert email.changelog_entries[1].prs == ['PR target/12345'] ++ assert email.changelog_entries[2].prs == [] ++ assert email.changelog_entries[2].folder == 'gcc/testsuite' ++ ++ def test_strict_mode(self): ++ email = self.from_patch_glob('0001-Add-patch_are', ++ True) ++ msg = 'ChangeLog, DATESTAMP, BASE-VER and DEV-PHASE updates should ' \ ++ 'be done separately from normal commits' ++ assert email.errors[0].message == msg ++ ++ def test_strict_mode_normal_patch(self): ++ email = self.get_git_email('0001-Just-test-it.patch', True) ++ assert not email.errors ++ ++ def test_strict_mode_datestamp_only(self): ++ email = self.get_git_email('0002-Bump-date.patch', True) ++ assert not email.errors ++ ++ def test_wrong_changelog_entry(self): ++ email = self.from_patch_glob('0020-IPA-Avoid') ++ msg = 'first line should start with a tab, an asterisk and a space' ++ assert (email.errors[0].message == msg) ++ ++ def test_cherry_pick_format(self): ++ email = self.from_patch_glob('0001-c-Alias.patch') ++ assert not email.errors ++ ++ def test_signatures(self): ++ email = self.from_patch_glob('0001-RISC-V-Make-unique.patch') ++ assert not email.errors ++ assert len(email.changelog_entries) == 1 ++ ++ def test_duplicate_top_level_author(self): ++ email = self.from_patch_glob('0001-Fortran-ProcPtr-function.patch') ++ assert not email.errors ++ assert len(email.changelog_entries[0].author_lines) == 1 ++ ++ def test_dr_entry(self): ++ email = self.from_patch_glob('0001-c-C-20-DR-2237.patch') ++ assert email.changelog_entries[0].prs == ['DR 2237'] ++ ++ def test_changes_only_in_ignored_location(self): ++ email = self.from_patch_glob('0001-go-in-ignored-location.patch') ++ assert not email.errors ++ ++ def test_changelog_for_ignored_location(self): ++ email = self.from_patch_glob('0001-Update-merge.sh-to-reflect.patch') ++ assert (email.changelog_entries[0].lines[0] ++ == '\t* LOCAL_PATCHES: Use git hash instead of SVN id.') ++ ++ def test_multiline_file_list(self): ++ email = self.from_patch_glob( ++ '0001-Ada-Reuse-Is_Package_Or_Generic_Package-where-possib.patch') ++ assert (email.changelog_entries[0].files ++ == ['contracts.adb', 'einfo.adb', 'exp_ch9.adb', ++ 'sem_ch12.adb', 'sem_ch4.adb', 'sem_ch7.adb', ++ 'sem_ch8.adb', 'sem_elab.adb', 'sem_type.adb', ++ 'sem_util.adb']) ++ ++ @unittest.skipIf(not unidiff_supports_renaming, ++ 'Newer version of unidiff is needed (0.6.0+)') ++ def test_renamed_file(self): ++ email = self.from_patch_glob( ++ '0001-Ada-Add-support-for-XDR-streaming-in-the-default-run.patch') ++ assert not email.errors ++ ++ def test_duplicite_author_lines(self): ++ email = self.from_patch_glob('0001-Fortran-type-is-real-kind-1.patch') ++ assert (email.changelog_entries[0].author_lines[0][0] ++ == 'Steven G. Kargl ') ++ assert (email.changelog_entries[0].author_lines[1][0] ++ == 'Mark Eggleston ') ++ ++ def test_missing_change_description(self): ++ email = self.from_patch_glob('0001-Missing-change-description.patch') ++ assert len(email.errors) == 2 ++ assert email.errors[0].message == 'missing description of a change' ++ assert email.errors[1].message == 'missing description of a change' ++ ++ def test_libstdcxx_html_regenerated(self): ++ email = self.from_patch_glob('0001-Fix-text-of-hyperlink') ++ assert not email.errors ++ email = self.from_patch_glob('0002-libstdc-Fake-test-change-1.patch') ++ assert len(email.errors) == 1 ++ msg = 'pattern doesn''t match any changed files' ++ assert email.errors[0].message == msg ++ assert email.errors[0].line == 'libstdc++-v3/doc/html/' ++ email = self.from_patch_glob('0003-libstdc-Fake-test-change-2.patch') ++ assert len(email.errors) == 1 ++ msg = 'changed file not mentioned in a ChangeLog' ++ assert email.errors[0].message == msg ++ ++ def test_not_deduce(self): ++ email = self.from_patch_glob('0001-configure.patch') ++ assert not email.errors ++ assert len(email.changelog_entries) == 2 ++ ++ def test_parse_git_name_status(self): ++ modified_files = GitCommit.parse_git_name_status(NAME_STATUS1) ++ assert len(modified_files) == 3 ++ assert modified_files[1] == ('gcc/ada/libgnat/s-atopar.adb', 'D') ++ assert modified_files[2] == ('gcc/ada/libgnat/s-aoinar.adb', 'A') ++ ++ def test_backport(self): ++ email = self.from_patch_glob('0001-asan-fix-RTX-emission.patch') ++ assert not email.errors ++ assert len(email.changelog_entries) == 1 ++ entry = list(email.to_changelog_entries())[0][1] ++ assert entry.startswith('2020-06-11 Martin Liska ') ++ assert '\tBackported from master:' in entry ++ assert '\t2020-06-11 Martin Liska ' in entry ++ assert '\t\t Jakub Jelinek ' in entry ++ ++ def test_backport_double_cherry_pick(self): ++ email = self.from_patch_glob('double-cherry-pick.patch') ++ assert email.errors[0].message.startswith('multiple cherry pick lines') ++ ++ def test_square_and_lt_gt(self): ++ email = self.from_patch_glob('0001-Check-for-more-missing') ++ assert not email.errors ++ ++ def test_empty_parenthesis(self): ++ email = self.from_patch_glob('0001-tree-optimization-97633-fix') ++ assert len(email.errors) == 1 ++ assert email.errors[0].message == 'empty group "()" found' ++ ++ def test_emptry_entry_desc(self): ++ email = self.from_patch_glob('0001-c-Set-CALL_FROM_NEW_OR') ++ assert len(email.errors) == 1 ++ assert email.errors[0].message == 'missing description of a change' ++ ++ def test_emptry_entry_desc_2(self): ++ email = self.from_patch_glob('0001-lto-fix-LTO-debug') ++ assert not email.errors ++ assert len(email.changelog_entries) == 1 +new file mode 100644 +--- /dev/null ++++ b/src/contrib/gcc-changelog/test_patches.txt +@@ -0,0 +1,3322 @@ ++=== 0342-ARC-Propagate-uncached-type-attribute-to-each-member.patch === ++From 62a715c706d8482560dadfa9ead0766f3c20e434 Mon Sep 17 00:00:00 2001 ++From: Claudiu Zissulescu ++Date: Mon, 27 Jan 2020 14:51:03 +0200 ++Subject: [PATCH 0342/2034] [ARC] Propagate uncached type attribute to each ++ member of a struct. ++ ++Like `packed` type attribute, the ARC's `uncached` type attribute ++needs to be propagated to each member of the struct where it is used, ++triggering the .di flag for any access of the struct members. However, ++any complex CFG manipulation may drop memory pointer type attributes, ++leading to the impossibility to discriminate the direct accesses from ++normal ones. To solve this issue, we will treat the direct memory ++accessed specially via unspecs. ++ ++gcc/ ++xxxx-xx-xx Claudiu Zissulescu ++ Petro Karashchenko ++ ++ * config/arc/arc.c (arc_is_uncached_mem_p): Check struct ++ attributes if needed. ++ (prepare_move_operands): Generate special ++ unspec instruction for direct access. ++ (arc_isuncached_mem_p): Propagate uncached attribute to each ++ structure member. ++ * config/arc/arc.md (VUNSPEC_ARC_LDDI): Define. ++ (VUNSPEC_ARC_STDI): Likewise. ++ (ALLI): New mode iterator. ++ (mALLI): New mode attribute. ++ (lddi): New instruction pattern. ++ (stdi): Likewise. ++ (stdidi_split): Split instruction for architectures which are not ++ supporting ll64 option. ++ (lddidi_split): Likewise. ++ ++testsuite/ ++xxxx-xx-xx Claudiu Zissulescu ++ Petro Karashchenko ++ ++ * gcc.target/arc/uncached-1.c: Update test. ++ * gcc.target/arc/uncached-2.c: Likewise. ++ * gcc.target/arc/uncached-3.c: New test. ++ * gcc.target/arc/uncached-4.c: Likewise. ++ * gcc.target/arc/uncached-5.c: Likewise. ++ * gcc.target/arc/uncached-6.c: Likewise. ++ * gcc.target/arc/uncached-7.c: Likewise. ++ * gcc.target/arc/uncached-8.c: Likewise. ++ * gcc.target/arc/arc.exp (ll64): New predicate. ++--- ++ gcc/ChangeLog | 19 ++++ ++ gcc/config/arc/arc.c | 118 ++++++++++++++-------- ++ gcc/config/arc/arc.md | 60 +++++++++++ ++ gcc/testsuite/ChangeLog | 11 ++ ++ gcc/testsuite/gcc.target/arc/arc.exp | 9 ++ ++ gcc/testsuite/gcc.target/arc/uncached-1.c | 2 +- ++ gcc/testsuite/gcc.target/arc/uncached-2.c | 2 +- ++ gcc/testsuite/gcc.target/arc/uncached-3.c | 22 ++++ ++ gcc/testsuite/gcc.target/arc/uncached-4.c | 42 ++++++++ ++ gcc/testsuite/gcc.target/arc/uncached-5.c | 29 ++++++ ++ gcc/testsuite/gcc.target/arc/uncached-6.c | 35 +++++++ ++ gcc/testsuite/gcc.target/arc/uncached-7.c | 11 ++ ++ gcc/testsuite/gcc.target/arc/uncached-8.c | 33 ++++++ ++ 13 files changed, 351 insertions(+), 42 deletions(-) ++ create mode 100644 gcc/testsuite/gcc.target/arc/uncached-3.c ++ create mode 100644 gcc/testsuite/gcc.target/arc/uncached-4.c ++ create mode 100644 gcc/testsuite/gcc.target/arc/uncached-5.c ++ create mode 100644 gcc/testsuite/gcc.target/arc/uncached-6.c ++ create mode 100644 gcc/testsuite/gcc.target/arc/uncached-7.c ++ create mode 100644 gcc/testsuite/gcc.target/arc/uncached-8.c ++ ++diff --git a/gcc/ChangeLog b/gcc/ChangeLog ++index 91dfcd71a4b..2cc61d68cf3 100644 ++--- a/gcc/ChangeLog +++++ b/gcc/ChangeLog ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/config/arc/arc.c b/gcc/config/arc/arc.c ++index 22475f2732e..e1a865f02e6 100644 ++--- a/gcc/config/arc/arc.c +++++ b/gcc/config/arc/arc.c ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/config/arc/arc.md b/gcc/config/arc/arc.md ++index cf7aa8d83c9..46cb254ed28 100644 ++--- a/gcc/config/arc/arc.md +++++ b/gcc/config/arc/arc.md ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog ++index 16ddef07516..991934272e0 100644 ++--- a/gcc/testsuite/ChangeLog +++++ b/gcc/testsuite/ChangeLog ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/testsuite/gcc.target/arc/arc.exp b/gcc/testsuite/gcc.target/arc/arc.exp ++index 8d1844edd22..501d4589c53 100644 ++--- a/gcc/testsuite/gcc.target/arc/arc.exp +++++ b/gcc/testsuite/gcc.target/arc/arc.exp ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/testsuite/gcc.target/arc/uncached-1.c b/gcc/testsuite/gcc.target/arc/uncached-1.c ++index 7a6bade81c4..fa5ecb7b7d3 100644 ++--- a/gcc/testsuite/gcc.target/arc/uncached-1.c +++++ b/gcc/testsuite/gcc.target/arc/uncached-1.c ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/testsuite/gcc.target/arc/uncached-2.c b/gcc/testsuite/gcc.target/arc/uncached-2.c ++index 89eed326e01..9d6bfbbb50e 100644 ++--- a/gcc/testsuite/gcc.target/arc/uncached-2.c +++++ b/gcc/testsuite/gcc.target/arc/uncached-2.c ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/testsuite/gcc.target/arc/uncached-3.c b/gcc/testsuite/gcc.target/arc/uncached-3.c ++new file mode 100644 ++index 00000000000..f2a317b2816 ++--- /dev/null +++++ b/gcc/testsuite/gcc.target/arc/uncached-3.c ++@@ -0,0 +1 @@ +++ ++diff --git a/gcc/testsuite/gcc.target/arc/uncached-4.c b/gcc/testsuite/gcc.target/arc/uncached-4.c ++new file mode 100644 ++index 00000000000..fecb16648b8 ++--- /dev/null +++++ b/gcc/testsuite/gcc.target/arc/uncached-4.c ++@@ -0,0 +1 @@ +++ ++diff --git a/gcc/testsuite/gcc.target/arc/uncached-5.c b/gcc/testsuite/gcc.target/arc/uncached-5.c ++new file mode 100644 ++index 00000000000..4fe0464fdde ++--- /dev/null +++++ b/gcc/testsuite/gcc.target/arc/uncached-5.c ++@@ -0,0 +1 @@ +++ ++diff --git a/gcc/testsuite/gcc.target/arc/uncached-6.c b/gcc/testsuite/gcc.target/arc/uncached-6.c ++new file mode 100644 ++index 00000000000..581a9eccb3b ++--- /dev/null +++++ b/gcc/testsuite/gcc.target/arc/uncached-6.c ++@@ -0,0 +1 @@ +++ ++diff --git a/gcc/testsuite/gcc.target/arc/uncached-7.c b/gcc/testsuite/gcc.target/arc/uncached-7.c ++new file mode 100644 ++index 00000000000..4001b8bd821 ++--- /dev/null +++++ b/gcc/testsuite/gcc.target/arc/uncached-7.c ++@@ -0,0 +1 @@ +++ ++diff --git a/gcc/testsuite/gcc.target/arc/uncached-8.c b/gcc/testsuite/gcc.target/arc/uncached-8.c ++new file mode 100644 ++index 00000000000..060229b11df ++--- /dev/null +++++ b/gcc/testsuite/gcc.target/arc/uncached-8.c ++@@ -0,0 +1 @@ +++ ++-- ++2.26.1 ++ ++=== 0814-sra-Avoid-totally-scalarizing-overallping-field_decl.patch === ++From 665c5bad168ab63629b29ed2ce08ed042c088dc2 Mon Sep 17 00:00:00 2001 ++From: Martin Jambor ++Date: Wed, 19 Feb 2020 11:08:40 +0100 ++Subject: [PATCH 0814/2034] sra: Avoid totally scalarizing overallping ++ field_decls (PR 93667) ++ ++[[no_unique_address]] C++ attribute can cause two fields of a ++RECORD_TYPE overlap, which currently confuses the totally scalarizing ++code into creating invalid access tree. For GCC 10, I'd like to ++simply disable total scalarization of types where this happens. ++ ++For GCC 11 I'll write down a TODO item to enable total scalarization ++of cases like this where the problematic fields are basically empty - ++despite having a non-zero size - i.e. when they are just RECORD_TYPEs ++without any data fields. ++ ++2020-02-19 Martin Jambor ++ ++ gcc/ ++ ++ PR tree-optimization/93667 ++ * tree-sra.c (scalarizable_type_p): Return false if record fields ++ do not follow wach other. ++ ++ gcc/testsuite/ ++ ++ PR tree-optimization/93667 ++ * g++.dg/tree-ssa/pr93667.C: New test. ++--- ++ gcc/ChangeLog | 6 ++++++ ++ gcc/testsuite/ChangeLog | 5 +++++ ++ gcc/testsuite/g++.dg/tree-ssa/pr93667.C | 11 +++++++++++ ++ gcc/tree-sra.c | 14 ++++++++++++++ ++ 4 files changed, 36 insertions(+) ++ create mode 100644 gcc/testsuite/g++.dg/tree-ssa/pr93667.C ++ ++diff --git a/gcc/ChangeLog b/gcc/ChangeLog ++index 77c2a9ad810..6b53f9a2f07 100644 ++--- a/gcc/ChangeLog +++++ b/gcc/ChangeLog ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog ++index 9b4fe11a6f6..8033fa0a3bb 100644 ++--- a/gcc/testsuite/ChangeLog +++++ b/gcc/testsuite/ChangeLog ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr93667.C b/gcc/testsuite/g++.dg/tree-ssa/pr93667.C ++new file mode 100644 ++index 00000000000..d875f53d9ec ++--- /dev/null +++++ b/gcc/testsuite/g++.dg/tree-ssa/pr93667.C ++@@ -0,0 +1 @@ +++ ++diff --git a/gcc/tree-sra.c b/gcc/tree-sra.c ++index 0cfac0a8192..4c7d651e6b9 100644 ++--- a/gcc/tree-sra.c +++++ b/gcc/tree-sra.c ++@@ -1 +1,2 @@ ++ +++ ++-- ++2.26.1 ++ ++=== 0413-SRA-Total-scalarization-after-access-propagation-PR9.patch === ++From 636e80eea24b780f1d5f4c14c58fc00001df8508 Mon Sep 17 00:00:00 2001 ++From: Martin Jambor ++Date: Wed, 29 Jan 2020 13:13:13 +0100 ++Subject: [PATCH 0413/2034] SRA: Total scalarization after access propagation ++ [PR92706] ++ ++2020-01-29 Martin Jambor ++ ++ PR tree-optimization/92706 ++ * tree-sra.c (struct access): Adjust comment of ++ grp_total_scalarization. ++ (find_access_in_subtree): Look for single children spanning an entire ++ access. ++ (scalarizable_type_p): Allow register accesses, adjust callers. ++ (completely_scalarize): Remove function. ++ (scalarize_elem): Likewise. ++ (create_total_scalarization_access): Likewise. ++ (sort_and_splice_var_accesses): Do not track total scalarization ++ flags. ++ (analyze_access_subtree): New parameter totally, adjust to new meaning ++ of grp_total_scalarization. ++ (analyze_access_trees): Pass new parameter to analyze_access_subtree. ++ (can_totally_scalarize_forest_p): New function. ++ (create_total_scalarization_access): Likewise. ++ (create_total_access_and_reshape): Likewise. ++ (total_should_skip_creating_access): Likewise. ++ (totally_scalarize_subtree): Likewise. ++ (analyze_all_variable_accesses): Perform total scalarization after ++ subaccess propagation using the new functions above. ++ (initialize_constant_pool_replacements): Output initializers by ++ traversing the access tree. ++ ++ testsuite/ ++ * gcc.dg/tree-ssa/pr92706-2.c: New test. ++ * gcc.dg/guality/pr59776.c: Xfail tests for s2.g. ++--- ++ gcc/ChangeLog | 26 + ++ gcc/testsuite/ChangeLog | 6 + ++ gcc/testsuite/gcc.dg/guality/pr59776.c | 4 +- ++ gcc/testsuite/gcc.dg/tree-ssa/pr92706-2.c | 19 + ++ gcc/tree-sra.c | 666 ++++++++++++++++------ ++ 5 files changed, 537 insertions(+), 184 deletions(-) ++ create mode 100644 gcc/testsuite/gcc.dg/tree-ssa/pr92706-2.c ++ ++diff --git a/gcc/ChangeLog b/gcc/ChangeLog ++index 16247a59304..61da54df346 100644 ++--- a/gcc/ChangeLog +++++ b/gcc/ChangeLog ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog ++index 05518848829..38758207989 100644 ++--- a/gcc/testsuite/ChangeLog +++++ b/gcc/testsuite/ChangeLog ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/testsuite/gcc.dg/guality/pr59776.c b/gcc/testsuite/gcc.dg/guality/pr59776.c ++index 382abb622bb..6c1c8165b70 100644 ++--- a/gcc/testsuite/gcc.dg/guality/pr59776.c +++++ b/gcc/testsuite/gcc.dg/guality/pr59776.c ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr92706-2.c b/gcc/testsuite/gcc.dg/tree-ssa/pr92706-2.c ++new file mode 100644 ++index 00000000000..37ab9765db0 ++--- /dev/null +++++ b/gcc/testsuite/gcc.dg/tree-ssa/pr92706-2.c ++@@ -0,0 +1 @@ +++ ++diff --git a/gcc/tree-sra.c b/gcc/tree-sra.c ++index 36106fecaf1..2b0849858de 100644 ++--- a/gcc/tree-sra.c +++++ b/gcc/tree-sra.c ++@@ -1 +1,2 @@ ++ +++ ++-- ++2.26.1 ++ ++=== 0334-Do-not-generate-a-unique-fnname-for-resolver.patch === ++From c2bd2b4664be8b73f8fd58a64dec1e93871797cc Mon Sep 17 00:00:00 2001 ++From: Martin Liska ++Date: Mon, 27 Jan 2020 10:48:18 +0100 ++Subject: [PATCH 0334/2034] Do not generate a unique fnname for resolver. ++ ++ PR target/93274 ++ * config/i386/i386-features.c (make_resolver_func): ++ Align the code with ppc64 target implementation. ++ Do not generate a unique name for resolver function. ++ PR target/93274 ++ * gcc.target/i386/pr81213.c: Adjust to not expect ++ a globally unique name. ++--- ++ gcc/ChangeLog | 7 +++++++ ++ gcc/config/i386/i386-features.c | 19 ++++--------------- ++ gcc/testsuite/ChangeLog | 6 ++++++ ++ gcc/testsuite/gcc.target/i386/pr81213.c | 4 ++-- ++ 4 files changed, 19 insertions(+), 17 deletions(-) ++ ++diff --git a/gcc/ChangeLog b/gcc/ChangeLog ++index 45075840824..59806baa757 100644 ++--- a/gcc/ChangeLog +++++ b/gcc/ChangeLog ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/config/i386/i386-features.c b/gcc/config/i386/i386-features.c ++index e580b26b995..b49e6f8d408 100644 ++--- a/gcc/config/i386/i386-features.c +++++ b/gcc/config/i386/i386-features.c ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog ++index 2de060843d9..22a37dd1ab2 100644 ++--- a/gcc/testsuite/ChangeLog +++++ b/gcc/testsuite/ChangeLog ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/testsuite/gcc.target/i386/pr81213.c b/gcc/testsuite/gcc.target/i386/pr81213.c ++index 13e15d5fef0..89c47529861 100644 ++--- a/gcc/testsuite/gcc.target/i386/pr81213.c +++++ b/gcc/testsuite/gcc.target/i386/pr81213.c ++@@ -1 +1,2 @@ ++ +++ ++-- ++2.26.1 ++ ++=== 1850-List-valid-pairs-for-new-and-delete-operators.patch === ++From d7a65edb629a010f7ef907d457343abcb569fab7 Mon Sep 17 00:00:00 2001 ++From: Martin Liska ++Date: Thu, 16 Apr 2020 15:39:22 +0200 ++Subject: [PATCH 1850/2034] List valid pairs for new and delete operators. ++ ++ PR c++/94314 ++ * cgraphclones.c (set_new_clone_decl_and_node_flags): Drop ++ DECL_IS_REPLACEABLE_OPERATOR during cloning. ++ * tree-ssa-dce.c (valid_new_delete_pair_p): New function. ++ (propagate_necessity): Check operator names. ++ ++ PR c++/94314 ++ * g++.dg/pr94314.C: Do not use dg-additional-options ++ and remove not needed stdio.h include. ++ * g++.dg/pr94314-2.C: Likewise. ++ * g++.dg/pr94314-3.C: Likewise. ++ * g++.dg/pr94314-4.C: New test. ++ ++Co-Authored-By: Jakub Jelinek ++--- ++ gcc/ChangeLog | 9 +++ ++ gcc/cgraphclones.c | 2 + ++ gcc/testsuite/ChangeLog | 10 ++++ ++ gcc/testsuite/g++.dg/pr94314-2.C | 5 +- ++ gcc/testsuite/g++.dg/pr94314-3.C | 5 +- ++ gcc/testsuite/g++.dg/pr94314-4.C | 30 ++++++++++ ++ gcc/testsuite/g++.dg/pr94314.C | 5 +- ++ gcc/tree-ssa-dce.c | 98 ++++++++++++++++++++++++++++---- ++ 8 files changed, 142 insertions(+), 22 deletions(-) ++ create mode 100644 gcc/testsuite/g++.dg/pr94314-4.C ++ ++diff --git a/gcc/ChangeLog b/gcc/ChangeLog ++index 74dbeeb44c6..9e499ec9c86 100644 ++--- a/gcc/ChangeLog +++++ b/gcc/ChangeLog ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/cgraphclones.c b/gcc/cgraphclones.c ++index c73b8f810f0..8f541a28b6e 100644 ++--- a/gcc/cgraphclones.c +++++ b/gcc/cgraphclones.c ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog ++index 756f1d759e6..94d2312022d 100644 ++--- a/gcc/testsuite/ChangeLog +++++ b/gcc/testsuite/ChangeLog ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/testsuite/g++.dg/pr94314-2.C b/gcc/testsuite/g++.dg/pr94314-2.C ++index 36b93ed6d4d..998ce601767 100644 ++--- a/gcc/testsuite/g++.dg/pr94314-2.C +++++ b/gcc/testsuite/g++.dg/pr94314-2.C ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/testsuite/g++.dg/pr94314-3.C b/gcc/testsuite/g++.dg/pr94314-3.C ++index 575ba9d8ad8..846a5d6a3d8 100644 ++--- a/gcc/testsuite/g++.dg/pr94314-3.C +++++ b/gcc/testsuite/g++.dg/pr94314-3.C ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/testsuite/g++.dg/pr94314-4.C b/gcc/testsuite/g++.dg/pr94314-4.C ++new file mode 100644 ++index 00000000000..d097f29d4ad ++--- /dev/null +++++ b/gcc/testsuite/g++.dg/pr94314-4.C ++@@ -0,0 +1 @@ +++ ++diff --git a/gcc/testsuite/g++.dg/pr94314.C b/gcc/testsuite/g++.dg/pr94314.C ++index 86e651d10ba..4e5ae122e9f 100644 ++--- a/gcc/testsuite/g++.dg/pr94314.C +++++ b/gcc/testsuite/g++.dg/pr94314.C ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/tree-ssa-dce.c b/gcc/tree-ssa-dce.c ++index fd5f24c746c..757cfad5b5e 100644 ++--- a/gcc/tree-ssa-dce.c +++++ b/gcc/tree-ssa-dce.c ++@@ -1 +1,2 @@ ++ +++ ++-- ++2.26.1 ++ ++=== 0085-Daily-bump.patch === ++From 03647d2e26176bb874460b67deab0c30aa715d59 Mon Sep 17 00:00:00 2001 ++From: GCC Administrator ++Date: Thu, 16 Jan 2020 00:16:32 +0000 ++Subject: [PATCH 0085/2034] Daily bump. ++ ++--- ++ gcc/DATESTAMP | 2 +- ++ 1 file changed, 1 insertion(+), 1 deletion(-) ++ ++diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP ++index ba948c594d4..62611957f86 100644 ++--- a/gcc/DATESTAMP +++++ b/gcc/DATESTAMP ++@@ -1 +1,2 @@ ++ +++ ++-- ++2.26.1 ++ ++=== 0040-PR90916-ICE-in-retrieve-specialization.patch === ++From a5a3c2dcf73aa245b0eb6f6cf56c4d03ab6056da Mon Sep 17 00:00:00 2001 ++From: Nathan Sidwell ++Date: Tue, 14 Jan 2020 11:12:40 -0800 ++Subject: [PATCH 0040/2034] [PR90916] ICE in retrieve specialization ++ ++https://gcc.gnu.org/ml/gcc-patches/2020-01/msg00809.html ++ PR c++/90916 ++ * pt.c (retrieve_specialization): Get the TI from the decl or the ++ classtype as appropriate. ++--- ++ gcc/cp/ChangeLog | 6 ++++++ ++ gcc/cp/pt.c | 15 ++++++++++----- ++ gcc/testsuite/g++.dg/template/pr90916.C | 8 ++++++++ ++ 3 files changed, 24 insertions(+), 5 deletions(-) ++ create mode 100644 gcc/testsuite/g++.dg/template/pr90916.C ++ ++diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog ++index 004ce0fdcdf..3cc7c48b490 100644 ++--- a/gcc/cp/ChangeLog +++++ b/gcc/cp/ChangeLog ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c ++index fa82ecad233..4fdc74f9ca8 100644 ++--- a/gcc/cp/pt.c +++++ b/gcc/cp/pt.c ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/testsuite/g++.dg/template/pr90916.C b/gcc/testsuite/g++.dg/template/pr90916.C ++new file mode 100644 ++index 00000000000..bdb7e7b58ef ++--- /dev/null +++++ b/gcc/testsuite/g++.dg/template/pr90916.C ++@@ -0,0 +1 @@ +++ ++-- ++2.26.1 ++ ++=== 2004-amdgcn-Check-HSA-return-codes-PR94629.patch === ++From 966de09be91c639d66d252c9ae6ab8da5ebfca18 Mon Sep 17 00:00:00 2001 ++From: Andrew Stubbs ++Date: Mon, 20 Apr 2020 15:25:31 +0100 ++Subject: [PATCH 2004/2034] amdgcn: Check HSA return codes [PR94629] ++ ++Ensure that the returned status values are not ignored. The old code was ++not broken, but this is both safer and satisfies static analysis. ++ ++2020-04-23 Andrew Stubbs ++ ++ PR other/94629 ++ ++ libgomp/ ++ * plugin/plugin-gcn.c (init_hsa_context): Check return value from ++ hsa_iterate_agents. ++ (GOMP_OFFLOAD_init_device): Check return values from both calls to ++ hsa_agent_iterate_regions. ++--- ++ libgomp/ChangeLog | 9 +++++++++ ++ libgomp/plugin/plugin-gcn.c | 8 ++++++++ ++ 2 files changed, 17 insertions(+) ++ ++diff --git a/libgomp/ChangeLog b/libgomp/ChangeLog ++index c524abbbfb6..ee1764d4ae3 100644 ++--- a/libgomp/ChangeLog +++++ b/libgomp/ChangeLog ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/libgomp/plugin/plugin-gcn.c b/libgomp/plugin/plugin-gcn.c ++index dc72c90962c..4c6a4c03b6e 100644 ++--- a/libgomp/plugin/plugin-gcn.c +++++ b/libgomp/plugin/plugin-gcn.c ++@@ -1 +1,2 @@ ++ +++ ++-- ++2.26.1 ++ ++=== 0198-Change-recursive-prepare_block_for_update-to-use-a-w.patch === ++From 6fc2f9337311c11dabcc464c808cbef205f17a52 Mon Sep 17 00:00:00 2001 ++From: Andrew Pinski ++Date: Tue, 21 Jan 2020 08:34:42 +0000 ++Subject: [PATCH 0198/2034] Change recursive prepare_block_for_update to use a ++ worklist ++ ++Reported as PR 93321, prepare_block_for_update with some huge ++recusive inlining can go past the stack limit. Transforming this ++recursive into worklist improves the stack usage here and we no ++longer seg fault for the testcase. Note the order we walk the siblings ++change. ++ ++ChangeLog: ++ PR tree-opt/93321 ++ * tree-into-ssa.c (prepare_block_for_update_1): Split out from ... ++ (prepare_block_for_update): This. Use a worklist instead of recursing. ++--- ++ gcc/ChangeLog | 8 ++++++ ++ gcc/tree-into-ssa.c | 59 ++++++++++++++++++++++++++++++++++++--------- ++ 2 files changed, 55 insertions(+), 12 deletions(-) ++ ++diff --git a/gcc/ChangeLog b/gcc/ChangeLog ++index 8c17e5992d2..262f0d6506f 100644 ++--- a/gcc/ChangeLog +++++ b/gcc/ChangeLog ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/tree-into-ssa.c b/gcc/tree-into-ssa.c ++index c27bf2ce121..6528acac31a 100644 ++--- a/gcc/tree-into-ssa.c +++++ b/gcc/tree-into-ssa.c ++@@ -1 +1,2 @@ ++ +++ ++-- ++2.26.1 ++ ++=== 0184-PR-80005-Fix-__has_include.patch === ++From ad1a3914ae8d67c94b0d2428e3f9672e7db491a1 Mon Sep 17 00:00:00 2001 ++From: Nathan Sidwell ++Date: Mon, 20 Jan 2020 05:39:59 -0800 ++Subject: [PATCH 0184/2034] [PR 80005] Fix __has_include ++ ++__has_include is funky in that it is macro-like from the POV of #ifdef and ++friends, but lexes its parenthesize argument #include-like. We were ++failing the second part of that, because we used a forwarding macro to an ++internal name, and hence always lexed the argument in macro-parameter ++context. We componded that by not setting the right flag when lexing, so ++it didn't even know. Mostly users got lucky. ++ ++This reimplements the handline. ++1) Remove the forwarding, but declare object-like macros that ++expand to themselves. This satisfies the #ifdef requirement ++ ++2) Correctly set angled_brackets when lexing the parameter. This tells ++the lexer (a) <...> is a header name and (b) "..." is too (not a string). ++ ++3) Remove the in__has_include lexer state, just tell find_file that that's ++what's happenning, so it doesn't emit an error. ++ ++We lose the (undocumented) ability to #undef __has_include. That may well ++have been an accident of implementation. There are no tests for it. ++ ++We gain __has_include behaviour for all users of the preprocessors -- not ++just the C-family ones that defined a forwarding macro. ++ ++ libcpp/ ++ PR preprocessor/80005 ++ * include/cpplib.h (BT_HAS_ATTRIBUTE): Fix comment. ++ * internal.h (struct lexer_state): Delete in__has_include field. ++ (struct spec_nodes): Rename n__has_include{,_next}__ fields. ++ (_cpp_defined_macro_p): New. ++ (_cpp_find_file): Add has_include parm. ++ * directives.c (lex_macro_node): Combine defined, ++ __has_inline{,_next} checking. ++ (do_ifdef, do_ifndef): Use _cpp_defined_macro_p. ++ (_cpp_init_directives): Refactor. ++ * expr.c (parse_defined): Use _cpp_defined_macro_p. ++ (eval_token): Adjust parse_has_include calls. ++ (parse_has_include): Add OP parameter. Reimplement. ++ * files.c (_cpp_find_file): Add HAS_INCLUDE parm. Use it to ++ inhibit error message. ++ (_cpp_stack_include): Adjust _cpp_find_file call. ++ (_cpp_fake_include, _cpp_compare_file_date): Likewise. ++ (open_file_failed): Remove in__has_include check. ++ (_cpp_has_header): Adjust _cpp_find_file call. ++ * identifiers.c (_cpp_init_hashtable): Don't init ++ __has_include{,_next} here ... ++ * init.c (cpp_init_builtins): ... init them here. Define as ++ macros. ++ (cpp_read_main_file): Adjust _cpp_find_file call. ++ * pch.c (cpp_read_state): Adjust __has_include{,_next} access. ++ * traditional.c (_cpp_scan_out_locgical_line): Likewise. ++ ++ gcc/c-family/ ++ PR preprocessor/80005 ++ * c-cppbuiltins.c (c_cpp_builtins): Don't define __has_include{,_next}. ++ ++ gcc/testsuite/ ++ PR preprocessor/80005 ++ * g++.dg/cpp1y/feat-cxx14.C: Adjust. ++ * g++.dg/cpp1z/feat-cxx17.C: Adjust. ++ * g++.dg/cpp2a/feat-cxx2a.C: Adjust. ++ * g++.dg/cpp/pr80005.C: New. ++--- ++ gcc/c-family/ChangeLog | 5 ++++ ++ gcc/c-family/c-cppbuiltin.c | 6 ----- ++ gcc/testsuite/ChangeLog | 8 +++++++ ++ gcc/testsuite/g++.dg/cpp/pr80005.C | 24 +++++++++++++++++++ ++ gcc/testsuite/g++.dg/cpp1y/feat-cxx14.C | 10 ++------ ++ gcc/testsuite/g++.dg/cpp1z/feat-cxx1z.C | 10 ++------ ++ gcc/testsuite/g++.dg/cpp2a/feat-cxx2a.C | 10 ++------ ++ libcpp/ChangeLog | 29 +++++++++++++++++++++- ++ libcpp/directives.c | 29 ++++++++-------------- ++ libcpp/expr.c | 32 ++++++++++++------------- ++ libcpp/files.c | 27 +++++++++++---------- ++ libcpp/identifiers.c | 3 +-- ++ libcpp/include/cpplib.h | 2 +- ++ libcpp/init.c | 14 ++++++++++- ++ libcpp/internal.h | 20 +++++++++++----- ++ libcpp/pch.c | 4 ++-- ++ libcpp/traditional.c | 8 +++---- ++ 17 files changed, 146 insertions(+), 95 deletions(-) ++ create mode 100644 gcc/testsuite/g++.dg/cpp/pr80005.C ++ ++diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog ++index 09ba2c8b40f..fdddb98a74d 100644 ++--- a/gcc/c-family/ChangeLog +++++ b/gcc/c-family/ChangeLog ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/c-family/c-cppbuiltin.c b/gcc/c-family/c-cppbuiltin.c ++index a6308921dc9..70a12055e27 100644 ++--- a/gcc/c-family/c-cppbuiltin.c +++++ b/gcc/c-family/c-cppbuiltin.c ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog ++index a526e32ac89..67d5f2e9e28 100644 ++--- a/gcc/testsuite/ChangeLog +++++ b/gcc/testsuite/ChangeLog ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/testsuite/g++.dg/cpp/pr80005.C b/gcc/testsuite/g++.dg/cpp/pr80005.C ++new file mode 100644 ++index 00000000000..cc752616782 ++--- /dev/null +++++ b/gcc/testsuite/g++.dg/cpp/pr80005.C ++@@ -0,0 +1 @@ +++ ++diff --git a/gcc/testsuite/g++.dg/cpp1y/feat-cxx14.C b/gcc/testsuite/g++.dg/cpp1y/feat-cxx14.C ++index a2a93f437b3..a78b6a36f36 100644 ++--- a/gcc/testsuite/g++.dg/cpp1y/feat-cxx14.C +++++ b/gcc/testsuite/g++.dg/cpp1y/feat-cxx14.C ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/testsuite/g++.dg/cpp1z/feat-cxx1z.C b/gcc/testsuite/g++.dg/cpp1z/feat-cxx1z.C ++index 55e56a06fe8..e6f456b2415 100644 ++--- a/gcc/testsuite/g++.dg/cpp1z/feat-cxx1z.C +++++ b/gcc/testsuite/g++.dg/cpp1z/feat-cxx1z.C ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/testsuite/g++.dg/cpp2a/feat-cxx2a.C b/gcc/testsuite/g++.dg/cpp2a/feat-cxx2a.C ++index dd15cd6af3c..82fd602f9f1 100644 ++--- a/gcc/testsuite/g++.dg/cpp2a/feat-cxx2a.C +++++ b/gcc/testsuite/g++.dg/cpp2a/feat-cxx2a.C ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/libcpp/ChangeLog b/libcpp/ChangeLog ++index 3249b93fe88..27a841bbdce 100644 ++--- a/libcpp/ChangeLog +++++ b/libcpp/ChangeLog ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/libcpp/directives.c b/libcpp/directives.c ++index 983206a5838..10735c8c668 100644 ++--- a/libcpp/directives.c +++++ b/libcpp/directives.c ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/libcpp/expr.c b/libcpp/expr.c ++index 317faf50208..df21a4b9fb9 100644 ++--- a/libcpp/expr.c +++++ b/libcpp/expr.c ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/libcpp/files.c b/libcpp/files.c ++index 7abae7ae6ec..260e787c329 100644 ++--- a/libcpp/files.c +++++ b/libcpp/files.c ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/libcpp/identifiers.c b/libcpp/identifiers.c ++index 562d8fee3b5..9627e1bf4b0 100644 ++--- a/libcpp/identifiers.c +++++ b/libcpp/identifiers.c ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/libcpp/include/cpplib.h b/libcpp/include/cpplib.h ++index 1c26c365347..56cbbd82750 100644 ++--- a/libcpp/include/cpplib.h +++++ b/libcpp/include/cpplib.h ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/libcpp/init.c b/libcpp/init.c ++index 2b4923e1451..e798140ef8b 100644 ++--- a/libcpp/init.c +++++ b/libcpp/init.c ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/libcpp/internal.h b/libcpp/internal.h ++index 3623baf8191..5453c3bff85 100644 ++--- a/libcpp/internal.h +++++ b/libcpp/internal.h ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/libcpp/pch.c b/libcpp/pch.c ++index 607f805bebe..e631050936b 100644 ++--- a/libcpp/pch.c +++++ b/libcpp/pch.c ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/libcpp/traditional.c b/libcpp/traditional.c ++index 21c63b47dd5..ff06d31a897 100644 ++--- a/libcpp/traditional.c +++++ b/libcpp/traditional.c ++@@ -1 +1,2 @@ ++ +++ ++-- ++2.26.1 ++ ++=== long-lines.patch === ++From eb7c7c524556df5364f03adc20f6a9db20858484 Mon Sep 17 00:00:00 2001 ++From: Jakub Jelinek ++Date: Mon, 13 Jan 2020 14:14:57 +0100 ++Subject: [PATCH 0004/2034] tree-opt: Fix bootstrap failure in ++ tree-ssa-forwprop.c some more PR90838 ++ ++2020-01-13 Jakub Jelinek ++ ++ PR tree-optimization/90838 ++ * tree-ssa-forwprop.c (simplify_count_trailing_zeroes): Use ++ SCALAR_INT_TYPE_MODE directly in CTZ_DEFINED_VALUE_AT_ZERO macro and and SCALAR_INT_TYPE_MODE directly in and so ++ argument rather than to initialize temporary for targets that ++ don't use the mode argument at all. Initialize ctzval to avoid ++ warning at -O0. ++--- ++ gcc/ChangeLog | 9 +++++++++ ++ gcc/tree-ssa-forwprop.c | 6 +++--- ++ 2 files changed, 12 insertions(+), 3 deletions(-) ++ ++diff --git a/gcc/ChangeLog b/gcc/ChangeLog ++index a195863212e..f7df07343d1 100644 ++--- a/gcc/ChangeLog +++++ b/gcc/ChangeLog ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/tree-ssa-forwprop.c b/gcc/tree-ssa-forwprop.c ++index aac31d02b6c..56c470f6ecf 100644 ++--- a/gcc/tree-ssa-forwprop.c +++++ b/gcc/tree-ssa-forwprop.c ++@@ -1 +1,2 @@ ++ +++ ++-- ++2.26.1 ++ ++=== 0735-PR-87488-Add-with-diagnostics-urls-configuration-opt.patch === ++From 458c8d6459c4005fc9886b6e25d168a6535ac415 Mon Sep 17 00:00:00 2001 ++From: Bernd Edlinger ++Date: Wed, 29 Jan 2020 15:31:10 +0100 ++Subject: [PATCH 0735/2034] PR 87488: Add --with-diagnostics-urls configuration ++ option ++ ++2020-02-15 David Malcolm ++ Bernd Edlinger ++ ++ PR 87488 ++ PR other/93168 ++ * config.in (DIAGNOSTICS_URLS_DEFAULT): New define. ++ * configure.ac (--with-diagnostics-urls): New configuration ++ option, based on --with-diagnostics-color. ++ (DIAGNOSTICS_URLS_DEFAULT): New define. ++ * config.h: Regenerate. ++ * configure: Regenerate. ++ * diagnostic.c (diagnostic_urls_init): Handle -1 for ++ DIAGNOSTICS_URLS_DEFAULT from configure-time ++ --with-diagnostics-urls=auto-if-env by querying for a GCC_URLS ++ and TERM_URLS environment variable. ++ * diagnostic-url.h (diagnostic_url_format): New enum type. ++ (diagnostic_urls_enabled_p): rename to... ++ (determine_url_format): ... this, and change return type. ++ * diagnostic-color.c (parse_env_vars_for_urls): New helper function. ++ (auto_enable_urls): Disable URLs on xfce4-terminal, gnome-terminal, ++ the linux console, and mingw. ++ (diagnostic_urls_enabled_p): rename to... ++ (determine_url_format): ... this, and adjust. ++ * pretty-print.h (pretty_printer::show_urls): rename to... ++ (pretty_printer::url_format): ... this, and change to enum. ++ * pretty-print.c (pretty_printer::pretty_printer, ++ pp_begin_url, pp_end_url, test_urls): Adjust. ++ * doc/install.texi (--with-diagnostics-urls): Document the new ++ configuration option. ++ (--with-diagnostics-color): Document the existing interaction ++ with GCC_COLORS better. ++ * doc/invoke.texi (-fdiagnostics-urls): Add GCC_URLS and TERM_URLS ++ vindex reference. Update description of defaults based on the above. ++ (-fdiagnostics-color): Update description of how -fdiagnostics-color ++ interacts with GCC_COLORS. ++--- ++ gcc/ChangeLog | 36 +++++++++++++++ ++ gcc/config.in | 6 +++ ++ gcc/configure | 41 ++++++++++++++++- ++ gcc/configure.ac | 28 ++++++++++++ ++ gcc/diagnostic-color.c | 101 ++++++++++++++++++++++++++++++++++++++--- ++ gcc/diagnostic-url.h | 18 +++++++- ++ gcc/diagnostic.c | 21 +++++++-- ++ gcc/doc/install.texi | 15 ++++-- ++ gcc/doc/invoke.texi | 39 ++++++++++++++-- ++ gcc/pretty-print.c | 44 +++++++++++++++--- ++ gcc/pretty-print.h | 5 +- ++ 11 files changed, 328 insertions(+), 26 deletions(-) ++ ++diff --git a/gcc/ChangeLog b/gcc/ChangeLog ++index e6eb6ab4c21..22f990a3088 100644 ++--- a/gcc/ChangeLog +++++ b/gcc/ChangeLog ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/config.in b/gcc/config.in ++index 48292861842..01fb18dbbb5 100644 ++--- a/gcc/config.in +++++ b/gcc/config.in ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/configure b/gcc/configure ++index 5fa565a40a4..f55cdb8c77f 100755 ++--- a/gcc/configure +++++ b/gcc/configure ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/configure.ac b/gcc/configure.ac ++index 671b9a67d81..0e6e475950d 100644 ++--- a/gcc/configure.ac +++++ b/gcc/configure.ac ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/diagnostic-color.c b/gcc/diagnostic-color.c ++index d5547952921..b1baded2c9e 100644 ++--- a/gcc/diagnostic-color.c +++++ b/gcc/diagnostic-color.c ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/diagnostic-url.h b/gcc/diagnostic-url.h ++index 6be056941f1..d28460b928b 100644 ++--- a/gcc/diagnostic-url.h +++++ b/gcc/diagnostic-url.h ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/diagnostic.c b/gcc/diagnostic.c ++index 3386f070256..e4a08f76def 100644 ++--- a/gcc/diagnostic.c +++++ b/gcc/diagnostic.c ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/doc/install.texi b/gcc/doc/install.texi ++index 6ffafacff50..8ddebbb6267 100644 ++--- a/gcc/doc/install.texi +++++ b/gcc/doc/install.texi ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi ++index bd9ecebf103..597151670be 100644 ++--- a/gcc/doc/invoke.texi +++++ b/gcc/doc/invoke.texi ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/pretty-print.c b/gcc/pretty-print.c ++index 817c1059e08..dde138b0533 100644 ++--- a/gcc/pretty-print.c +++++ b/gcc/pretty-print.c ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/pretty-print.h b/gcc/pretty-print.h ++index 001468c966e..22892f12ab7 100644 ++--- a/gcc/pretty-print.h +++++ b/gcc/pretty-print.h ++@@ -1 +1,2 @@ ++ +++ ++-- ++2.26.1 ++ ++=== 0031-Fix-typo-and-avoid-possible-memory-leak-in-average_n.patch === ++From b38e86ddb7a9b6d7e87d7cc0b23983d027fcbd96 Mon Sep 17 00:00:00 2001 ++From: Kewen Lin ++Date: Tue, 14 Jan 2020 02:34:10 -0600 ++Subject: [PATCH 0031/2034] Fix typo and avoid possible memory leak in ++ average_num_loop_insns ++ ++Function average_num_loop_insns forgets to free loop body in early ++return. Besides, overflow comparison checks 1000000 (e6) but the ++return value is 100000 (e5), fix this typo. ++ ++gcc/ChangeLog ++ ++2020-01-14 Kewen Lin ++ ++ * cfgloopanal.c (average_num_loop_insns): Free bbs when early ++ return, fix typo on return value. ++--- ++ gcc/ChangeLog | 5 +++++ ++ gcc/cfgloopanal.c | 5 ++++- ++ 2 files changed, 9 insertions(+), 1 deletion(-) ++ ++diff --git a/gcc/ChangeLog b/gcc/ChangeLog ++index 07e5bebe909..f3301b16464 100644 ++--- a/gcc/ChangeLog +++++ b/gcc/ChangeLog ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/cfgloopanal.c b/gcc/cfgloopanal.c ++index 392b1c337c4..0b33e8272a7 100644 ++--- a/gcc/cfgloopanal.c +++++ b/gcc/cfgloopanal.c ++@@ -1 +1,2 @@ ++ +++ ++-- ++2.26.1 ++ ++=== 0735-PR-87488-Add-with-diagnostics-urls-configuration-opt.patch === ++From 458c8d6459c4005fc9886b6e25d168a6535ac415 Mon Sep 17 00:00:00 2001 ++From: Bernd Edlinger ++Date: Wed, 29 Jan 2020 15:31:10 +0100 ++Subject: [PATCH 0735/2034] PR 87488: Add --with-diagnostics-urls configuration ++ option ++ ++2020-02-15 David Malcolm ++ Bernd Edlinger ++ ++ PR 87488 ++ PR other/93168 ++ * config.in (DIAGNOSTICS_URLS_DEFAULT): New define. ++ * configure.ac (--with-diagnostics-urls): New configuration ++ option, based on --with-diagnostics-color. ++ (DIAGNOSTICS_URLS_DEFAULT): New define. ++ * config.h: Regenerate. ++ * configure: Regenerate. ++ * diagnostic.c (diagnostic_urls_init): Handle -1 for ++ DIAGNOSTICS_URLS_DEFAULT from configure-time ++ --with-diagnostics-urls=auto-if-env by querying for a GCC_URLS ++ and TERM_URLS environment variable. ++ * diagnostic-url.h (diagnostic_url_format): New enum type. ++ (diagnostic_urls_enabled_p): rename to... ++ (determine_url_format): ... this, and change return type. ++ * diagnostic-color.c (parse_env_vars_for_urls): New helper function. ++ (auto_enable_urls): Disable URLs on xfce4-terminal, gnome-terminal, ++ the linux console, and mingw. ++ (diagnostic_urls_enabled_p): rename to... ++ (determine_url_format): ... this, and adjust. ++ * pretty-print.h (pretty_printer::show_urls): rename to... ++ (pretty_printer::url_format): ... this, and change to enum. ++ * pretty-print.c (pretty_printer::pretty_printer, ++ pp_begin_url, pp_end_url, test_urls): Adjust. ++ * doc/install.texi (--with-diagnostics-urls): Document the new ++ configuration option. ++ (--with-diagnostics-color): Document the existing interaction ++ with GCC_COLORS better. ++ * doc/invoke.texi (-fdiagnostics-urls): Add GCC_URLS and TERM_URLS ++ vindex reference. Update description of defaults based on the above. ++ (-fdiagnostics-color): Update description of how -fdiagnostics-color ++ interacts with GCC_COLORS. ++--- ++ gcc/ChangeLog | 36 +++++++++++++++ ++ gcc/config.in | 6 +++ ++ gcc/configure | 41 ++++++++++++++++- ++ gcc/configure.ac | 28 ++++++++++++ ++ gcc/diagnostic-color.c | 101 ++++++++++++++++++++++++++++++++++++++--- ++ gcc/diagnostic-url.h | 18 +++++++- ++ gcc/diagnostic.c | 21 +++++++-- ++ gcc/doc/install.texi | 15 ++++-- ++ gcc/doc/invoke.texi | 39 ++++++++++++++-- ++ gcc/pretty-print.c | 44 +++++++++++++++--- ++ gcc/pretty-print.h | 5 +- ++ 11 files changed, 328 insertions(+), 26 deletions(-) ++ ++diff --git a/gcc/ChangeLog b/gcc/ChangeLog ++index e6eb6ab4c21..22f990a3088 100644 ++--- a/gcc/ChangeLog +++++ b/gcc/ChangeLog ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/config.in b/gcc/config.in ++index 48292861842..01fb18dbbb5 100644 ++--- a/gcc/config.in +++++ b/gcc/config.in ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/configure b/gcc/configure ++index 5fa565a40a4..f55cdb8c77f 100755 ++--- a/gcc/configure +++++ b/gcc/configure ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/configure.ac b/gcc/configure.ac ++index 671b9a67d81..0e6e475950d 100644 ++--- a/gcc/configure.ac +++++ b/gcc/configure.ac ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/diagnostic-color.c b/gcc/diagnostic-color.c ++index d5547952921..b1baded2c9e 100644 ++--- a/gcc/diagnostic-color.c +++++ b/gcc/diagnostic-color.c ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/diagnostic-url.h b/gcc/diagnostic-url.h ++index 6be056941f1..d28460b928b 100644 ++--- a/gcc/diagnostic-url.h +++++ b/gcc/diagnostic-url.h ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/diagnostic.c b/gcc/diagnostic.c ++index 3386f070256..e4a08f76def 100644 ++--- a/gcc/diagnostic.c +++++ b/gcc/diagnostic.c ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/doc/install.texi b/gcc/doc/install.texi ++index 6ffafacff50..8ddebbb6267 100644 ++--- a/gcc/doc/install.texi +++++ b/gcc/doc/install.texi ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi ++index bd9ecebf103..597151670be 100644 ++--- a/gcc/doc/invoke.texi +++++ b/gcc/doc/invoke.texi ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/pretty-print.c b/gcc/pretty-print.c ++index 817c1059e08..dde138b0533 100644 ++--- a/gcc/pretty-print.c +++++ b/gcc/pretty-print.c ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/pretty-print.h b/gcc/pretty-print.h ++index 001468c966e..22892f12ab7 100644 ++--- a/gcc/pretty-print.h +++++ b/gcc/pretty-print.h ++@@ -1 +1,2 @@ ++ +++ ++-- ++2.26.1 ++ ++=== co-authored-by.patch === ++From d7a65edb629a010f7ef907d457343abcb569fab7 Mon Sep 17 00:00:00 2001 ++From: Martin Liska ++Date: Thu, 16 Apr 2020 15:39:22 +0200 ++Subject: [PATCH 1850/2034] List valid pairs for new and delete operators. ++ ++ PR c++/94314 ++ * cgraphclones.c (set_new_clone_decl_and_node_flags): Drop ++ DECL_IS_REPLACEABLE_OPERATOR during cloning. ++ * tree-ssa-dce.c (valid_new_delete_pair_p): New function. ++ (propagate_necessity): Check operator names. ++ ++ PR c++/94314 ++ * g++.dg/pr94314.C: Do not use dg-additional-options ++ and remove not needed stdio.h include. ++ * g++.dg/pr94314-2.C: Likewise. ++ * g++.dg/pr94314-3.C: Likewise. ++ * g++.dg/pr94314-4.C: New test. ++ ++co-authored-By: Jakub Jelinek ++Co-Authored-by: John Miller ++co-authored-by: John Miller2 ++--- ++ gcc/ChangeLog | 9 +++ ++ gcc/cgraphclones.c | 2 + ++ gcc/testsuite/ChangeLog | 10 ++++ ++ gcc/testsuite/g++.dg/pr94314-2.C | 5 +- ++ gcc/testsuite/g++.dg/pr94314-3.C | 5 +- ++ gcc/testsuite/g++.dg/pr94314-4.C | 30 ++++++++++ ++ gcc/testsuite/g++.dg/pr94314.C | 5 +- ++ gcc/tree-ssa-dce.c | 98 ++++++++++++++++++++++++++++---- ++ 8 files changed, 142 insertions(+), 22 deletions(-) ++ create mode 100644 gcc/testsuite/g++.dg/pr94314-4.C ++ ++diff --git a/gcc/ChangeLog b/gcc/ChangeLog ++index 74dbeeb44c6..9e499ec9c86 100644 ++--- a/gcc/ChangeLog +++++ b/gcc/ChangeLog ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/cgraphclones.c b/gcc/cgraphclones.c ++index c73b8f810f0..8f541a28b6e 100644 ++--- a/gcc/cgraphclones.c +++++ b/gcc/cgraphclones.c ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog ++index 756f1d759e6..94d2312022d 100644 ++--- a/gcc/testsuite/ChangeLog +++++ b/gcc/testsuite/ChangeLog ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/testsuite/g++.dg/pr94314-2.C b/gcc/testsuite/g++.dg/pr94314-2.C ++index 36b93ed6d4d..998ce601767 100644 ++--- a/gcc/testsuite/g++.dg/pr94314-2.C +++++ b/gcc/testsuite/g++.dg/pr94314-2.C ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/testsuite/g++.dg/pr94314-3.C b/gcc/testsuite/g++.dg/pr94314-3.C ++index 575ba9d8ad8..846a5d6a3d8 100644 ++--- a/gcc/testsuite/g++.dg/pr94314-3.C +++++ b/gcc/testsuite/g++.dg/pr94314-3.C ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/testsuite/g++.dg/pr94314-4.C b/gcc/testsuite/g++.dg/pr94314-4.C ++new file mode 100644 ++index 00000000000..d097f29d4ad ++--- /dev/null +++++ b/gcc/testsuite/g++.dg/pr94314-4.C ++@@ -0,0 +1 @@ +++ ++diff --git a/gcc/testsuite/g++.dg/pr94314.C b/gcc/testsuite/g++.dg/pr94314.C ++index 86e651d10ba..4e5ae122e9f 100644 ++--- a/gcc/testsuite/g++.dg/pr94314.C +++++ b/gcc/testsuite/g++.dg/pr94314.C ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/tree-ssa-dce.c b/gcc/tree-ssa-dce.c ++index fd5f24c746c..757cfad5b5e 100644 ++--- a/gcc/tree-ssa-dce.c +++++ b/gcc/tree-ssa-dce.c ++@@ -1 +1,2 @@ ++ +++ ++-- ++2.26.1 ++ ++=== 1699-combine-Fix-split_i2i3-ICE-PR94291.patch === ++From c23c899aedf11069e992eed7358802b262d62f98 Mon Sep 17 00:00:00 2001 ++From: Jakub Jelinek ++Date: Tue, 7 Apr 2020 21:30:12 +0200 ++Subject: [PATCH 1699/2034] combine: Fix split_i2i3 ICE [PR94291] ++ ++The following testcase ICEs on armv7hl-linux-gnueabi. ++try_combine is called on: ++(gdb) p debug_rtx (i3) ++(insn 20 12 22 2 (set (mem/c:SI (plus:SI (reg/f:SI 102 sfp) ++ (const_int -4 [0xfffffffffffffffc])) [1 x+0 S4 A32]) ++ (reg:SI 125)) "pr94291.c":7:8 241 {*arm_movsi_insn} ++ (expr_list:REG_DEAD (reg:SI 125) ++ (nil))) ++(gdb) p debug_rtx (i2) ++(insn 12 7 20 2 (parallel [ ++ (set (reg:CC 100 cc) ++ (compare:CC (reg:SI 121 [ ]) ++ (const_int 0 [0]))) ++ (set (reg:SI 125) ++ (reg:SI 121 [ ])) ++ ]) "pr94291.c":7:8 248 {*movsi_compare0} ++ (expr_list:REG_UNUSED (reg:CC 100 cc) ++ (nil))) ++and tries to recognize cc = r121 cmp 0; [sfp-4] = r121 parallel, ++but that isn't recognized, so it splits it into two: split_i2i3 ++[sfp-4] = r121 followed by cc = r121 cmp 0 which is recognized, but ++ICEs because the code below insist that the SET_DEST of newi2pat ++(or first set in PARALLEL thereof) must be a REG or SUBREG of REG, ++but it is a MEM in this case. I don't see any condition that would ++guarantee that, perhaps for the swap_i2i3 case it was somehow guaranteed. ++ ++As the code just wants to update LOG_LINKS and LOG_LINKS are only for ++registers, not for MEM or anything else, the patch just doesn't update those ++if it isn't a REG or SUBREG of REG. ++ ++2020-04-07 Jakub Jelinek ++ ++ PR rtl-optimization/94291 ++ PR rtl-optimization/84169 ++ * combine.c (try_combine): For split_i2i3, don't assume SET_DEST ++ must be a REG or SUBREG of REG; if it is not one of these, don't ++ update LOG_LINKs. ++ ++ * gcc.dg/pr94291.c: New test. ++--- ++ gcc/ChangeLog | 8 +++++++ ++ gcc/combine.c | 42 +++++++++++++++++++--------------- ++ gcc/testsuite/ChangeLog | 6 +++++ ++ gcc/testsuite/gcc.dg/pr94291.c | 14 ++++++++++++ ++ 4 files changed, 51 insertions(+), 19 deletions(-) ++ create mode 100644 gcc/testsuite/gcc.dg/pr94291.c ++ ++diff --git a/gcc/ChangeLog b/gcc/ChangeLog ++index a1ab9fb4ef3..12803e90b0a 100644 ++--- a/gcc/ChangeLog +++++ b/gcc/ChangeLog ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/combine.c b/gcc/combine.c ++index 58366a6d331..cff76cd3303 100644 ++--- a/gcc/combine.c +++++ b/gcc/combine.c ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog ++index 71b5a14bcbe..3cbf891d58d 100644 ++--- a/gcc/testsuite/ChangeLog +++++ b/gcc/testsuite/ChangeLog ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/testsuite/gcc.dg/pr94291.c b/gcc/testsuite/gcc.dg/pr94291.c ++new file mode 100644 ++index 00000000000..7daa2b01166 ++--- /dev/null +++++ b/gcc/testsuite/gcc.dg/pr94291.c ++@@ -0,0 +1 @@ +++ ++-- ++2.26.1 ++ ++=== 0001-Add-patch_area_size-and-patch_area_entry-to-crtl.patch === ++From 6607bdd99994c834f92fce924abdaea3405f62dc Mon Sep 17 00:00:00 2001 ++From: "H.J. Lu" ++Date: Fri, 1 May 2020 21:03:10 -0700 ++Subject: [PATCH] Add patch_area_size and patch_area_entry to crtl ++ ++Currently patchable area is at the wrong place. It is placed immediately ++after function label and before .cfi_startproc. A backend should be able ++to add a pseudo patchable area instruction durectly into RTL. This patch ++adds patch_area_size and patch_area_entry to crtl so that the patchable ++area info is available in RTL passes. ++ ++It also limits patch_area_size and patch_area_entry to 65535, which is ++a reasonable maximum size for patchable area. ++ ++gcc/ ++ ++ PR target/93492 ++ * cfgexpand.c (pass_expand::execute): Set crtl->patch_area_size ++ and crtl->patch_area_entry. ++ * emit-rtl.h (rtl_data): Add patch_area_size and patch_area_entry. ++ * opts.c (common_handle_option): Limit ++ function_entry_patch_area_size and function_entry_patch_area_start ++ to USHRT_MAX. Fix a typo in error message. ++ * varasm.c (assemble_start_function): Use crtl->patch_area_size ++ and crtl->patch_area_entry. ++ * doc/invoke.texi: Document the maximum value for ++ -fpatchable-function-entry. ++ ++gcc/c-family/ ++ ++ PR target/12345 ++ * c-attribs.c (handle_patchable_function_entry_attribute): Limit ++ value to USHRT_MAX (65535). ++ ++--- ++ gcc/ChangeLog | 14 ++++++++ ++ gcc/c-family/ChangeLog | 6 ++++ ++ gcc/c-family/c-attribs.c | 9 +++++ ++ gcc/cfgexpand.c | 33 +++++++++++++++++++ ++ gcc/doc/invoke.texi | 1 + ++ gcc/emit-rtl.h | 6 ++++ ++ gcc/opts.c | 4 ++- ++ gcc/testsuite/ChangeLog | 7 ++++ ++ .../patchable_function_entry-error-1.c | 9 +++++ ++ .../patchable_function_entry-error-2.c | 9 +++++ ++ .../patchable_function_entry-error-3.c | 17 ++++++++++ ++ gcc/varasm.c | 30 ++--------------- ++ 12 files changed, 116 insertions(+), 29 deletions(-) ++ create mode 100644 gcc/testsuite/c-c++-common/patchable_function_entry-error-1.c ++ create mode 100644 gcc/testsuite/c-c++-common/patchable_function_entry-error-2.c ++ create mode 100644 gcc/testsuite/c-c++-common/patchable_function_entry-error-3.c ++ ++diff --git a/gcc/ChangeLog b/gcc/ChangeLog ++index e85a8e8813e..fb776ba5a0e 100644 ++--- a/gcc/ChangeLog +++++ b/gcc/ChangeLog ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog ++index c429b49e68c..69ea1fdc4f3 100644 ++--- a/gcc/c-family/ChangeLog +++++ b/gcc/c-family/ChangeLog ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/c-family/c-attribs.c b/gcc/c-family/c-attribs.c ++index ac936d5bbbb..a101312c581 100644 ++--- a/gcc/c-family/c-attribs.c +++++ b/gcc/c-family/c-attribs.c ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/cfgexpand.c b/gcc/cfgexpand.c ++index a7ec77d5c85..86efa22bf60 100644 ++--- a/gcc/cfgexpand.c +++++ b/gcc/cfgexpand.c ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi ++index 527d362533a..767d1f07801 100644 ++--- a/gcc/doc/invoke.texi +++++ b/gcc/doc/invoke.texi ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/emit-rtl.h b/gcc/emit-rtl.h ++index a878efe3cf7..3d6565c8a30 100644 ++--- a/gcc/emit-rtl.h +++++ b/gcc/emit-rtl.h ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/opts.c b/gcc/opts.c ++index c212a1a57dc..3dccef39701 100644 ++--- a/gcc/opts.c +++++ b/gcc/opts.c ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog ++index 176aa117904..185f9ea725e 100644 ++--- a/gcc/testsuite/ChangeLog +++++ b/gcc/testsuite/ChangeLog ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/testsuite/c-c++-common/patchable_function_entry-error-1.c b/gcc/testsuite/c-c++-common/patchable_function_entry-error-1.c ++new file mode 100644 ++index 00000000000..f60bf46cfe3 ++--- /dev/null +++++ b/gcc/testsuite/c-c++-common/patchable_function_entry-error-1.c ++@@ -0,0 +1 @@ +++ ++diff --git a/gcc/testsuite/c-c++-common/patchable_function_entry-error-2.c b/gcc/testsuite/c-c++-common/patchable_function_entry-error-2.c ++new file mode 100644 ++index 00000000000..90f88c78be7 ++--- /dev/null +++++ b/gcc/testsuite/c-c++-common/patchable_function_entry-error-2.c ++@@ -0,0 +1 @@ +++ ++diff --git a/gcc/testsuite/c-c++-common/patchable_function_entry-error-3.c b/gcc/testsuite/c-c++-common/patchable_function_entry-error-3.c ++new file mode 100644 ++index 00000000000..4490e5c15ca ++--- /dev/null +++++ b/gcc/testsuite/c-c++-common/patchable_function_entry-error-3.c ++@@ -0,0 +1 @@ +++ ++diff --git a/gcc/varasm.c b/gcc/varasm.c ++index 271a67abf56..f062e48071f 100644 ++--- a/gcc/varasm.c +++++ b/gcc/varasm.c ++@@ -1 +1,2 @@ ++ +++ ++-- ++2.26.2 ++ ++=== 1957-c-generic-lambda-forwarding-function-PR94546.patch === ++From aedd04caa945260ea77fd22f29b77292f7dba72e Mon Sep 17 00:00:00 2001 ++From: Jason Merrill ++Date: Wed, 22 Apr 2020 02:27:54 -0400 ++Subject: [PATCH 1957/2034] c++: generic lambda forwarding function [PR94546] ++ ++While instantiating test(Plot) we partially instantiate the generic lambda. ++We look at forward(rest)... and see that it's just replacing parameter ++packs with new parameter packs and tries to do a direct substitution. But ++because register_parameter_specializations had built up a ++NONTYPE_ARGUMENT_PACK around the new parameter pack, the substitution ++failed. So let's not wrap it that way. ++ ++gcc/cp/ChangeLog ++2020-04-22 Jason Merrill ++ ++ PR c++/94546 ++ * pt.c (register_parameter_specializations): If the instantiation is ++ still a parameter pack, don't wrap it in a NONTYPE_ARGUMENT_PACK. ++ (tsubst_pack_expansion, tsubst_expr): Adjust. ++--- ++ gcc/cp/ChangeLog | 7 +++++ ++ gcc/cp/pt.c | 28 +++++++------------ ++ .../g++.dg/cpp2a/lambda-generic-variadic20.C | 23 +++++++++++++++ ++ 3 files changed, 40 insertions(+), 18 deletions(-) ++ create mode 100644 gcc/testsuite/g++.dg/cpp2a/lambda-generic-variadic20.C ++ ++diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog ++index 640e4948130..4b6691a77f0 100644 ++--- a/gcc/cp/ChangeLog +++++ b/gcc/cp/ChangeLog ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c ++index 7bf249cee5c..2fe7b66707c 100644 ++--- a/gcc/cp/pt.c +++++ b/gcc/cp/pt.c ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/testsuite/g++.dg/cpp2a/lambda-generic-variadic20.C b/gcc/testsuite/g++.dg/cpp2a/lambda-generic-variadic20.C ++new file mode 100644 ++index 00000000000..3d69dbb8e98 ++--- /dev/null +++++ b/gcc/testsuite/g++.dg/cpp2a/lambda-generic-variadic20.C ++@@ -0,0 +1 @@ +++ ++-- ++2.26.1 ++ ++=== 0030-PR-c-92746-ICE-with-noexcept-of-function-concept-che.patch === ++From edabbec31e3bfc9a9757f80c8610706ed00e5a1a Mon Sep 17 00:00:00 2001 ++From: Jason Merrill ++Date: Mon, 13 Jan 2020 18:13:46 -0500 ++Subject: [PATCH 0030/2034] PR c++/92746 - ICE with noexcept of function ++ concept check. ++ ++Another place that needs to specially handle Concepts TS function-style ++concepts. ++ ++ * except.c (check_noexcept_r): Handle concept-check. ++--- ++ gcc/cp/ChangeLog | 3 +++ ++ gcc/cp/except.c | 2 ++ ++ gcc/testsuite/g++.dg/concepts/fn-concept3.C | 6 ++++++ ++ 3 files changed, 11 insertions(+) ++ create mode 100644 gcc/testsuite/g++.dg/concepts/fn-concept3.C ++ ++diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog ++index 59646c70fa4..4729e3d331d 100644 ++--- a/gcc/cp/ChangeLog +++++ b/gcc/cp/ChangeLog ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/cp/except.c b/gcc/cp/except.c ++index e073bd4d2bc..55b4b6af442 100644 ++--- a/gcc/cp/except.c +++++ b/gcc/cp/except.c ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/testsuite/g++.dg/concepts/fn-concept3.C b/gcc/testsuite/g++.dg/concepts/fn-concept3.C ++new file mode 100644 ++index 00000000000..ecb7f6b12f7 ++--- /dev/null +++++ b/gcc/testsuite/g++.dg/concepts/fn-concept3.C ++@@ -0,0 +1 @@ +++ ++-- ++2.26.1 ++ ++=== 0129-Add-PR-number-to-change-log.patch === ++From f788c2d66a6ee1ded65dafccbc5e485d42af4808 Mon Sep 17 00:00:00 2001 ++From: Richard Sandiford ++Date: Fri, 17 Jan 2020 12:22:58 +0000 ++Subject: [PATCH 0129/2034] Add PR number to change log ++ ++--- ++ gcc/ChangeLog | 1 + ++ 1 file changed, 1 insertion(+) ++ ++diff --git a/gcc/ChangeLog b/gcc/ChangeLog ++index 6c6d586ca75..49ca5f92dec 100644 ++--- a/gcc/ChangeLog +++++ b/gcc/ChangeLog ++@@ -1 +1,2 @@ ++ +++ ++-- ++2.26.1 ++ ++=== 0577-aarch64-Add-an-and.patch === ++From bba0c624c8b1d6e54dc58091dd21b0c2ab000434 Mon Sep 17 00:00:00 2001 ++From: Richard Sandiford ++Date: Mon, 3 Feb 2020 21:43:44 +0000 ++Subject: [PATCH 0577/2034] aarch64: Add an and/ior-based movk pattern ++ [PR87763] ++ ++This patch adds a second movk pattern that models the instruction ++as a "normal" and/ior operation rather than an insertion. It fixes ++the third insv_1.c failure in PR87763, which was a regression from ++GCC 8. ++ ++2020-02-06 Richard Sandiford ++ ++gcc/ ++ PR target/87763 ++ * config/aarch64/aarch64-protos.h (aarch64_movk_shift): Declare. ++ * config/aarch64/aarch64.c (aarch64_movk_shift): New function. ++ * config/aarch64/aarch64.md (aarch64_movk): New pattern. ++ ++gcc/testsuite/ ++ PR target/87763 ++ * gcc.target/aarch64/movk_2.c: New test. ++--- ++ gcc/ChangeLog | 7 ++ ++ gcc/config/aarch64/aarch64-protos.h | 1 + ++ gcc/config/aarch64/aarch64.c | 24 +++++++ ++ gcc/config/aarch64/aarch64.md | 17 +++++ ++ gcc/testsuite/ChangeLog | 5 ++ ++ gcc/testsuite/gcc.target/aarch64/movk_2.c | 78 +++++++++++++++++++++++ ++ 6 files changed, 132 insertions(+) ++ create mode 100644 gcc/testsuite/gcc.target/aarch64/movk_2.c ++ ++diff --git a/gcc/ChangeLog b/gcc/ChangeLog ++index efbbbf08225..cea8ffee99c 100644 ++--- a/gcc/ChangeLog +++++ b/gcc/ChangeLog ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/config/aarch64/aarch64-protos.h b/gcc/config/aarch64/aarch64-protos.h ++index 24cc65a383a..d29975a8921 100644 ++--- a/gcc/config/aarch64/aarch64-protos.h +++++ b/gcc/config/aarch64/aarch64-protos.h ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/config/aarch64/aarch64.c b/gcc/config/aarch64/aarch64.c ++index 6581e4cb075..6a1b4099af1 100644 ++--- a/gcc/config/aarch64/aarch64.c +++++ b/gcc/config/aarch64/aarch64.c ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/config/aarch64/aarch64.md b/gcc/config/aarch64/aarch64.md ++index 90eebce85c0..9c1f17d0f85 100644 ++--- a/gcc/config/aarch64/aarch64.md +++++ b/gcc/config/aarch64/aarch64.md ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog ++index 601bc336290..cdb26581b9c 100644 ++--- a/gcc/testsuite/ChangeLog +++++ b/gcc/testsuite/ChangeLog ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/testsuite/gcc.target/aarch64/movk_2.c b/gcc/testsuite/gcc.target/aarch64/movk_2.c ++new file mode 100644 ++index 00000000000..a0477ad5d42 ++--- /dev/null +++++ b/gcc/testsuite/gcc.target/aarch64/movk_2.c ++@@ -0,0 +1 @@ +++ ++-- ++2.26.1 ++ ++=== 1975-S-390-Fix-several-test-cases.patch === ++From 803596fe9591026a50b59ff961ebc114097677b5 Mon Sep 17 00:00:00 2001 ++From: Stefan Schulze Frielinghaus ++Date: Tue, 10 Mar 2020 10:49:28 +0100 ++Subject: [PATCH 1975/2034] S/390: Fix several test cases ++ ++gcc/ChangeLog: ++ ++2020-04-21 Stefan Schulze Frielinghaus ++ ++ * config/s390/s390.md ("*_ior_and_sr_ze"): Lift from SI ++ mode to DSI. ("*trunc_sidi_and_subreg_ze"): New ++ insn pattern. ++ ++gcc/testsuite/ChangeLog: ++ ++2020-04-21 Stefan Schulze Frielinghaus ++ ++ * gcc.target/s390/addsub-signed-overflow-1.c: Fix options. ++ * gcc.target/s390/addsub-signed-overflow-2.c: Fix options. ++ * gcc.target/s390/bswap-1.c: Fix scan assembler regex. ++ * gcc.target/s390/global-array-element-pic2.c: Fix scan assembler regex. ++ * gcc.target/s390/load-relative-check.c: Fix options. ++ * gcc.target/s390/morestack.c: Fix options. ++ * gcc.target/s390/nobp-return-mem-z900.c: Temporarily silence this case. ++ * gcc.target/s390/risbg-ll-1.c: Fix scan assembler regex. ++ * gcc.target/s390/risbg-ll-2.c: Fix scan assembler regex. ++ * gcc.target/s390/risbg-ll-3.c: Fix scan assembler regex. ++ * gcc.target/s390/target-attribute/pr82012.c: Fix error message. ++--- ++ gcc/config/s390/s390.md | 39 ++++++++++++------- ++ .../s390/addsub-signed-overflow-1.c | 2 +- ++ .../s390/addsub-signed-overflow-2.c | 2 +- ++ gcc/testsuite/gcc.target/s390/bswap-1.c | 8 ++-- ++ .../s390/global-array-element-pic2.c | 4 +- ++ .../gcc.target/s390/load-relative-check.c | 2 +- ++ gcc/testsuite/gcc.target/s390/morestack.c | 2 +- ++ .../gcc.target/s390/nobp-return-mem-z900.c | 17 ++++++-- ++ gcc/testsuite/gcc.target/s390/risbg-ll-1.c | 13 +++---- ++ gcc/testsuite/gcc.target/s390/risbg-ll-2.c | 6 +-- ++ gcc/testsuite/gcc.target/s390/risbg-ll-3.c | 2 +- ++ .../s390/target-attribute/pr82012.c | 2 +- ++ 12 files changed, 59 insertions(+), 40 deletions(-) ++ ++diff --git a/gcc/config/s390/s390.md b/gcc/config/s390/s390.md ++index 44b59659e20..cf53ef1b791 100644 ++--- a/gcc/config/s390/s390.md +++++ b/gcc/config/s390/s390.md ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/testsuite/gcc.target/s390/addsub-signed-overflow-1.c b/gcc/testsuite/gcc.target/s390/addsub-signed-overflow-1.c ++index 143220d5541..ebc02479587 100644 ++--- a/gcc/testsuite/gcc.target/s390/addsub-signed-overflow-1.c +++++ b/gcc/testsuite/gcc.target/s390/addsub-signed-overflow-1.c ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/testsuite/gcc.target/s390/addsub-signed-overflow-2.c b/gcc/testsuite/gcc.target/s390/addsub-signed-overflow-2.c ++index 798e489cece..8bd1a764bc6 100644 ++--- a/gcc/testsuite/gcc.target/s390/addsub-signed-overflow-2.c +++++ b/gcc/testsuite/gcc.target/s390/addsub-signed-overflow-2.c ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/testsuite/gcc.target/s390/bswap-1.c b/gcc/testsuite/gcc.target/s390/bswap-1.c ++index edfcdf888c0..c11a0ea780b 100644 ++--- a/gcc/testsuite/gcc.target/s390/bswap-1.c +++++ b/gcc/testsuite/gcc.target/s390/bswap-1.c ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/testsuite/gcc.target/s390/global-array-element-pic2.c b/gcc/testsuite/gcc.target/s390/global-array-element-pic2.c ++index b9398a8042f..72b87d40b85 100644 ++--- a/gcc/testsuite/gcc.target/s390/global-array-element-pic2.c +++++ b/gcc/testsuite/gcc.target/s390/global-array-element-pic2.c ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/testsuite/gcc.target/s390/load-relative-check.c b/gcc/testsuite/gcc.target/s390/load-relative-check.c ++index 3d4671a6b3f..a55bc2442f1 100644 ++--- a/gcc/testsuite/gcc.target/s390/load-relative-check.c +++++ b/gcc/testsuite/gcc.target/s390/load-relative-check.c ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/testsuite/gcc.target/s390/morestack.c b/gcc/testsuite/gcc.target/s390/morestack.c ++index aa28b72aa6c..4cfa220e737 100644 ++--- a/gcc/testsuite/gcc.target/s390/morestack.c +++++ b/gcc/testsuite/gcc.target/s390/morestack.c ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/testsuite/gcc.target/s390/nobp-return-mem-z900.c b/gcc/testsuite/gcc.target/s390/nobp-return-mem-z900.c ++index 0b318115a8f..3d6aca1f95f 100644 ++--- a/gcc/testsuite/gcc.target/s390/nobp-return-mem-z900.c +++++ b/gcc/testsuite/gcc.target/s390/nobp-return-mem-z900.c ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/testsuite/gcc.target/s390/risbg-ll-1.c b/gcc/testsuite/gcc.target/s390/risbg-ll-1.c ++index 30350d04c45..1cac15820c0 100644 ++--- a/gcc/testsuite/gcc.target/s390/risbg-ll-1.c +++++ b/gcc/testsuite/gcc.target/s390/risbg-ll-1.c ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/testsuite/gcc.target/s390/risbg-ll-2.c b/gcc/testsuite/gcc.target/s390/risbg-ll-2.c ++index 754c17311dd..8bf1a0ff88b 100644 ++--- a/gcc/testsuite/gcc.target/s390/risbg-ll-2.c +++++ b/gcc/testsuite/gcc.target/s390/risbg-ll-2.c ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/testsuite/gcc.target/s390/risbg-ll-3.c b/gcc/testsuite/gcc.target/s390/risbg-ll-3.c ++index 2a2db543cd9..90d37f2c1ce 100644 ++--- a/gcc/testsuite/gcc.target/s390/risbg-ll-3.c +++++ b/gcc/testsuite/gcc.target/s390/risbg-ll-3.c ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/testsuite/gcc.target/s390/target-attribute/pr82012.c b/gcc/testsuite/gcc.target/s390/target-attribute/pr82012.c ++index 2e1f7ae57be..ad1bf76d4d2 100644 ++--- a/gcc/testsuite/gcc.target/s390/target-attribute/pr82012.c +++++ b/gcc/testsuite/gcc.target/s390/target-attribute/pr82012.c ++@@ -1 +1,2 @@ ++ +++ ++-- ++2.26.1 ++ ++=== 1999-rs6000-Fix-C-14-vs.-C-17-ABI-bug-on-powerpc64le-PR94.patch === ++From a39ed81b8a0b46320a7c6ece3f7ad4c3f8519609 Mon Sep 17 00:00:00 2001 ++From: Jakub Jelinek ++Date: Thu, 23 Apr 2020 09:59:57 +0200 ++Subject: [PATCH 1999/2034] rs6000: Fix C++14 vs. C++17 ABI bug on powerpc64le ++ [PR94707] ++ ++As mentioned in the PR and on IRC, the recently added struct-layout-1.exp ++new tests FAIL on powerpc64le-linux (among other targets). ++FAIL: tmpdir-g++.dg-struct-layout-1/t032 cp_compat_x_tst.o-cp_compat_y_tst.o execute ++FAIL: tmpdir-g++.dg-struct-layout-1/t058 cp_compat_x_tst.o-cp_compat_y_tst.o execute ++FAIL: tmpdir-g++.dg-struct-layout-1/t059 cp_compat_x_tst.o-cp_compat_y_tst.o execute ++in particular. The problem is that the presence or absence of the C++17 ++artificial empty base fields, which have non-zero TYPE_SIZE, but zero ++DECL_SIZE, change the ABI decisions, if it is present (-std=c++17), the type ++might not be considered homogeneous, while if it is absent (-std=c++14), it ++can be. ++ ++The following patch fixes that and emits a -Wpsabi inform; perhaps more ++often than it could, because the fact that rs6000_discover_homogeneous_aggregate ++returns true when it didn't in in GCC 7/8/9 with -std=c++17 doesn't still ++mean it will make a different ABI decision, but the warning triggered only ++on the test I've changed (the struct-layout-1.exp tests use -w -Wno-psabi ++already). ++ ++2020-04-23 Jakub Jelinek ++ ++ PR target/94707 ++ * config/rs6000/rs6000-call.c (rs6000_aggregate_candidate): Add ++ cxx17_empty_base_seen argument. Pass it to recursive calls. ++ Ignore cxx17_empty_base_field_p fields after setting ++ *cxx17_empty_base_seen to true. ++ (rs6000_discover_homogeneous_aggregate): Adjust ++ rs6000_aggregate_candidate caller. With -Wpsabi, diagnose homogeneous ++ aggregates with C++17 empty base fields. ++ ++ * g++.dg/tree-ssa/pr27830.C: Use -Wpsabi -w for -std=c++17 and higher. ++--- ++ gcc/ChangeLog | 13 ++++++++++ ++ gcc/config/rs6000/rs6000-call.c | 34 +++++++++++++++++++++---- ++ gcc/testsuite/ChangeLog | 3 +++ ++ gcc/testsuite/g++.dg/tree-ssa/pr27830.C | 2 ++ ++ 4 files changed, 47 insertions(+), 5 deletions(-) ++ ++diff --git a/gcc/ChangeLog b/gcc/ChangeLog ++index 06f7eda0033..93c3076eb86 100644 ++--- a/gcc/ChangeLog +++++ b/gcc/ChangeLog ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/config/rs6000/rs6000-call.c b/gcc/config/rs6000/rs6000-call.c ++index e08621ace27..a9ae7ab70ca 100644 ++--- a/gcc/config/rs6000/rs6000-call.c +++++ b/gcc/config/rs6000/rs6000-call.c ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog ++index 684e408c1a5..245c1512c76 100644 ++--- a/gcc/testsuite/ChangeLog +++++ b/gcc/testsuite/ChangeLog ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr27830.C b/gcc/testsuite/g++.dg/tree-ssa/pr27830.C ++index 01c7fc18783..551ebc428cd 100644 ++--- a/gcc/testsuite/g++.dg/tree-ssa/pr27830.C +++++ b/gcc/testsuite/g++.dg/tree-ssa/pr27830.C ++@@ -1 +1,2 @@ ++ +++ ++-- ++2.26.1 ++ ++=== 0001-Add-patch_area_size-and-patch_area_entry-to-crtl.patch === ++From 6607bdd99994c834f92fce924abdaea3405f62dc Mon Sep 17 00:00:00 2001 ++From: "H.J. Lu" ++Date: Fri, 1 May 2020 21:03:10 -0700 ++Subject: [PATCH] Add patch_area_size and patch_area_entry to crtl ++ ++Currently patchable area is at the wrong place. It is placed immediately ++after function label and before .cfi_startproc. A backend should be able ++to add a pseudo patchable area instruction durectly into RTL. This patch ++adds patch_area_size and patch_area_entry to crtl so that the patchable ++area info is available in RTL passes. ++ ++It also limits patch_area_size and patch_area_entry to 65535, which is ++a reasonable maximum size for patchable area. ++ ++gcc/ ++ ++ PR target/93492 ++ * cfgexpand.c (pass_expand::execute): Set crtl->patch_area_size ++ and crtl->patch_area_entry. ++ * emit-rtl.h (rtl_data): Add patch_area_size and patch_area_entry. ++ * opts.c (common_handle_option): Limit ++ function_entry_patch_area_size and function_entry_patch_area_start ++ to USHRT_MAX. Fix a typo in error message. ++ * varasm.c (assemble_start_function): Use crtl->patch_area_size ++ and crtl->patch_area_entry. ++ * doc/invoke.texi: Document the maximum value for ++ -fpatchable-function-entry. ++ ++gcc/c-family/ ++ ++ PR target/12345 ++ * c-attribs.c (handle_patchable_function_entry_attribute): Limit ++ value to USHRT_MAX (65535). ++ ++--- ++ gcc/ChangeLog | 14 ++++++++ ++ gcc/c-family/ChangeLog | 6 ++++ ++ gcc/c-family/c-attribs.c | 9 +++++ ++ gcc/cfgexpand.c | 33 +++++++++++++++++++ ++ gcc/doc/invoke.texi | 1 + ++ gcc/emit-rtl.h | 6 ++++ ++ gcc/opts.c | 4 ++- ++ gcc/testsuite/ChangeLog | 7 ++++ ++ .../patchable_function_entry-error-1.c | 9 +++++ ++ .../patchable_function_entry-error-2.c | 9 +++++ ++ .../patchable_function_entry-error-3.c | 17 ++++++++++ ++ gcc/varasm.c | 30 ++--------------- ++ 12 files changed, 116 insertions(+), 29 deletions(-) ++ create mode 100644 gcc/testsuite/c-c++-common/patchable_function_entry-error-1.c ++ create mode 100644 gcc/testsuite/c-c++-common/patchable_function_entry-error-2.c ++ create mode 100644 gcc/testsuite/c-c++-common/patchable_function_entry-error-3.c ++ ++diff --git a/gcc/ChangeLog b/gcc/ChangeLog ++index e85a8e8813e..fb776ba5a0e 100644 ++--- a/gcc/ChangeLog +++++ b/gcc/ChangeLog ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog ++index c429b49e68c..69ea1fdc4f3 100644 ++--- a/gcc/c-family/ChangeLog +++++ b/gcc/c-family/ChangeLog ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/c-family/c-attribs.c b/gcc/c-family/c-attribs.c ++index ac936d5bbbb..a101312c581 100644 ++--- a/gcc/c-family/c-attribs.c +++++ b/gcc/c-family/c-attribs.c ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/cfgexpand.c b/gcc/cfgexpand.c ++index a7ec77d5c85..86efa22bf60 100644 ++--- a/gcc/cfgexpand.c +++++ b/gcc/cfgexpand.c ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi ++index 527d362533a..767d1f07801 100644 ++--- a/gcc/doc/invoke.texi +++++ b/gcc/doc/invoke.texi ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/emit-rtl.h b/gcc/emit-rtl.h ++index a878efe3cf7..3d6565c8a30 100644 ++--- a/gcc/emit-rtl.h +++++ b/gcc/emit-rtl.h ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/opts.c b/gcc/opts.c ++index c212a1a57dc..3dccef39701 100644 ++--- a/gcc/opts.c +++++ b/gcc/opts.c ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog ++index 176aa117904..185f9ea725e 100644 ++--- a/gcc/testsuite/ChangeLog +++++ b/gcc/testsuite/ChangeLog ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/testsuite/c-c++-common/patchable_function_entry-error-1.c b/gcc/testsuite/c-c++-common/patchable_function_entry-error-1.c ++new file mode 100644 ++index 00000000000..f60bf46cfe3 ++--- /dev/null +++++ b/gcc/testsuite/c-c++-common/patchable_function_entry-error-1.c ++@@ -0,0 +1 @@ +++ ++diff --git a/gcc/testsuite/c-c++-common/patchable_function_entry-error-2.c b/gcc/testsuite/c-c++-common/patchable_function_entry-error-2.c ++new file mode 100644 ++index 00000000000..90f88c78be7 ++--- /dev/null +++++ b/gcc/testsuite/c-c++-common/patchable_function_entry-error-2.c ++@@ -0,0 +1 @@ +++ ++diff --git a/gcc/testsuite/c-c++-common/patchable_function_entry-error-3.c b/gcc/testsuite/c-c++-common/patchable_function_entry-error-3.c ++new file mode 100644 ++index 00000000000..4490e5c15ca ++--- /dev/null +++++ b/gcc/testsuite/c-c++-common/patchable_function_entry-error-3.c ++@@ -0,0 +1 @@ +++ ++diff --git a/gcc/varasm.c b/gcc/varasm.c ++index 271a67abf56..f062e48071f 100644 ++--- a/gcc/varasm.c +++++ b/gcc/varasm.c ++@@ -1 +1,2 @@ ++ +++ ++-- ++2.26.2 ++ ++=== 0002-Bump-date.patch === ++From a139bafeec76732d964b99e8be3d61b3cab0359d Mon Sep 17 00:00:00 2001 ++From: Martin Liska ++Date: Tue, 12 May 2020 09:27:51 +0200 ++Subject: [PATCH 2/2] Bump date. ++ ++--- ++ gcc/DATESTAMP | 2 +- ++ 1 file changed, 1 insertion(+), 1 deletion(-) ++ ++diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP ++index c3d42a6f89a..b03d4a0feab 100644 ++--- a/gcc/DATESTAMP +++++ b/gcc/DATESTAMP ++@@ -1 +1,2 @@ ++ +++ ++-- ++2.26.2 ++ ++=== 0001-Just-test-it.patch === ++From 6b10b909c0b49ac7ace2cd53021b3ff7ffb2d3f4 Mon Sep 17 00:00:00 2001 ++From: Martin Liska ++Date: Tue, 12 May 2020 09:25:54 +0200 ++Subject: [PATCH 1/2] Just test it. ++ ++gcc/ChangeLog: ++ ++2020-05-12 Martin Liska ++ ++ PR ipa/12345 ++ * tree-vrp.c: Done. ++ * tree.c: Done. ++--- ++ gcc/tree-vrp.c | 2 ++ ++ gcc/tree.c | 3 +++ ++ 2 files changed, 5 insertions(+) ++ ++diff --git a/gcc/tree-vrp.c b/gcc/tree-vrp.c ++index a8861670790..32722d2c714 100644 ++--- a/gcc/tree-vrp.c +++++ b/gcc/tree-vrp.c ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/tree.c b/gcc/tree.c ++index 0ddf002e9eb..fa7c6b28a4e 100644 ++--- a/gcc/tree.c +++++ b/gcc/tree.c ++@@ -1 +1,2 @@ ++ +++ ++-- ++2.26.2 ++ ++=== trailing-whitespaces.patch === ++From eb7c7c524556df5364f03adc20f6a9db20858484 Mon Sep 17 00:00:00 2001 ++From: Jakub Jelinek ++Date: Mon, 13 Jan 2020 14:14:57 +0100 ++Subject: [PATCH 0004/2034] tree-opt: Fix bootstrap failure in ++ tree-ssa-forwprop.c some more PR90838 ++ ++2020-01-13 Jakub Jelinek ++ ++ PR tree-optimization/90838 ++ * tree-ssa-forwprop.c (simplify_count_trailing_zeroes): Use ++ SCALAR_INT_TYPE_MODE directly in CTZ_DEFINED_VALUE_AT_ZERO macro ++ argument rather than to initialize temporary for targets that ++ don't use the mode argument at all. Initialize ctzval to avoid ++ warning at -O0. ++--- ++ gcc/ChangeLog | 9 +++++++++ ++ gcc/tree-ssa-forwprop.c | 6 +++--- ++ 2 files changed, 12 insertions(+), 3 deletions(-) ++ ++diff --git a/gcc/ChangeLog b/gcc/ChangeLog ++index a195863212e..f7df07343d1 100644 ++--- a/gcc/ChangeLog +++++ b/gcc/ChangeLog ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/tree-ssa-forwprop.c b/gcc/tree-ssa-forwprop.c ++index aac31d02b6c..56c470f6ecf 100644 ++--- a/gcc/tree-ssa-forwprop.c +++++ b/gcc/tree-ssa-forwprop.c ++@@ -1 +1,2 @@ ++ +++ ++-- ++2.26.1 ++ ++=== pr-check1.patch === ++From 5194b51ed9714808d88827531e91474895b6c706 Mon Sep 17 00:00:00 2001 ++From: Jason Merrill ++Date: Thu, 16 Jan 2020 16:55:39 -0500 ++Subject: [PATCH 0121/2034] PR c++/93286 - ICE with __is_constructible and ++ variadic template. ++ ++Here we had been recursing in tsubst_copy_and_build if type2 was a TREE_LIST ++because that function knew how to deal with pack expansions, and tsubst ++didn't. But tsubst_copy_and_build expects to be dealing with expressions, ++so we crash when trying to convert_from_reference a type. ++ ++gcc/cp/ChangeLog: ++ PR ipa/12345 ++ * pt.c (tsubst) [TREE_LIST]: Handle pack expansion. ++ (tsubst_copy_and_build) [TRAIT_EXPR]: Always use tsubst for type2. ++ ++gcc/testsuite/ChangeLog: ++ * g++.dg/ext/is_constructible4.C: New file. ++--- ++ gcc/cp/ChangeLog | 4 ++ ++ gcc/cp/pt.c | 74 ++++++++++++++++++-- ++ gcc/testsuite/g++.dg/ext/is_constructible4.C | 18 +++++ ++ 3 files changed, 89 insertions(+), 7 deletions(-) ++ create mode 100644 gcc/testsuite/g++.dg/ext/is_constructible4.C ++ ++diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog ++index 3ca5d7a11b4..c37e461bcc5 100644 ++--- a/gcc/cp/ChangeLog +++++ b/gcc/cp/ChangeLog ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c ++index 9bb8cc13e5f..872f8ff8f52 100644 ++--- a/gcc/cp/pt.c +++++ b/gcc/cp/pt.c ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/testsuite/g++.dg/ext/is_constructible4.C b/gcc/testsuite/g++.dg/ext/is_constructible4.C ++new file mode 100644 ++index 00000000000..6dfe3c01661 ++--- /dev/null +++++ b/gcc/testsuite/g++.dg/ext/is_constructible4.C ++@@ -0,0 +1 @@ +++ ++-- ++2.26.1 ++ ++=== 0020-IPA-Avoid-segfault-in-devirtualization_time_bonus-PR.patch === ++From 8472660b98a31b32b7d030c2cdc4d41d326364d5 Mon Sep 17 00:00:00 2001 ++From: Martin Jambor ++Date: Mon, 13 Jan 2020 19:13:46 +0100 ++Subject: [PATCH 0020/2034] IPA: Avoid segfault in devirtualization_time_bonus ++ (PR 93223) ++ ++2020-01-13 Martin Jambor ++ ++ PR ipa/93223 ++ * ipa-cp.c (devirtualization_time_bonus): Check whether isummary is ++ NULL. ++ ++ testsuite/ ++ * g++.dg/ipa/pr93223.C: New test. ++--- ++ gcc/ipa-cp.c | 2 +- ++ gcc/testsuite/g++.dg/ipa/pr93223.C | 62 ++++++++++++++++++++++++++++++ ++ 2 files changed, 63 insertions(+), 1 deletion(-) ++ create mode 100644 gcc/testsuite/g++.dg/ipa/pr93223.C ++ ++diff --git a/gcc/ipa-cp.c b/gcc/ipa-cp.c ++index 612f3d0a89b..17da1d8e8a7 100644 ++--- a/gcc/ipa-cp.c +++++ b/gcc/ipa-cp.c ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/testsuite/g++.dg/ipa/pr93223.C b/gcc/testsuite/g++.dg/ipa/pr93223.C ++new file mode 100644 ++index 00000000000..87f98b5e244 ++--- /dev/null +++++ b/gcc/testsuite/g++.dg/ipa/pr93223.C ++@@ -0,0 +1 @@ +++ ++-- ++2.26.1 ++ ++=== 0043-Compare-TREE_ADDRESSABLE-and-TYPE_MODE-when-ODR-chec.patch === ++From 288c5324bf6e418dd94d718d1619464a4f68ff8e Mon Sep 17 00:00:00 2001 ++From: Jan Hubicka ++Date: Tue, 14 Jan 2020 21:45:03 +0100 ++Subject: [PATCH 0043/2034] Compare TREE_ADDRESSABLE and TYPE_MODE when ODR ++ checking types. ++ ++ PR lto/91576 ++ * ipa-devirt.c (odr_types_equivalent_p): Compare TREE_ADDRESSABLE and ++ TYPE_MODE. ++ ++ * testsuite/g++.dg/lto/odr-8_0.C: New testcase. ++ * testsuite/g++.dg/lto/odr-8_1.C: New testcase. ++--- ++ gcc/ChangeLog | 6 ++++++ ++ gcc/ipa-devirt.c | 21 +++++++++++++++++++++ ++ gcc/testsuite/ChangeLog | 6 ++++++ ++ gcc/testsuite/g++.dg/lto/odr-8_0.C | 7 +++++++ ++ gcc/testsuite/g++.dg/lto/odr-8_1.C | 12 ++++++++++++ ++ 5 files changed, 52 insertions(+) ++ create mode 100644 gcc/testsuite/g++.dg/lto/odr-8_0.C ++ create mode 100644 gcc/testsuite/g++.dg/lto/odr-8_1.C ++ ++diff --git a/gcc/ChangeLog b/gcc/ChangeLog ++index 38165123654..33ca91a6467 100644 ++--- a/gcc/ChangeLog +++++ b/gcc/ChangeLog ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/ipa-devirt.c b/gcc/ipa-devirt.c ++index f0031957375..b609a77701d 100644 ++--- a/gcc/ipa-devirt.c +++++ b/gcc/ipa-devirt.c ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog ++index 8e3b9105188..dc42601794b 100644 ++--- a/gcc/testsuite/ChangeLog +++++ b/gcc/testsuite/ChangeLog ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/testsuite/g++.dg/lto/odr-8_0.C b/gcc/testsuite/g++.dg/lto/odr-8_0.C ++new file mode 100644 ++index 00000000000..59f51399fac ++--- /dev/null +++++ b/gcc/testsuite/g++.dg/lto/odr-8_0.C ++@@ -0,0 +1 @@ +++ ++diff --git a/gcc/testsuite/g++.dg/lto/odr-8_1.C b/gcc/testsuite/g++.dg/lto/odr-8_1.C ++new file mode 100644 ++index 00000000000..742df8cc906 ++--- /dev/null +++++ b/gcc/testsuite/g++.dg/lto/odr-8_1.C ++@@ -0,0 +1 @@ +++ ++-- ++2.26.1 ++ ++=== 0096-GCC-PATCH-AArch64-Add-ACLE-intrinsics-for-dot-produc.patch === ++From 8c197c851e7528baba7cb837f34c05ba2242f705 Mon Sep 17 00:00:00 2001 ++From: Stam Markianos-Wright ++Date: Thu, 16 Jan 2020 14:20:48 +0000 ++Subject: [PATCH 0096/2034] [GCC][PATCH][AArch64]Add ACLE intrinsics for dot ++ product (usdot - vector, dot - by element) for AArch64 AdvSIMD ARMv8.6 ++ Extension ++ ++gcc/ChangeLog: ++ ++2020-01-16 Stam Markianos-Wright ++ ++ * config/aarch64/aarch64-builtins.c: (enum aarch64_type_qualifiers): ++ New qualifier_lane_quadtup_index, TYPES_TERNOP_SSUS, ++ TYPES_QUADOPSSUS_LANE_QUADTUP, TYPES_QUADOPSSSU_LANE_QUADTUP. ++ (aarch64_simd_expand_args): Add case SIMD_ARG_LANE_QUADTUP_INDEX. ++ (aarch64_simd_expand_builtin): Add qualifier_lane_quadtup_index. ++ * config/aarch64/aarch64-simd-builtins.def (usdot, usdot_lane, ++ usdot_laneq, sudot_lane,sudot_laneq): New. ++ * config/aarch64/aarch64-simd.md (aarch64_usdot): New. ++ (aarch64_dot_lane): New. ++ * config/aarch64/arm_neon.h (vusdot_s32): New. ++ (vusdotq_s32): New. ++ (vusdot_lane_s32): New. ++ (vsudot_lane_s32): New. ++ * config/aarch64/iterators.md (DOTPROD_I8MM): New iterator. ++ (UNSPEC_USDOT, UNSPEC_SUDOT): New unspecs. ++ ++gcc/testsuite/ChangeLog: ++ ++2020-01-16 Stam Markianos-Wright ++ ++ * gcc.target/aarch64/advsimd-intrinsics/vdot-compile-3-1.c: New test. ++ * gcc.target/aarch64/advsimd-intrinsics/vdot-compile-3-2.c: New test. ++ * gcc.target/aarch64/advsimd-intrinsics/vdot-compile-3-3.c: New test. ++ * gcc.target/aarch64/advsimd-intrinsics/vdot-compile-3-4.c: New test. ++--- ++ gcc/ChangeLog | 18 +++ ++ gcc/config/aarch64/aarch64-builtins.c | 45 +++++- ++ gcc/config/aarch64/aarch64-simd-builtins.def | 5 + ++ gcc/config/aarch64/aarch64-simd.md | 34 +++++ ++ gcc/config/aarch64/arm_neon.h | 83 +++++++++++ ++ gcc/config/aarch64/iterators.md | 7 + ++ gcc/testsuite/ChangeLog | 7 + ++ .../aarch64/advsimd-intrinsics/vdot-3-1.c | 136 +++++++++++++++++ ++ .../aarch64/advsimd-intrinsics/vdot-3-2.c | 137 ++++++++++++++++++ ++ .../aarch64/advsimd-intrinsics/vdot-3-3.c | 31 ++++ ++ .../aarch64/advsimd-intrinsics/vdot-3-4.c | 31 ++++ ++ 11 files changed, 531 insertions(+), 3 deletions(-) ++ create mode 100755 gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vdot-3-1.c ++ create mode 100755 gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vdot-3-2.c ++ create mode 100755 gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vdot-3-3.c ++ create mode 100755 gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vdot-3-4.c ++ ++diff --git a/gcc/ChangeLog b/gcc/ChangeLog ++index 9a949980699..49dcecb6777 100644 ++--- a/gcc/ChangeLog +++++ b/gcc/ChangeLog ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/config/aarch64/aarch64-builtins.c b/gcc/config/aarch64/aarch64-builtins.c ++index f0e0461b7f0..f50c4857e1c 100644 ++--- a/gcc/config/aarch64/aarch64-builtins.c +++++ b/gcc/config/aarch64/aarch64-builtins.c ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/config/aarch64/aarch64-simd-builtins.def b/gcc/config/aarch64/aarch64-simd-builtins.def ++index 57fc5933b43..4744dd1f6b2 100644 ++--- a/gcc/config/aarch64/aarch64-simd-builtins.def +++++ b/gcc/config/aarch64/aarch64-simd-builtins.def ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/config/aarch64/aarch64-simd.md b/gcc/config/aarch64/aarch64-simd.md ++index 2989096b170..9e56e8caf35 100644 ++--- a/gcc/config/aarch64/aarch64-simd.md +++++ b/gcc/config/aarch64/aarch64-simd.md ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/config/aarch64/arm_neon.h b/gcc/config/aarch64/arm_neon.h ++index eaba156e26c..c96214003dd 100644 ++--- a/gcc/config/aarch64/arm_neon.h +++++ b/gcc/config/aarch64/arm_neon.h ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/config/aarch64/iterators.md b/gcc/config/aarch64/iterators.md ++index b9843b83c5f..83720d9802a 100644 ++--- a/gcc/config/aarch64/iterators.md +++++ b/gcc/config/aarch64/iterators.md ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog ++index 0d8aa6063a7..8b01aa06a40 100644 ++--- a/gcc/testsuite/ChangeLog +++++ b/gcc/testsuite/ChangeLog ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vdot-3-1.c b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vdot-3-1.c ++new file mode 100755 ++index 00000000000..ac4f821e771 ++--- /dev/null +++++ b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vdot-3-1.c ++@@ -0,0 +1 @@ +++ ++diff --git a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vdot-3-2.c b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vdot-3-2.c ++new file mode 100755 ++index 00000000000..96bca2356e4 ++--- /dev/null +++++ b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vdot-3-2.c ++@@ -0,0 +1 @@ +++ ++diff --git a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vdot-3-3.c b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vdot-3-3.c ++new file mode 100755 ++index 00000000000..18ecabef8dc ++--- /dev/null +++++ b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vdot-3-3.c ++@@ -0,0 +1 @@ +++ ++diff --git a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vdot-3-4.c b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vdot-3-4.c ++new file mode 100755 ++index 00000000000..66c87d48694 ++--- /dev/null +++++ b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vdot-3-4.c ++@@ -0,0 +1 @@ +++ ++-- ++2.26.1 ++ ++=== 0001-c-Alias.patch === ++From 3f1a149fc35cdba988464562e2fb824b10652d6b Mon Sep 17 00:00:00 2001 ++From: Nathan Sidwell ++Date: Tue, 19 May 2020 13:29:19 -0700 ++Subject: [PATCH] c++: Alias template instantiation template info ++ ++I discovered that the alias instantiation machinery would setup ++template_info, and then sometime later overwrite that with equivalent ++info. This broke modules, because the template info, once set, is ++logically immutable. Let's just not do that. ++ ++ * pt.c (lookup_template_class_1): Do not reinit template_info of an ++ alias here. ++ ++(cherry picked from commit 74744bb1f2847b5b9ce3e97e0fec9c23bb0e499f) ++--- ++ gcc/cp/pt.c | 17 +++++++++++++++-- ++ 1 file changed, 15 insertions(+), 2 deletions(-) ++ ++diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c ++index b8f03d18541..7230ac724ba 100644 ++--- a/gcc/cp/pt.c +++++ b/gcc/cp/pt.c ++@@ -1 +1,2 @@ ++ +++ ++-- ++2.26.2 ++=== 0001-RISC-V-Make-unique.patch === ++From adce62f53d8ad00e8110a6a2de7962d7a850de16 Mon Sep 17 00:00:00 2001 ++From: Keith Packard ++Date: Wed, 29 Apr 2020 09:49:56 -0700 ++Subject: [PATCH] RISC-V: Make unique SECCAT_SRODATA names start with .srodata ++ (not .sdata2) ++ ++default_unique_section uses ".sdata2" as a prefix for SECCAT_SRODATA ++unique sections, but RISC-V uses ".srodata" instead. Override the ++TARGET_ASM_UNIQUE_SECTION function to catch this case, allowing the ++default to be used for all other sections. ++ ++gcc/ ++ * config/riscv/riscv.c (riscv_unique_section): New. ++ (TARGET_ASM_UNIQUE_SECTION): New. ++ ++Signed-off-by: Keith Packard ++Reviewed-by: Keith Packard ++Reviewed-on: Keith Packard ++Co-Authored-by: Keith Packard ++Acked-By: Keith Packard ++Tested-by: Keith Packard ++Reported-by: Keith Packard ++Suggested-by: Keith Packard ++--- ++ gcc/ChangeLog | 5 +++++ ++ gcc/config/riscv/riscv.c | 40 ++++++++++++++++++++++++++++++++++++++++ ++ 2 files changed, 45 insertions(+) ++ ++diff --git a/gcc/config/riscv/riscv.c b/gcc/config/riscv/riscv.c ++index e4c08d780db..1ad9799fce4 100644 ++--- a/gcc/config/riscv/riscv.c +++++ b/gcc/config/riscv/riscv.c ++@@ -1 +1,2 @@ ++ +++ ++ ++-- ++2.26.2 ++ ++=== 0001-Fortran-ProcPtr-function.patch === ++From eb069ae8819c3a84d7f78becc5501e21ee3a9554 Mon Sep 17 00:00:00 2001 ++From: Mark Eggleston ++Date: Thu, 7 May 2020 08:02:02 +0100 ++Subject: [PATCH] Fortran : ProcPtr function results: 'ppr@' in error message ++ PR39695 ++ ++The value 'ppr@' is set in the name of result symbol, the actual ++name of the symbol is in the procedure name symbol pointed ++to by the result symbol's namespace (ns). When reporting errors for ++symbols that have the proc_pointer attribute check whether the ++result attribute is set and set the name accordingly. ++ ++2020-05-20 Mark Eggleston ++ ++gcc/fortran/ ++ ++ PR fortran/39695 ++ * resolve.c (resolve_fl_procedure): Set name depending on ++ whether the result attribute is set. For PROCEDURE/RESULT ++ conflict use the name in sym->ns->proc_name->name. ++ * symbol.c (gfc_add_type): Add check for function and result ++ attributes use sym->ns->proc_name->name if both are set. ++ Where the symbol cannot have a type use the name in ++ sym->ns->proc_name->name. ++ ++2020-05-20 Mark Eggleston ++ ++gcc/testsuite/ ++ ++ PR fortran/39695 ++ * gfortran.dg/pr39695_1.f90: New test. ++ * gfortran.dg/pr39695_2.f90: New test. ++ * gfortran.dg/pr39695_3.f90: New test. ++ * gfortran.dg/pr39695_4.f90: New test. ++--- ++ gcc/fortran/ChangeLog | 11 +++++++++++ ++ gcc/fortran/resolve.c | 6 ++++-- ++ gcc/fortran/symbol.c | 7 +++++-- ++ gcc/testsuite/ChangeLog | 8 ++++++++ ++ gcc/testsuite/gfortran.dg/pr39695_1.f90 | 8 ++++++++ ++ gcc/testsuite/gfortran.dg/pr39695_2.f90 | 12 ++++++++++++ ++ gcc/testsuite/gfortran.dg/pr39695_3.f90 | 11 +++++++++++ ++ gcc/testsuite/gfortran.dg/pr39695_4.f90 | 14 ++++++++++++++ ++ 8 files changed, 73 insertions(+), 4 deletions(-) ++ create mode 100644 gcc/testsuite/gfortran.dg/pr39695_1.f90 ++ create mode 100644 gcc/testsuite/gfortran.dg/pr39695_2.f90 ++ create mode 100644 gcc/testsuite/gfortran.dg/pr39695_3.f90 ++ create mode 100644 gcc/testsuite/gfortran.dg/pr39695_4.f90 ++ ++diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c ++index f6e10ea379c..aaee5eb6b9b 100644 ++--- a/gcc/fortran/resolve.c +++++ b/gcc/fortran/resolve.c ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/fortran/symbol.c b/gcc/fortran/symbol.c ++index 59f602d80d5..b96706138c9 100644 ++--- a/gcc/fortran/symbol.c +++++ b/gcc/fortran/symbol.c ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/testsuite/gfortran.dg/pr39695_1.f90 b/gcc/testsuite/gfortran.dg/pr39695_1.f90 ++new file mode 100644 ++index 00000000000..4c4b3045f69 ++--- /dev/null +++++ b/gcc/testsuite/gfortran.dg/pr39695_1.f90 ++@@ -0,0 +1 @@ +++ ++diff --git a/gcc/testsuite/gfortran.dg/pr39695_2.f90 b/gcc/testsuite/gfortran.dg/pr39695_2.f90 ++new file mode 100644 ++index 00000000000..8534724959a ++--- /dev/null +++++ b/gcc/testsuite/gfortran.dg/pr39695_2.f90 ++@@ -0,0 +1 @@ +++ ++diff --git a/gcc/testsuite/gfortran.dg/pr39695_3.f90 b/gcc/testsuite/gfortran.dg/pr39695_3.f90 ++new file mode 100644 ++index 00000000000..661e2540bb3 ++--- /dev/null +++++ b/gcc/testsuite/gfortran.dg/pr39695_3.f90 ++@@ -0,0 +1 @@ +++ ++diff --git a/gcc/testsuite/gfortran.dg/pr39695_4.f90 b/gcc/testsuite/gfortran.dg/pr39695_4.f90 ++new file mode 100644 ++index 00000000000..ecb0a43929f ++--- /dev/null +++++ b/gcc/testsuite/gfortran.dg/pr39695_4.f90 ++@@ -0,0 +1 @@ +++ ++-- ++2.26.2 ++ ++=== 0001-c-C-20-DR-2237.patch === ++From 4b38d56dbac6742b038551a36ec80200313123a1 Mon Sep 17 00:00:00 2001 ++From: Marek Polacek ++Date: Sat, 4 Apr 2020 18:09:53 -0400 ++Subject: [PATCH] c++: C++20 DR 2237, disallow simple-template-id in cdtor. ++ ++This patch implements DR 2237 which says that a simple-template-id is ++no longer valid as the declarator-id of a constructor or destructor; ++see [diff.cpp17.class]#2. It is not explicitly stated but out-of-line ++destructors with a simple-template-id are also meant to be ill-formed ++now. (Out-of-line constructors like that are invalid since DR1435 I ++think.) This change only applies to C++20; it is not a DR against C++17. ++ ++I'm not crazy about the diagnostic in constructors but ISTM that ++cp_parser_constructor_declarator_p shouldn't print errors. ++ ++ DR 2237 ++ * parser.c (cp_parser_unqualified_id): Reject simple-template-id as ++ the declarator-id of a destructor. ++--- ++diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c ++index a6a5d975af3..a8082d39aca 100644 ++--- a/gcc/cp/parser.c +++++ b/gcc/cp/parser.c ++@@ -1 +1,2 @@ ++ +++ ++ ++=== 0001-go-in-ignored-location.patch === ++From 81994eab700da7fea6644541c163aa0f0f3b8cf1 Mon Sep 17 00:00:00 2001 ++From: =?UTF-8?q?Cl=C3=A9ment=20Chigot?= ++Date: Tue, 19 May 2020 16:03:54 +0200 ++Subject: libgo: update x/sys/cpu after gccgo support added ++ ++Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/234597 ++--- ++ gcc/go/gofrontend/MERGE | 2 +- ++ .../sys/cpu/{cpu_aix_ppc64.go => cpu_aix.go} | 2 +- ++ .../golang.org/x/sys/cpu/syscall_aix_gccgo.go | 27 +++++++++++++++++++ ++ 3 files changed, 29 insertions(+), 2 deletions(-) ++ rename libgo/go/golang.org/x/sys/cpu/{cpu_aix_ppc64.go => cpu_aix.go} (96%) ++ create mode 100644 libgo/go/golang.org/x/sys/cpu/syscall_aix_gccgo.go ++ ++diff --git a/gcc/go/gofrontend/MERGE b/gcc/go/gofrontend/MERGE ++index bc9c1f07eda..284374820b0 100644 ++--- a/gcc/go/gofrontend/MERGE +++++ b/gcc/go/gofrontend/MERGE ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/libgo/go/golang.org/x/sys/cpu/cpu_aix_ppc64.go b/libgo/go/golang.org/x/sys/cpu/cpu_aix.go ++similarity index 96% ++rename from libgo/go/golang.org/x/sys/cpu/cpu_aix_ppc64.go ++rename to libgo/go/golang.org/x/sys/cpu/cpu_aix.go ++index b0ede112d4e..02d03129e50 100644 ++--- a/libgo/go/golang.org/x/sys/cpu/cpu_aix_ppc64.go +++++ b/libgo/go/golang.org/x/sys/cpu/cpu_aix.go ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/libgo/go/golang.org/x/sys/cpu/syscall_aix_gccgo.go b/libgo/go/golang.org/x/sys/cpu/syscall_aix_gccgo.go ++new file mode 100644 ++index 00000000000..2609cc49ae7 ++--- /dev/null +++++ b/libgo/go/golang.org/x/sys/cpu/syscall_aix_gccgo.go ++@@ -0,0 +1 @@ +++ ++ ++-- ++2.27.0.rc0.183.gde8f92d652-goog ++=== 0001-Update-merge.sh-to-reflect.patch === ++From b3d566f570f4416299240b51654b70c74f6cba6a Mon Sep 17 00:00:00 2001 ++From: Martin Liska ++Date: Mon, 25 May 2020 20:55:29 +0200 ++Subject: [PATCH] Update merge.sh to reflect usage of git. ++ ++After switching to GIT, we should use it in libsanitizer ++merge script. I'll do merge from master as soon as ++PR95311 gets fixed. ++ ++I'm going to install the patch. ++ ++libsanitizer/ChangeLog: ++ ++ * LOCAL_PATCHES: Use git hash instead of SVN id. ++ * merge.sh: Use git instead of VCS. Update paths ++ relative to upstream git repository. ++--- ++ libsanitizer/LOCAL_PATCHES | 2 +- ++ libsanitizer/merge.sh | 10 ++++------ ++ 2 files changed, 5 insertions(+), 7 deletions(-) ++ ++diff --git a/libsanitizer/LOCAL_PATCHES b/libsanitizer/LOCAL_PATCHES ++index 292b7a6e489..7732de3d436 100644 ++--- a/libsanitizer/LOCAL_PATCHES +++++ b/libsanitizer/LOCAL_PATCHES ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/libsanitizer/merge.sh b/libsanitizer/merge.sh ++index dfa7bf3d196..3f4f1629a22 100755 ++--- a/libsanitizer/merge.sh +++++ b/libsanitizer/merge.sh ++@@ -1 +1,2 @@ ++ +++ ++ ++-- ++2.26.2 ++=== 0001-Ada-Reuse-Is_Package_Or_Generic_Package-where-possib.patch === ++From 557b268fffffdeb0980a17411f458eee333f55c6 Mon Sep 17 00:00:00 2001 ++From: Piotr Trojanek ++Date: Thu, 12 Dec 2019 11:45:24 +0100 ++Subject: [PATCH] [Ada] Reuse Is_Package_Or_Generic_Package where possible ++ ++2020-05-26 Piotr Trojanek ++ ++gcc/ada/ ++ ++ * contracts.adb, einfo.adb, exp_ch9.adb, sem_ch12.adb, ++ sem_ch4.adb, sem_ch7.adb, sem_ch8.adb, sem_elab.adb, ++ sem_type.adb, sem_util.adb: Reuse Is_Package_Or_Generic_Package ++ where possible (similarly, reuse Is_Concurrent_Type if it was ++ possible in the same expressions). ++--- ++ gcc/ada/contracts.adb | 2 +- ++ gcc/ada/einfo.adb | 22 +++++++++++----------- ++ gcc/ada/exp_ch9.adb | 2 +- ++ gcc/ada/sem_ch12.adb | 2 +- ++ gcc/ada/sem_ch4.adb | 2 +- ++ gcc/ada/sem_ch7.adb | 6 +++--- ++ gcc/ada/sem_ch8.adb | 6 +++--- ++ gcc/ada/sem_elab.adb | 2 +- ++ gcc/ada/sem_type.adb | 2 +- ++ gcc/ada/sem_util.adb | 6 +++--- ++ 10 files changed, 26 insertions(+), 26 deletions(-) ++ ++diff --git a/gcc/ada/contracts.adb b/gcc/ada/contracts.adb ++index 981bb91..d58f136 100644 ++--- a/gcc/ada/contracts.adb +++++ b/gcc/ada/contracts.adb ++@@ -0,0 +1 @@ +++ ++diff --git a/gcc/ada/einfo.adb b/gcc/ada/einfo.adb ++index 98b508f..1df8ed0 100644 ++--- a/gcc/ada/einfo.adb +++++ b/gcc/ada/einfo.adb ++@@ -0,0 +1 @@ +++ ++diff --git a/gcc/ada/exp_ch9.adb b/gcc/ada/exp_ch9.adb ++index 64ac353..392a221 100644 ++--- a/gcc/ada/exp_ch9.adb +++++ b/gcc/ada/exp_ch9.adb ++@@ -0,0 +1 @@ +++ ++diff --git a/gcc/ada/sem_ch12.adb b/gcc/ada/sem_ch12.adb ++index dc3a3c2..209e060 100644 ++--- a/gcc/ada/sem_ch12.adb +++++ b/gcc/ada/sem_ch12.adb ++@@ -0,0 +1 @@ +++ ++diff --git a/gcc/ada/sem_ch4.adb b/gcc/ada/sem_ch4.adb ++index 5910112..702f265 100644 ++--- a/gcc/ada/sem_ch4.adb +++++ b/gcc/ada/sem_ch4.adb ++@@ -0,0 +1 @@ +++ ++diff --git a/gcc/ada/sem_ch7.adb b/gcc/ada/sem_ch7.adb ++index 6d9a1db..f217dfd 100644 ++--- a/gcc/ada/sem_ch7.adb +++++ b/gcc/ada/sem_ch7.adb ++@@ -0,0 +1 @@ +++ ++diff --git a/gcc/ada/sem_ch8.adb b/gcc/ada/sem_ch8.adb ++index f083f7c..7f50b40 100644 ++--- a/gcc/ada/sem_ch8.adb +++++ b/gcc/ada/sem_ch8.adb ++@@ -0,0 +1 @@ +++ ++diff --git a/gcc/ada/sem_elab.adb b/gcc/ada/sem_elab.adb ++index f3cac46..dbf3fac 100644 ++--- a/gcc/ada/sem_elab.adb +++++ b/gcc/ada/sem_elab.adb ++@@ -0,0 +1 @@ +++ ++diff --git a/gcc/ada/sem_type.adb b/gcc/ada/sem_type.adb ++index e5d01dd..1868568 100644 ++--- a/gcc/ada/sem_type.adb +++++ b/gcc/ada/sem_type.adb ++@@ -0,0 +1 @@ +++ ++diff --git a/gcc/ada/sem_util.adb b/gcc/ada/sem_util.adb ++index b980b4c..c1b1d9e 100644 ++--- a/gcc/ada/sem_util.adb +++++ b/gcc/ada/sem_util.adb ++@@ -0,0 +1 @@ +++ ++-- ++2.1.4 ++ ++=== 0001-Ada-Add-support-for-XDR-streaming-in-the-default-run.patch === ++From ed248d9bc3b72b6888a1b9cd84a8ef26809249f0 Mon Sep 17 00:00:00 2001 ++From: Arnaud Charlet ++Date: Thu, 23 Apr 2020 05:46:29 -0400 ++Subject: [PATCH] [Ada] Add support for XDR streaming in the default runtime ++ ++--!# FROM: /homes/derodat/tron/gnat2fsf/gnat ++--!# COMMIT: 5ad4cabb9f70114eb61c025e91406d4fba253f95 ++--!# Change-Id: I21f92cad27933747495cdfa544a048f62f944cbd ++--!# TN: T423-014 ++ ++Currently we provide a separate implementation of Stream_Attributes via ++s-stratt__xdr.adb which needs to be recompiled manually. ++ ++This change introduces instead a new binder switch to choose at bind ++time which stream implementation to use and replaces s-stratt__xdr.adb ++by a new unit System.Stream_Attributes.XDR. ++ ++2020-05-04 Arnaud Charlet ++ ++gcc/ada/ ++ ++ * Makefile.rtl: Add s-statxd.o. ++ * bindgen.adb (Gen_Adainit): Add support for XDR_Stream. ++ * bindusg.adb (Display): Add mention of -xdr. ++ * gnatbind.adb: Process -xdr switch. ++ * init.c (__gl_xdr_stream): New. ++ * opt.ads (XDR_Stream): New. ++ * libgnat/s-stratt__xdr.adb: Rename to... ++ * libgnat/s-statxd.adb: this and adjust. ++ * libgnat/s-statxd.ads: New. ++ * libgnat/s-stratt.ads, libgnat/s-stratt.adb: Choose between ++ default and XDR implementation at runtime. ++ * libgnat/s-ststop.ads: Update comments. ++ * doc/gnat_rm/implementation_advice.rst: Update doc on XDR ++ streaming. ++ * gnat_rm.texi: Regenerate. ++--- ++ gcc/ada/Makefile.rtl | 1 + ++ gcc/ada/bindgen.adb | 29 +- ++ gcc/ada/bindusg.adb | 5 + ++ gcc/ada/doc/gnat_rm/implementation_advice.rst | 35 +-- ++ gcc/ada/gnat_rm.texi | 36 +-- ++ gcc/ada/gnatbind.adb | 5 + ++ gcc/ada/init.c | 1 + ++ .../{s-stratt__xdr.adb => s-statxd.adb} | 63 ++-- ++ gcc/ada/libgnat/s-statxd.ads | 117 +++++++ ++ gcc/ada/libgnat/s-stratt.adb | 286 +++++++++++++++--- ++ gcc/ada/libgnat/s-stratt.ads | 7 +- ++ gcc/ada/libgnat/s-ststop.ads | 4 +- ++ gcc/ada/opt.ads | 6 +- ++ 13 files changed, 428 insertions(+), 167 deletions(-) ++ rename gcc/ada/libgnat/{s-stratt__xdr.adb => s-statxd.adb} (96%) ++ create mode 100644 gcc/ada/libgnat/s-statxd.ads ++ ++diff --git a/gcc/ada/Makefile.rtl b/gcc/ada/Makefile.rtl ++index b340a9ef919..15e4f68ccdb 100644 ++--- a/gcc/ada/Makefile.rtl +++++ b/gcc/ada/Makefile.rtl ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/ada/bindgen.adb b/gcc/ada/bindgen.adb ++index 99ad3009d13..91b4cb38486 100644 ++--- a/gcc/ada/bindgen.adb +++++ b/gcc/ada/bindgen.adb ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/ada/bindusg.adb b/gcc/ada/bindusg.adb ++index 45215d2ebea..6fd55ee8721 100644 ++--- a/gcc/ada/bindusg.adb +++++ b/gcc/ada/bindusg.adb ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/ada/doc/gnat_rm/implementation_advice.rst b/gcc/ada/doc/gnat_rm/implementation_advice.rst ++index 31376d92461..998d0c597df 100644 ++--- a/gcc/ada/doc/gnat_rm/implementation_advice.rst +++++ b/gcc/ada/doc/gnat_rm/implementation_advice.rst ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/ada/gnat_rm.texi b/gcc/ada/gnat_rm.texi ++index c174073d508..d72f905a2df 100644 ++--- a/gcc/ada/gnat_rm.texi +++++ b/gcc/ada/gnat_rm.texi ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/ada/gnatbind.adb b/gcc/ada/gnatbind.adb ++index 4907082a42c..4372152b439 100644 ++--- a/gcc/ada/gnatbind.adb +++++ b/gcc/ada/gnatbind.adb ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/ada/init.c b/gcc/ada/init.c ++index f9f627ebcff..e76aa79c5a8 100644 ++--- a/gcc/ada/init.c +++++ b/gcc/ada/init.c ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/ada/libgnat/s-stratt__xdr.adb b/gcc/ada/libgnat/s-statxd.adb ++similarity index 96% ++rename from gcc/ada/libgnat/s-stratt__xdr.adb ++rename to gcc/ada/libgnat/s-statxd.adb ++index 7e32fcf9b91..fcefae7e6f2 100644 ++--- a/gcc/ada/libgnat/s-stratt__xdr.adb +++++ b/gcc/ada/libgnat/s-statxd.adb ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/ada/libgnat/s-statxd.ads b/gcc/ada/libgnat/s-statxd.ads ++new file mode 100644 ++index 00000000000..cca5e5471bd ++--- /dev/null +++++ b/gcc/ada/libgnat/s-statxd.ads ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/ada/libgnat/s-stratt.adb b/gcc/ada/libgnat/s-stratt.adb ++index 64f3f040081..366dabdc7b6 100644 ++--- a/gcc/ada/libgnat/s-stratt.adb +++++ b/gcc/ada/libgnat/s-stratt.adb ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/ada/libgnat/s-stratt.ads b/gcc/ada/libgnat/s-stratt.ads ++index 73369490146..c8c453aad2a 100644 ++--- a/gcc/ada/libgnat/s-stratt.ads +++++ b/gcc/ada/libgnat/s-stratt.ads ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/ada/libgnat/s-ststop.ads b/gcc/ada/libgnat/s-ststop.ads ++index d0da0609d9d..321460b89d8 100644 ++--- a/gcc/ada/libgnat/s-ststop.ads +++++ b/gcc/ada/libgnat/s-ststop.ads ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/ada/opt.ads b/gcc/ada/opt.ads ++index 9e0263b431d..37f3d030e3f 100644 ++--- a/gcc/ada/opt.ads +++++ b/gcc/ada/opt.ads ++@@ -1 +1,2 @@ ++ +++ ++-- ++2.20.1 ++=== 0001-Fortran-type-is-real-kind-1.patch === ++From 3ea6977d0f1813d982743a09660eec1760e981ec Mon Sep 17 00:00:00 2001 ++From: Mark Eggleston ++Date: Wed, 1 Apr 2020 09:52:41 +0100 ++Subject: [PATCH] Fortran : "type is( real(kind(1.)) )" spurious syntax error ++ PR94397 ++ ++Based on a patch in the comments of the PR. That patch fixed this ++problem but caused the test cases for PR93484 to fail. It has been ++changed to reduce initialisation expressions if the expression is ++not EXPR_VARIABLE and not EXPR_CONSTANT. ++ ++2020-05-28 Steven G. Kargl ++ Mark Eggleston ++ ++gcc/fortran/ ++ ++ PR fortran/94397 ++ * match.c (gfc_match_type_spec): New variable ok initialised ++ to true. Set ok with the return value of gfc_reduce_init_expr ++ called only if the expression is not EXPR_CONSTANT and is not ++ EXPR_VARIABLE. Add !ok to the check for type not being integer ++ or the rank being greater than zero. ++ ++2020-05-28 Mark Eggleston ++ ++gcc/testsuite/ ++ ++ PR fortran/94397 ++ * gfortran.dg/pr94397.F90: New test. ++--- ++ gcc/fortran/match.c | 5 ++++- ++ gcc/testsuite/gfortran.dg/pr94397.F90 | 26 ++++++++++++++++++++++++++ ++ 2 files changed, 30 insertions(+), 1 deletion(-) ++ create mode 100644 gcc/testsuite/gfortran.dg/pr94397.F90 ++ ++diff --git a/gcc/fortran/match.c b/gcc/fortran/match.c ++index 8ae34a94a95..82d2b5087e5 100644 ++--- a/gcc/fortran/match.c +++++ b/gcc/fortran/match.c ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/testsuite/gfortran.dg/pr94397.F90 b/gcc/testsuite/gfortran.dg/pr94397.F90 ++new file mode 100644 ++index 00000000000..fda10c1a88b ++--- /dev/null +++++ b/gcc/testsuite/gfortran.dg/pr94397.F90 ++@@ -0,0 +1 @@ +++ ++-- ++2.26.2 ++ ++=== 0001-Missing-change-description.patch === ++From 8ec655bd94615ba45adabae9b50df299edb74eda Mon Sep 17 00:00:00 2001 ++From: Martin Liska ++Date: Fri, 29 May 2020 13:42:57 +0200 ++Subject: [PATCH] Test me. ++ ++gcc/ChangeLog: ++ ++ * ipa-icf-gimple.c (compare_gimple_asm): ++ * ipa-icf-gimple2.c (compare_gimple_asm): Good. ++ * ipa-icf-gimple3.c (compare_gimple_asm): ++--- ++ contrib/gcc-changelog/git_commit.py | 10 ++++++++++ ++ gcc/ipa-icf-gimple.c | 1 + ++ 2 files changed, 11 insertions(+) ++ ++diff --git a/gcc/ipa-icf-gimple.c b/gcc/ipa-icf-gimple.c ++index 1cd5872c03d..6f95aedb3d3 100644 ++--- a/gcc/ipa-icf-gimple.c +++++ b/gcc/ipa-icf-gimple.c ++@@ -850,3 +850,4 @@ ++ } ++ ++ } // ipa_icf_gimple namespace +++ ++-- ++2.26.2 ++ ++=== 0001-Fix-text-of-hyperlink-in-manual.patch === ++From c7904d9e08a0ca3f733be3c2e8a3b912fa851fc5 Mon Sep 17 00:00:00 2001 ++From: Jonathan Wakely ++Date: Fri, 8 Mar 2019 13:56:53 +0000 ++Subject: [PATCH] Fix text of hyperlink in manual ++ ++ * doc/xml/manual/using.xml: Use link element instead of xref. ++ * doc/html/*: Regenerate. ++ ++--- ++ libstdc++-v3/ChangeLog | 3 +++ ++ libstdc++-v3/doc/html/manual/using_macros.html | 3 ++- ++ libstdc++-v3/doc/xml/manual/using.xml | 4 ++-- ++ 3 files changed, 7 insertions(+), 3 deletions(-) ++ ++diff --git a/libstdc++-v3/doc/html/manual/using_macros.html b/libstdc++-v3/doc/html/manual/using_macros.html ++index 7030bd2d0fd..dad6564a97d 100644 ++--- a/libstdc++-v3/doc/html/manual/using_macros.html +++++ b/libstdc++-v3/doc/html/manual/using_macros.html ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/libstdc++-v3/doc/xml/manual/using.xml b/libstdc++-v3/doc/xml/manual/using.xml ++index 2d44a739406..7647e9b8dad 100644 ++--- a/libstdc++-v3/doc/xml/manual/using.xml +++++ b/libstdc++-v3/doc/xml/manual/using.xml ++@@ -1 +1,2 @@ ++ +++ ++-- ++2.25.4 ++ ++=== 0002-libstdc-Fake-test-change-1.patch === ++From fe4ade6778d1d97214db12bf2c40d0f40e7f953a Mon Sep 17 00:00:00 2001 ++From: Jonathan Wakely ++Date: Tue, 2 Jun 2020 11:52:34 +0100 ++Subject: [PATCH] libstdc++: Fake change for testing git_commit.py ++ ++libstdc++-v3/ChangeLog: ++ ++ * doc/xml/faq.xml: Fake change. ++ * doc/html/*: Regenerated. ++--- ++ libstdc++-v3/doc/xml/faq.xml | 1 + ++ 1 file changed, 1 insertion(+) ++ ++diff --git a/libstdc++-v3/doc/xml/faq.xml b/libstdc++-v3/doc/xml/faq.xml ++index e419d3c22a0..bcc14dd6d90 100644 ++--- a/libstdc++-v3/doc/xml/faq.xml +++++ b/libstdc++-v3/doc/xml/faq.xml ++@@ -1 +1,2 @@ ++ +++ ++-- ++2.25.4 ++ ++=== 0003-libstdc-Fake-test-change-2.patch === ++From e460effb3a42c1c046b682fe266da418f2693ef3 Mon Sep 17 00:00:00 2001 ++From: Jonathan Wakely ++Date: Tue, 2 Jun 2020 11:52:34 +0100 ++Subject: [PATCH] libstdc++: Fake change for testing 2 ++ ++libstdc++-v3/ChangeLog: ++ ++ * doc/xml/faq.xml: Fake change. ++--- ++ libstdc++-v3/doc/html/faq.html | 2 +- ++ libstdc++-v3/doc/xml/faq.xml | 1 + ++ 2 files changed, 2 insertions(+), 1 deletion(-) ++ ++diff --git a/libstdc++-v3/doc/html/faq.html b/libstdc++-v3/doc/html/faq.html ++index 967e5f5f348..95d21b5bf9f 100644 ++--- a/libstdc++-v3/doc/html/faq.html +++++ b/libstdc++-v3/doc/html/faq.html ++@@ -1 +1,2 @@ ++ +++ ++--- a/libstdc++-v3/doc/xml/faq.xml +++++ b/libstdc++-v3/doc/xml/faq.xml ++@@ -1 +1,2 @@ ++ +++ ++-- ++2.25.4 ++=== 0001-configure.patch === ++From dbe341cf6a77bb28c5fdf8b32dcb0ff1c2a27348 Mon Sep 17 00:00:00 2001 ++From: Martin Liska ++Date: Tue, 9 Jun 2020 09:39:36 +0200 ++Subject: [PATCH] c++: Fix --disable-bootstrap with older g++. ++ ++Previously I had AX_CXX_COMPILE_STDCXX in the gcc directory configure, which ++added -std=c++11 to CXX if needed, but then CXX is overridden from the ++toplevel directory, so it didn't have the desired effect. Fixed by moving ++the check to the toplevel. Currently it is only used when building GCC ++without bootstrapping; other packages that share the toplevel directory ++can adjust the condition if they also want to require C++11 support. ++ ++ChangeLog: ++ ++ * configure.ac: Check AX_CXX_COMPILE_STDCXX if not bootstrapping. ++ * configure: Regenerate. ++ ++gcc/ChangeLog: ++ ++ * aclocal.m4: Remove ax_cxx_compile_stdcxx.m4. ++ * configure.ac: Remove AX_CXX_COMPILE_STDCXX. ++ * configure: Regenerate. ++ ++--- ++ configure | 999 ++++++++++++++++++++++++++++++++++++++++++++++- ++ configure.ac | 6 +- ++ gcc/aclocal.m4 | 1 - ++ gcc/configure | 997 +--------------------------------------------- ++ gcc/configure.ac | 2 - ++ 5 files changed, 1004 insertions(+), 1001 deletions(-) ++ ++diff --git a/configure b/configure ++index b7897446c70..a0c5aca9e8d 100755 ++--- a/configure +++++ b/configure ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/configure.ac b/configure.ac ++index 59bd92a3e53..1a53ed418e4 100644 ++--- a/configure.ac +++++ b/configure.ac ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/aclocal.m4 b/gcc/aclocal.m4 ++index e93c1535063..1737d59d1cb 100644 ++--- a/gcc/aclocal.m4 +++++ b/gcc/aclocal.m4 ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/configure b/gcc/configure ++index 46850710424..629c7c7e153 100755 ++--- a/gcc/configure +++++ b/gcc/configure ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/gcc/configure.ac b/gcc/configure.ac ++index 60d83c30771..9e7efd13ecc 100644 ++--- a/gcc/configure.ac +++++ b/gcc/configure.ac ++@@ -1 +1,2 @@ ++ +++ ++-- ++2.26.2 ++ ++=== 0001-asan-fix-RTX-emission.patch === ++From e1d68582022cfa2b1dc76646724b397ba2739439 Mon Sep 17 00:00:00 2001 ++From: Martin Liska ++Date: Thu, 11 Jun 2020 09:34:41 +0200 ++Subject: [PATCH] asan: fix RTX emission for ilp32 ++ ++gcc/ChangeLog: ++ ++ PR sanitizer/95634 ++ * asan.c (asan_emit_stack_protection): Fix emission for ilp32 ++ by using Pmode instead of ptr_mode. ++ ++Co-Authored-By: Jakub Jelinek ++(cherry picked from commit 8cff672cb9a132d3d3158c2edfc9a64b55292b80) ++--- ++ gcc/asan.c | 1 + ++ 1 file changed, 1 insertion(+) ++ ++diff --git a/gcc/asan.c b/gcc/asan.c ++index 823eb539993..4ec22162c12 100644 ++--- a/gcc/asan.c +++++ b/gcc/asan.c ++@@ -1 +1,2 @@ ++ +++ ++-- ++2.27.0 ++ ++=== double-cherry-pick.patch === ++From e1d68582022cfa2b1dc76646724b397ba2739439 Mon Sep 17 00:00:00 2001 ++From: Martin Liska ++Date: Thu, 11 Jun 2020 09:34:41 +0200 ++Subject: [PATCH] asan: fix RTX emission for ilp32 ++ ++gcc/ChangeLog: ++ ++ PR sanitizer/95634 ++ * asan.c (asan_emit_stack_protection): Fix emission for ilp32 ++ by using Pmode instead of ptr_mode. ++ ++Co-Authored-By: Jakub Jelinek ++(cherry picked from commit 8cff672cb9a132d3d3158c2edfc9a64b55292b80) ++(cherry picked from commit 8cff672cb9a132d3d3158c2edfc9a64b55292b80) ++--- ++ gcc/asan.c | 1 + ++ 1 file changed, 1 insertion(+) ++ ++diff --git a/gcc/asan.c b/gcc/asan.c ++index 823eb539993..4ec22162c12 100644 ++--- a/gcc/asan.c +++++ b/gcc/asan.c ++@@ -1 +1,2 @@ ++ +++ ++-- ++2.27.0 ++ ++=== 0001-Check-for-more-missing-math-decls-on-vxworks.patch === ++From 0edfc1fd22405ee8e946101e44cd8edc0ee12047 Mon Sep 17 00:00:00 2001 ++From: Douglas B Rupp ++Date: Sun, 31 May 2020 13:25:28 -0700 ++Subject: [PATCH] Check for more missing math decls on vxworks. ++ ++Use the GLIBCXX_CHECK_MATH_DECL macro to check for the full list of ++vxworks math decls. ++ ++for libstdc++-v3/ChangeLog: ++ ++ * crossconfig.m4 <*-vxworks>: Check for more math decls. ++ * configure [FAKEPATCH]: Rebuild. ++--- ++ libstdc++-v3/configure | 255 ++++++++++++++++++++++++++++++++++++++++++++ ++ libstdc++-v3/crossconfig.m4 | 3 +- ++ 2 files changed, 257 insertions(+), 1 deletion(-) ++ ++diff --git a/libstdc++-v3/configure b/libstdc++-v3/configure ++index b5beb45..4ef678e 100755 ++--- a/libstdc++-v3/configure +++++ b/libstdc++-v3/configure ++@@ -1 +1,2 @@ ++ +++ ++diff --git a/libstdc++-v3/crossconfig.m4 b/libstdc++-v3/crossconfig.m4 ++index fe18288..313f84d 100644 ++--- a/libstdc++-v3/crossconfig.m4 +++++ b/libstdc++-v3/crossconfig.m4 ++@@ -1 +1,2 @@ ++ +++ ++-- ++=== 0001-tree-optimization-97633-fix-SLP-scheduling-of-single.patch === ++From c0bfd9672e19caf08e45afeb4277f848488ced2b Mon Sep 17 00:00:00 2001 ++From: Richard Biener ++Date: Fri, 30 Oct 2020 09:57:02 +0100 ++Subject: [PATCH] tree-optimization/97633 - fix SLP scheduling of single-node ++ cycles ++ ++This makes sure to update backedges in single-node cycles. ++ ++2020-10-30 Richard Biener ++ ++ PR tree-optimization/97633 ++ * tree-vect-slp.c (): Update backedges in single-node cycles. ++ Optimize processing of externals. ++ ++ * g++.dg/vect/slp-pr97636.cc: New testcase. ++ * gcc.dg/vect/bb-slp-pr97633.c: Likewise. ++--- ++ gcc/testsuite/g++.dg/vect/slp-pr97636.cc | 83 +++++++++++ ++ gcc/testsuite/gcc.dg/vect/bb-slp-pr97633.c | 27 ++++ ++ gcc/tree-vect-slp.c | 162 +++++++++++---------- ++ 3 files changed, 198 insertions(+), 74 deletions(-) ++ create mode 100644 gcc/testsuite/g++.dg/vect/slp-pr97636.cc ++ create mode 100644 gcc/testsuite/gcc.dg/vect/bb-slp-pr97633.c ++ ++diff --git a/gcc/testsuite/g++.dg/vect/slp-pr97636.cc b/gcc/testsuite/g++.dg/vect/slp-pr97636.cc ++new file mode 100644 ++index 00000000000..012342004f1 ++--- /dev/null +++++ b/gcc/testsuite/g++.dg/vect/slp-pr97636.cc ++@@ -0,0 +1 @@ +++ ++diff --git a/gcc/tree-vect-slp.c b/gcc/tree-vect-slp.c ++index 5d69a98c2a9..714e50697bd 100644 ++--- a/gcc/tree-vect-slp.c +++++ b/gcc/tree-vect-slp.c ++@@ -1 +1,2 @@ ++ +++ ++-- ++ ++2.7.4 ++=== 0001-c-Set-CALL_FROM_NEW_OR_DELETE_P-on-more-calls.patch === ++From 4f4ced28826ece7b7b76649522ee2a9601a63b90 Mon Sep 17 00:00:00 2001 ++From: Jason Merrill ++Date: Fri, 2 Oct 2020 09:00:49 +0200 ++Subject: [PATCH] c++: Set CALL_FROM_NEW_OR_DELETE_P on more calls. ++ ++We were failing to set the flag on a delete call in a new expression, in a ++deleting destructor, and in a coroutine. Fixed by setting it in the ++function that builds the call. ++ ++2020-10-02 Jason Merril ++ ++gcc/cp/ChangeLog: ++ * init.c (build_new_1, build_vec_delete_1, build_delete): Not here. ++ (build_delete): ++ ++--- ++ gcc/cp/init.c | 1 - ++ 1 files changed, 0 insertions(+), 1 deletions(-) ++ ++diff --git a/gcc/cp/init.c b/gcc/cp/init.c ++index e84e985492d..00fff3f7327 100644 ++--- a/gcc/cp/init.c +++++ b/gcc/cp/init.c ++@@ -3436,1 +3435,0 @@ build_new_1 (vec **placement, tree type, tree nelts, ++- ++-- ++2.25.1 ++ ++=== 0001-lto-fix-LTO-debug-sections-copying.patch === ++From 190c04ba36d9c6c3dce41f12012aa97c6d7f22f5 Mon Sep 17 00:00:00 2001 ++From: Martin Liska ++Date: Mon, 5 Oct 2020 18:03:08 +0200 ++Subject: [PATCH] lto: fix LTO debug sections copying. ++MIME-Version: 1.0 ++Content-Type: text/plain; charset=UTF-8 ++Content-Transfer-Encoding: 8bit ++ ++libiberty/ChangeLog: ++ ++ PR lto/97290 ++ * simple-object-elf.c (simple_object_elf_copy_lto_debug_sections): ++ Use sh_link of a .symtab_shndx section. ++--- ++ libiberty/simple-object-elf.c | 1 - ++ 1 file changed, 0 insertions(+), 1 deletions(-) ++ ++diff --git a/libiberty/simple-object-elf.c b/libiberty/simple-object-elf.c ++index 7c9d492f6a4..37e73348cb7 100644 ++--- a/libiberty/simple-object-elf.c +++++ b/libiberty/simple-object-elf.c ++@@ -1191,1 +1191,0 @@ simple_object_elf_copy_lto_debug_sections (simple_object_read *sobj, ++- ++-- ++2.25.1 ++ +new file mode 100755 +--- /dev/null ++++ b/src/contrib/git-backport.py +@@ -0,0 +1,65 @@ ++#!/usr/bin/env python3 ++ ++# Copyright (C) 2020 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 COPYING. If not, write to ++# the Free Software Foundation, 51 Franklin Street, Fifth Floor, ++# Boston, MA 02110-1301, USA. ++ ++import argparse ++import subprocess ++ ++if __name__ == '__main__': ++ parser = argparse.ArgumentParser(description='Backport a git revision and ' ++ 'stash all ChangeLog files.') ++ parser.add_argument('revision', help='Revision') ++ args = parser.parse_args() ++ ++ r = subprocess.run('git cherry-pick -x %s' % args.revision, shell=True) ++ if r.returncode == 0: ++ cmd = 'git show --name-only --pretty="" -- "*ChangeLog"' ++ changelogs = subprocess.check_output(cmd, shell=True, encoding='utf8') ++ changelogs = changelogs.strip() ++ if changelogs: ++ for changelog in changelogs.split('\n'): ++ subprocess.check_output('git checkout HEAD~ %s' % changelog, ++ shell=True) ++ subprocess.check_output('git commit --amend --no-edit', shell=True) ++ else: ++ # 1) remove all ChangeLog files from conflicts ++ out = subprocess.check_output('git diff --name-only --diff-filter=U', ++ shell=True, ++ encoding='utf8') ++ conflicts = out.strip().split('\n') ++ changelogs = [c for c in conflicts if c.endswith('ChangeLog')] ++ if changelogs: ++ cmd = 'git checkout --theirs %s' % ' '.join(changelogs) ++ subprocess.check_output(cmd, shell=True) ++ # 2) remove all ChangeLog files from index ++ cmd = 'git diff --name-only --diff-filter=M HEAD' ++ out = subprocess.check_output(cmd, shell=True, encoding='utf8') ++ out = out.strip().split('\n') ++ modified = [c for c in out if c.endswith('ChangeLog')] ++ for m in modified: ++ subprocess.check_output('git reset %s' % m, shell=True) ++ subprocess.check_output('git checkout %s' % m, shell=True) ++ ++ # try to continue ++ if len(conflicts) == len(changelogs): ++ cmd = 'git -c core.editor=true cherry-pick --continue' ++ subprocess.check_output(cmd, shell=True) ++ else: ++ print('Please resolve all remaining file conflicts.') +--- a/src/gcc/ChangeLog ++++ b/src/gcc/ChangeLog +@@ -1,3 +1,1979 @@ ++2020-11-24 Jason Merrill ++ ++ PR c++/97918 ++ * dwarf2out.c (dwarf2out_early_finish): flush_limbo_die_list ++ after gen_scheduled_generic_parms_dies. ++ ++2020-11-17 Sebastian Pop ++ ++ Backported from master: ++ 2020-11-17 Sebastian Pop ++ ++ * config.gcc: add configure flags --with-{cpu,arch,tune}-{32,64} ++ as alias flags for --with-{cpu,arch,tune} on AArch64. ++ * doc/install.texi: Document new flags for aarch64. ++ ++2020-11-17 Sebastian Pop ++ ++ Backported from master: ++ 2020-11-17 Sebastian Pop ++ ++ * config.gcc: Add --with-tune to AArch64 configure flags. ++ ++2020-11-17 Richard Sandiford ++ ++ Backported from master: ++ 2020-08-05 Richard Sandiford ++ ++ PR target/96191 ++ * config/aarch64/aarch64.md (stack_protect_test_): Set the ++ CC register directly, instead of a GPR. Replace the original GPR ++ destination with an extra scratch register. Zero out operand 3 ++ after use. ++ (stack_protect_test): Update accordingly. ++ ++2020-11-17 Tamar Christina ++ ++ PR target/97535 ++ * config/aarch64/aarch64.c (aarch64_expand_movme): Use ++ unsigned HOST_WIDE_INT. ++ ++2020-10-22 Andreas Krebbel ++ ++ Backported from master: ++ 2020-10-22 Andreas Krebbel ++ ++ PR rtl-optimization/97439 ++ * dfp.c (decimal_real_maxval): Set the sign flag in the ++ generated number. ++ ++2020-10-13 Kyrylo Tkachov ++ ++ * config/aarch64/aarch64.c (neoversen2_tunings): Define. ++ * config/aarch64/aarch64-cores.def (neoverse-n2): Use it. ++ ++2020-10-13 Kyrylo Tkachov ++ ++ Backported from master: ++ 2020-10-13 Kyrylo Tkachov ++ ++ PR target/97349 ++ * config/aarch64/arm_neon.h (vdupq_n_p8, vdupq_n_p16, ++ vdupq_n_p64, vdupq_n_s8, vdupq_n_s16, vdupq_n_u8, vdupq_n_u16): ++ Fix argument type. ++ ++2020-10-08 Kyrylo Tkachov ++ ++ Backported from master: ++ 2020-10-08 Kyrylo Tkachov ++ ++ PR target/97150 ++ * config/aarch64/arm_neon.h (vqrshlb_u8): Make second argument ++ signed. ++ (vqrshlh_u16): Likewise. ++ (vqrshls_u32): Likewise. ++ (vqrshld_u64): Likewise. ++ (vqshlb_u8): Likewise. ++ (vqshlh_u16): Likewise. ++ (vqshls_u32): Likewise. ++ (vqshld_u64): Likewise. ++ (vshld_u64): Likewise. ++ ++2020-10-08 Kyrylo Tkachov ++ ++ Backported from master: ++ 2020-10-08 Kyrylo Tkachov ++ ++ PR target/96313 ++ * config/aarch64/aarch64-simd-builtins.def (sqmovun): Use UNOPUS ++ qualifiers. ++ * config/aarch64/arm_neon.h (vqmovun_s16): Adjust builtin call. ++ Remove unnecessary result cast. ++ (vqmovun_s32): Likewise. ++ (vqmovun_s64): Likewise. ++ (vqmovunh_s16): Likewise. Fix return type. ++ (vqmovuns_s32): Likewise. ++ (vqmovund_s64): Likewise. ++ ++2020-10-08 Alan Modra ++ ++ Backported from master: ++ 2020-10-01 Alan Modra ++ ++ * config/rs6000/rs6000.c (rs6000_legitimize_address): Use ++ gen_int_mode for high part of address constant. ++ ++2020-10-06 Alex Coplan ++ ++ * config/arm/driver-arm.c (arm_cpu_table): Add neoverse-v1. ++ ++2020-10-02 Alex Coplan ++ ++ * config/arm/arm-cpus.in (neoverse-n2): New. ++ * config/arm/arm-tables.opt: Regenerate. ++ * config/arm/arm-tune.md: Regenerate. ++ * config/arm/driver-arm.c (arm_cpu_table): Add Neoverse N2. ++ * doc/invoke.texi: Document support for Neoverse N2. ++ ++2020-10-02 Kyrylo Tkachov ++ ++ * config/aarch64/aarch64.c (neoversev1_tunings): Define. ++ * config/aarch64/aarch64-cores.def (zeus): Use it. ++ (neoverse-v1): Likewise. ++ ++2020-10-01 Kyrylo Tkachov ++ ++ * config/aarch64/aarch64-tuning-flags.def ++ (PREFER_ADVSIMD_AUTOVEC): Define. ++ * config/aarch64/aarch64.c (aarch64_preferred_simd_mode): Use ++ it. ++ (aarch64_autovectorize_vector_sizes): Likewise. ++ ++2020-10-01 Kyrylo Tkachov ++ ++ * config/aarch64/aarch64-cores.def (zeus): Add AARCH64_FL_RNG to ++ features. ++ (neoverse-v1): Likewise. ++ ++2020-10-01 Jakub Jelinek ++ ++ Backported from master: ++ 2020-10-01 Jakub Jelinek ++ ++ * config/s390/s390.c (s390_atomic_assign_expand_fenv): Use ++ TARGET_EXPR instead of MODIFY_EXPR for the first assignments to ++ fenv_var and old_fpc. Formatting fixes. ++ ++2020-10-01 Alex Coplan ++ ++ * config/aarch64/aarch64-cores.def: Add Neoverse N2. ++ * config/aarch64/aarch64-tune.md: Regenerate. ++ * doc/invoke.texi: Document AArch64 support for Neoverse N2. ++ ++2020-09-30 Kyrylo Tkachov ++ ++ Backported from master: ++ 2020-09-30 Kyrylo Tkachov ++ ++ * config/aarch64/aarch64-option-extensions.def (rng): Add ++ cpuinfo string. ++ ++2020-09-30 H.J. Lu ++ ++ Backported from master: ++ 2020-09-30 H.J. Lu ++ ++ PR target/97184 ++ * config/i386/i386.md (UNSPECV_MOVDIRI): Renamed to ... ++ (UNSPEC_MOVDIRI): This. ++ (UNSPECV_MOVDIR64B): Renamed to ... ++ (UNSPEC_MOVDIR64B): This. ++ (movdiri): Use SET operation. ++ (@movdir64b_): Likewise. ++ ++2020-09-29 Hongyu Wang ++ ++ Backported from master: ++ 2020-09-29 Hongyu Wang ++ ++ PR target/97231 ++ * config/i386/pconfigintrin.h: Add FSF copyright notes. ++ * config/i386/wbnoinvdintrin.h: Ditto. ++ ++2020-09-29 Alex Coplan ++ ++ * config/arm/arm-cpus.in (neoverse-v1): New. ++ * config/arm/arm-tables.opt: Regenerate. ++ * config/arm/arm-tune.md: Regenerate. ++ * doc/invoke.texi: Document AArch32 support for Neoverse V1. ++ ++2020-09-28 Kyrylo Tkachov ++ ++ Backported from master: ++ 2020-09-23 Kyrylo Tkachov ++ ++ PR target/71233 ++ * config/aarch64/arm_neon.h (vreinterpretq_f64_p128, ++ vreinterpretq_p128_f64): Define. ++ ++2020-09-28 Kyrylo Tkachov ++ ++ Backported from master: ++ 2020-09-23 Kyrylo Tkachov ++ ++ PR target/71233 ++ * config/aarch64/aarch64-simd-builtins.def (frintn): Use BUILTIN_VHSDF_HSDF ++ for modes. Remove explicit hf instantiation. ++ * config/aarch64/arm_neon.h (vrndns_f32): Define. ++ ++2020-09-28 Kyrylo Tkachov ++ ++ Backported from master: ++ 2020-09-23 Kyrylo Tkachov ++ ++ PR target/71233 ++ * config/aarch64/arm_neon.h (vtrn1q_p64, vtrn2q_p64, vuzp1q_p64, ++ vuzp2q_p64, vzip1q_p64, vzip2q_p64): Define. ++ ++2020-09-28 Kyrylo Tkachov ++ ++ Backported from master: ++ 2020-09-23 Kyrylo Tkachov ++ ++ PR target/71233 ++ * config/aarch64/arm_neon.h (vldrq_p128): Define. ++ ++2020-09-28 Kyrylo Tkachov ++ ++ Backported from master: ++ 2020-09-23 Kyrylo Tkachov ++ ++ PR target/71233 ++ * config/aarch64/arm_neon.h (vstrq_p128): Define. ++ ++2020-09-28 Kyrylo Tkachov ++ ++ Backported from master: ++ 2020-09-22 Kyrylo Tkachov ++ ++ PR target/71233 ++ * config/aarch64/arm_neon.h (vcls_u8, vcls_u16, vcls_u32, ++ vclsq_u8, vclsq_u16, vclsq_u32): Define. ++ ++2020-09-28 Kyrylo Tkachov ++ ++ Backported from master: ++ 2020-09-22 Kyrylo Tkachov ++ ++ PR target/71233 ++ * config/aarch64/arm_neon.h (vceqq_p64, vceqz_p64, vceqzq_p64): Define. ++ ++2020-09-28 Kyrylo Tkachov ++ ++ Backported from master: ++ 2020-09-22 Kyrylo Tkachov ++ ++ PR target/71233 ++ * config/aarch64/arm_neon.h (vadd_p8, vadd_p16, vadd_p64, vaddq_p8, ++ vaddq_p16, vaddq_p64, vaddq_p128): Define. ++ ++2020-09-27 Jakub Jelinek ++ ++ Backported from master: ++ 2020-09-27 Jakub Jelinek ++ ++ PR middle-end/97073 ++ * optabs.c (expand_binop, expand_absneg_bit, expand_unop, ++ expand_copysign_bit): Check reg_overlap_mentioned_p between target ++ and operand(s) and if it returns true, force a pseudo as target. ++ ++2020-09-25 Tamar Christina ++ ++ PR target/71233 ++ * config/aarch64/aarch64-builtins.c (enum aarch64_type_qualifiers): ++ Add qualifier_lane_pair_index. ++ (emit-rtl.h): Include. ++ (TYPES_QUADOP_LANE_PAIR): New. ++ (aarch64_simd_expand_args): Use it. ++ (aarch64_simd_expand_builtin): Likewise. ++ (AARCH64_SIMD_FCMLA_LANEQ_BUILTINS, aarch64_fcmla_laneq_builtin_datum): New. ++ (FCMLA_LANEQ_BUILTIN, AARCH64_SIMD_FCMLA_LANEQ_BUILTIN_BASE, ++ AARCH64_SIMD_FCMLA_LANEQ_BUILTINS, aarch64_fcmla_lane_builtin_data, ++ aarch64_init_fcmla_laneq_builtins, aarch64_expand_fcmla_builtin): New. ++ (aarch64_init_builtins): Add aarch64_init_fcmla_laneq_builtins. ++ (aarch64_expand_buildin): Add AARCH64_SIMD_BUILTIN_FCMLA_LANEQ0_V2SF, ++ AARCH64_SIMD_BUILTIN_FCMLA_LANEQ90_V2SF, AARCH64_SIMD_BUILTIN_FCMLA_LANEQ180_V2SF, ++ AARCH64_SIMD_BUILTIN_FCMLA_LANEQ2700_V2SF, AARCH64_SIMD_BUILTIN_FCMLA_LANEQ0_V4HF, ++ AARCH64_SIMD_BUILTIN_FCMLA_LANEQ90_V4HF, AARCH64_SIMD_BUILTIN_FCMLA_LANEQ180_V4HF, ++ AARCH64_SIMD_BUILTIN_FCMLA_LANEQ270_V4HF. ++ * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins): Add __ARM_FEATURE_COMPLEX. ++ * config/aarch64/aarch64-simd-builtins.def (fcadd90, fcadd270, fcmla0, fcmla90, ++ fcmla180, fcmla270, fcmla_lane0, fcmla_lane90, fcmla_lane180, fcmla_lane270, ++ fcmla_laneq0, fcmla_laneq90, fcmla_laneq180, fcmla_laneq270, ++ fcmlaq_lane0, fcmlaq_lane90, fcmlaq_lane180, fcmlaq_lane270): New. ++ * config/aarch64/aarch64-simd.md (aarch64_fcmla_lane, ++ aarch64_fcmla_laneqv4hf, aarch64_fcmlaq_lane,aarch64_fcadd, ++ aarch64_fcmla): New. ++ * config/aarch64/arm_neon.h: ++ (vcadd_rot90_f16): New. ++ (vcaddq_rot90_f16): New. ++ (vcadd_rot270_f16): New. ++ (vcaddq_rot270_f16): New. ++ (vcmla_f16): New. ++ (vcmlaq_f16): New. ++ (vcmla_lane_f16): New. ++ (vcmla_laneq_f16): New. ++ (vcmlaq_lane_f16): New. ++ (vcmlaq_rot90_lane_f16): New. ++ (vcmla_rot90_laneq_f16): New. ++ (vcmla_rot90_lane_f16): New. ++ (vcmlaq_rot90_f16): New. ++ (vcmla_rot90_f16): New. ++ (vcmlaq_laneq_f16): New. ++ (vcmla_rot180_laneq_f16): New. ++ (vcmla_rot180_lane_f16): New. ++ (vcmlaq_rot180_f16): New. ++ (vcmla_rot180_f16): New. ++ (vcmlaq_rot90_laneq_f16): New. ++ (vcmlaq_rot270_laneq_f16): New. ++ (vcmlaq_rot270_lane_f16): New. ++ (vcmla_rot270_laneq_f16): New. ++ (vcmlaq_rot270_f16): New. ++ (vcmla_rot270_f16): New. ++ (vcmlaq_rot180_laneq_f16): New. ++ (vcmlaq_rot180_lane_f16): New. ++ (vcmla_rot270_lane_f16): New. ++ (vcadd_rot90_f32): New. ++ (vcaddq_rot90_f32): New. ++ (vcaddq_rot90_f64): New. ++ (vcadd_rot270_f32): New. ++ (vcaddq_rot270_f32): New. ++ (vcaddq_rot270_f64): New. ++ (vcmla_f32): New. ++ (vcmlaq_f32): New. ++ (vcmlaq_f64): New. ++ (vcmla_lane_f32): New. ++ (vcmla_laneq_f32): New. ++ (vcmlaq_lane_f32): New. ++ (vcmlaq_laneq_f32): New. ++ (vcmla_rot90_f32): New. ++ (vcmlaq_rot90_f32): New. ++ (vcmlaq_rot90_f64): New. ++ (vcmla_rot90_lane_f32): New. ++ (vcmla_rot90_laneq_f32): New. ++ (vcmlaq_rot90_lane_f32): New. ++ (vcmlaq_rot90_laneq_f32): New. ++ (vcmla_rot180_f32): New. ++ (vcmlaq_rot180_f32): New. ++ (vcmlaq_rot180_f64): New. ++ (vcmla_rot180_lane_f32): New. ++ (vcmla_rot180_laneq_f32): New. ++ (vcmlaq_rot180_lane_f32): New. ++ (vcmlaq_rot180_laneq_f32): New. ++ (vcmla_rot270_f32): New. ++ (vcmlaq_rot270_f32): New. ++ (vcmlaq_rot270_f64): New. ++ (vcmla_rot270_lane_f32): New. ++ (vcmla_rot270_laneq_f32): New. ++ (vcmlaq_rot270_lane_f32): New. ++ (vcmlaq_rot270_laneq_f32): New. ++ * config/aarch64/aarch64.h (TARGET_COMPLEX): New. ++ * config/aarch64/iterators.md (UNSPEC_FCADD90, UNSPEC_FCADD270, ++ UNSPEC_FCMLA, UNSPEC_FCMLA90, UNSPEC_FCMLA180, UNSPEC_FCMLA270): New. ++ (FCADD, FCMLA): New. ++ (rot): New. ++ (FCMLA_maybe_lane): New. ++ * config/arm/types.md (neon_fcadd, neon_fcmla): New. ++ ++2020-09-25 Kyrylo Tkachov ++ ++ PR target/71233 ++ * config/aarch64/aarch64.md (UNSPEC_RNDR, UNSPEC_RNDRRS): ++ Define. ++ (aarch64_rndr): New define_insn. ++ (aarch64_rndrrs): Likewise. ++ * config/aarch64/aarch64.h (AARCH64_ISA_RNG): Define. ++ (TARGET_RNG): Likewise. ++ (AARCH64_FL_RNG): Likewise. ++ * config/aarch64/aarch64-option-extensions.def (rng): Define. ++ * config/aarch64/aarch64-builtins.c (enum aarch64_builtins): ++ Add AARCH64_BUILTIN_RNG_RNDR, AARCH64_BUILTIN_RNG_RNDRRS. ++ (aarch64_init_rng_builtins): Define. ++ (aarch64_init_builtins): Call aarch64_init_rng_builtins. ++ (aarch64_expand_rng_builtin): Define. ++ (aarch64_expand_builtin): Use IGNORE argument, handle ++ RNG builtins. ++ * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins): ++ Define __ARM_FEATURE_RNG when TARGET_RNG. ++ * config/aarch64/arm_acle.h (__rndr, __rndrrs): Define. ++ ++2020-09-24 H.J. Lu ++ ++ Backported from master: ++ 2020-09-16 H.J. Lu ++ ++ PR target/97032 ++ * cfgexpand.c (expand_asm_stmt): Set sp_is_clobbered_by_asm to ++ true if the stack pointer is clobbered by asm statement. ++ * emit-rtl.h (rtl_data): Add sp_is_clobbered_by_asm. ++ * config/i386/i386.c (ix86_get_drap_rtx): Set need_drap to true ++ if the stack pointer is clobbered by asm statement. ++ ++2020-09-24 Kyrylo Tkachov ++ ++ Backported from master: ++ 2020-09-24 Kyrylo Tkachov ++ Andrea Corallo ++ ++ PR target/71233 ++ * config/aarch64/aarch64.md (UNSPEC_FJCVTZS): Define. ++ (aarch64_fjcvtzs): New define_insn. ++ * config/aarch64/aarch64.h (TARGET_JSCVT): Define. ++ * config/aarch64/aarch64-builtins.c (aarch64_builtins): ++ Add AARCH64_JSCVT. ++ (aarch64_init_builtins): Initialize __builtin_aarch64_jcvtzs. ++ (aarch64_expand_builtin): Handle AARCH64_JSCVT. ++ * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins): Define ++ __ARM_FEATURE_JCVT where appropriate. ++ * config/aarch64/arm_acle.h (__jcvt): Define. ++ * doc/sourcebuild.texi (aarch64_fjcvtzs_hw) Document new ++ target supports option. ++ ++2020-09-24 Tamar Christina ++ ++ Backported from master: ++ 2019-02-25 Tamar Christina ++ ++ PR target/71233 ++ * config/aarch64/arm_neon.h (vfmlal_low_u32, vfmlsl_low_u32, ++ vfmlalq_low_u32, vfmlslq_low_u32, vfmlal_high_u32, vfmlsl_high_u32, ++ vfmlalq_high_u32, vfmlslq_high_u32, vfmlal_lane_low_u32, ++ vfmlsl_lane_low_u32, vfmlal_laneq_low_u32, vfmlsl_laneq_low_u32, ++ vfmlalq_lane_low_u32, vfmlslq_lane_low_u32, vfmlalq_laneq_low_u32, ++ vfmlslq_laneq_low_u32, vfmlal_lane_high_u32, vfmlsl_lane_high_u32, ++ vfmlal_laneq_high_u32, vfmlsl_laneq_high_u32, vfmlalq_lane_high_u32, ++ vfmlslq_lane_high_u32, vfmlalq_laneq_high_u32, vfmlslq_laneq_high_u32): ++ Rename ... ++ (vfmlal_low_f16, vfmlsl_low_f16, vfmlalq_low_f16, vfmlslq_low_f16, ++ vfmlal_high_f16, vfmlsl_high_f16, vfmlalq_high_f16, vfmlslq_high_f16, ++ vfmlal_lane_low_f16, vfmlsl_lane_low_f16, vfmlal_laneq_low_f16, ++ vfmlsl_laneq_low_f16, vfmlalq_lane_low_f16, vfmlslq_lane_low_f16, ++ vfmlalq_laneq_low_f16, vfmlslq_laneq_low_f16, vfmlal_lane_high_f16, ++ vfmlsl_lane_high_f16, vfmlal_laneq_high_f16, vfmlsl_laneq_high_f16, ++ vfmlalq_lane_high_f16, vfmlslq_lane_high_f16, vfmlalq_laneq_high_f16, ++ vfmlslq_laneq_high_f16): ... To this. ++ ++2020-09-24 Tamar Christina ++ ++ Backported from master: ++ 2018-05-21 Tamar Christina ++ ++ PR target/71233 ++ * config/aarch64/aarch64-simd.md (aarch64_eor3qv8hi): Change to ++ eor3q4. ++ (aarch64_bcaxqv8hi): Change to bcaxq4. ++ * config/aarch64/aarch64-simd-builtins.def (veor3q_u8, veor3q_u32, ++ veor3q_u64, veor3q_s8, veor3q_s16, veor3q_s32, veor3q_s64, vbcaxq_u8, ++ vbcaxq_u32, vbcaxq_u64, vbcaxq_s8, vbcaxq_s16, vbcaxq_s32, ++ vbcaxq_s64): New. ++ * config/aarch64/arm_neon.h: Likewise. ++ * config/aarch64/iterators.md (VQ_I): New. ++ ++2020-09-24 Alex Coplan ++ ++ * config/aarch64/aarch64-cores.def: Add Neoverse V1. ++ * config/aarch64/aarch64-tune.md: Regenerate. ++ * doc/invoke.texi: Document support for Neoverse V1. ++ ++2020-09-22 Vlad Lazar ++ ++ Backported from master: ++ 2018-08-31 Vlad Lazar ++ ++ PR target/71233 ++ * config/aarch64/arm_neon.h (vabsd_s64): New. ++ (vnegd_s64): Likewise. ++ ++2020-09-18 Jakub Jelinek ++ ++ Backported from master: ++ 2020-09-16 Jakub Jelinek ++ ++ PR tree-optimization/97053 ++ * gimple-ssa-store-merging.c (check_no_overlap): Add FIRST_ORDER, ++ START, FIRST_EARLIER and LAST_EARLIER arguments. Return false if ++ any stores between FIRST_EARLIER inclusive and LAST_EARLIER exclusive ++ has order in between FIRST_ORDER and LAST_ORDER and overlaps the to ++ be merged store. ++ (imm_store_chain_info::try_coalesce_bswap): Add FIRST_EARLIER argument. ++ Adjust check_no_overlap caller. ++ (imm_store_chain_info::coalesce_immediate_stores): Add first_earlier ++ and last_earlier variables, adjust them during iterations. Adjust ++ check_no_overlap callers, call check_no_overlap even when extending ++ overlapping stores by extra INTEGER_CST stores. ++ ++2020-09-18 Richard Sandiford ++ ++ Backported from master: ++ 2020-04-29 Richard Sandiford ++ ++ * config/arm/arm-builtins.c (arm_atomic_assign_expand_fenv): Use ++ TARGET_EXPR instead of MODIFY_EXPR for the first assignments to ++ fenv_var and new_fenv_var. ++ ++2020-09-17 Segher Boessenkool ++ ++ Backported from master: ++ 2020-04-24 Segher Boessenkool ++ ++ PR target/94710 ++ * config/rs6000/vector.md (vec_shr_ for VEC_L): Correct little ++ endian byteshift_val calculation. ++ ++2020-09-17 Jakub Jelinek ++ ++ Backported from master: ++ 2020-08-26 Jakub Jelinek ++ ++ PR debug/96729 ++ * dwarf2out.c (dwarf2out_next_real_insn): Adjust function comment. ++ (dwarf2out_var_location): Look for next_note only if next_real is ++ non-NULL, in that case look for the first non-deleted ++ NOTE_INSN_VAR_LOCATION between loc_note and next_real, if any. ++ ++2020-09-17 Jakub Jelinek ++ ++ Backported from master: ++ 2020-08-25 Jakub Jelinek ++ ++ PR tree-optimization/96722 ++ * gimple.c (infer_nonnull_range): Formatting fix. ++ (infer_nonnull_range_by_dereference): Return false for clobber stmts. ++ ++2020-09-17 Jakub Jelinek ++ ++ Backported from master: ++ 2020-08-08 Jakub Jelinek ++ ++ PR fortran/93553 ++ * tree-nested.c (convert_nonlocal_omp_clauses): For ++ OMP_CLAUSE_REDUCTION, OMP_CLAUSE_LASTPRIVATE and OMP_CLAUSE_LINEAR ++ save info->new_local_var_chain around walks of the clause gimple ++ sequences and declare_vars if needed into the sequence. ++ ++2020-09-17 Jakub Jelinek ++ ++ Backported from master: ++ 2020-07-15 Jakub Jelinek ++ ++ PR target/96174 ++ * config/i386/avx512fintrin.h (_mm512_cmpeq_pd_mask, ++ _mm512_mask_cmpeq_pd_mask, _mm512_cmplt_pd_mask, ++ _mm512_mask_cmplt_pd_mask, _mm512_cmple_pd_mask, ++ _mm512_mask_cmple_pd_mask, _mm512_cmpunord_pd_mask, ++ _mm512_mask_cmpunord_pd_mask, _mm512_cmpneq_pd_mask, ++ _mm512_mask_cmpneq_pd_mask, _mm512_cmpnlt_pd_mask, ++ _mm512_mask_cmpnlt_pd_mask, _mm512_cmpnle_pd_mask, ++ _mm512_mask_cmpnle_pd_mask, _mm512_cmpord_pd_mask, ++ _mm512_mask_cmpord_pd_mask, _mm512_cmpeq_ps_mask, ++ _mm512_mask_cmpeq_ps_mask, _mm512_cmplt_ps_mask, ++ _mm512_mask_cmplt_ps_mask, _mm512_cmple_ps_mask, ++ _mm512_mask_cmple_ps_mask, _mm512_cmpunord_ps_mask, ++ _mm512_mask_cmpunord_ps_mask, _mm512_cmpneq_ps_mask, ++ _mm512_mask_cmpneq_ps_mask, _mm512_cmpnlt_ps_mask, ++ _mm512_mask_cmpnlt_ps_mask, _mm512_cmpnle_ps_mask, ++ _mm512_mask_cmpnle_ps_mask, _mm512_cmpord_ps_mask, ++ _mm512_mask_cmpord_ps_mask): Move outside of __OPTIMIZE__ guarded ++ section. ++ ++2020-09-17 Jakub Jelinek ++ ++ Backported from master: ++ 2020-07-02 Jakub Jelinek ++ ++ PR tree-optimization/95857 ++ * tree-cfg.c (group_case_labels_stmt): When removing an unreachable ++ base_bb, remember all forced and non-local labels on it and later ++ treat those as if they have NULL label_to_block. Formatting fix. ++ Fix a comment typo. ++ ++2020-09-17 Jakub Jelinek ++ ++ Backported from master: ++ 2020-05-14 Jakub Jelinek ++ ++ PR middle-end/95108 ++ * omp-simd-clone.c (struct modify_stmt_info): Add after_stmt member. ++ (ipa_simd_modify_stmt_ops): For PHIs, only add before first stmt in ++ entry block if info->after_stmt is NULL, otherwise add after that stmt ++ and update it after adding each stmt. ++ (ipa_simd_modify_function_body): Initialize info.after_stmt. ++ ++2020-09-17 Jakub Jelinek ++ ++ Backported from master: ++ 2020-05-13 Jakub Jelinek ++ ++ PR debug/95080 ++ * cfgrtl.c (purge_dead_edges): Skip over debug and note insns even ++ if the last insn is a note. ++ ++2020-09-17 Jakub Jelinek ++ ++ Backported from master: ++ 2020-05-07 Jakub Jelinek ++ ++ PR target/94950 ++ * config/riscv/riscv-builtins.c (riscv_atomic_assign_expand_fenv): Use ++ TARGET_EXPR instead of MODIFY_EXPR for first assignment to old_flags. ++ ++2020-09-17 Jakub Jelinek ++ ++ Backported from master: ++ 2020-05-07 Jakub Jelinek ++ ++ PR rtl-optimization/94873 ++ * combine.c (combine_instructions): Don't optimize using REG_EQUAL ++ note if SET_SRC (set) has side-effects. ++ ++2020-09-17 Jakub Jelinek ++ ++ Backported from master: ++ 2020-05-02 Jakub Jelinek ++ ++ * config/tilegx/tilegx.md ++ (insn_stnt_add): Use ++ rather than just . ++ ++2020-09-17 Jakub Jelinek ++ ++ Backported from master: ++ 2020-04-29 Jakub Jelinek ++ ++ PR target/94832 ++ * config/i386/avx512bwintrin.h (_mm512_alignr_epi8, ++ _mm512_mask_alignr_epi8, _mm512_maskz_alignr_epi8): Wrap macro operands ++ used in casts into parens. ++ * config/i386/avx512fintrin.h (_mm512_cvt_roundps_ph, _mm512_cvtps_ph, ++ _mm512_mask_cvt_roundps_ph, _mm512_mask_cvtps_ph, ++ _mm512_maskz_cvt_roundps_ph, _mm512_maskz_cvtps_ph, ++ _mm512_mask_cmp_epi64_mask, _mm512_mask_cmp_epi32_mask, ++ _mm512_mask_cmp_epu64_mask, _mm512_mask_cmp_epu32_mask, ++ _mm512_mask_cmp_round_pd_mask, _mm512_mask_cmp_round_ps_mask, ++ _mm512_mask_cmp_pd_mask, _mm512_mask_cmp_ps_mask): Likewise. ++ * config/i386/avx512vlbwintrin.h (_mm256_mask_alignr_epi8, ++ _mm256_maskz_alignr_epi8, _mm_mask_alignr_epi8, _mm_maskz_alignr_epi8, ++ _mm256_mask_cmp_epu8_mask): Likewise. ++ * config/i386/avx512vlintrin.h (_mm_mask_cvtps_ph, _mm_maskz_cvtps_ph, ++ _mm256_mask_cvtps_ph, _mm256_maskz_cvtps_ph): Likewise. ++ * config/i386/f16cintrin.h (_mm_cvtps_ph, _mm256_cvtps_ph): Likewise. ++ * config/i386/shaintrin.h (_mm_sha1rnds4_epu32): Likewise. ++ ++2020-09-17 Jakub Jelinek ++ ++ Backported from master: ++ 2020-04-29 Jakub Jelinek ++ ++ PR target/94832 ++ * config/i386/avx2intrin.h (_mm_mask_i32gather_pd, ++ _mm256_mask_i32gather_pd, _mm_mask_i64gather_pd, ++ _mm256_mask_i64gather_pd, _mm_mask_i32gather_ps, ++ _mm256_mask_i32gather_ps, _mm_mask_i64gather_ps, ++ _mm256_mask_i64gather_ps, _mm_i32gather_epi64, ++ _mm_mask_i32gather_epi64, _mm256_i32gather_epi64, ++ _mm256_mask_i32gather_epi64, _mm_i64gather_epi64, ++ _mm_mask_i64gather_epi64, _mm256_i64gather_epi64, ++ _mm256_mask_i64gather_epi64, _mm_i32gather_epi32, ++ _mm_mask_i32gather_epi32, _mm256_i32gather_epi32, ++ _mm256_mask_i32gather_epi32, _mm_i64gather_epi32, ++ _mm_mask_i64gather_epi32, _mm256_i64gather_epi32, ++ _mm256_mask_i64gather_epi32): Surround macro parameter uses with ++ parens. ++ (_mm_i32gather_pd, _mm256_i32gather_pd, _mm_i64gather_pd, ++ _mm256_i64gather_pd, _mm_i32gather_ps, _mm256_i32gather_ps, ++ _mm_i64gather_ps, _mm256_i64gather_ps): Likewise. Don't use ++ as mask vector containing -1.0 or -1.0f elts, but instead vector ++ with all bits set using _mm*_cmpeq_p? with zero operands. ++ * config/i386/avx512fintrin.h (_mm512_i32gather_ps, ++ _mm512_mask_i32gather_ps, _mm512_i32gather_pd, ++ _mm512_mask_i32gather_pd, _mm512_i64gather_ps, ++ _mm512_mask_i64gather_ps, _mm512_i64gather_pd, ++ _mm512_mask_i64gather_pd, _mm512_i32gather_epi32, ++ _mm512_mask_i32gather_epi32, _mm512_i32gather_epi64, ++ _mm512_mask_i32gather_epi64, _mm512_i64gather_epi32, ++ _mm512_mask_i64gather_epi32, _mm512_i64gather_epi64, ++ _mm512_mask_i64gather_epi64, _mm512_i32scatter_ps, ++ _mm512_mask_i32scatter_ps, _mm512_i32scatter_pd, ++ _mm512_mask_i32scatter_pd, _mm512_i64scatter_ps, ++ _mm512_mask_i64scatter_ps, _mm512_i64scatter_pd, ++ _mm512_mask_i64scatter_pd, _mm512_i32scatter_epi32, ++ _mm512_mask_i32scatter_epi32, _mm512_i32scatter_epi64, ++ _mm512_mask_i32scatter_epi64, _mm512_i64scatter_epi32, ++ _mm512_mask_i64scatter_epi32, _mm512_i64scatter_epi64, ++ _mm512_mask_i64scatter_epi64): Surround macro parameter uses with ++ parens. ++ * config/i386/avx512pfintrin.h (_mm512_prefetch_i32gather_pd, ++ _mm512_prefetch_i32gather_ps, _mm512_mask_prefetch_i32gather_pd, ++ _mm512_mask_prefetch_i32gather_ps, _mm512_prefetch_i64gather_pd, ++ _mm512_prefetch_i64gather_ps, _mm512_mask_prefetch_i64gather_pd, ++ _mm512_mask_prefetch_i64gather_ps, _mm512_prefetch_i32scatter_pd, ++ _mm512_prefetch_i32scatter_ps, _mm512_mask_prefetch_i32scatter_pd, ++ _mm512_mask_prefetch_i32scatter_ps, _mm512_prefetch_i64scatter_pd, ++ _mm512_prefetch_i64scatter_ps, _mm512_mask_prefetch_i64scatter_pd, ++ _mm512_mask_prefetch_i64scatter_ps): Likewise. ++ * config/i386/avx512vlintrin.h (_mm256_mmask_i32gather_ps, ++ _mm_mmask_i32gather_ps, _mm256_mmask_i32gather_pd, ++ _mm_mmask_i32gather_pd, _mm256_mmask_i64gather_ps, ++ _mm_mmask_i64gather_ps, _mm256_mmask_i64gather_pd, ++ _mm_mmask_i64gather_pd, _mm256_mmask_i32gather_epi32, ++ _mm_mmask_i32gather_epi32, _mm256_mmask_i32gather_epi64, ++ _mm_mmask_i32gather_epi64, _mm256_mmask_i64gather_epi32, ++ _mm_mmask_i64gather_epi32, _mm256_mmask_i64gather_epi64, ++ _mm_mmask_i64gather_epi64, _mm256_i32scatter_ps, ++ _mm256_mask_i32scatter_ps, _mm_i32scatter_ps, _mm_mask_i32scatter_ps, ++ _mm256_i32scatter_pd, _mm256_mask_i32scatter_pd, _mm_i32scatter_pd, ++ _mm_mask_i32scatter_pd, _mm256_i64scatter_ps, ++ _mm256_mask_i64scatter_ps, _mm_i64scatter_ps, _mm_mask_i64scatter_ps, ++ _mm256_i64scatter_pd, _mm256_mask_i64scatter_pd, _mm_i64scatter_pd, ++ _mm_mask_i64scatter_pd, _mm256_i32scatter_epi32, ++ _mm256_mask_i32scatter_epi32, _mm_i32scatter_epi32, ++ _mm_mask_i32scatter_epi32, _mm256_i32scatter_epi64, ++ _mm256_mask_i32scatter_epi64, _mm_i32scatter_epi64, ++ _mm_mask_i32scatter_epi64, _mm256_i64scatter_epi32, ++ _mm256_mask_i64scatter_epi32, _mm_i64scatter_epi32, ++ _mm_mask_i64scatter_epi32, _mm256_i64scatter_epi64, ++ _mm256_mask_i64scatter_epi64, _mm_i64scatter_epi64, ++ _mm_mask_i64scatter_epi64): Likewise. ++ ++2020-09-17 Jakub Jelinek ++ ++ Backported from master: ++ 2020-04-29 Jakub Jelinek ++ ++ PR target/94826 ++ * config/rs6000/rs6000.c (rs6000_atomic_assign_expand_fenv): Use ++ TARGET_EXPR instead of MODIFY_EXPR for first assignment to ++ fenv_var, fenv_clear and old_fenv variables. For fenv_addr ++ take address of TARGET_EXPR of fenv_var with void_node initializer. ++ Formatting fixes. ++ ++2020-09-17 Haijian Zhang ++ ++ Backported from master: ++ 2020-04-29 Haijian Zhang ++ ++ PR target/94820 ++ * config/aarch64/aarch64-builtins.c ++ (aarch64_atomic_assign_expand_fenv): Use TARGET_EXPR instead of ++ MODIFY_EXPR for first assignment to fenv_cr, fenv_sr and ++ new_fenv_var. ++ ++2020-09-17 Jakub Jelinek ++ ++ Backported from master: ++ 2020-04-28 Jakub Jelinek ++ ++ PR tree-optimization/94809 ++ * tree.c (build_call_expr_internal_loc_array): Call ++ process_call_operands. ++ ++2020-09-17 Jakub Jelinek ++ ++ Backported from master: ++ 2020-04-27 Jakub Jelinek ++ ++ PR target/94780 ++ * config/i386/i386.c (ix86_atomic_assign_expand_fenv): Use ++ TARGET_EXPR instead of MODIFY_EXPR for first assignment to ++ sw_var, exceptions_var, mxcsr_orig_var and mxcsr_mod_var. ++ ++2020-09-17 Jakub Jelinek ++ ++ Backported from master: ++ 2020-04-23 Jakub Jelinek ++ ++ PR target/94710 ++ * optabs.c (expand_vec_perm_const): For shift_amt const0_rtx ++ just return v2. ++ ++2020-09-17 Jakub Jelinek ++ ++ Backported from master: ++ 2020-04-23 Jakub Jelinek ++ ++ PR c/94705 ++ * attribs.c (decl_attribute): Don't diagnose attribute exclusions ++ if last_decl is error_mark_node or has such a TREE_TYPE. ++ ++2020-09-17 Jakub Jelinek ++ ++ Backported from master: ++ 2020-04-21 Jakub Jelinek ++ ++ PR c/94641 ++ * stor-layout.c (place_field, finalize_record_size): Don't emit ++ -Wpadded warning on TYPE_ARTIFICIAL rli->t. ++ * ubsan.c (ubsan_get_type_descriptor_type, ++ ubsan_get_source_location_type, ubsan_create_data): Set ++ TYPE_ARTIFICIAL. ++ * asan.c (asan_global_struct): Likewise. ++ ++2020-09-17 Jakub Jelinek ++ ++ Backported from master: ++ 2020-04-17 Jakub Jelinek ++ ++ PR rtl-optimization/94618 ++ * cfgrtl.c (delete_insn_and_edges): Set purge not just when ++ insn is the BB_END of its block, but also when it is only followed ++ by DEBUG_INSNs in its block. ++ ++2020-09-17 Jakub Jelinek ++ ++ Backported from master: ++ 2020-04-08 Jakub Jelinek ++ ++ PR tree-optimization/94524 ++ * tree-vect-generic.c (expand_vector_divmod): If any elt of op1 is ++ negative for signed TRUNC_MOD_EXPR, multiply with absolute value of ++ op1 rather than op1 itself at the end. Punt for signed modulo by ++ most negative constant. ++ * tree-vect-patterns.c (vect_recog_divmod_pattern): Punt for signed ++ modulo by most negative constant. ++ ++2020-09-17 Jakub Jelinek ++ ++ Backported from master: ++ 2020-04-08 Jakub Jelinek ++ ++ PR target/94438 ++ * config/i386/i386.c (ix86_get_mask_mode): Only use int mask for elem_size ++ 1, 2, 4 and 8. ++ ++2020-09-17 Jakub Jelinek ++ ++ Backported from master: ++ 2020-04-07 Jakub Jelinek ++ ++ PR target/94509 ++ * config/i386/i386.c (expand_vec_perm_pshufb): Fix the check ++ for inter-lane permutation for 64-byte modes. ++ ++2020-09-17 Jakub Jelinek ++ ++ Backported from master: ++ 2020-04-07 Jakub Jelinek ++ ++ PR target/94488 ++ * config/aarch64/aarch64-simd.md (ashl3, lshr3, ++ ashr3): Force operands[2] into reg whenever it is not CONST_INT. ++ Assume it is a REG after that instead of testing it and doing FAIL ++ otherwise. Formatting fix. ++ ++2020-09-17 Jakub Jelinek ++ ++ Backported from master: ++ 2020-04-07 Hannes Domani ++ Jakub Jelinek ++ ++ PR debug/94459 ++ * dwarf2out.c (gen_subprogram_die): Look through references, pointers, ++ arrays, pointer-to-members, function types and qualifiers when ++ checking if in-class DIE had an 'auto' or 'decltype(auto)' return type ++ to emit type again on definition. ++ ++2020-09-17 Jakub Jelinek ++ ++ Backported from master: ++ 2020-04-07 Jakub Jelinek ++ ++ PR target/94460 ++ * config/i386/sse.md (avx2_phwv16hi3, ++ avx2_phdv8si3): Fix up RTL pattern to do ++ second half of first lane from first lane of second operand and ++ first half of second lane from second lane of first operand. ++ ++2020-09-17 Jakub Jelinek ++ ++ Backported from master: ++ 2020-04-07 Jakub Jelinek ++ ++ PR middle-end/94423 ++ * tree-object-size.c (pass_object_sizes::execute): Don't call ++ replace_uses_by for SSA_NAME_OCCURS_IN_ABNORMAL_PHI lhs, instead ++ call replace_call_with_value. ++ ++2020-09-17 Jakub Jelinek ++ ++ Backported from master: ++ 2020-04-07 Marc Glisse ++ Jakub Jelinek ++ ++ PR middle-end/94412 ++ * fold-const.c (fold_binary_loc) : Use ++ ANY_INTEGRAL_TYPE_P instead of INTEGRAL_TYPE_P. ++ ++2020-09-17 Jakub Jelinek ++ ++ Backported from master: ++ 2020-04-07 Jakub Jelinek ++ ++ PR target/93069 ++ * config/i386/sse.md (vec_extract_lo_): Use ++ instead of m in output operand constraint. ++ (vec_extract_hi_): Use instead of ++ %{%3%}. ++ ++2020-09-17 Jakub Jelinek ++ ++ Backported from master: ++ 2020-04-07 Jakub Jelinek ++ ++ PR tree-optimization/94329 ++ * tree-ssa-reassoc.c (reassociate_bb): When calling reassoc_remove_stmt ++ on the last stmt in a bb, make sure gsi_prev isn't done immediately ++ after gsi_last_bb. ++ ++2020-09-17 Jakub Jelinek ++ ++ Backported from master: ++ 2020-04-07 Jakub Jelinek ++ ++ PR middle-end/94303 ++ * varasm.c (output_constructor_array_range): If local->index ++ RANGE_EXPR doesn't start at the current location in the constructor, ++ skip needed number of bytes using assemble_zeros or assert we don't ++ go backwards. ++ ++2020-09-17 Jakub Jelinek ++ ++ Backported from master: ++ 2020-04-07 Richard Biener ++ Jakub Jelinek ++ ++ PR debug/94283 ++ * tree-if-conv.c (ifcvt_local_dce): Delete dead statements backwards. ++ ++2020-09-17 Jakub Jelinek ++ ++ Backported from master: ++ 2020-04-07 Jakub Jelinek ++ ++ PR debug/94283 ++ * tree-if-conv.c (ifcvt_local_dce): For gimple debug stmts, just set ++ GF_PLF_2, but don't add them to worklist. Don't add an assigment to ++ worklist or set GF_PLF_2 just because it is used in a debug stmt in ++ another bb. Formatting improvements. ++ ++2020-09-17 Jakub Jelinek ++ ++ Backported from master: ++ 2020-04-07 Jakub Jelinek ++ ++ PR tree-optimization/94211 ++ * tree-ssa-phiopt.c (value_replacement): Use estimate_num_insns_seq ++ instead of estimate_num_insns for bb_seq (middle_bb). Rename ++ emtpy_or_with_defined_p variable to empty_or_with_defined_p, adjust ++ all uses. ++ ++2020-09-17 Jakub Jelinek ++ ++ Backported from master: ++ 2020-03-17 Jakub Jelinek ++ ++ PR debug/94167 ++ * tree-inline.c (insert_init_stmt): Don't gimple_regimplify_operands ++ DEBUG_STMTs. ++ ++2020-09-17 Jakub Jelinek ++ ++ Backported from master: ++ 2020-03-17 Jakub Jelinek ++ ++ PR middle-end/93566 ++ * tree-nested.c (convert_nonlocal_omp_clauses, ++ convert_local_omp_clauses): Handle {,in_,task_}reduction clauses ++ with C/C++ array sections. ++ ++2020-09-17 Jakub Jelinek ++ ++ Backported from master: ++ 2020-03-17 Jakub Jelinek ++ ++ PR target/94121 ++ * config/aarch64/aarch64.c (aarch64_add_offset_1): Use gen_int_mode ++ instead of GEN_INT. ++ ++2020-09-17 Jakub Jelinek ++ ++ Backported from master: ++ 2020-03-17 Jakub Jelinek ++ ++ * doc/tm.texi.in (ASM_OUTPUT_ALIGNED_DECL_LOCAL): Change ++ ASM_OUTPUT_ALIGNED_DECL in description to ASM_OUTPUT_ALIGNED_LOCAL ++ and ASM_OUTPUT_DECL to ASM_OUTPUT_LOCAL. ++ * doc/tm.texi: Regenerated. ++ ++2020-09-17 Jakub Jelinek ++ ++ Backported from master: ++ 2020-03-17 Jakub Jelinek ++ ++ PR tree-optimization/94130 ++ * tree-ssa-dse.c: Include gimplify.h. ++ (increment_start_addr): If stmt has lhs, drop the lhs from call and ++ set it after the call to the original value of the first argument. ++ Formatting fixes. ++ (decrement_count): Formatting fix. ++ ++2020-09-17 Jakub Jelinek ++ ++ Backported from master: ++ 2020-03-17 Jakub Jelinek ++ ++ PR target/94134 ++ * config/pdp11/pdp11.c (pdp11_asm_output_var): Call switch_to_section ++ at the start to switch to data section. Don't print extra newline if ++ .globl directive has not been emitted. ++ ++2020-09-17 Jakub Jelinek ++ ++ Backported from master: ++ 2020-03-17 Jakub Jelinek ++ ++ PR target/94121 ++ * config/aarch64/aarch64.c (aarch64_add_offset_1): Use absu_hwi ++ instead of abs_hwi, change moffset type to unsigned HOST_WIDE_INT. ++ ++2020-09-17 Jakub Jelinek ++ ++ Backported from master: ++ 2020-03-17 Jakub Jelinek ++ ++ PR middle-end/94111 ++ * dfp.c (decimal_to_binary): Only use decimal128ToString if from->cl ++ is rvc_normal, otherwise use real_to_decimal to print the number to ++ string. ++ ++2020-09-17 Jakub Jelinek ++ ++ Backported from master: ++ 2020-03-17 Jakub Jelinek ++ ++ PR tree-optimization/94114 ++ * tree-loop-distribution.c (generate_memset_builtin): Call ++ rewrite_to_non_trapping_overflow even on mem. ++ (generate_memcpy_builtin): Call rewrite_to_non_trapping_overflow even ++ on dest and src. ++ ++2020-09-17 Jakub Jelinek ++ ++ Backported from master: ++ 2020-03-17 Jakub Jelinek ++ ++ PR middle-end/93399 ++ * tree-pretty-print.h (pretty_print_string): Declare. ++ * tree-pretty-print.c (pretty_print_string): Remove forward ++ declaration, no longer static. Change nbytes parameter type ++ from unsigned to size_t. ++ * print-rtl.c (print_value) : Use ++ pretty_print_string and for shrink way too long strings. ++ ++2020-09-17 Jakub Jelinek ++ ++ Backported from master: ++ 2020-03-17 Jakub Jelinek ++ ++ PR debug/93888 ++ * tree-inline.c (copy_decl_to_var): Copy DECL_BY_REFERENCE flag. ++ ++2020-09-17 Jakub Jelinek ++ ++ Backported from master: ++ 2020-03-05 Jakub Jelinek ++ ++ PR target/94046 ++ * config/i386/avx2intrin.h (_mm_mask_i32gather_ps): Fix first cast of ++ SRC and MASK arguments to __m128 from __m128d. ++ (_mm256_mask_i32gather_ps): Fix first cast of MASK argument to __m256 ++ from __m256d. ++ (_mm_mask_i64gather_ps): Fix first cast of MASK argument to __m128 ++ from __m128d. ++ * config/i386/xopintrin.h (_mm_permute2_pd): Fix first cast of C ++ argument to __m128i from __m128d. ++ (_mm256_permute2_pd): Fix first cast of C argument to __m256i from ++ __m256d. ++ (_mm_permute2_ps): Fix first cast of C argument to __m128i from __m128. ++ (_mm256_permute2_ps): Fix first cast of C argument to __m256i from ++ __m256. ++ ++2020-09-17 Jakub Jelinek ++ ++ Backported from master: ++ 2020-03-03 Jakub Jelinek ++ ++ PR rtl-optimization/94002 ++ * explow.c (plus_constant): Punt if cst has VOIDmode and ++ get_pool_mode is different from mode. ++ ++2020-09-16 Will Schmidt ++ ++ PR target/96139 ++ * config/rs6000/rs6000.c (rs6000_init_builtin): Update V2DI_type_node ++ and unsigned_V2DI_type_node definitions. ++ ++2020-09-16 Sylvia Taylor ++ ++ Backported from master: ++ 2019-08-22 Sylvia Taylor ++ ++ * config/aarch64/aarch64-simd-builtins.def: ++ (ld1x4): New. ++ (st1x4): Likewise. ++ * config/aarch64/aarch64-simd.md: ++ (aarch64_ld1x4): New pattern. ++ (aarch64_st1x4): Likewise. ++ (aarch64_ld1_x4_): Likewise. ++ (aarch64_st1_x4_): Likewise. ++ * config/aarch64/arm_neon.h: ++ (vld1_s8_x4): New function. ++ (vld1q_s8_x4): Likewise. ++ (vld1_s16_x4): Likewise. ++ (vld1q_s16_x4): Likewise. ++ (vld1_s32_x4): Likewise. ++ (vld1q_s32_x4): Likewise. ++ (vld1_u8_x4): Likewise. ++ (vld1q_u8_x4): Likewise. ++ (vld1_u16_x4): Likewise. ++ (vld1q_u16_x4): Likewise. ++ (vld1_u32_x4): Likewise. ++ (vld1q_u32_x4): Likewise. ++ (vld1_f16_x4): Likewise. ++ (vld1q_f16_x4): Likewise. ++ (vld1_f32_x4): Likewise. ++ (vld1q_f32_x4): Likewise. ++ (vld1_p8_x4): Likewise. ++ (vld1q_p8_x4): Likewise. ++ (vld1_p16_x4): Likewise. ++ (vld1q_p16_x4): Likewise. ++ (vld1_s64_x4): Likewise. ++ (vld1_u64_x4): Likewise. ++ (vld1_p64_x4): Likewise. ++ (vld1q_s64_x4): Likewise. ++ (vld1q_u64_x4): Likewise. ++ (vld1q_p64_x4): Likewise. ++ (vld1_f64_x4): Likewise. ++ (vld1q_f64_x4): Likewise. ++ (vst1_s8_x4): Likewise. ++ (vst1q_s8_x4): Likewise. ++ (vst1_s16_x4): Likewise. ++ (vst1q_s16_x4): Likewise. ++ (vst1_s32_x4): Likewise. ++ (vst1q_s32_x4): Likewise. ++ (vst1_u8_x4): Likewise. ++ (vst1q_u8_x4): Likewise. ++ (vst1_u16_x4): Likewise. ++ (vst1q_u16_x4): Likewise. ++ (vst1_u32_x4): Likewise. ++ (vst1q_u32_x4): Likewise. ++ (vst1_f16_x4): Likewise. ++ (vst1q_f16_x4): Likewise. ++ (vst1_f32_x4): Likewise. ++ (vst1q_f32_x4): Likewise. ++ (vst1_p8_x4): Likewise. ++ (vst1q_p8_x4): Likewise. ++ (vst1_p16_x4): Likewise. ++ (vst1q_p16_x4): Likewise. ++ (vst1_s64_x4): Likewise. ++ (vst1_u64_x4): Likewise. ++ (vst1_p64_x4): Likewise. ++ (vst1q_s64_x4): Likewise. ++ (vst1q_u64_x4): Likewise. ++ (vst1q_p64_x4): Likewise. ++ (vst1_f64_x4): Likewise. ++ (vst1q_f64_x4): Likewise. ++ ++2020-09-16 Sameera Deshpande ++ ++ Backported from master: ++ 2018-05-31 Sameera Deshpande ++ ++ * config/aarch64/aarch64-simd-builtins.def (ld1x3): New. ++ (st1x2): Likewise. ++ (st1x3): Likewise. ++ * config/aarch64/aarch64-simd.md ++ (aarch64_ld1x3): New pattern. ++ (aarch64_ld1_x3_): Likewise ++ (aarch64_st1x2): Likewise ++ (aarch64_st1_x2_): Likewise ++ (aarch64_st1x3): Likewise ++ (aarch64_st1_x3_): Likewise ++ * config/aarch64/arm_neon.h (vld1_u8_x3): New function. ++ (vld1_s8_x3): Likewise. ++ (vld1_u16_x3): Likewise. ++ (vld1_s16_x3): Likewise. ++ (vld1_u32_x3): Likewise. ++ (vld1_s32_x3): Likewise. ++ (vld1_u64_x3): Likewise. ++ (vld1_s64_x3): Likewise. ++ (vld1_f16_x3): Likewise. ++ (vld1_f32_x3): Likewise. ++ (vld1_f64_x3): Likewise. ++ (vld1_p8_x3): Likewise. ++ (vld1_p16_x3): Likewise. ++ (vld1_p64_x3): Likewise. ++ (vld1q_u8_x3): Likewise. ++ (vld1q_s8_x3): Likewise. ++ (vld1q_u16_x3): Likewise. ++ (vld1q_s16_x3): Likewise. ++ (vld1q_u32_x3): Likewise. ++ (vld1q_s32_x3): Likewise. ++ (vld1q_u64_x3): Likewise. ++ (vld1q_s64_x3): Likewise. ++ (vld1q_f16_x3): Likewise. ++ (vld1q_f32_x3): Likewise. ++ (vld1q_f64_x3): Likewise. ++ (vld1q_p8_x3): Likewise. ++ (vld1q_p16_x3): Likewise. ++ (vld1q_p64_x3): Likewise. ++ (vst1_s64_x2): Likewise. ++ (vst1_u64_x2): Likewise. ++ (vst1_f64_x2): Likewise. ++ (vst1_s8_x2): Likewise. ++ (vst1_p8_x2): Likewise. ++ (vst1_s16_x2): Likewise. ++ (vst1_p16_x2): Likewise. ++ (vst1_s32_x2): Likewise. ++ (vst1_u8_x2): Likewise. ++ (vst1_u16_x2): Likewise. ++ (vst1_u32_x2): Likewise. ++ (vst1_f16_x2): Likewise. ++ (vst1_f32_x2): Likewise. ++ (vst1_p64_x2): Likewise. ++ (vst1q_s8_x2): Likewise. ++ (vst1q_p8_x2): Likewise. ++ (vst1q_s16_x2): Likewise. ++ (vst1q_p16_x2): Likewise. ++ (vst1q_s32_x2): Likewise. ++ (vst1q_s64_x2): Likewise. ++ (vst1q_u8_x2): Likewise. ++ (vst1q_u16_x2): Likewise. ++ (vst1q_u32_x2): Likewise. ++ (vst1q_u64_x2): Likewise. ++ (vst1q_f16_x2): Likewise. ++ (vst1q_f32_x2): Likewise. ++ (vst1q_f64_x2): Likewise. ++ (vst1q_p64_x2): Likewise. ++ (vst1_s64_x3): Likewise. ++ (vst1_u64_x3): Likewise. ++ (vst1_f64_x3): Likewise. ++ (vst1_s8_x3): Likewise. ++ (vst1_p8_x3): Likewise. ++ (vst1_s16_x3): Likewise. ++ (vst1_p16_x3): Likewise. ++ (vst1_s32_x3): Likewise. ++ (vst1_u8_x3): Likewise. ++ (vst1_u16_x3): Likewise. ++ (vst1_u32_x3): Likewise. ++ (vst1_f16_x3): Likewise. ++ (vst1_f32_x3): Likewise. ++ (vst1_p64_x3): Likewise. ++ (vst1q_s8_x3): Likewise. ++ (vst1q_p8_x3): Likewise. ++ (vst1q_s16_x3): Likewise. ++ (vst1q_p16_x3): Likewise. ++ (vst1q_s32_x3): Likewise. ++ (vst1q_s64_x3): Likewise. ++ (vst1q_u8_x3): Likewise. ++ (vst1q_u16_x3): Likewise. ++ (vst1q_u32_x3): Likewise. ++ (vst1q_u64_x3): Likewise. ++ (vst1q_f16_x3): Likewise. ++ (vst1q_f32_x3): Likewise. ++ (vst1q_f64_x3): Likewise. ++ (vst1q_p64_x3): Likewise. ++ ++2020-08-21 Richard Sandiford ++ ++ Backported from master: ++ 2020-08-21 Richard Sandiford ++ ++ * doc/extend.texi: Update links to Arm docs. ++ * doc/invoke.texi: Likewise. ++ ++2020-08-21 Tamar Christina ++ ++ Backported from master: ++ 2020-08-03 Tamar Christina ++ ++ * config/aarch64/driver-aarch64.c (readline): Check return value fgets. ++ ++2020-08-21 Tamar Christina ++ ++ Backported from master: ++ 2020-07-17 Tamar Christina ++ ++ * doc/sourcebuild.texi (dg-set-compiler-env-var, ++ dg-set-target-env-var): Document. ++ ++2020-08-21 Tamar Christina ++ ++ Backported from master: ++ 2020-07-17 Tamar Christina ++ ++ * config/arm/driver-arm.c (host_detect_local_cpu): Add GCC_CPUINFO. ++ ++2020-08-21 Tamar Christina ++ ++ Backported from master: ++ 2020-07-17 Tamar Christina ++ ++ * config/aarch64/driver-aarch64.c (host_detect_local_cpu): ++ Add GCC_CPUINFO. ++ ++2020-08-21 Tamar Christina ++ ++ Backported from master: ++ 2020-07-17 Tamar Christina ++ ++ * config/aarch64/driver-aarch64.c (INCLUDE_SET): New. ++ (parse_field): Use std::string. ++ (split_words, readline, find_field): New. ++ (host_detect_local_cpu): Fix truncation issues. ++ ++2020-08-18 Uroš Bizjak ++ ++ PR target/96536 ++ * config/i386/i386.md (restore_stack_nonlocal): ++ Add missing compare RTX. ++ ++2020-08-03 Jonathan Wakely ++ ++ Backported from master: ++ 2020-08-03 Jonathan Wakely ++ ++ * doc/cpp.texi (Variadic Macros): Use the exact ... token in ++ code examples. ++ ++2020-07-17 Will Schmidt ++ ++ PR target/95952 ++ * config/rs6000/rs6000.c (altivec_init_builtins): Add continue clause to ++ predicate builtin handling. ++ ++2020-07-16 Stefan Schulze Frielinghaus ++ ++ Backported from master: ++ 2020-06-16 Stefan Schulze Frielinghaus ++ ++ * config.in: Regenerate. ++ * config/s390/s390.c (print_operand): Emit vector alignment hints ++ for target z13, if AS accepts them. For other targets the logic ++ stays the same. ++ * config/s390/s390.h (TARGET_VECTOR_LOADSTORE_ALIGNMENT_HINTS): Define ++ macro. ++ * configure: Regenerate. ++ * configure.ac: Check HAVE_AS_VECTOR_LOADSTORE_ALIGNMENT_HINTS_ON_Z13. ++ ++2020-07-16 Andreas Krebbel ++ ++ Backported from master: ++ 2018-11-21 Andreas Krebbel ++ ++ * configure.ac: Add check for Binutils to determine whether vector ++ load/store alignments hints are being supported. ++ * config.in: Regenerate. ++ * configure: Regenerate. ++ * config/s390/s390.c (print_operand): Support new output ++ modifier A. ++ * config/s390/s390.md ("movti"): Append alignment hint output ++ using the new output modifier 'A'. ++ * config/s390/vector.md ("mov", "*vec_tf_to_v1tf") ++ ("*vec_ti_to_v1ti"): Likewise. ++ ++2020-07-13 Will Schmidt ++ ++ * config/rs6000/altivec.h (vec_vmsumudm): New define. ++ * config/rs6000/altivec.md (UNSPEC_VMSUMUDM): New unspec. ++ (altivec_vmsumudm): New define_insn. ++ * config/rs6000/rs6000-builtin.def (altivec_vmsumudm): New BU_ALTIVEC_3 ++ entry. (vmsumudm): New BU_ALTIVEC_OVERLOAD_3 entry. ++ * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add ++ entries for ALTIVEC_BUILTIN_VMSUMUDM variants of vec_msum. ++ * doc/extend.texi: Add document for vmsumudm behind vmsum. ++ ++2020-07-06 Will Schmidt ++ ++ * config/rs6000/altivec.h (vec_pack_to_short_fp32): Update. ++ * config/rs6000/altivec.md (UNSPEC_CONVERT_4F32_8F16): New unspec. ++ (convert_4f32_8f16): New define_expand ++ * config/rs6000/rs6000-builtin.def (convert_4f32_8f16): New builtin define ++ and overload. ++ * config/rs6000/rs6000-c.c (P9V_BUILTIN_VEC_CONVERT_4F32_8F16): New ++ overloaded builtin entry. ++ * config/rs6000/vsx.md (UNSPEC_VSX_XVCVSPHP): New unspec. ++ (vsx_xvcvsphp): New define_insn. ++ ++2020-06-30 Alex Coplan ++ ++ Backported from master: ++ 2020-05-18 Alex Coplan ++ ++ * config/arm/arm.c (output_move_double): Fix codegen when loading into ++ a register pair with an odd base register. ++ ++2020-06-25 H.J. Lu ++ ++ Backported from master: ++ 2020-06-25 H.J. Lu ++ ++ PR target/95874 ++ * config/i386/i386.c (PTA_ICELAKE_CLIENT): Remove PTA_CLWB. ++ (PTA_ICELAKE_SERVER): Add PTA_CLWB. ++ ++2020-06-20 Bin Cheng ++ ++ PR tree-optimization/94969 ++ * tree-data-ref.c (constant_access_functions): Rename to... ++ (invariant_access_functions): ...this. Add parameter. Check for ++ invariant access function, rather than constant. ++ (build_classic_dist_vector): Call above function. ++ * tree-loop-distribution.c (pg_add_dependence_edges): Add comment. ++ ++2020-06-17 Thomas Schwinge ++ ++ Backported from master: ++ 2020-06-17 Thomas Schwinge ++ ++ * hsa-gen.c (gen_hsa_insns_for_call): Move 'function_decl == ++ NULL_TREE' check earlier. ++ ++2020-06-12 Martin Liska ++ Jakub Jelinek ++ ++ PR sanitizer/95634 ++ * asan.c (asan_emit_stack_protection): Fix emission for ilp32 ++ by using Pmode instead of ptr_mode. ++ ++2020-06-12 Martin Liska ++ ++ PR sanitizer/94910 ++ * asan.c (asan_emit_stack_protection): Emit ++ also **SavedFlagPtr(FakeStack, class_id) = 0 in order to release ++ a stack frame. ++ ++2020-06-10 Carl Love ++ ++ PR target/94833 ++ * config/rs6000/vsx.md (define_expand): Fix instruction generation for ++ first_match_index_. ++ ++2020-06-05 H.J. Lu ++ ++ * config/i386/driver-i386.c (host_detect_local_cpu): Support ++ Intel Airmont, Comet Lake and Ice Lake processor families. ++ ++2020-06-02 Kyrylo Tkachov ++ ++ * config/aarch64/aarch64-cores.def (zeus): Define. ++ * config/aarch64/aarch64-tune.md: Regenerate. ++ * doc/invoke.texi (AArch64 Options): Document zeus -mcpu option. ++ ++2020-05-29 Alex Coplan ++ ++ PR target/94591 ++ * config/aarch64/aarch64.c (aarch64_evpc_rev_local): Don't match ++ identity permutation. ++ ++2020-05-29 Dong JianQiang ++ ++ PR gcov-profile/95332 ++ * gcov-io.c (gcov_var::endian): Move field. ++ (from_file): Add IN_GCOV_TOOL check. ++ * gcov-io.h (gcov_magic): Ditto. ++ ++2020-05-24 H.J. Lu ++ ++ PR target/95258 ++ * config/i386/driver-i386.c (host_detect_local_cpu): Detect ++ AVX512VPOPCNTDQ. ++ ++2020-05-21 Martin Liska ++ ++ * common/config/aarch64/aarch64-common.c (aarch64_handle_option): ++ Use MASK_OUTLINE_ATOMICS for x_target_flags. ++ ++2020-05-21 Martin Liska ++ ++ * common/config/aarch64/aarch64-common.c (aarch64_handle_option): ++ Handle OPT_moutline_atomics. ++ * config/aarch64/aarch64.c: Add outline-atomics to ++ aarch64_attributes. ++ * doc/extend.texi: Document the newly added target attribute. ++ ++2020-05-14 Szabolcs Nagy ++ ++ Backport from mainline. ++ 2020-04-27 Szabolcs Nagy ++ ++ PR target/94515 ++ * dwarf2cfi.c (struct GTY): Add ra_mangled. ++ (cfi_row_equal_p): Check ra_mangled. ++ (dwarf2out_frame_debug_cfa_window_save): Remove the argument, ++ this only handles the sparc logic now. ++ (dwarf2out_frame_debug_cfa_toggle_ra_mangle): New function for ++ the aarch64 specific logic. ++ (dwarf2out_frame_debug): Update to use the new subroutines. ++ (change_cfi_row): Check ra_mangled. ++ ++2020-05-12 David Edelsohn ++ ++ Backport from mainline ++ 2020-05-04 Clement Chigot ++ David Edelsohn ++ ++ * config/rs6000/rs6000.c (rs6000_init_builtins): Override explicit ++ for fmodl, frexpl, ldexpl and modfl builtins. ++ ++2020-05-07 Uroš Bizjak ++ ++ * config/alpha/alpha.c (alpha_atomic_assign_expand_fenv): Use ++ TARGET_EXPR instead of MODIFY_EXPR for the first assignments to ++ fenv_var and new_fenv_var. ++ ++2020-05-04 Bin Cheng ++ ++ PR tree-optimization/93674 ++ Backport from master ++ 2020-04-09 Bin Cheng ++ ++ * tree-ssa-loop-ivopts.c (langhooks.h): New include. ++ (add_iv_candidate_for_use): For iv_use of non integer or pointer type, ++ or non-mode precision type, add candidate in unsigned type with the ++ same precision. ++ ++2020-05-04 Andreas Krebbel ++ ++ Backport from mainline ++ 2020-04-20 Andreas Krebbel ++ ++ * config/s390/vector.md ("popcountv8hi2_vx", "popcountv4si2_vx") ++ ("popcountv2di2_vx"): Use simplify_gen_subreg. ++ ++2020-05-04 Andreas Krebbel ++ ++ Backport from mainline ++ 2020-04-20 Andreas Krebbel ++ ++ PR target/94613 ++ * config/s390/s390-builtin-types.def: Add 3 new function modes. ++ * config/s390/s390-builtins.def: Add mode dependent low-level ++ builtin and map the overloaded builtins to these. ++ * config/s390/vx-builtins.md ("vec_selV_HW"): Rename to ... ++ ("vsel ++ ++ Backport from mainline. ++ 2018-10-31 Richard Henderson ++ ++ * config/aarch64/aarch64.c (aarch64_hard_regno_mode_ok): Force ++ 16-byte modes held in GP registers to use an even regno. ++ ++2020-04-28 Andre Vieira ++ ++ PR target/94814 ++ Backport from gcc-9. ++ 2020-04-07 Kyrylo Tkachov ++ ++ PR target/94518 ++ 2019-09-23 Richard Sandiford ++ ++ * config/aarch64/atomics.md (aarch64_store_exclusive_pair): Fix ++ memmodel index. ++ ++2020-04-16 Andre Vieira ++ ++ Backport from mainline ++ 2019-08-21 Prathamesh Kulkarni ++ ++ PR target/90724 ++ * config/aarch64/aarch64.c (aarch64_gen_compare_reg_maybe_ze): Force y ++ in reg if it fails aarch64_plus_operand predicate. ++ ++2020-04-16 Andre Vieira ++ ++ Backport from mainline ++ 2020-04-02 Jakub Jelinek ++ ++ PR target/94435 ++ * config/aarch64/aarch64.c (aarch64_gen_compare_reg_maybe_ze): For ++ y_mode E_[QH]Imode and y being a CONST_INT, change y_mode to SImode. ++ ++2020-04-16 Andre Vieira ++ ++ Backport from mainline ++ 2020-03-31 Jakub Jelinek ++ ++ PR target/94368 ++ * config/aarch64/constraints.md (Uph): New constraint. ++ * config/aarch64/atomics.md (cas_short_expected_imm): New mode attr. ++ (aarch64_compare_and_swap): Use it instead of n in operand 2's ++ constraint. ++ ++2020-04-16 Andre Vieira ++ ++ Backport from mainline ++ 2019-09-19 Richard Henderson ++ ++ * config/aarch64/aarch64.opt (-moutline-atomics): New. ++ * config/aarch64/aarch64.c (aarch64_atomic_ool_func): New. ++ (aarch64_ool_cas_names, aarch64_ool_swp_names): New. ++ (aarch64_ool_ldadd_names, aarch64_ool_ldset_names): New. ++ (aarch64_ool_ldclr_names, aarch64_ool_ldeor_names): New. ++ (aarch64_expand_compare_and_swap): Honor TARGET_OUTLINE_ATOMICS. ++ * config/aarch64/atomics.md (atomic_exchange): Likewise. ++ (atomic_): Likewise. ++ (atomic_fetch_): Likewise. ++ (atomic__fetch): Likewise. ++ * doc/invoke.texi: Document -moutline-atomics. ++ ++2020-04-16 Andre Vieira ++ ++ Backport from mainline. ++ 2018-10-31 Richard Henderson ++ ++ * optabs-libfuncs.c (build_libfunc_function_visibility): ++ New, split out from... ++ (build_libfunc_function): ... here. ++ (init_one_libfunc_visibility): New, split out from ... ++ (init_one_libfunc): ... here. ++ ++2020-04-16 Andre Vieira ++ ++ Backport from mainline ++ 2019-09-19 Richard Henderson ++ ++ * config/aarch64/aarch64 (aarch64_split_compare_and_swap): Disable ++ strong_zero_p for aarch64_track_speculation; unify some code paths; ++ use aarch64_gen_compare_reg instead of open-coding. ++ ++2020-04-16 Andre Vieira ++ ++ Backport from mainline ++ 2020-01-17 Wilco Dijkstra ++ ++ PR target/92692 ++ * config/aarch64/atomics.md (aarch64_compare_and_swap) ++ Use epilogue_completed rather than reload_completed. ++ ++2020-04-16 Andre Vieira ++ ++ Backport from mainline ++ 2019-09-19 Richard Henderson ++ ++ * config/aarch64/aarch64.c (aarch64_gen_compare_reg): Add support ++ for NE comparison of TImode values. ++ (aarch64_emit_load_exclusive): Add support for TImode. ++ (aarch64_emit_store_exclusive): Likewise. ++ (aarch64_split_compare_and_swap): Disable strong_zero_p for TImode. ++ * config/aarch64/atomics.md (atomic_compare_and_swapti): ++ Change iterator from ALLI to ALLI_TI. ++ (atomic_compare_and_swapti): New. ++ (atomic_compare_and_swapti: New. ++ (aarch64_load_exclusive_pair): New. ++ (aarch64_store_exclusive_pair): New. ++ * config/aarch64/iterators.md (ALLI_TI): New iterator. ++ ++2020-04-16 Andre Vieira ++ ++ Backport from mainline. ++ 2019-09-19 Richard Henderson ++ ++ * config/aarch64/aarch64.c (aarch64_print_operand): Allow integer ++ registers with %R. ++ ++2020-04-16 Andre Vieira ++ ++ Backport from mainline. ++ 2018-10-31 Richard Henderson ++ ++ * config/aarch64/atomics.md (aarch64_atomic__lse): ++ scratch register need not be early-clobber. Document the reason ++ why we cannot use ST. ++ ++2020-04-16 Andre Vieira ++ ++ Backport from mainline. ++ 2018-10-31 Richard Henderson ++ ++ * config/aarch64/aarch64.c (aarch64_emit_bic): Remove. ++ (aarch64_atomic_ldop_supported_p): Remove. ++ (aarch64_gen_atomic_ldop): Remove. ++ * config/aarch64/atomic.md (atomic_): ++ Fully expand LSE operations here. ++ (atomic_fetch_): Likewise. ++ (atomic__fetch): Likewise. ++ (aarch64_atomic__lse): Drop atomic_op iterator ++ and use ATOMIC_LDOP instead; use register_operand for the input; ++ drop the split and emit insns directly. ++ (aarch64_atomic_fetch__lse): Likewise. ++ (aarch64_atomic__fetch_lse): Remove. ++ (aarch64_atomic_load): Remove. ++ ++2020-04-16 Andre Vieira ++ ++ Backport from mainline. ++ 2018-10-31 Richard Henderson ++ ++ * config/aarch64/aarch64.c (aarch64_emit_atomic_swap): Remove. ++ (aarch64_gen_atomic_ldop): Don't call it. ++ * config/aarch64/atomics.md (atomic_exchange): ++ Use aarch64_reg_or_zero. ++ (aarch64_atomic_exchange): Likewise. ++ (aarch64_atomic_exchange_lse): Remove split; remove & from ++ operand 0; use aarch64_reg_or_zero for input; merge ... ++ (aarch64_atomic_swp): ... this and remove. ++ ++2020-04-16 Andre Vieira ++ ++ Backport from mainline. ++ 2018-10-31 Richard Henderson ++ ++ * config/aarch64/aarch64.c (aarch64_gen_compare_reg_maybe_ze): New. ++ (aarch64_split_compare_and_swap): Use it. ++ (aarch64_expand_compare_and_swap): Likewise. Remove convert_modes; ++ test oldval against the proper predicate. ++ * config/aarch64/atomics.md (atomic_compare_and_swap): ++ Use nonmemory_operand for expected. ++ (cas_short_expected_pred): New. ++ (aarch64_compare_and_swap): Use it; use "rn" not "rI" to match. ++ (aarch64_compare_and_swap): Use "rn" not "rI" for expected. ++ * config/aarch64/predicates.md (aarch64_plushi_immediate): New. ++ (aarch64_plushi_operand): New. ++ ++2020-04-16 Andre Vieira ++ ++ Backport from mainline. ++ 2018-10-31 Richard Henderson ++ ++ * config/aarch64/aarch64.c (aarch64_expand_compare_and_swap): ++ Force oldval into the rval register for TARGET_LSE; emit the compare ++ during initial expansion so that it may be deleted if unused. ++ (aarch64_gen_atomic_cas): Remove. ++ * config/aarch64/atomics.md (aarch64_compare_and_swap_lse): ++ Change =&r to +r for operand 0; use match_dup for operand 2; ++ remove is_weak and mod_f operands as unused. Drop the split ++ and merge with... ++ (aarch64_atomic_cas): ... this pattern's output; remove. ++ (aarch64_compare_and_swap_lse): Similarly. ++ (aarch64_atomic_cas): Similarly. ++ ++2020-04-16 Andre Vieira ++ ++ Backport from mainline. ++ 2018-07-16 Ramana Radhakrishnan ++ ++ * config/aarch64/atomics.md (aarch64_store_execlusive): Add ++ early clobber. ++ ++2020-04-21 Martin Jambor ++ ++ Backport from master ++ 2020-04-09 Martin Jambor ++ Richard Biener ++ ++ PR tree-optimization/94482 ++ * tree-sra.c (create_access_replacement): Dump new replacement with ++ TDF_UID. ++ (sra_modify_expr): Fix handling of cases when the original EXPR writes ++ to only part of the replacement. ++ * tree-ssa-forwprop.c (pass_forwprop::execute): Properly verify ++ the first operand of combinations into REAL/IMAGPART_EXPR and ++ BIT_FIELD_REF. ++ ++2020-04-20 H.J. Lu ++ ++ Backport from master ++ 2020-04-13 H.J. Lu ++ ++ PR target/94556 ++ * config/i386/i386.c (ix86_expand_epilogue): Restore the frame ++ pointer in word_mode for eh_return epilogues. ++ ++2020-04-20 Tamar Christina ++ ++ Backport from mainline. ++ 2020-04-03 Tamar Christina ++ ++ PR target/94396 ++ * common/config/aarch64/aarch64-common.c ++ (aarch64_get_extension_string_for_isa_flags): Handle default flags. ++ ++2020-04-17 H.J. Lu ++ ++ Backport from master ++ 2020-04-08 H.J. Lu ++ ++ PR target/94417 ++ * config/i386/i386.c (rest_of_insert_endbranch): Insert ENDBR at ++ function entry if function will be called indirectly. ++ ++ ++2020-04-15 Uroš Bizjak ++ ++ PR target/94603 ++ * config/i386/i386-builtin.def (__builtin_ia32_movq128): ++ Require OPTION_MASK_ISA_SSE2. ++ ++2020-04-15 Max Filippov ++ ++ Backport from mainline. ++ 2020-04-14 Max Filippov ++ ++ PR target/94584 ++ * config/xtensa/xtensa.md (zero_extendhisi2, zero_extendqisi2) ++ (extendhisi2_internal): Add %v1 before the load instructions. ++ ++2020-04-15 Max Filippov ++ ++ Backport from mainline. ++ 2019-09-26 Max Filippov ++ ++ * config/xtensa/xtensa.c (hwloop_optimize): Insert zero overhead ++ loop instruction into new basic block before the loop when basic ++ block that precedes the loop is empty. ++ ++2020-04-07 Will Schmidt ++ ++ Backport from mainline. ++ 2020-03-23 Will Schmidt ++ ++ * config/rs6000/rs6000-call.c altivec_init_builtins(): Remove ++ code to skip defining builtins based on builtin_mask. ++ ++2020-04-07 Jakub Jelinek ++ ++ PR target/94500 ++ * config/i386/i386.c (emit_reduc_half): For V{64QI,32HI}mode ++ handle i < 64 using avx512bw_lshrv4ti3. Formatting fixes. ++ ++2020-04-03 Martin Jambor ++ ++ PR tree-optimization/93435 ++ * params.def (PARAM_SRA_MAX_PROPAGATIONS): New parameter. ++ * tree-sra.c (propagation_budget): New variable. ++ (budget_for_propagation_access): New function. ++ (propagate_subaccesses_across_link): Use it. ++ (propagate_all_subaccesses): Set up and destroy propagation_budget. ++ * doc/invoke.texi (sra-max-propagations): New. ++ ++2020-04-03 Martin Liska ++ ++ Backport from mainline ++ 2020-04-03 Martin Liska ++ ++ PR ipa/94445 ++ * ipa-icf-gimple.c (func_checker::compare_gimple_call): ++ Compare type attributes for gimple_call_fntypes. ++ ++2020-04-02 Fritz Reese ++ ++ Backport from master. ++ 2020-04-02 Fritz Reese ++ ++ PR fortran/85982 ++ * fortran/decl.c (match_attr_spec): Lump COMP_STRUCTURE/COMP_MAP into ++ attribute checking used by TYPE. ++ ++2020-03-31 Carl Love ++ ++ Backport of: ++ commit e97929e20b2f52e6cfc046c1302324d1b24d95e3 ++ Author: Carl Love ++ Date: Wed Mar 25 18:33:37 2020 -0500 ++ ++ PR target/93819 ++ * gcc/config/rs6000/altivec.h: ++ Fixed swapped arguments for vec_rlnm define. ++ ++2020-03-31 Carl Love ++ ++ backport of mainline commit ++ ++ commit 68dd57808f7c0147acdb5ca72c88ff655afcb0ce ++ Author: Carl Love ++ Date: Fri Mar 20 18:15:05 2020 -0500 ++ ++ whith change log typo fixed. ++ ++ PR target/87583 ++ * gcc/config/rs6000/rs6000.c (rs6000_option_override_internal): ++ Add check for TARGET_FPRND for Power 7 or newer. ++ ++2020-03-29 Martin Liska ++ ++ Backport from mainline ++ 2019-09-02 Martin Liska ++ ++ PR gcov-profile/91601 ++ * gcov.c (path_contains_zero_cycle_arc): Rename to ... ++ (path_contains_zero_or_negative_cycle_arc): ... this and handle ++ also negative edges. ++ (circuit): Handle also negative edges as they can happen ++ in some situations. ++ ++2020-03-29 Iain Sandoe ++ ++ Backport from master. ++ 2018-08-22 Iain Sandoe ++ ++ * config/i386/i386.c (ix86_output_addr_diff_elt): Move the MACH-O ++ specific test before the one for HAVE_AS_GOTOFF_IN_DATA. ++ ++ Backport from master. ++ 2020-03-22 Iain Sandoe ++ ++ * config/i386/darwin.h (JUMP_TABLES_IN_TEXT_SECTION): Remove ++ references to Darwin. ++ * config/i386/i386.h (JUMP_TABLES_IN_TEXT_SECTION): Define this ++ unconditionally and comment on why. ++ ++2020-03-24 John David Anglin ++ ++ PR lto/94249 ++ * config/pa/pa.h (TARGET_CPU_CPP_BUILTINS): Define __BIG_ENDIAN__. ++ ++2020-03-24 Tamar Christina ++ ++ PR target/94052 ++ * config/aarch64/aarch64-simd.md (mov): Remove paradoxical ++ subregs of VSTRUCT modes. ++ ++2020-03-19 Jonathan Wakely ++ ++ Backport from mainline ++ 2020-01-13 Jonathan Wakely ++ ++ PR driver/92757 ++ * doc/invoke.texi (Warning Options): Add caveat about some warnings ++ depending on optimization settings. ++ ++2020-03-13 Richard Biener ++ ++ PR tree-optimization/94163 ++ * tree-ssa-pre.c (create_expression_by_pieces): Check ++ whether alignment would be zero. ++ ++2020-03-13 Eric Botcazou ++ ++ PR rtl-optimization/94119 ++ * resource.h (clear_hashed_info_until_next_barrier): Declare. ++ * resource.c (clear_hashed_info_until_next_barrier): New function. ++ * reorg.c (add_to_delay_list): Fix formatting. ++ (relax_delay_slots): Call clear_hashed_info_until_next_barrier on ++ the next instruction after removing a BARRIER. ++ ++2020-03-12 Richard Earnshaw ++ ++ Backport from master ++ 2020-02-10 Richard Earnshaw ++ ++ PR target/91913 ++ * config/arm/arm.md (movsi_compare0): Allow SP as a source register ++ in Thumb state and also as a destination in Arm state. Add T16 ++ variants. ++ ++2020-02-27 Jakub Jelinek ++ ++ PR c/93949 ++ * gimplify.c (gimplify_init_constructor): Don't promote readonly ++ DECL_REGISTER variables to TREE_STATIC. ++ ++2020-03-04 Jakub Jelinek ++ ++ * BASE-VER: Set to 8.4.1. ++ + 2020-03-04 Release Manager + + * GCC 8.4.0 released. +--- a/src/gcc/DATESTAMP ++++ b/src/gcc/DATESTAMP +@@ -1 +1 @@ +-20200304 ++20201125 +--- a/src/gcc/ada/ChangeLog ++++ b/src/gcc/ada/ChangeLog +@@ -1,3 +1,13 @@ ++2020-06-23 Eric Botcazou ++ ++ * gcc-interface/trans.c (gnat_to_gnu) : Minor tweaks. ++ Call Has_Constrained_Partial_View on base type of designated type. ++ ++2020-05-04 Mikael Pettersson ++ ++ PR bootstrap/94918 ++ * mingw32.h: Prevent windows.h from including emmintrin.h on Cygwin64. ++ + 2020-03-04 Release Manager + + * GCC 8.4.0 released. +--- a/src/gcc/ada/gcc-interface/trans.c ++++ b/src/gcc/ada/gcc-interface/trans.c +@@ -6840,9 +6840,8 @@ gnat_to_gnu (Node_Id gnat_node) + + case N_Allocator: + { +- tree gnu_init = NULL_TREE; +- tree gnu_type; +- bool ignore_init_type = false; ++ tree gnu_type, gnu_init; ++ bool ignore_init_type; + + gnat_temp = Expression (gnat_node); + +@@ -6852,15 +6851,22 @@ gnat_to_gnu (Node_Id gnat_node) + initial value for the object. */ + if (Nkind (gnat_temp) == N_Identifier + || Nkind (gnat_temp) == N_Expanded_Name) +- gnu_type = gnat_to_gnu_type (Entity (gnat_temp)); ++ { ++ ignore_init_type = false; ++ gnu_init = NULL_TREE; ++ gnu_type = gnat_to_gnu_type (Entity (gnat_temp)); ++ } ++ + else if (Nkind (gnat_temp) == N_Qualified_Expression) + { + Entity_Id gnat_desig_type + = Designated_Type (Underlying_Type (Etype (gnat_node))); + +- ignore_init_type = Has_Constrained_Partial_View (gnat_desig_type); +- gnu_init = gnat_to_gnu (Expression (gnat_temp)); ++ /* The flag is effectively only set on the base types. */ ++ ignore_init_type ++ = Has_Constrained_Partial_View (Base_Type (gnat_desig_type)); + ++ gnu_init = gnat_to_gnu (Expression (gnat_temp)); + gnu_init = maybe_unconstrained_array (gnu_init); + if (Do_Range_Check (Expression (gnat_temp))) + gnu_init +--- a/src/gcc/ada/mingw32.h ++++ b/src/gcc/ada/mingw32.h +@@ -56,6 +56,7 @@ + /* Note: windows.h on cygwin-64 includes x86intrin.h which uses malloc. + That fails to compile, if malloc is poisoned, i.e. if !IN_RTS. */ + #define _X86INTRIN_H_INCLUDED ++#define _EMMINTRIN_H_INCLUDED + #endif + #include + +--- a/src/gcc/asan.c ++++ b/src/gcc/asan.c +@@ -1465,8 +1465,25 @@ asan_emit_stack_protection (rtx base, rtx pbase, unsigned int alignb, + if (use_after_return_class < 5 + && can_store_by_pieces (sz, builtin_memset_read_str, &c, + BITS_PER_UNIT, true)) +- store_by_pieces (shadow_mem, sz, builtin_memset_read_str, &c, +- BITS_PER_UNIT, true, 0); ++ { ++ /* Emit: ++ memset(ShadowBase, kAsanStackAfterReturnMagic, ShadowSize); ++ **SavedFlagPtr(FakeStack, class_id) = 0 ++ */ ++ store_by_pieces (shadow_mem, sz, builtin_memset_read_str, &c, ++ BITS_PER_UNIT, true, 0); ++ ++ unsigned HOST_WIDE_INT offset ++ = (1 << (use_after_return_class + 6)); ++ offset -= GET_MODE_SIZE (ptr_mode); ++ mem = gen_rtx_MEM (ptr_mode, base); ++ mem = adjust_address (mem, ptr_mode, offset); ++ rtx addr = gen_reg_rtx (ptr_mode); ++ emit_move_insn (addr, mem); ++ addr = convert_memory_address (Pmode, addr); ++ mem = gen_rtx_MEM (QImode, addr); ++ emit_move_insn (mem, const0_rtx); ++ } + else if (use_after_return_class >= 5 + || !set_storage_via_setmem (shadow_mem, + GEN_INT (sz), +@@ -2522,6 +2539,7 @@ asan_global_struct (void) + TYPE_FIELDS (ret) = fields[0]; + TYPE_NAME (ret) = type_decl; + TYPE_STUB_DECL (ret) = type_decl; ++ TYPE_ARTIFICIAL (ret) = 1; + layout_type (ret); + return ret; + } +--- a/src/gcc/attribs.c ++++ b/src/gcc/attribs.c +@@ -702,7 +702,8 @@ decl_attributes (tree *node, tree attributes, int flags, + bool built_in = flags & ATTR_FLAG_BUILT_IN; + if (spec->exclude + && !no_add_attrs +- && (flag_checking || !built_in)) ++ && (flag_checking || !built_in) ++ && !error_operand_p (last_decl)) + { + /* Always check attributes on user-defined functions. + Check them on built-ins only when -fchecking is set. +--- a/src/gcc/c-family/ChangeLog ++++ b/src/gcc/c-family/ChangeLog +@@ -1,3 +1,23 @@ ++2020-09-17 Jakub Jelinek ++ ++ Backported from master: ++ 2020-08-11 Jakub Jelinek ++ ++ PR c/96545 ++ * c-common.c (get_atomic_generic_size): Require that first argument's ++ type points to a complete type and use tree_fits_uhwi_p instead of ++ just INTEGER_CST TREE_CODE check for the TYPE_SIZE_UNIT. ++ ++2020-09-17 Jakub Jelinek ++ ++ Backported from master: ++ 2020-06-27 Jakub Jelinek ++ ++ PR middle-end/95903 ++ * c-common.c (pointer_int_sum): Use TYPE_OVERFLOW_UNDEFINED instead of ++ !TYPE_UNSIGNED check to see if we can apply distributive law and handle ++ smaller precision intop operands separately. ++ + 2020-03-04 Release Manager + + * GCC 8.4.0 released. +--- a/src/gcc/c-family/c-common.c ++++ b/src/gcc/c-family/c-common.c +@@ -3120,7 +3120,7 @@ pointer_int_sum (location_t loc, enum tree_code resultcode, + /* If the constant is unsigned, and smaller than the pointer size, + then we must skip this optimization. This is because it could cause + an overflow error if the constant is negative but INTOP is not. */ +- && (!TYPE_UNSIGNED (TREE_TYPE (intop)) ++ && (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (intop)) + || (TYPE_PRECISION (TREE_TYPE (intop)) + == TYPE_PRECISION (TREE_TYPE (ptrop))))) + { +@@ -6661,8 +6661,15 @@ get_atomic_generic_size (location_t loc, tree function, + return 0; + } + ++ if (!COMPLETE_TYPE_P (TREE_TYPE (type_0))) ++ { ++ error_at (loc, "argument 1 of %qE must be a pointer to a complete type", ++ function); ++ return 0; ++ } ++ + /* Types must be compile time constant sizes. */ +- if (TREE_CODE ((TYPE_SIZE_UNIT (TREE_TYPE (type_0)))) != INTEGER_CST) ++ if (!tree_fits_uhwi_p ((TYPE_SIZE_UNIT (TREE_TYPE (type_0))))) + { + error_at (loc, + "argument 1 of %qE must be a pointer to a constant size type", +--- a/src/gcc/c/ChangeLog ++++ b/src/gcc/c/ChangeLog +@@ -1,3 +1,44 @@ ++2020-09-17 Jakub Jelinek ++ ++ Backported from master: ++ 2020-08-18 Jakub Jelinek ++ ++ PR c/96571 ++ * c-parser.c (c_parser_generic_selection): Change match_found from bool ++ to int, holding index of the match. Call mark_exp_read on the selector ++ expression and on expressions other than the selected one. ++ ++2020-09-17 Jakub Jelinek ++ ++ Backported from master: ++ 2020-05-07 Jakub Jelinek ++ ++ PR c/94842 ++ * c-decl.c (set_labels_context_r): In addition to context-less ++ LABEL_DECLs adjust also LABEL_DECLs with context equal to ++ parent function if any. ++ (store_parm_decls): Adjust comment. ++ ++2020-09-17 Jakub Jelinek ++ ++ Backported from master: ++ 2020-04-07 Jakub Jelinek ++ ++ PR c/94172 ++ * c-tree.h (C_TYPE_INCOMPLETE_VARS): Define to TYPE_LANG_SLOT_1 ++ instead of TYPE_VFIELD, and support it on {RECORD,UNION,ENUMERAL}_TYPE. ++ (TYPE_ACTUAL_ARG_TYPES): Check that it is only used on FUNCTION_TYPEs. ++ * c-decl.c (pushdecl): Push C_TYPE_INCOMPLETE_VARS also to ++ ENUMERAL_TYPEs. ++ (finish_incomplete_vars): New function, moved from finish_struct. Use ++ relayout_decl instead of layout_decl. ++ (finish_struct): Remove obsolete comment about C_TYPE_INCOMPLETE_VARS ++ being TYPE_VFIELD. Use finish_incomplete_vars. ++ (finish_enum): Clear C_TYPE_INCOMPLETE_VARS. Call ++ finish_incomplete_vars. ++ * c-typeck.c (c_build_qualified_type): Clear C_TYPE_INCOMPLETE_VARS ++ also on ENUMERAL_TYPEs. ++ + 2020-03-04 Release Manager + + * GCC 8.4.0 released. +--- a/src/gcc/c/c-decl.c ++++ b/src/gcc/c/c-decl.c +@@ -3111,7 +3111,8 @@ pushdecl (tree x) + element = TREE_TYPE (element); + element = TYPE_MAIN_VARIANT (element); + +- if (RECORD_OR_UNION_TYPE_P (element) ++ if ((RECORD_OR_UNION_TYPE_P (element) ++ || TREE_CODE (element) == ENUMERAL_TYPE) + && (TREE_CODE (x) != TYPE_DECL + || TREE_CODE (TREE_TYPE (x)) == ARRAY_TYPE) + && !COMPLETE_TYPE_P (element)) +@@ -7999,6 +8000,26 @@ field_decl_cmp (const void *x_p, const void *y_p) + return 1; + } + ++/* If this structure or union completes the type of any previous ++ variable declaration, lay it out and output its rtl. */ ++static void ++finish_incomplete_vars (tree incomplete_vars, bool toplevel) ++{ ++ for (tree x = incomplete_vars; x; x = TREE_CHAIN (x)) ++ { ++ tree decl = TREE_VALUE (x); ++ if (TREE_CODE (TREE_TYPE (decl)) == ARRAY_TYPE) ++ layout_array_type (TREE_TYPE (decl)); ++ if (TREE_CODE (decl) != TYPE_DECL) ++ { ++ relayout_decl (decl); ++ if (c_dialect_objc ()) ++ objc_check_decl (decl); ++ rest_of_decl_compilation (decl, toplevel, 0); ++ } ++ } ++} ++ + /* Fill in the fields of a RECORD_TYPE or UNION_TYPE node, T. + LOC is the location of the RECORD_TYPE or UNION_TYPE's definition. + FIELDLIST is a chain of FIELD_DECL nodes for the fields. +@@ -8247,13 +8268,6 @@ finish_struct (location_t loc, tree t, tree fieldlist, tree attributes, + } + } + +- /* Note: C_TYPE_INCOMPLETE_VARS overloads TYPE_VFIELD which is used +- in dwarf2out via rest_of_decl_compilation below and means +- something totally different. Since we will be clearing +- C_TYPE_INCOMPLETE_VARS shortly after we iterate through them, +- clear it ahead of time and avoid problems in dwarf2out. Ideally, +- C_TYPE_INCOMPLETE_VARS should use some language specific +- node. */ + tree incomplete_vars = C_TYPE_INCOMPLETE_VARS (TYPE_MAIN_VARIANT (t)); + for (x = TYPE_MAIN_VARIANT (t); x; x = TYPE_NEXT_VARIANT (x)) + { +@@ -8283,21 +8297,7 @@ finish_struct (location_t loc, tree t, tree fieldlist, tree attributes, + /* Finish debugging output for this type. */ + rest_of_type_compilation (t, toplevel); + +- /* If this structure or union completes the type of any previous +- variable declaration, lay it out and output its rtl. */ +- for (x = incomplete_vars; x; x = TREE_CHAIN (x)) +- { +- tree decl = TREE_VALUE (x); +- if (TREE_CODE (TREE_TYPE (decl)) == ARRAY_TYPE) +- layout_array_type (TREE_TYPE (decl)); +- if (TREE_CODE (decl) != TYPE_DECL) +- { +- layout_decl (decl, 0); +- if (c_dialect_objc ()) +- objc_check_decl (decl); +- rest_of_decl_compilation (decl, toplevel, 0); +- } +- } ++ finish_incomplete_vars (incomplete_vars, toplevel); + + /* If we're inside a function proper, i.e. not file-scope and not still + parsing parameters, then arrange for the size of a variable sized type +@@ -8576,8 +8576,10 @@ finish_enum (tree enumtype, tree values, tree attributes) + TYPE_LANG_SPECIFIC (enumtype) = lt; + + /* Fix up all variant types of this enum type. */ ++ tree incomplete_vars = C_TYPE_INCOMPLETE_VARS (TYPE_MAIN_VARIANT (enumtype)); + for (tem = TYPE_MAIN_VARIANT (enumtype); tem; tem = TYPE_NEXT_VARIANT (tem)) + { ++ C_TYPE_INCOMPLETE_VARS (tem) = NULL_TREE; + if (tem == enumtype) + continue; + TYPE_VALUES (tem) = TYPE_VALUES (enumtype); +@@ -8596,6 +8598,8 @@ finish_enum (tree enumtype, tree values, tree attributes) + /* Finish debugging output for this type. */ + rest_of_type_compilation (enumtype, toplevel); + ++ finish_incomplete_vars (incomplete_vars, toplevel); ++ + /* If this enum is defined inside a struct, add it to + struct_types. */ + if (warn_cxx_compat +@@ -9316,15 +9320,18 @@ store_parm_decls_from (struct c_arg_info *arg_info) + store_parm_decls (); + } + +-/* Called by walk_tree to look for and update context-less labels. */ ++/* Called by walk_tree to look for and update context-less labels ++ or labels with context in the parent function. */ + + static tree + set_labels_context_r (tree *tp, int *walk_subtrees, void *data) + { ++ tree ctx = static_cast(data); + if (TREE_CODE (*tp) == LABEL_EXPR +- && DECL_CONTEXT (LABEL_EXPR_LABEL (*tp)) == NULL_TREE) ++ && (DECL_CONTEXT (LABEL_EXPR_LABEL (*tp)) == NULL_TREE ++ || DECL_CONTEXT (LABEL_EXPR_LABEL (*tp)) == DECL_CONTEXT (ctx))) + { +- DECL_CONTEXT (LABEL_EXPR_LABEL (*tp)) = static_cast(data); ++ DECL_CONTEXT (LABEL_EXPR_LABEL (*tp)) = ctx; + *walk_subtrees = 0; + } + +@@ -9395,7 +9402,11 @@ store_parm_decls (void) + gotos, labels, etc. Because at that time the function decl + for F has not been created yet, those labels do not have any + function context. But we have the fndecl now, so update the +- labels accordingly. gimplify_expr would crash otherwise. */ ++ labels accordingly. gimplify_expr would crash otherwise. ++ Or with nested functions the labels could be created with parent ++ function's context, while when the statement is emitted at the ++ start of the nested function, it needs the nested function's ++ context. */ + walk_tree_without_duplicates (&arg_info->pending_sizes, + set_labels_context_r, fndecl); + add_stmt (arg_info->pending_sizes); +--- a/src/gcc/c/c-parser.c ++++ b/src/gcc/c/c-parser.c +@@ -7585,7 +7585,7 @@ c_parser_generic_selection (c_parser *parser) + struct c_expr selector, error_expr; + tree selector_type; + struct c_generic_association matched_assoc; +- bool match_found = false; ++ int match_found = -1; + location_t generic_loc, selector_loc; + + error_expr.original_code = ERROR_MARK; +@@ -7620,6 +7620,7 @@ c_parser_generic_selection (c_parser *parser) + c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, NULL); + return selector; + } ++ mark_exp_read (selector.value); + selector_type = TREE_TYPE (selector.value); + /* In ISO C terms, rvalues (including the controlling expression of + _Generic) do not have qualified types. */ +@@ -7719,18 +7720,18 @@ c_parser_generic_selection (c_parser *parser) + + if (assoc.type == NULL_TREE) + { +- if (!match_found) ++ if (match_found < 0) + { + matched_assoc = assoc; +- match_found = true; ++ match_found = associations.length (); + } + } + else if (comptypes (assoc.type, selector_type)) + { +- if (!match_found || matched_assoc.type == NULL_TREE) ++ if (match_found < 0 || matched_assoc.type == NULL_TREE) + { + matched_assoc = assoc; +- match_found = true; ++ match_found = associations.length (); + } + else + { +@@ -7748,13 +7749,19 @@ c_parser_generic_selection (c_parser *parser) + c_parser_consume_token (parser); + } + ++ unsigned int ix; ++ struct c_generic_association *iter; ++ FOR_EACH_VEC_ELT (associations, ix, iter) ++ if (ix != (unsigned) match_found) ++ mark_exp_read (iter->expression.value); ++ + if (!parens.require_close (parser)) + { + c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, NULL); + return error_expr; + } + +- if (!match_found) ++ if (match_found < 0) + { + error_at (selector_loc, "%<_Generic%> selector of type %qT is not " + "compatible with any association", +--- a/src/gcc/c/c-tree.h ++++ b/src/gcc/c/c-tree.h +@@ -38,9 +38,12 @@ along with GCC; see the file COPYING3. If not see + nonzero if the definition of the type has already started. */ + #define C_TYPE_BEING_DEFINED(TYPE) TYPE_LANG_FLAG_0 (TYPE) + +-/* In an incomplete RECORD_TYPE or UNION_TYPE, a list of variable +- declarations whose type would be completed by completing that type. */ +-#define C_TYPE_INCOMPLETE_VARS(TYPE) TYPE_VFIELD (TYPE) ++/* In an incomplete RECORD_TYPE, UNION_TYPE or ENUMERAL_TYPE, a list of ++ variable declarations whose type would be completed by completing ++ that type. */ ++#define C_TYPE_INCOMPLETE_VARS(TYPE) \ ++ TYPE_LANG_SLOT_1 (TREE_CHECK4 (TYPE, RECORD_TYPE, UNION_TYPE, \ ++ QUAL_UNION_TYPE, ENUMERAL_TYPE)) + + /* In an IDENTIFIER_NODE, nonzero if this identifier is actually a + keyword. C_RID_CODE (node) is then the RID_* value of the keyword. */ +@@ -107,7 +110,8 @@ along with GCC; see the file COPYING3. If not see + /* For FUNCTION_TYPE, a hidden list of types of arguments. The same as + TYPE_ARG_TYPES for functions with prototypes, but created for functions + without prototypes. */ +-#define TYPE_ACTUAL_ARG_TYPES(NODE) TYPE_LANG_SLOT_1 (NODE) ++#define TYPE_ACTUAL_ARG_TYPES(NODE) \ ++ TYPE_LANG_SLOT_1 (FUNCTION_TYPE_CHECK (NODE)) + + /* For a CONSTRUCTOR, whether some initializer contains a + subexpression meaning it is not a constant expression. */ +--- a/src/gcc/c/c-typeck.c ++++ b/src/gcc/c/c-typeck.c +@@ -14268,7 +14268,8 @@ c_build_qualified_type (tree type, int type_quals, tree orig_qual_type, + : build_qualified_type (type, type_quals)); + /* A variant type does not inherit the list of incomplete vars from the + type main variant. */ +- if (RECORD_OR_UNION_TYPE_P (var_type) ++ if ((RECORD_OR_UNION_TYPE_P (var_type) ++ || TREE_CODE (var_type) == ENUMERAL_TYPE) + && TYPE_MAIN_VARIANT (var_type) != var_type) + C_TYPE_INCOMPLETE_VARS (var_type) = 0; + return var_type; +--- a/src/gcc/cfgexpand.c ++++ b/src/gcc/cfgexpand.c +@@ -2972,6 +2972,9 @@ expand_asm_stmt (gasm *stmt) + regname); + return; + } ++ /* Clobbering the stack pointer register. */ ++ else if (reg == (int) STACK_POINTER_REGNUM) ++ crtl->sp_is_clobbered_by_asm = true; + + SET_HARD_REG_BIT (clobbered_regs, reg); + rtx x = gen_rtx_REG (reg_raw_mode[reg], reg); +--- a/src/gcc/cfgrtl.c ++++ b/src/gcc/cfgrtl.c +@@ -224,10 +224,20 @@ delete_insn_and_edges (rtx_insn *insn) + { + bool purge = false; + +- if (INSN_P (insn) +- && BLOCK_FOR_INSN (insn) +- && BB_END (BLOCK_FOR_INSN (insn)) == insn) +- purge = true; ++ if (INSN_P (insn) && BLOCK_FOR_INSN (insn)) ++ { ++ basic_block bb = BLOCK_FOR_INSN (insn); ++ if (BB_END (bb) == insn) ++ purge = true; ++ else if (DEBUG_INSN_P (BB_END (bb))) ++ for (rtx_insn *dinsn = NEXT_INSN (insn); ++ DEBUG_INSN_P (dinsn); dinsn = NEXT_INSN (dinsn)) ++ if (BB_END (bb) == dinsn) ++ { ++ purge = true; ++ break; ++ } ++ } + delete_insn (insn); + if (purge) + return purge_dead_edges (BLOCK_FOR_INSN (insn)); +@@ -3041,7 +3051,7 @@ purge_dead_edges (basic_block bb) + bool found; + edge_iterator ei; + +- if (DEBUG_INSN_P (insn) && insn != BB_HEAD (bb)) ++ if ((DEBUG_INSN_P (insn) || NOTE_P (insn)) && insn != BB_HEAD (bb)) + do + insn = PREV_INSN (insn); + while ((DEBUG_INSN_P (insn) || NOTE_P (insn)) && insn != BB_HEAD (bb)); +--- a/src/gcc/combine.c ++++ b/src/gcc/combine.c +@@ -1486,6 +1486,7 @@ combine_instructions (rtx_insn *f, unsigned int nregs) + if ((set = single_set (temp)) != 0 + && (note = find_reg_equal_equiv_note (temp)) != 0 + && (note = XEXP (note, 0), GET_CODE (note)) != EXPR_LIST ++ && ! side_effects_p (SET_SRC (set)) + /* Avoid using a register that may already been marked + dead by an earlier instruction. */ + && ! unmentioned_reg_p (note, SET_SRC (set)) +--- a/src/gcc/common/config/aarch64/aarch64-common.c ++++ b/src/gcc/common/config/aarch64/aarch64-common.c +@@ -110,6 +110,13 @@ aarch64_handle_option (struct gcc_options *opts, + opts->x_flag_omit_leaf_frame_pointer = val; + return true; + ++ case OPT_moutline_atomics: ++ if (val) ++ opts->x_target_flags |= MASK_OUTLINE_ATOMICS; ++ else ++ opts->x_target_flags &= ~MASK_OUTLINE_ATOMICS; ++ return true; ++ + default: + return true; + } +@@ -367,7 +374,22 @@ aarch64_get_extension_string_for_isa_flags (unsigned long isa_flags, + /* 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; ++ ++ /* PR target/94396. ++ ++ For flags which would already imply a bit that's on by default (e.g ++ fp16fml which implies +fp,+fp16) we must emit the flags that are not ++ on by default. i.e. in Armv8.4-a +fp16fml is default if +fp16. So ++ if a user passes armv8.4-a+fp16 (or +fp16fml) then we need to emit ++ +fp16. But if +fp16fml is used in an architecture where it is ++ completely optional we only have to emit the canonical flag. */ ++ uint64_t toggle_bits = opt->flags_on & default_arch_flags; ++ /* Now check to see if the canonical flag is on by default. If it ++ is not then enabling it will enable all bits in flags_on. */ ++ if ((opt->flag_canonical & default_arch_flags) == 0) ++ toggle_bits = opt->flags_on; ++ ++ isa_flag_bits &= ~toggle_bits; + isa_flag_bits |= opt->flag_canonical; + } + } +--- a/src/gcc/config.gcc ++++ b/src/gcc/config.gcc +@@ -3703,9 +3703,26 @@ fi + supported_defaults= + case "${target}" in + aarch64*-*-*) +- supported_defaults="abi cpu arch" +- for which in cpu arch; do +- ++ supported_defaults="abi cpu cpu_32 cpu_64 arch arch_32 arch_64 tune tune_32 tune_64" ++ if test x$with_cpu_64 != x && test x$with_cpu = x; then ++ with_cpu=$with_cpu_64 ++ fi ++ if test x$with_cpu_32 != x && test x$with_cpu = x; then ++ with_cpu=$with_cpu_32 ++ fi ++ if test x$with_arch_64 != x && test x$with_arch = x; then ++ with_arch=$with_arch_64 ++ fi ++ if test x$with_arch_32 != x && test x$with_arch = x; then ++ with_arch=$with_arch_32 ++ fi ++ if test x$with_tune_64 != x && test x$with_tune = x; then ++ with_tune=$with_tune_64 ++ fi ++ if test x$with_tune_32 != x && test x$with_tune = x; then ++ with_tune=$with_tune_32 ++ fi ++ for which in cpu arch tune; do + eval "val=\$with_$which" + base_val=`echo $val | sed -e 's/\+.*//'` + ext_val=`echo $val | sed -e 's/[a-z0-9.-]\+//'` +--- a/src/gcc/config.in ++++ b/src/gcc/config.in +@@ -717,6 +717,20 @@ + #endif + + ++/* Define if your assembler supports vl/vst/vlm/vstm with an optional ++ alignment hint argument. */ ++#ifndef USED_FOR_TARGET ++#undef HAVE_AS_VECTOR_LOADSTORE_ALIGNMENT_HINTS ++#endif ++ ++ ++/* Define if your assembler supports vl/vst/vlm/vstm with an optional ++ alignment hint argument on z13. */ ++#ifndef USED_FOR_TARGET ++#undef HAVE_AS_VECTOR_LOADSTORE_ALIGNMENT_HINTS_ON_Z13 ++#endif ++ ++ + /* Define if your assembler supports VSX instructions. */ + #ifndef USED_FOR_TARGET + #undef HAVE_AS_VSX +--- a/src/gcc/config/aarch64/aarch64-builtins.c ++++ b/src/gcc/config/aarch64/aarch64-builtins.c +@@ -42,6 +42,7 @@ + #include "langhooks.h" + #include "gimple-iterator.h" + #include "case-cfn-macros.h" ++#include "emit-rtl.h" + + #define v8qi_UP E_V8QImode + #define v4hi_UP E_V4HImode +@@ -102,7 +103,10 @@ enum aarch64_type_qualifiers + /* Lane indices - must be in range, and flipped for bigendian. */ + qualifier_lane_index = 0x200, + /* Lane indices for single lane structure loads and stores. */ +- qualifier_struct_load_store_lane_index = 0x400 ++ qualifier_struct_load_store_lane_index = 0x400, ++ /* Lane indices selected in pairs. - must be in range, and flipped for ++ bigendian. */ ++ qualifier_lane_pair_index = 0x800, + }; + + typedef struct +@@ -171,6 +175,11 @@ aarch64_types_ternopu_imm_qualifiers[SIMD_MAX_BUILTIN_ARGS] + #define TYPES_TERNOPUI (aarch64_types_ternopu_imm_qualifiers) + + ++static enum aarch64_type_qualifiers ++aarch64_types_quadop_lane_pair_qualifiers[SIMD_MAX_BUILTIN_ARGS] ++ = { qualifier_none, qualifier_none, qualifier_none, ++ qualifier_none, qualifier_lane_pair_index }; ++#define TYPES_QUADOP_LANE_PAIR (aarch64_types_quadop_lane_pair_qualifiers) + static enum aarch64_type_qualifiers + aarch64_types_quadop_lane_qualifiers[SIMD_MAX_BUILTIN_ARGS] + = { qualifier_none, qualifier_none, qualifier_none, +@@ -356,6 +365,18 @@ static aarch64_simd_builtin_datum aarch64_simd_builtin_data[] = { + CRC32_BUILTIN (crc32cw, SI) \ + CRC32_BUILTIN (crc32cx, DI) + ++/* The next 8 FCMLA instrinsics require some special handling compared the ++ normal simd intrinsics. */ ++#define AARCH64_SIMD_FCMLA_LANEQ_BUILTINS \ ++ FCMLA_LANEQ_BUILTIN (0, v2sf, fcmla, V2SF, false) \ ++ FCMLA_LANEQ_BUILTIN (90, v2sf, fcmla, V2SF, false) \ ++ FCMLA_LANEQ_BUILTIN (180, v2sf, fcmla, V2SF, false) \ ++ FCMLA_LANEQ_BUILTIN (270, v2sf, fcmla, V2SF, false) \ ++ FCMLA_LANEQ_BUILTIN (0, v4hf, fcmla_laneq, V4HF, true) \ ++ FCMLA_LANEQ_BUILTIN (90, v4hf, fcmla_laneq, V4HF, true) \ ++ FCMLA_LANEQ_BUILTIN (180, v4hf, fcmla_laneq, V4HF, true) \ ++ FCMLA_LANEQ_BUILTIN (270, v4hf, fcmla_laneq, V4HF, true) \ ++ + typedef struct + { + const char *name; +@@ -364,9 +385,22 @@ typedef struct + unsigned int fcode; + } aarch64_crc_builtin_datum; + ++/* Hold information about how to expand the FCMLA_LANEQ builtins. */ ++typedef struct ++{ ++ const char *name; ++ machine_mode mode; ++ const enum insn_code icode; ++ unsigned int fcode; ++ bool lane; ++} aarch64_fcmla_laneq_builtin_datum; ++ + #define CRC32_BUILTIN(N, M) \ + AARCH64_BUILTIN_##N, + ++#define FCMLA_LANEQ_BUILTIN(I, N, X, M, T) \ ++ AARCH64_SIMD_BUILTIN_FCMLA_LANEQ##I##_##M, ++ + #undef VAR1 + #define VAR1(T, N, MAP, A) \ + AARCH64_SIMD_BUILTIN_##T##_##N##A, +@@ -399,6 +433,14 @@ enum aarch64_builtins + AARCH64_PAUTH_BUILTIN_AUTIA1716, + AARCH64_PAUTH_BUILTIN_PACIA1716, + AARCH64_PAUTH_BUILTIN_XPACLRI, ++ /* Builtin for Arm8.3-a Javascript conversion instruction. */ ++ AARCH64_JSCVT, ++ /* Armv8.5-a RNG instruction builtins. */ ++ AARCH64_BUILTIN_RNG_RNDR, ++ AARCH64_BUILTIN_RNG_RNDRRS, ++ /* Special cased Armv8.3-A Complex FMA by Lane quad Builtins. */ ++ AARCH64_SIMD_FCMLA_LANEQ_BUILTIN_BASE, ++ AARCH64_SIMD_FCMLA_LANEQ_BUILTINS + AARCH64_BUILTIN_MAX + }; + +@@ -410,6 +452,18 @@ static aarch64_crc_builtin_datum aarch64_crc_builtin_data[] = { + AARCH64_CRC32_BUILTINS + }; + ++ ++#undef FCMLA_LANEQ_BUILTIN ++#define FCMLA_LANEQ_BUILTIN(I, N, X, M, T) \ ++ {"__builtin_aarch64_fcmla_laneq"#I#N, E_##M##mode, CODE_FOR_aarch64_##X##I##N, \ ++ AARCH64_SIMD_BUILTIN_FCMLA_LANEQ##I##_##M, T}, ++ ++/* This structure contains how to manage the mapping form the builtin to the ++ instruction to generate in the backend and how to invoke the instruction. */ ++static aarch64_fcmla_laneq_builtin_datum aarch64_fcmla_lane_builtin_data[] = { ++ AARCH64_SIMD_FCMLA_LANEQ_BUILTINS ++}; ++ + #undef CRC32_BUILTIN + + static GTY(()) tree aarch64_builtin_decls[AARCH64_BUILTIN_MAX]; +@@ -742,6 +796,34 @@ aarch64_init_simd_builtin_scalar_types (void) + + static bool aarch64_simd_builtins_initialized_p = false; + ++/* Due to the architecture not providing lane variant of the lane instructions ++ for fcmla we can't use the standard simd builtin expansion code, but we ++ still want the majority of the validation that would normally be done. */ ++ ++void ++aarch64_init_fcmla_laneq_builtins (void) ++{ ++ unsigned int i = 0; ++ ++ for (i = 0; i < ARRAY_SIZE (aarch64_fcmla_lane_builtin_data); ++i) ++ { ++ aarch64_fcmla_laneq_builtin_datum* d ++ = &aarch64_fcmla_lane_builtin_data[i]; ++ tree argtype = aarch64_lookup_simd_builtin_type (d->mode, qualifier_none); ++ machine_mode quadmode = GET_MODE_2XWIDER_MODE (d->mode).require (); ++ tree quadtype ++ = aarch64_lookup_simd_builtin_type (quadmode, qualifier_none); ++ tree lanetype ++ = aarch64_simd_builtin_std_type (SImode, qualifier_lane_pair_index); ++ tree ftype = build_function_type_list (argtype, argtype, argtype, ++ quadtype, lanetype, NULL_TREE); ++ tree fndecl = add_builtin_function (d->name, ftype, d->fcode, ++ BUILT_IN_MD, NULL, NULL_TREE); ++ ++ aarch64_builtin_decls[d->fcode] = fndecl; ++ } ++} ++ + void + aarch64_init_simd_builtins (void) + { +@@ -870,6 +952,9 @@ aarch64_init_simd_builtins (void) + NULL, NULL_TREE); + aarch64_builtin_decls[fcode] = fndecl; + } ++ ++ /* Initialize the remaining fcmla_laneq intrinsics. */ ++ aarch64_init_fcmla_laneq_builtins (); + } + + static void +@@ -973,6 +1058,24 @@ aarch64_init_pauth_hint_builtins (void) + NULL_TREE); + } + ++/* Add builtins for Random Number instructions. */ ++ ++static void ++aarch64_init_rng_builtins (void) ++{ ++ tree unsigned_ptr_type = build_pointer_type (unsigned_intDI_type_node); ++ tree ftype ++ = build_function_type_list (integer_type_node, unsigned_ptr_type, NULL); ++ aarch64_builtin_decls[AARCH64_BUILTIN_RNG_RNDR] ++ = add_builtin_function ("__builtin_aarch64_rndr", ftype, ++ AARCH64_BUILTIN_RNG_RNDR, BUILT_IN_MD, NULL, ++ NULL_TREE); ++ aarch64_builtin_decls[AARCH64_BUILTIN_RNG_RNDRRS] ++ = add_builtin_function ("__builtin_aarch64_rndrrs", ftype, ++ AARCH64_BUILTIN_RNG_RNDRRS, BUILT_IN_MD, NULL, ++ NULL_TREE); ++} ++ + void + aarch64_init_builtins (void) + { +@@ -1001,6 +1104,13 @@ aarch64_init_builtins (void) + + aarch64_init_crc32_builtins (); + aarch64_init_builtin_rsqrt (); ++ aarch64_init_rng_builtins (); ++ ++ tree ftype_jcvt ++ = build_function_type_list (intSI_type_node, double_type_node, NULL); ++ aarch64_builtin_decls[AARCH64_JSCVT] ++ = add_builtin_function ("__builtin_aarch64_jcvtzs", ftype_jcvt, ++ AARCH64_JSCVT, BUILT_IN_MD, NULL, NULL_TREE); + + /* Initialize pointer authentication builtins which are backed by instructions + in NOP encoding space. +@@ -1027,6 +1137,7 @@ typedef enum + SIMD_ARG_CONSTANT, + SIMD_ARG_LANE_INDEX, + SIMD_ARG_STRUCT_LOAD_STORE_LANE_INDEX, ++ SIMD_ARG_LANE_PAIR_INDEX, + SIMD_ARG_STOP + } builtin_simd_arg; + +@@ -1098,6 +1209,24 @@ aarch64_simd_expand_args (rtx target, int icode, int have_retval, + /* Keep to GCC-vector-extension lane indices in the RTL. */ + op[opc] = aarch64_endian_lane_rtx (vmode, INTVAL (op[opc])); + } ++ /* If the lane index isn't a constant then error out. */ ++ goto constant_arg; ++ ++ case SIMD_ARG_LANE_PAIR_INDEX: ++ /* Must be a previous operand into which this is an index and ++ index is restricted to nunits / 2. */ ++ gcc_assert (opc > 0); ++ if (CONST_INT_P (op[opc])) ++ { ++ machine_mode vmode = insn_data[icode].operand[opc - 1].mode; ++ unsigned int nunits ++ = GET_MODE_NUNITS (vmode).to_constant (); ++ aarch64_simd_lane_bounds (op[opc], 0, nunits / 2, exp); ++ /* Keep to GCC-vector-extension lane indices in the RTL. */ ++ int lane = INTVAL (op[opc]); ++ op[opc] = gen_int_mode (ENDIAN_LANE_N (nunits / 2, lane), ++ SImode); ++ } + /* Fall through - if the lane index isn't a constant then + the next case will error. */ + /* FALLTHRU */ +@@ -1211,6 +1340,8 @@ aarch64_simd_expand_builtin (int fcode, tree exp, rtx target) + + if (d->qualifiers[qualifiers_k] & qualifier_lane_index) + args[k] = SIMD_ARG_LANE_INDEX; ++ else if (d->qualifiers[qualifiers_k] & qualifier_lane_pair_index) ++ args[k] = SIMD_ARG_LANE_PAIR_INDEX; + else if (d->qualifiers[qualifiers_k] & qualifier_struct_load_store_lane_index) + args[k] = SIMD_ARG_STRUCT_LOAD_STORE_LANE_INDEX; + else if (d->qualifiers[qualifiers_k] & qualifier_immediate) +@@ -1313,6 +1444,121 @@ aarch64_expand_builtin_rsqrt (int fcode, tree exp, rtx target) + return target; + } + ++/* Expand a random number builtin EXP with code FCODE, putting the result ++ int TARGET. If IGNORE is true the return value is ignored. */ ++ ++rtx ++aarch64_expand_rng_builtin (tree exp, rtx target, int fcode, int ignore) ++{ ++ rtx pat; ++ enum insn_code icode; ++ if (fcode == AARCH64_BUILTIN_RNG_RNDR) ++ icode = CODE_FOR_aarch64_rndr; ++ else if (fcode == AARCH64_BUILTIN_RNG_RNDRRS) ++ icode = CODE_FOR_aarch64_rndrrs; ++ else ++ gcc_unreachable (); ++ ++ rtx rand = gen_reg_rtx (DImode); ++ pat = GEN_FCN (icode) (rand); ++ if (!pat) ++ return NULL_RTX; ++ ++ tree arg0 = CALL_EXPR_ARG (exp, 0); ++ rtx res_addr = expand_normal (arg0); ++ res_addr = convert_memory_address (Pmode, res_addr); ++ rtx res_mem = gen_rtx_MEM (DImode, res_addr); ++ emit_insn (pat); ++ emit_move_insn (res_mem, rand); ++ /* If the status result is unused don't generate the CSET code. */ ++ if (ignore) ++ return target; ++ ++ rtx cc_reg = gen_rtx_REG (CC_Zmode, CC_REGNUM); ++ rtx cmp_rtx = gen_rtx_fmt_ee (NE, SImode, cc_reg, const0_rtx); ++ emit_insn (gen_aarch64_cstoresi (target, cmp_rtx, cc_reg)); ++ return target; ++} ++ ++/* Expand a FCMLA lane expression EXP with code FCODE and ++ result going to TARGET if that is convenient. */ ++ ++rtx ++aarch64_expand_fcmla_builtin (tree exp, rtx target, int fcode) ++{ ++ int bcode = fcode - AARCH64_SIMD_FCMLA_LANEQ_BUILTIN_BASE - 1; ++ aarch64_fcmla_laneq_builtin_datum* d ++ = &aarch64_fcmla_lane_builtin_data[bcode]; ++ machine_mode quadmode = GET_MODE_2XWIDER_MODE (d->mode).require (); ++ rtx op0 = force_reg (d->mode, expand_normal (CALL_EXPR_ARG (exp, 0))); ++ rtx op1 = force_reg (d->mode, expand_normal (CALL_EXPR_ARG (exp, 1))); ++ rtx op2 = force_reg (quadmode, expand_normal (CALL_EXPR_ARG (exp, 2))); ++ tree tmp = CALL_EXPR_ARG (exp, 3); ++ rtx lane_idx = expand_expr (tmp, NULL_RTX, VOIDmode, EXPAND_INITIALIZER); ++ ++ /* Validate that the lane index is a constant. */ ++ if (!CONST_INT_P (lane_idx)) ++ { ++ error ("%Kargument %d must be a constant immediate", exp, 4); ++ return const0_rtx; ++ } ++ ++ /* Validate that the index is within the expected range. */ ++ int nunits = GET_MODE_NUNITS (quadmode).to_constant (); ++ aarch64_simd_lane_bounds (lane_idx, 0, nunits / 2, exp); ++ ++ /* Generate the correct register and mode. */ ++ int lane = INTVAL (lane_idx); ++ ++ if (lane < nunits / 4) ++ op2 = simplify_gen_subreg (d->mode, op2, quadmode, ++ subreg_lowpart_offset (d->mode, quadmode)); ++ else ++ { ++ /* Select the upper 64 bits, either a V2SF or V4HF, this however ++ is quite messy, as the operation required even though simple ++ doesn't have a simple RTL pattern, and seems it's quite hard to ++ define using a single RTL pattern. The target generic version ++ gen_highpart_mode generates code that isn't optimal. */ ++ rtx temp1 = gen_reg_rtx (d->mode); ++ rtx temp2 = gen_reg_rtx (DImode); ++ temp1 = simplify_gen_subreg (d->mode, op2, quadmode, ++ subreg_lowpart_offset (d->mode, quadmode)); ++ temp1 = simplify_gen_subreg (V2DImode, temp1, d->mode, 0); ++ if (BYTES_BIG_ENDIAN) ++ emit_insn (gen_aarch64_get_lanev2di (temp2, temp1, const0_rtx)); ++ else ++ emit_insn (gen_aarch64_get_lanev2di (temp2, temp1, const1_rtx)); ++ op2 = simplify_gen_subreg (d->mode, temp2, GET_MODE (temp2), 0); ++ ++ /* And recalculate the index. */ ++ lane -= nunits / 4; ++ } ++ ++ /* Keep to GCC-vector-extension lane indices in the RTL, only nunits / 4 ++ (max nunits in range check) are valid. Which means only 0-1, so we ++ only need to know the order in a V2mode. */ ++ lane_idx = aarch64_endian_lane_rtx (V2DImode, lane); ++ ++ if (!target) ++ target = gen_reg_rtx (d->mode); ++ else ++ target = force_reg (d->mode, target); ++ ++ rtx pat = NULL_RTX; ++ ++ if (d->lane) ++ pat = GEN_FCN (d->icode) (target, op0, op1, op2, lane_idx); ++ else ++ pat = GEN_FCN (d->icode) (target, op0, op1, op2); ++ ++ if (!pat) ++ return NULL_RTX; ++ ++ emit_insn (pat); ++ return target; ++} ++ + /* Expand an expression EXP that calls a built-in function, + with result going to TARGET if that's convenient. */ + rtx +@@ -1391,6 +1637,28 @@ aarch64_expand_builtin (tree exp, + } + + return target; ++ ++ case AARCH64_JSCVT: ++ { ++ expand_operand ops[2]; ++ create_output_operand (&ops[0], target, SImode); ++ op0 = expand_normal (CALL_EXPR_ARG (exp, 0)); ++ create_input_operand (&ops[1], op0, DFmode); ++ expand_insn (CODE_FOR_aarch64_fjcvtzs, 2, ops); ++ return ops[0].value; ++ } ++ case AARCH64_BUILTIN_RNG_RNDR: ++ case AARCH64_BUILTIN_RNG_RNDRRS: ++ return aarch64_expand_rng_builtin (exp, target, fcode, ignore); ++ case AARCH64_SIMD_BUILTIN_FCMLA_LANEQ0_V2SF: ++ case AARCH64_SIMD_BUILTIN_FCMLA_LANEQ90_V2SF: ++ case AARCH64_SIMD_BUILTIN_FCMLA_LANEQ180_V2SF: ++ case AARCH64_SIMD_BUILTIN_FCMLA_LANEQ270_V2SF: ++ case AARCH64_SIMD_BUILTIN_FCMLA_LANEQ0_V4HF: ++ case AARCH64_SIMD_BUILTIN_FCMLA_LANEQ90_V4HF: ++ case AARCH64_SIMD_BUILTIN_FCMLA_LANEQ180_V4HF: ++ case AARCH64_SIMD_BUILTIN_FCMLA_LANEQ270_V4HF: ++ return aarch64_expand_fcmla_builtin (exp, target, fcode); + } + + if (fcode >= AARCH64_SIMD_BUILTIN_BASE && fcode <= AARCH64_SIMD_BUILTIN_MAX) +@@ -1751,10 +2019,12 @@ aarch64_atomic_assign_expand_fenv (tree *hold, tree *clear, tree *update) + mask_sr = build_int_cst (unsigned_type_node, + ~(AARCH64_FE_ALL_EXCEPT)); + +- ld_fenv_cr = build2 (MODIFY_EXPR, unsigned_type_node, +- fenv_cr, build_call_expr (get_fpcr, 0)); +- ld_fenv_sr = build2 (MODIFY_EXPR, unsigned_type_node, +- fenv_sr, build_call_expr (get_fpsr, 0)); ++ ld_fenv_cr = build4 (TARGET_EXPR, unsigned_type_node, ++ fenv_cr, build_call_expr (get_fpcr, 0), ++ NULL_TREE, NULL_TREE); ++ ld_fenv_sr = build4 (TARGET_EXPR, unsigned_type_node, ++ fenv_sr, build_call_expr (get_fpsr, 0), ++ NULL_TREE, NULL_TREE); + + masked_fenv_cr = build2 (BIT_AND_EXPR, unsigned_type_node, fenv_cr, mask_cr); + masked_fenv_sr = build2 (BIT_AND_EXPR, unsigned_type_node, fenv_sr, mask_sr); +@@ -1786,8 +2056,9 @@ aarch64_atomic_assign_expand_fenv (tree *hold, tree *clear, tree *update) + __atomic_feraiseexcept (new_fenv_var); */ + + new_fenv_var = create_tmp_var_raw (unsigned_type_node); +- reload_fenv = build2 (MODIFY_EXPR, unsigned_type_node, +- new_fenv_var, build_call_expr (get_fpsr, 0)); ++ reload_fenv = build4 (TARGET_EXPR, unsigned_type_node, ++ new_fenv_var, build_call_expr (get_fpsr, 0), ++ NULL_TREE, NULL_TREE); + restore_fnenv = build_call_expr (set_fpsr, 1, fenv_sr); + atomic_feraiseexcept = builtin_decl_implicit (BUILT_IN_ATOMIC_FERAISEEXCEPT); + update_call = build_call_expr (atomic_feraiseexcept, 1, +--- a/src/gcc/config/aarch64/aarch64-c.c ++++ b/src/gcc/config/aarch64/aarch64-c.c +@@ -109,6 +109,8 @@ aarch64_update_cpp_builtins (cpp_reader *pfile) + + aarch64_def_or_undef (TARGET_CRC32, "__ARM_FEATURE_CRC32", pfile); + aarch64_def_or_undef (TARGET_DOTPROD, "__ARM_FEATURE_DOTPROD", pfile); ++ aarch64_def_or_undef (TARGET_JSCVT, "__ARM_FEATURE_JCVT", pfile); ++ aarch64_def_or_undef (TARGET_COMPLEX, "__ARM_FEATURE_COMPLEX", pfile); + + cpp_undef (pfile, "__AARCH64_CMODEL_TINY__"); + cpp_undef (pfile, "__AARCH64_CMODEL_SMALL__"); +@@ -155,6 +157,17 @@ aarch64_update_cpp_builtins (cpp_reader *pfile) + aarch64_def_or_undef (TARGET_SM4, "__ARM_FEATURE_SM4", pfile); + aarch64_def_or_undef (TARGET_F16FML, "__ARM_FEATURE_FP16_FML", pfile); + ++ aarch64_def_or_undef (TARGET_RNG, "__ARM_FEATURE_RNG", pfile); ++ ++ cpp_undef (pfile, "__ARM_FEATURE_PAC_DEFAULT"); ++ if (aarch64_ra_sign_scope != AARCH64_FUNCTION_NONE) ++ { ++ int v = 1; ++ if (aarch64_ra_sign_scope == AARCH64_FUNCTION_ALL) ++ v |= 4; ++ builtin_define_with_int_value ("__ARM_FEATURE_PAC_DEFAULT", v); ++ } ++ + /* Not for ACLE, but required to keep "float.h" correct if we switch + target between implementations that do or do not support ARMv8.2-A + 16-bit floating-point extensions. */ +--- a/src/gcc/config/aarch64/aarch64-cores.def ++++ b/src/gcc/config/aarch64/aarch64-cores.def +@@ -94,6 +94,15 @@ AARCH64_CORE("neoverse-n1", neoversen1,cortexa57, 8_2A, AARCH64_FL_FOR_ARCH8_2 + /* Qualcomm ('Q') cores. */ + AARCH64_CORE("saphira", saphira, falkor, 8_3A, AARCH64_FL_FOR_ARCH8_3 | AARCH64_FL_CRYPTO | AARCH64_FL_RCPC, saphira, 0x51, 0xC01, -1) + ++/* ARMv8.4-A Architecture Processors. */ ++ ++/* ARM ('A') cores. */ ++AARCH64_CORE("zeus", zeus, cortexa57, 8_4A, AARCH64_FL_FOR_ARCH8_4 | AARCH64_FL_F16 | AARCH64_FL_RCPC | AARCH64_FL_SVE | AARCH64_FL_RNG, neoversev1, 0x41, 0xd40, -1) ++AARCH64_CORE("neoverse-v1", neoversev1, cortexa57, 8_4A, AARCH64_FL_FOR_ARCH8_4 | AARCH64_FL_F16 | AARCH64_FL_RCPC | AARCH64_FL_SVE | AARCH64_FL_RNG, neoversev1, 0x41, 0xd40, -1) ++ ++/* Armv8.5-A Architecture Processors. */ ++AARCH64_CORE("neoverse-n2", neoversen2, cortexa57, 8_4A, AARCH64_FL_FOR_ARCH8_4 | AARCH64_FL_F16 | AARCH64_FL_SVE | AARCH64_FL_RNG, neoversen2, 0x41, 0xd49, -1) ++ + /* ARMv8-A big.LITTLE implementations. */ + + AARCH64_CORE("cortex-a57.cortex-a53", cortexa57cortexa53, cortexa53, 8A, AARCH64_FL_FOR_ARCH8 | AARCH64_FL_CRC, cortexa57, 0x41, AARCH64_BIG_LITTLE (0xd07, 0xd03), -1) +--- a/src/gcc/config/aarch64/aarch64-option-extensions.def ++++ b/src/gcc/config/aarch64/aarch64-option-extensions.def +@@ -114,4 +114,7 @@ AARCH64_OPT_EXTENSION("fp16fml", AARCH64_FL_F16FML, AARCH64_FL_FP | AARCH64_FL_F + Disabling "sve" just disables "sve". */ + AARCH64_OPT_EXTENSION("sve", AARCH64_FL_SVE, AARCH64_FL_FP | AARCH64_FL_SIMD | AARCH64_FL_F16, 0, false, "sve") + ++/* Enabling/Disabling "rng" only changes "rng". */ ++AARCH64_OPT_EXTENSION("rng", AARCH64_FL_RNG, 0, 0, false, "rng") ++ + #undef AARCH64_OPT_EXTENSION +--- a/src/gcc/config/aarch64/aarch64-protos.h ++++ b/src/gcc/config/aarch64/aarch64-protos.h +@@ -427,6 +427,7 @@ int aarch64_vec_fpconst_pow_of_2 (rtx); + rtx aarch64_eh_return_handler_rtx (void); + rtx aarch64_mask_from_zextract_ops (rtx, rtx); + const char *aarch64_output_move_struct (rtx *operands); ++rtx aarch64_return_addr_rtx (void); + rtx aarch64_return_addr (int, rtx); + rtx aarch64_simd_gen_const_vector_dup (machine_mode, HOST_WIDE_INT); + bool aarch64_simd_mem_operand_p (rtx); +@@ -496,10 +497,7 @@ rtx aarch64_load_tp (rtx); + + void aarch64_expand_compare_and_swap (rtx op[]); + void aarch64_split_compare_and_swap (rtx op[]); +-void aarch64_gen_atomic_cas (rtx, rtx, rtx, rtx, rtx); + +-bool aarch64_atomic_ldop_supported_p (enum rtx_code); +-void aarch64_gen_atomic_ldop (enum rtx_code, rtx, rtx, rtx, rtx, rtx); + void aarch64_split_atomic_op (enum rtx_code, rtx, rtx, rtx, rtx, rtx, rtx); + + bool aarch64_gen_adjusted_ldpstp (rtx *, bool, scalar_mode, RTX_CODE); +@@ -551,4 +549,17 @@ rtl_opt_pass *make_pass_fma_steering (gcc::context *ctxt); + + poly_uint64 aarch64_regmode_natural_size (machine_mode); + ++struct atomic_ool_names ++{ ++ const char *str[5][4]; ++}; ++ ++rtx aarch64_atomic_ool_func(machine_mode mode, rtx model_rtx, ++ const atomic_ool_names *names); ++extern const atomic_ool_names aarch64_ool_swp_names; ++extern const atomic_ool_names aarch64_ool_ldadd_names; ++extern const atomic_ool_names aarch64_ool_ldset_names; ++extern const atomic_ool_names aarch64_ool_ldclr_names; ++extern const atomic_ool_names aarch64_ool_ldeor_names; ++ + #endif /* GCC_AARCH64_PROTOS_H */ +--- a/src/gcc/config/aarch64/aarch64-simd-builtins.def ++++ b/src/gcc/config/aarch64/aarch64-simd-builtins.def +@@ -155,7 +155,7 @@ + BUILTIN_VQN (TERNOP, raddhn2, 0) + BUILTIN_VQN (TERNOP, rsubhn2, 0) + +- BUILTIN_VSQN_HSDI (UNOP, sqmovun, 0) ++ BUILTIN_VSQN_HSDI (UNOPUS, sqmovun, 0) + /* Implemented by aarch64_qmovn. */ + BUILTIN_VSQN_HSDI (UNOP, sqmovn, 0) + BUILTIN_VSQN_HSDI (UNOP, uqmovn, 0) +@@ -217,6 +217,25 @@ + BUILTIN_VB (QUADOP_LANE, sdot_laneq, 0) + BUILTIN_VB (QUADOPU_LANE, udot_laneq, 0) + ++ /* Implemented by aarch64_fcadd. */ ++ BUILTIN_VHSDF (BINOP, fcadd90, 0) ++ BUILTIN_VHSDF (BINOP, fcadd270, 0) ++ ++ /* Implemented by aarch64_fcmla{_lane}{q}. */ ++ BUILTIN_VHSDF (TERNOP, fcmla0, 0) ++ BUILTIN_VHSDF (TERNOP, fcmla90, 0) ++ BUILTIN_VHSDF (TERNOP, fcmla180, 0) ++ BUILTIN_VHSDF (TERNOP, fcmla270, 0) ++ BUILTIN_VHSDF (QUADOP_LANE_PAIR, fcmla_lane0, 0) ++ BUILTIN_VHSDF (QUADOP_LANE_PAIR, fcmla_lane90, 0) ++ BUILTIN_VHSDF (QUADOP_LANE_PAIR, fcmla_lane180, 0) ++ BUILTIN_VHSDF (QUADOP_LANE_PAIR, fcmla_lane270, 0) ++ ++ BUILTIN_VQ_HSF (QUADOP_LANE_PAIR, fcmlaq_lane0, 0) ++ BUILTIN_VQ_HSF (QUADOP_LANE_PAIR, fcmlaq_lane90, 0) ++ BUILTIN_VQ_HSF (QUADOP_LANE_PAIR, fcmlaq_lane180, 0) ++ BUILTIN_VQ_HSF (QUADOP_LANE_PAIR, fcmlaq_lane270, 0) ++ + BUILTIN_VDQ_I (SHIFTIMM, ashr, 3) + VAR1 (SHIFTIMM, ashr_simd, 0, di) + BUILTIN_VDQ_I (SHIFTIMM, lshr, 3) +@@ -295,12 +314,11 @@ + BUILTIN_VHSDF (UNOP, nearbyint, 2) + BUILTIN_VHSDF (UNOP, rint, 2) + BUILTIN_VHSDF (UNOP, round, 2) +- BUILTIN_VHSDF_DF (UNOP, frintn, 2) ++ BUILTIN_VHSDF_HSDF (UNOP, frintn, 2) + + VAR1 (UNOP, btrunc, 2, hf) + VAR1 (UNOP, ceil, 2, hf) + VAR1 (UNOP, floor, 2, hf) +- VAR1 (UNOP, frintn, 2, hf) + VAR1 (UNOP, nearbyint, 2, hf) + VAR1 (UNOP, rint, 2, hf) + VAR1 (UNOP, round, 2, hf) +@@ -445,6 +463,21 @@ + BUILTIN_VALL_F16 (STORE1, st1, 0) + VAR1(STORE1P, st1, 0, v2di) + ++ /* Implemented by aarch64_ld1x3. */ ++ BUILTIN_VALLDIF (LOADSTRUCT, ld1x3, 0) ++ ++ /* Implemented by aarch64_ld1x4. */ ++ BUILTIN_VALLDIF (LOADSTRUCT, ld1x4, 0) ++ ++ /* Implemented by aarch64_st1x2. */ ++ BUILTIN_VALLDIF (STORESTRUCT, st1x2, 0) ++ ++ /* Implemented by aarch64_st1x3. */ ++ BUILTIN_VALLDIF (STORESTRUCT, st1x3, 0) ++ ++ /* Implemented by aarch64_st1x4. */ ++ BUILTIN_VALLDIF (STORESTRUCT, st1x4, 0) ++ + /* Implemented by fma4. */ + BUILTIN_VHSDF (TERNOP, fma, 4) + VAR1 (TERNOP, fma, 4, hf) +@@ -599,14 +632,16 @@ + VAR1 (BINOPU, crypto_sha512su0q, 0, v2di) + /* Implemented by aarch64_crypto_sha512su1qv2di. */ + VAR1 (TERNOPU, crypto_sha512su1q, 0, v2di) +- /* Implemented by aarch64_eor3qv8hi. */ +- VAR1 (TERNOPU, eor3q, 0, v8hi) ++ /* Implemented by eor3q4. */ ++ BUILTIN_VQ_I (TERNOPU, eor3q, 4) ++ BUILTIN_VQ_I (TERNOP, eor3q, 4) + /* Implemented by aarch64_rax1qv2di. */ + VAR1 (BINOPU, rax1q, 0, v2di) + /* Implemented by aarch64_xarqv2di. */ + VAR1 (TERNOPUI, xarq, 0, v2di) +- /* Implemented by aarch64_bcaxqv8hi. */ +- VAR1 (TERNOPU, bcaxq, 0, v8hi) ++ /* Implemented by bcaxq4. */ ++ BUILTIN_VQ_I (TERNOPU, bcaxq, 4) ++ BUILTIN_VQ_I (TERNOP, bcaxq, 4) + + /* Implemented by aarch64_fmll_low. */ + VAR1 (TERNOP, fmlal_low, 0, v2sf) +--- a/src/gcc/config/aarch64/aarch64-simd.md ++++ b/src/gcc/config/aarch64/aarch64-simd.md +@@ -391,6 +391,81 @@ + } + ) + ++;; The fcadd and fcmla patterns are made UNSPEC for the explicitly due to the ++;; fact that their usage need to guarantee that the source vectors are ++;; contiguous. It would be wrong to describe the operation without being able ++;; to describe the permute that is also required, but even if that is done ++;; the permute would have been created as a LOAD_LANES which means the values ++;; in the registers are in the wrong order. ++(define_insn "aarch64_fcadd" ++ [(set (match_operand:VHSDF 0 "register_operand" "=w") ++ (unspec:VHSDF [(match_operand:VHSDF 1 "register_operand" "w") ++ (match_operand:VHSDF 2 "register_operand" "w")] ++ FCADD))] ++ "TARGET_COMPLEX" ++ "fcadd\t%0., %1., %2., #" ++ [(set_attr "type" "neon_fcadd")] ++) ++ ++(define_insn "aarch64_fcmla" ++ [(set (match_operand:VHSDF 0 "register_operand" "=w") ++ (plus:VHSDF (match_operand:VHSDF 1 "register_operand" "0") ++ (unspec:VHSDF [(match_operand:VHSDF 2 "register_operand" "w") ++ (match_operand:VHSDF 3 "register_operand" "w")] ++ FCMLA)))] ++ "TARGET_COMPLEX" ++ "fcmla\t%0., %2., %3., #" ++ [(set_attr "type" "neon_fcmla")] ++) ++ ++ ++(define_insn "aarch64_fcmla_lane" ++ [(set (match_operand:VHSDF 0 "register_operand" "=w") ++ (plus:VHSDF (match_operand:VHSDF 1 "register_operand" "0") ++ (unspec:VHSDF [(match_operand:VHSDF 2 "register_operand" "w") ++ (match_operand:VHSDF 3 "register_operand" "w") ++ (match_operand:SI 4 "const_int_operand" "n")] ++ FCMLA)))] ++ "TARGET_COMPLEX" ++{ ++ operands[4] = aarch64_endian_lane_rtx (mode, INTVAL (operands[4])); ++ return "fcmla\t%0., %2., %3., #"; ++} ++ [(set_attr "type" "neon_fcmla")] ++) ++ ++(define_insn "aarch64_fcmla_laneqv4hf" ++ [(set (match_operand:V4HF 0 "register_operand" "=w") ++ (plus:V4HF (match_operand:V4HF 1 "register_operand" "0") ++ (unspec:V4HF [(match_operand:V4HF 2 "register_operand" "w") ++ (match_operand:V8HF 3 "register_operand" "w") ++ (match_operand:SI 4 "const_int_operand" "n")] ++ FCMLA)))] ++ "TARGET_COMPLEX" ++{ ++ operands[4] = aarch64_endian_lane_rtx (V4HFmode, INTVAL (operands[4])); ++ return "fcmla\t%0.4h, %2.4h, %3.h[%4], #"; ++} ++ [(set_attr "type" "neon_fcmla")] ++) ++ ++(define_insn "aarch64_fcmlaq_lane" ++ [(set (match_operand:VQ_HSF 0 "register_operand" "=w") ++ (plus:VQ_HSF (match_operand:VQ_HSF 1 "register_operand" "0") ++ (unspec:VQ_HSF [(match_operand:VQ_HSF 2 "register_operand" "w") ++ (match_operand: 3 "register_operand" "w") ++ (match_operand:SI 4 "const_int_operand" "n")] ++ FCMLA)))] ++ "TARGET_COMPLEX" ++{ ++ int nunits = GET_MODE_NUNITS (mode).to_constant (); ++ operands[4] ++ = gen_int_mode (ENDIAN_LANE_N (nunits / 2, INTVAL (operands[4])), SImode); ++ return "fcmla\t%0., %2., %3., #"; ++} ++ [(set_attr "type" "neon_fcmla")] ++) ++ + ;; These instructions map to the __builtins for the Dot Product operations. + (define_insn "aarch64_dot" + [(set (match_operand:VS 0 "register_operand" "=w") +@@ -839,31 +914,17 @@ + tmp)); + DONE; + } +- else +- { +- operands[2] = force_reg (SImode, operands[2]); +- } +- } +- else if (MEM_P (operands[2])) +- { +- operands[2] = force_reg (SImode, operands[2]); + } + +- if (REG_P (operands[2])) +- { +- rtx tmp = gen_reg_rtx (mode); +- emit_insn (gen_aarch64_simd_dup (tmp, +- convert_to_mode (mode, +- operands[2], +- 0))); +- emit_insn (gen_aarch64_simd_reg_sshl (operands[0], operands[1], +- tmp)); +- DONE; +- } +- else +- FAIL; +-} +-) ++ operands[2] = force_reg (SImode, operands[2]); ++ ++ rtx tmp = gen_reg_rtx (mode); ++ emit_insn (gen_aarch64_simd_dup (tmp, convert_to_mode (mode, ++ operands[2], ++ 0))); ++ emit_insn (gen_aarch64_simd_reg_sshl (operands[0], operands[1], tmp)); ++ DONE; ++}) + + (define_expand "lshr3" + [(match_operand:VDQ_I 0 "register_operand" "") +@@ -886,31 +947,19 @@ + tmp)); + DONE; + } +- else +- operands[2] = force_reg (SImode, operands[2]); +- } +- else if (MEM_P (operands[2])) +- { +- operands[2] = force_reg (SImode, operands[2]); + } + +- if (REG_P (operands[2])) +- { +- rtx tmp = gen_reg_rtx (SImode); +- rtx tmp1 = gen_reg_rtx (mode); +- emit_insn (gen_negsi2 (tmp, operands[2])); +- emit_insn (gen_aarch64_simd_dup (tmp1, +- convert_to_mode (mode, +- tmp, 0))); +- emit_insn (gen_aarch64_simd_reg_shl_unsigned (operands[0], +- operands[1], +- tmp1)); +- DONE; +- } +- else +- FAIL; +-} +-) ++ operands[2] = force_reg (SImode, operands[2]); ++ ++ rtx tmp = gen_reg_rtx (SImode); ++ rtx tmp1 = gen_reg_rtx (mode); ++ emit_insn (gen_negsi2 (tmp, operands[2])); ++ emit_insn (gen_aarch64_simd_dup (tmp1, ++ convert_to_mode (mode, tmp, 0))); ++ emit_insn (gen_aarch64_simd_reg_shl_unsigned (operands[0], operands[1], ++ tmp1)); ++ DONE; ++}) + + (define_expand "ashr3" + [(match_operand:VDQ_I 0 "register_operand" "") +@@ -933,31 +982,19 @@ + tmp)); + DONE; + } +- else +- operands[2] = force_reg (SImode, operands[2]); +- } +- else if (MEM_P (operands[2])) +- { +- operands[2] = force_reg (SImode, operands[2]); + } + +- if (REG_P (operands[2])) +- { +- rtx tmp = gen_reg_rtx (SImode); +- rtx tmp1 = gen_reg_rtx (mode); +- emit_insn (gen_negsi2 (tmp, operands[2])); +- emit_insn (gen_aarch64_simd_dup (tmp1, +- convert_to_mode (mode, +- tmp, 0))); +- emit_insn (gen_aarch64_simd_reg_shl_signed (operands[0], +- operands[1], +- tmp1)); +- DONE; +- } +- else +- FAIL; +-} +-) ++ operands[2] = force_reg (SImode, operands[2]); ++ ++ rtx tmp = gen_reg_rtx (SImode); ++ rtx tmp1 = gen_reg_rtx (mode); ++ emit_insn (gen_negsi2 (tmp, operands[2])); ++ emit_insn (gen_aarch64_simd_dup (tmp1, convert_to_mode (mode, ++ tmp, 0))); ++ emit_insn (gen_aarch64_simd_reg_shl_signed (operands[0], operands[1], ++ tmp1)); ++ DONE; ++}) + + (define_expand "vashl3" + [(match_operand:VDQ_I 0 "register_operand" "") +@@ -5060,8 +5097,136 @@ + if (GET_CODE (operands[0]) != REG) + operands[1] = force_reg (mode, operands[1]); + } ++ ++ /* If we have a paradoxical subreg trying to write to from and the ++ registers don't overlap then we need to break it apart. What it's trying ++ to do is give two kind of information at the same time. It's trying to ++ convey liveness information by saying that the entire register will be ++ written to eventually, but it also only wants to write a single part of the ++ register. Hence the paradoxical subreg. ++ ++ Instead of allowing this we will split the two concerns. The liveness ++ information will be conveyed using a clobber and then we break apart the ++ paradoxical subreg into just a normal write of the part that it wanted to ++ write originally. */ ++ ++ if (REG_P (operands[0]) && paradoxical_subreg_p (operands[1])) ++ { ++ if (!reg_overlap_mentioned_p (operands[0], operands[1])) ++ emit_clobber (operands[0]); ++ operands[1] = SUBREG_REG (operands[1]); ++ operands[0] = gen_lowpart (GET_MODE (operands[1]), operands[0]); ++ } ++}) ++ ++ ++(define_expand "aarch64_ld1x3" ++ [(match_operand:CI 0 "register_operand" "=w") ++ (match_operand:DI 1 "register_operand" "r") ++ (unspec:VALLDIF [(const_int 0)] UNSPEC_VSTRUCTDUMMY)] ++ "TARGET_SIMD" ++{ ++ rtx mem = gen_rtx_MEM (CImode, operands[1]); ++ emit_insn (gen_aarch64_ld1_x3_ (operands[0], mem)); ++ DONE; ++}) ++ ++(define_insn "aarch64_ld1_x3_" ++ [(set (match_operand:CI 0 "register_operand" "=w") ++ (unspec:CI ++ [(match_operand:CI 1 "aarch64_simd_struct_operand" "Utv") ++ (unspec:VALLDIF [(const_int 3)] UNSPEC_VSTRUCTDUMMY)] UNSPEC_LD1))] ++ "TARGET_SIMD" ++ "ld1\\t{%S0. - %U0.}, %1" ++ [(set_attr "type" "neon_load1_3reg")] ++) ++ ++(define_expand "aarch64_ld1x4" ++ [(match_operand:XI 0 "register_operand" "=w") ++ (match_operand:DI 1 "register_operand" "r") ++ (unspec:VALLDIF [(const_int 0)] UNSPEC_VSTRUCTDUMMY)] ++ "TARGET_SIMD" ++{ ++ rtx mem = gen_rtx_MEM (XImode, operands[1]); ++ emit_insn (gen_aarch64_ld1_x4_ (operands[0], mem)); ++ DONE; ++}) ++ ++(define_insn "aarch64_ld1_x4_" ++ [(set (match_operand:XI 0 "register_operand" "=w") ++ (unspec:XI ++ [(match_operand:XI 1 "aarch64_simd_struct_operand" "Utv") ++ (unspec:VALLDIF [(const_int 4)] UNSPEC_VSTRUCTDUMMY)] ++ UNSPEC_LD1))] ++ "TARGET_SIMD" ++ "ld1\\t{%S0. - %V0.}, %1" ++ [(set_attr "type" "neon_load1_4reg")] ++) ++ ++(define_expand "aarch64_st1x2" ++ [(match_operand:DI 0 "register_operand" "") ++ (match_operand:OI 1 "register_operand" "") ++ (unspec:VALLDIF [(const_int 0)] UNSPEC_VSTRUCTDUMMY)] ++ "TARGET_SIMD" ++{ ++ rtx mem = gen_rtx_MEM (OImode, operands[0]); ++ emit_insn (gen_aarch64_st1_x2_ (mem, operands[1])); ++ DONE; ++}) ++ ++(define_insn "aarch64_st1_x2_" ++ [(set (match_operand:OI 0 "aarch64_simd_struct_operand" "=Utv") ++ (unspec:OI ++ [(match_operand:OI 1 "register_operand" "w") ++ (unspec:VALLDIF [(const_int 2)] UNSPEC_VSTRUCTDUMMY)] UNSPEC_ST1))] ++ "TARGET_SIMD" ++ "st1\\t{%S1. - %T1.}, %0" ++ [(set_attr "type" "neon_store1_2reg")] ++) ++ ++(define_expand "aarch64_st1x3" ++ [(match_operand:DI 0 "register_operand" "") ++ (match_operand:CI 1 "register_operand" "") ++ (unspec:VALLDIF [(const_int 0)] UNSPEC_VSTRUCTDUMMY)] ++ "TARGET_SIMD" ++{ ++ rtx mem = gen_rtx_MEM (CImode, operands[0]); ++ emit_insn (gen_aarch64_st1_x3_ (mem, operands[1])); ++ DONE; + }) + ++(define_insn "aarch64_st1_x3_" ++ [(set (match_operand:CI 0 "aarch64_simd_struct_operand" "=Utv") ++ (unspec:CI ++ [(match_operand:CI 1 "register_operand" "w") ++ (unspec:VALLDIF [(const_int 3)] UNSPEC_VSTRUCTDUMMY)] UNSPEC_ST1))] ++ "TARGET_SIMD" ++ "st1\\t{%S1. - %U1.}, %0" ++ [(set_attr "type" "neon_store1_3reg")] ++) ++ ++(define_expand "aarch64_st1x4" ++ [(match_operand:DI 0 "register_operand" "") ++ (match_operand:XI 1 "register_operand" "") ++ (unspec:VALLDIF [(const_int 0)] UNSPEC_VSTRUCTDUMMY)] ++ "TARGET_SIMD" ++{ ++ rtx mem = gen_rtx_MEM (XImode, operands[0]); ++ emit_insn (gen_aarch64_st1_x4_ (mem, operands[1])); ++ DONE; ++}) ++ ++(define_insn "aarch64_st1_x4_" ++ [(set (match_operand:XI 0 "aarch64_simd_struct_operand" "=Utv") ++ (unspec:XI ++ [(match_operand:XI 1 "register_operand" "w") ++ (unspec:VALLDIF [(const_int 4)] UNSPEC_VSTRUCTDUMMY)] ++ UNSPEC_ST1))] ++ "TARGET_SIMD" ++ "st1\\t{%S1. - %V1.}, %0" ++ [(set_attr "type" "neon_store1_4reg")] ++) ++ + (define_insn "*aarch64_mov" + [(set (match_operand:VSTRUCT 0 "aarch64_simd_nonimmediate_operand" "=w,Utv,w") + (match_operand:VSTRUCT 1 "aarch64_simd_general_operand" " w,w,Utv"))] +@@ -5955,13 +6120,13 @@ + + ;; sha3 + +-(define_insn "aarch64_eor3qv8hi" +- [(set (match_operand:V8HI 0 "register_operand" "=w") +- (xor:V8HI +- (xor:V8HI +- (match_operand:V8HI 2 "register_operand" "%w") +- (match_operand:V8HI 3 "register_operand" "w")) +- (match_operand:V8HI 1 "register_operand" "w")))] ++(define_insn "eor3q4" ++ [(set (match_operand:VQ_I 0 "register_operand" "=w") ++ (xor:VQ_I ++ (xor:VQ_I ++ (match_operand:VQ_I 2 "register_operand" "w") ++ (match_operand:VQ_I 3 "register_operand" "w")) ++ (match_operand:VQ_I 1 "register_operand" "w")))] + "TARGET_SIMD && TARGET_SHA3" + "eor3\\t%0.16b, %1.16b, %2.16b, %3.16b" + [(set_attr "type" "crypto_sha3")] +@@ -5991,13 +6156,13 @@ + [(set_attr "type" "crypto_sha3")] + ) + +-(define_insn "aarch64_bcaxqv8hi" +- [(set (match_operand:V8HI 0 "register_operand" "=w") +- (xor:V8HI +- (and:V8HI +- (not:V8HI (match_operand:V8HI 3 "register_operand" "w")) +- (match_operand:V8HI 2 "register_operand" "w")) +- (match_operand:V8HI 1 "register_operand" "w")))] ++(define_insn "bcaxq4" ++ [(set (match_operand:VQ_I 0 "register_operand" "=w") ++ (xor:VQ_I ++ (and:VQ_I ++ (not:VQ_I (match_operand:VQ_I 3 "register_operand" "w")) ++ (match_operand:VQ_I 2 "register_operand" "w")) ++ (match_operand:VQ_I 1 "register_operand" "w")))] + "TARGET_SIMD && TARGET_SHA3" + "bcax\\t%0.16b, %1.16b, %2.16b, %3.16b" + [(set_attr "type" "crypto_sha3")] +--- a/src/gcc/config/aarch64/aarch64-tune.md ++++ b/src/gcc/config/aarch64/aarch64-tune.md +@@ -1,5 +1,5 @@ + ;; -*- buffer-read-only: t -*- + ;; Generated automatically by gentune.sh from aarch64-cores.def + (define_attr "tune" +- "cortexa35,cortexa53,cortexa57,cortexa72,cortexa73,thunderx,thunderxt88p1,thunderxt88,thunderxt81,thunderxt83,xgene1,falkor,qdf24xx,exynosm1,thunderx2t99p1,vulcan,thunderx2t99,cortexa55,cortexa75,cortexa76,ares,neoversen1,saphira,cortexa57cortexa53,cortexa72cortexa53,cortexa73cortexa35,cortexa73cortexa53,cortexa75cortexa55" ++ "cortexa35,cortexa53,cortexa57,cortexa72,cortexa73,thunderx,thunderxt88p1,thunderxt88,thunderxt81,thunderxt83,xgene1,falkor,qdf24xx,exynosm1,thunderx2t99p1,vulcan,thunderx2t99,cortexa55,cortexa75,cortexa76,ares,neoversen1,saphira,zeus,neoversev1,neoversen2,cortexa57cortexa53,cortexa72cortexa53,cortexa73cortexa35,cortexa73cortexa53,cortexa75cortexa55" + (const (symbol_ref "((enum attr_tune) aarch64_tune)"))) +--- a/src/gcc/config/aarch64/aarch64-tuning-flags.def ++++ b/src/gcc/config/aarch64/aarch64-tuning-flags.def +@@ -41,4 +41,7 @@ AARCH64_EXTRA_TUNING_OPTION ("slow_unaligned_ldpw", SLOW_UNALIGNED_LDPW) + are not considered cheap. */ + AARCH64_EXTRA_TUNING_OPTION ("cheap_shift_extend", CHEAP_SHIFT_EXTEND) + ++/* Prefer Advanced SIMD over SVE for auto-vectorization. */ ++AARCH64_EXTRA_TUNING_OPTION ("prefer_advsimd_autovec", PREFER_ADVSIMD_AUTOVEC) ++ + #undef AARCH64_EXTRA_TUNING_OPTION +--- a/src/gcc/config/aarch64/aarch64.c ++++ b/src/gcc/config/aarch64/aarch64.c +@@ -760,6 +760,58 @@ static const struct tune_params cortexa72_tunings = + &generic_prefetch_tune + }; + ++static const struct tune_params neoversev1_tunings = ++{ ++ &cortexa57_extra_costs, ++ &generic_addrcost_table, ++ &cortexa57_regmove_cost, ++ &cortexa57_vector_cost, ++ &generic_branch_cost, ++ &generic_approx_modes, ++ 4, /* memmov_cost */ ++ 3, /* issue_rate */ ++ (AARCH64_FUSE_AES_AESMC | AARCH64_FUSE_MOV_MOVK | AARCH64_FUSE_ADRP_ADD ++ | AARCH64_FUSE_MOVK_MOVK), /* fusible_ops */ ++ 16, /* function_align. */ ++ 4, /* jump_align. */ ++ 8, /* loop_align. */ ++ 2, /* int_reassoc_width. */ ++ 4, /* fp_reassoc_width. */ ++ 1, /* vec_reassoc_width. */ ++ 2, /* min_div_recip_mul_sf. */ ++ 2, /* min_div_recip_mul_df. */ ++ 0, /* max_case_values. */ ++ tune_params::AUTOPREFETCHER_WEAK, /* autoprefetcher_model. */ ++ (AARCH64_EXTRA_TUNE_PREFER_ADVSIMD_AUTOVEC), /* tune_flags. */ ++ &generic_prefetch_tune ++}; ++ ++static const struct tune_params neoversen2_tunings = ++{ ++ &cortexa57_extra_costs, ++ &generic_addrcost_table, ++ &cortexa57_regmove_cost, ++ &cortexa57_vector_cost, ++ &generic_branch_cost, ++ &generic_approx_modes, ++ 4, /* memmov_cost */ ++ 3, /* issue_rate */ ++ (AARCH64_FUSE_AES_AESMC | AARCH64_FUSE_MOV_MOVK | AARCH64_FUSE_ADRP_ADD ++ | AARCH64_FUSE_MOVK_MOVK), /* fusible_ops */ ++ 16, /* function_align. */ ++ 4, /* jump_align. */ ++ 8, /* loop_align. */ ++ 2, /* int_reassoc_width. */ ++ 4, /* fp_reassoc_width. */ ++ 1, /* vec_reassoc_width. */ ++ 2, /* min_div_recip_mul_sf. */ ++ 2, /* min_div_recip_mul_df. */ ++ 0, /* max_case_values. */ ++ tune_params::AUTOPREFETCHER_WEAK, /* autoprefetcher_model. */ ++ (AARCH64_EXTRA_TUNE_PREFER_ADVSIMD_AUTOVEC), /* tune_flags. */ ++ &generic_prefetch_tune ++}; ++ + static const struct tune_params cortexa73_tunings = + { + &cortexa57_extra_costs, +@@ -1369,10 +1421,14 @@ aarch64_hard_regno_mode_ok (unsigned regno, machine_mode mode) + if (regno == FRAME_POINTER_REGNUM || regno == ARG_POINTER_REGNUM) + return mode == Pmode; + +- if (GP_REGNUM_P (regno) && known_le (GET_MODE_SIZE (mode), 16)) +- return true; +- +- if (FP_REGNUM_P (regno)) ++ if (GP_REGNUM_P (regno)) ++ { ++ if (known_le (GET_MODE_SIZE (mode), 8)) ++ return true; ++ else if (known_le (GET_MODE_SIZE (mode), 16)) ++ return (regno & 1) == 0; ++ } ++ else if (FP_REGNUM_P (regno)) + { + if (vec_flags & VEC_STRUCT) + return end_hard_regno (mode, regno) - 1 <= V31_REGNUM; +@@ -1517,13 +1573,69 @@ emit_set_insn (rtx x, rtx y) + rtx + aarch64_gen_compare_reg (RTX_CODE code, rtx x, rtx y) + { +- machine_mode mode = SELECT_CC_MODE (code, x, y); +- rtx cc_reg = gen_rtx_REG (mode, CC_REGNUM); ++ machine_mode cmp_mode = GET_MODE (x); ++ machine_mode cc_mode; ++ rtx cc_reg; ++ ++ if (cmp_mode == TImode) ++ { ++ gcc_assert (code == NE); + +- emit_set_insn (cc_reg, gen_rtx_COMPARE (mode, x, y)); ++ cc_mode = CCmode; ++ cc_reg = gen_rtx_REG (cc_mode, CC_REGNUM); ++ ++ rtx x_lo = operand_subword (x, 0, 0, TImode); ++ rtx y_lo = operand_subword (y, 0, 0, TImode); ++ emit_set_insn (cc_reg, gen_rtx_COMPARE (cc_mode, x_lo, y_lo)); ++ ++ rtx x_hi = operand_subword (x, 1, 0, TImode); ++ rtx y_hi = operand_subword (y, 1, 0, TImode); ++ emit_insn (gen_ccmpdi (cc_reg, cc_reg, x_hi, y_hi, ++ gen_rtx_EQ (cc_mode, cc_reg, const0_rtx), ++ GEN_INT (AARCH64_EQ))); ++ } ++ else ++ { ++ cc_mode = SELECT_CC_MODE (code, x, y); ++ cc_reg = gen_rtx_REG (cc_mode, CC_REGNUM); ++ emit_set_insn (cc_reg, gen_rtx_COMPARE (cc_mode, x, y)); ++ } + return cc_reg; + } + ++/* Similarly, but maybe zero-extend Y if Y_MODE < SImode. */ ++ ++static rtx ++aarch64_gen_compare_reg_maybe_ze (RTX_CODE code, rtx x, rtx y, ++ machine_mode y_mode) ++{ ++ if (y_mode == E_QImode || y_mode == E_HImode) ++ { ++ if (CONST_INT_P (y)) ++ { ++ y = GEN_INT (INTVAL (y) & GET_MODE_MASK (y_mode)); ++ y_mode = SImode; ++ } ++ else ++ { ++ rtx t, cc_reg; ++ machine_mode cc_mode; ++ ++ t = gen_rtx_ZERO_EXTEND (SImode, y); ++ t = gen_rtx_COMPARE (CC_SWPmode, t, x); ++ cc_mode = CC_SWPmode; ++ cc_reg = gen_rtx_REG (cc_mode, CC_REGNUM); ++ emit_set_insn (cc_reg, t); ++ return cc_reg; ++ } ++ } ++ ++ if (!aarch64_plus_operand (y, y_mode)) ++ y = force_reg (y_mode, y); ++ ++ return aarch64_gen_compare_reg (code, x, y); ++} ++ + /* Build the SYMBOL_REF for __tls_get_addr. */ + + static GTY(()) rtx tls_get_addr_libfunc; +@@ -2481,7 +2593,7 @@ aarch64_add_offset_1 (scalar_int_mode mode, rtx dest, + gcc_assert (emit_move_imm || temp1 != NULL_RTX); + gcc_assert (temp1 == NULL_RTX || !reg_overlap_mentioned_p (temp1, src)); + +- HOST_WIDE_INT moffset = abs_hwi (offset); ++ unsigned HOST_WIDE_INT moffset = absu_hwi (offset); + rtx_insn *insn; + + if (!moffset) +@@ -2525,7 +2637,8 @@ aarch64_add_offset_1 (scalar_int_mode mode, rtx dest, + if (emit_move_imm) + { + gcc_assert (temp1 != NULL_RTX || can_create_pseudo_p ()); +- temp1 = aarch64_force_temporary (mode, temp1, GEN_INT (moffset)); ++ temp1 = aarch64_force_temporary (mode, temp1, ++ gen_int_mode (moffset, mode)); + } + insn = emit_insn (offset < 0 + ? gen_sub3_insn (dest, src, temp1) +@@ -4333,6 +4446,17 @@ aarch64_return_address_signing_enabled (void) + /* This function should only be called after frame laid out. */ + gcc_assert (cfun->machine->frame.laid_out); + ++ /* Turn return address signing off in any function that uses ++ __builtin_eh_return. The address passed to __builtin_eh_return ++ is not signed so either it has to be signed (with original sp) ++ or the code path that uses it has to avoid authenticating it. ++ Currently eh return introduces a return to anywhere gadget, no ++ matter what we do here since it uses ret with user provided ++ address. An ideal fix for that is to use indirect branch which ++ can be protected with BTI j (to some extent). */ ++ if (crtl->calls_eh_return) ++ return false; ++ + /* If signing scope is AARCH64_FUNCTION_NON_LEAF, we only sign a leaf function + if it's LR is pushed onto stack. */ + return (aarch64_ra_sign_scope == AARCH64_FUNCTION_ALL +@@ -6600,7 +6724,7 @@ sizetochar (int size) + 'S/T/U/V': Print a FP/SIMD register name for a register list. + The register printed is the FP/SIMD register name + of X + 0/1/2/3 for S/T/U/V. +- 'R': Print a scalar FP/SIMD register name + 1. ++ 'R': Print a scalar Integer/FP/SIMD register name + 1. + 'X': Print bottom 16 bits of integer constant in hex. + 'w/x': Print a general register name or the zero register + (32-bit or 64-bit). +@@ -6786,12 +6910,13 @@ aarch64_print_operand (FILE *f, rtx x, int code) + break; + + case 'R': +- if (!REG_P (x) || !FP_REGNUM_P (REGNO (x))) +- { +- output_operand_lossage ("incompatible floating point / vector register operand for '%%%c'", code); +- return; +- } +- asm_fprintf (f, "q%d", REGNO (x) - V0_REGNUM + 1); ++ if (REG_P (x) && FP_REGNUM_P (REGNO (x))) ++ asm_fprintf (f, "q%d", REGNO (x) - V0_REGNUM + 1); ++ else if (REG_P (x) && GP_REGNUM_P (REGNO (x))) ++ asm_fprintf (f, "x%d", REGNO (x) - R0_REGNUM + 1); ++ else ++ output_operand_lossage ("incompatible register operand for '%%%c'", ++ code); + break; + + case 'X': +@@ -7510,6 +7635,24 @@ aarch64_initial_elimination_offset (unsigned from, unsigned to) + return cfun->machine->frame.frame_size; + } + ++ ++/* Get return address without mangling. */ ++ ++rtx ++aarch64_return_addr_rtx (void) ++{ ++ rtx val = get_hard_reg_initial_val (Pmode, LR_REGNUM); ++ /* Note: aarch64_return_address_signing_enabled only ++ works after cfun->machine->frame.laid_out is set, ++ so here we don't know if the return address will ++ be signed or not. */ ++ rtx lr = gen_rtx_REG (Pmode, LR_REGNUM); ++ emit_move_insn (lr, val); ++ emit_insn (GEN_FCN (CODE_FOR_xpaclri) ()); ++ return lr; ++} ++ ++ + /* Implement RETURN_ADDR_RTX. We do not support moving back to a + previous frame. */ + +@@ -7518,7 +7661,7 @@ aarch64_return_addr (int count, rtx frame ATTRIBUTE_UNUSED) + { + if (count != 0) + return const0_rtx; +- return get_hard_reg_initial_val (Pmode, LR_REGNUM); ++ return aarch64_return_addr_rtx (); + } + + +@@ -11330,6 +11473,8 @@ static const struct aarch64_attribute_info aarch64_attributes[] = + OPT_mtune_ }, + { "sign-return-address", aarch64_attr_enum, false, NULL, + OPT_msign_return_address_ }, ++ { "outline-atomics", aarch64_attr_bool, true, NULL, ++ OPT_moutline_atomics}, + { NULL, aarch64_attr_custom, false, NULL, OPT____ } + }; + +@@ -12906,7 +13051,12 @@ aarch64_simd_container_mode (scalar_mode mode, poly_int64 width) + static machine_mode + aarch64_preferred_simd_mode (scalar_mode mode) + { +- poly_int64 bits = TARGET_SVE ? BITS_PER_SVE_VECTOR : 128; ++ /* If current tuning prefers Advanced SIMD, bypass SVE. */ ++ bool use_sve ++ = TARGET_SVE ++ && !(aarch64_tune_params.extra_tuning_flags ++ & AARCH64_EXTRA_TUNE_PREFER_ADVSIMD_AUTOVEC); ++ poly_int64 bits = use_sve ? BITS_PER_SVE_VECTOR : 128; + return aarch64_simd_container_mode (mode, bits); + } + +@@ -12915,7 +13065,11 @@ aarch64_preferred_simd_mode (scalar_mode mode) + static void + aarch64_autovectorize_vector_sizes (vector_sizes *sizes) + { +- if (TARGET_SVE) ++ bool use_sve ++ = TARGET_SVE ++ && !(aarch64_tune_params.extra_tuning_flags ++ & AARCH64_EXTRA_TUNE_PREFER_ADVSIMD_AUTOVEC); ++ if (use_sve) + sizes->safe_push (BYTES_PER_SVE_VECTOR); + sizes->safe_push (16); + sizes->safe_push (8); +@@ -14117,40 +14271,54 @@ static void + aarch64_emit_load_exclusive (machine_mode mode, rtx rval, + rtx mem, rtx model_rtx) + { +- rtx (*gen) (rtx, rtx, rtx); +- +- switch (mode) ++ if (mode == TImode) ++ emit_insn (gen_aarch64_load_exclusive_pair (gen_lowpart (DImode, rval), ++ gen_highpart (DImode, rval), ++ mem, model_rtx)); ++ else + { +- case E_QImode: gen = gen_aarch64_load_exclusiveqi; break; +- case E_HImode: gen = gen_aarch64_load_exclusivehi; break; +- case E_SImode: gen = gen_aarch64_load_exclusivesi; break; +- case E_DImode: gen = gen_aarch64_load_exclusivedi; break; +- default: +- gcc_unreachable (); +- } ++ rtx (*gen) (rtx, rtx, rtx); + +- emit_insn (gen (rval, mem, model_rtx)); ++ switch (mode) ++ { ++ case E_QImode: gen = gen_aarch64_load_exclusiveqi; break; ++ case E_HImode: gen = gen_aarch64_load_exclusivehi; break; ++ case E_SImode: gen = gen_aarch64_load_exclusivesi; break; ++ case E_DImode: gen = gen_aarch64_load_exclusivedi; break; ++ default: ++ gcc_unreachable (); ++ } ++ ++ emit_insn (gen (rval, mem, model_rtx)); ++ } + } + + /* Emit store exclusive. */ + + static void + aarch64_emit_store_exclusive (machine_mode mode, rtx bval, +- rtx rval, rtx mem, rtx model_rtx) ++ rtx mem, rtx rval, rtx model_rtx) + { +- rtx (*gen) (rtx, rtx, rtx, rtx); +- +- switch (mode) ++ if (mode == TImode) ++ emit_insn (gen_aarch64_store_exclusive_pair ++ (bval, mem, operand_subword (rval, 0, 0, TImode), ++ operand_subword (rval, 1, 0, TImode), model_rtx)); ++ else + { +- case E_QImode: gen = gen_aarch64_store_exclusiveqi; break; +- case E_HImode: gen = gen_aarch64_store_exclusivehi; break; +- case E_SImode: gen = gen_aarch64_store_exclusivesi; break; +- case E_DImode: gen = gen_aarch64_store_exclusivedi; break; +- default: +- gcc_unreachable (); +- } ++ rtx (*gen) (rtx, rtx, rtx, rtx); + +- emit_insn (gen (bval, rval, mem, model_rtx)); ++ switch (mode) ++ { ++ case E_QImode: gen = gen_aarch64_store_exclusiveqi; break; ++ case E_HImode: gen = gen_aarch64_store_exclusivehi; break; ++ case E_SImode: gen = gen_aarch64_store_exclusivesi; break; ++ case E_DImode: gen = gen_aarch64_store_exclusivedi; break; ++ default: ++ gcc_unreachable (); ++ } ++ ++ emit_insn (gen (bval, mem, rval, model_rtx)); ++ } + } + + /* Mark the previous jump instruction as unlikely. */ +@@ -14162,30 +14330,89 @@ aarch64_emit_unlikely_jump (rtx insn) + add_reg_br_prob_note (jump, profile_probability::very_unlikely ()); + } + ++/* We store the names of the various atomic helpers in a 5x4 array. ++ Return the libcall function given MODE, MODEL and NAMES. */ ++ ++rtx ++aarch64_atomic_ool_func (machine_mode mode, rtx model_rtx, ++ const atomic_ool_names *names) ++{ ++ memmodel model = memmodel_base (INTVAL (model_rtx)); ++ int mode_idx, model_idx; ++ ++ switch (mode) ++ { ++ case E_QImode: ++ mode_idx = 0; ++ break; ++ case E_HImode: ++ mode_idx = 1; ++ break; ++ case E_SImode: ++ mode_idx = 2; ++ break; ++ case E_DImode: ++ mode_idx = 3; ++ break; ++ case E_TImode: ++ mode_idx = 4; ++ break; ++ default: ++ gcc_unreachable (); ++ } ++ ++ switch (model) ++ { ++ case MEMMODEL_RELAXED: ++ model_idx = 0; ++ break; ++ case MEMMODEL_CONSUME: ++ case MEMMODEL_ACQUIRE: ++ model_idx = 1; ++ break; ++ case MEMMODEL_RELEASE: ++ model_idx = 2; ++ break; ++ case MEMMODEL_ACQ_REL: ++ case MEMMODEL_SEQ_CST: ++ model_idx = 3; ++ break; ++ default: ++ gcc_unreachable (); ++ } ++ ++ return init_one_libfunc_visibility (names->str[mode_idx][model_idx], ++ VISIBILITY_HIDDEN); ++} ++ ++#define DEF0(B, N) \ ++ { "__aarch64_" #B #N "_relax", \ ++ "__aarch64_" #B #N "_acq", \ ++ "__aarch64_" #B #N "_rel", \ ++ "__aarch64_" #B #N "_acq_rel" } ++ ++#define DEF4(B) DEF0(B, 1), DEF0(B, 2), DEF0(B, 4), DEF0(B, 8), \ ++ { NULL, NULL, NULL, NULL } ++#define DEF5(B) DEF0(B, 1), DEF0(B, 2), DEF0(B, 4), DEF0(B, 8), DEF0(B, 16) ++ ++static const atomic_ool_names aarch64_ool_cas_names = { { DEF5(cas) } }; ++const atomic_ool_names aarch64_ool_swp_names = { { DEF4(swp) } }; ++const atomic_ool_names aarch64_ool_ldadd_names = { { DEF4(ldadd) } }; ++const atomic_ool_names aarch64_ool_ldset_names = { { DEF4(ldset) } }; ++const atomic_ool_names aarch64_ool_ldclr_names = { { DEF4(ldclr) } }; ++const atomic_ool_names aarch64_ool_ldeor_names = { { DEF4(ldeor) } }; ++ ++#undef DEF0 ++#undef DEF4 ++#undef DEF5 ++ + /* Expand a compare and swap pattern. */ + + void + aarch64_expand_compare_and_swap (rtx operands[]) + { +- rtx bval, rval, mem, oldval, newval, is_weak, mod_s, mod_f, x; +- machine_mode mode, cmp_mode; +- typedef rtx (*gen_cas_fn) (rtx, rtx, rtx, rtx, rtx, rtx, rtx); +- int idx; +- gen_cas_fn gen; +- const gen_cas_fn split_cas[] = +- { +- gen_aarch64_compare_and_swapqi, +- gen_aarch64_compare_and_swaphi, +- gen_aarch64_compare_and_swapsi, +- gen_aarch64_compare_and_swapdi +- }; +- const gen_cas_fn atomic_cas[] = +- { +- gen_aarch64_compare_and_swapqi_lse, +- gen_aarch64_compare_and_swaphi_lse, +- gen_aarch64_compare_and_swapsi_lse, +- gen_aarch64_compare_and_swapdi_lse +- }; ++ rtx bval, rval, mem, oldval, newval, is_weak, mod_s, mod_f, x, cc_reg; ++ machine_mode mode, r_mode; + + bval = operands[0]; + rval = operands[1]; +@@ -14196,88 +14423,107 @@ aarch64_expand_compare_and_swap (rtx operands[]) + mod_s = operands[6]; + mod_f = operands[7]; + mode = GET_MODE (mem); +- cmp_mode = mode; + + /* Normally the succ memory model must be stronger than fail, but in the + unlikely event of fail being ACQUIRE and succ being RELEASE we need to + promote succ to ACQ_REL so that we don't lose the acquire semantics. */ +- + if (is_mm_acquire (memmodel_from_int (INTVAL (mod_f))) + && is_mm_release (memmodel_from_int (INTVAL (mod_s)))) + mod_s = GEN_INT (MEMMODEL_ACQ_REL); + +- switch (mode) ++ r_mode = mode; ++ if (mode == QImode || mode == HImode) + { +- case E_QImode: +- case E_HImode: +- /* For short modes, we're going to perform the comparison in SImode, +- so do the zero-extension now. */ +- cmp_mode = SImode; +- rval = gen_reg_rtx (SImode); +- oldval = convert_modes (SImode, mode, oldval, true); +- /* Fall through. */ ++ r_mode = SImode; ++ rval = gen_reg_rtx (r_mode); ++ } + +- case E_SImode: +- case E_DImode: +- /* Force the value into a register if needed. */ +- if (!aarch64_plus_operand (oldval, mode)) +- oldval = force_reg (cmp_mode, oldval); +- break; ++ if (TARGET_LSE) ++ { ++ insn_code code; ++ switch (mode) ++ { ++ case E_QImode: ++ code = CODE_FOR_aarch64_compare_and_swapqi_lse; ++ break; ++ case E_HImode: ++ code = CODE_FOR_aarch64_compare_and_swaphi_lse; ++ break; ++ case E_SImode: ++ code = CODE_FOR_aarch64_compare_and_swapsi_lse; ++ break; ++ case E_DImode: ++ code = CODE_FOR_aarch64_compare_and_swapdi_lse; ++ break; ++ case E_TImode: ++ code = CODE_FOR_aarch64_compare_and_swapti_lse; ++ break; ++ default: ++ gcc_unreachable (); ++ } ++ /* The CAS insn requires oldval and rval overlap, but we need to ++ have a copy of oldval saved across the operation to tell if ++ the operation is successful. */ ++ if (reg_overlap_mentioned_p (rval, oldval)) ++ rval = copy_to_mode_reg (r_mode, oldval); ++ else ++ emit_move_insn (rval, gen_lowpart (r_mode, oldval)); + +- default: +- gcc_unreachable (); +- } ++ emit_insn (GEN_FCN (code) (rval, mem, newval, mod_s)); + +- switch (mode) ++ cc_reg = aarch64_gen_compare_reg_maybe_ze (NE, rval, oldval, mode); ++ } ++ else if (TARGET_OUTLINE_ATOMICS) + { +- case E_QImode: idx = 0; break; +- case E_HImode: idx = 1; break; +- case E_SImode: idx = 2; break; +- case E_DImode: idx = 3; break; +- default: +- gcc_unreachable (); ++ /* Oldval must satisfy compare afterward. */ ++ if (!aarch64_plus_operand (oldval, mode)) ++ oldval = force_reg (mode, oldval); ++ rtx func = aarch64_atomic_ool_func (mode, mod_s, &aarch64_ool_cas_names); ++ rval = emit_library_call_value (func, NULL_RTX, LCT_NORMAL, r_mode, ++ oldval, mode, newval, mode, ++ XEXP (mem, 0), Pmode); ++ cc_reg = aarch64_gen_compare_reg_maybe_ze (NE, rval, oldval, mode); + } +- if (TARGET_LSE) +- gen = atomic_cas[idx]; + else +- gen = split_cas[idx]; ++ { ++ /* The oldval predicate varies by mode. Test it and force to reg. */ ++ insn_code code; ++ switch (mode) ++ { ++ case E_QImode: ++ code = CODE_FOR_aarch64_compare_and_swapqi; ++ break; ++ case E_HImode: ++ code = CODE_FOR_aarch64_compare_and_swaphi; ++ break; ++ case E_SImode: ++ code = CODE_FOR_aarch64_compare_and_swapsi; ++ break; ++ case E_DImode: ++ code = CODE_FOR_aarch64_compare_and_swapdi; ++ break; ++ case E_TImode: ++ code = CODE_FOR_aarch64_compare_and_swapti; ++ break; ++ default: ++ gcc_unreachable (); ++ } ++ if (!insn_data[code].operand[2].predicate (oldval, mode)) ++ oldval = force_reg (mode, oldval); + +- emit_insn (gen (rval, mem, oldval, newval, is_weak, mod_s, mod_f)); ++ emit_insn (GEN_FCN (code) (rval, mem, oldval, newval, ++ is_weak, mod_s, mod_f)); ++ cc_reg = gen_rtx_REG (CCmode, CC_REGNUM); ++ } + +- if (mode == QImode || mode == HImode) +- emit_move_insn (operands[1], gen_lowpart (mode, rval)); ++ if (r_mode != mode) ++ rval = gen_lowpart (mode, rval); ++ emit_move_insn (operands[1], rval); + +- x = gen_rtx_REG (CCmode, CC_REGNUM); +- x = gen_rtx_EQ (SImode, x, const0_rtx); ++ x = gen_rtx_EQ (SImode, cc_reg, const0_rtx); + emit_insn (gen_rtx_SET (bval, x)); + } + +-/* Test whether the target supports using a atomic load-operate instruction. +- CODE is the operation and AFTER is TRUE if the data in memory after the +- operation should be returned and FALSE if the data before the operation +- should be returned. Returns FALSE if the operation isn't supported by the +- architecture. */ +- +-bool +-aarch64_atomic_ldop_supported_p (enum rtx_code code) +-{ +- if (!TARGET_LSE) +- return false; +- +- switch (code) +- { +- case SET: +- case AND: +- case IOR: +- case XOR: +- case MINUS: +- case PLUS: +- return true; +- default: +- return false; +- } +-} +- + /* Emit a barrier, that is appropriate for memory model MODEL, at the end of a + sequence implementing an atomic operation. */ + +@@ -14295,42 +14541,6 @@ aarch64_emit_post_barrier (enum memmodel model) + } + } + +-/* Emit an atomic compare-and-swap operation. RVAL is the destination register +- for the data in memory. EXPECTED is the value expected to be in memory. +- DESIRED is the value to store to memory. MEM is the memory location. MODEL +- is the memory ordering to use. */ +- +-void +-aarch64_gen_atomic_cas (rtx rval, rtx mem, +- rtx expected, rtx desired, +- rtx model) +-{ +- rtx (*gen) (rtx, rtx, rtx, rtx); +- machine_mode mode; +- +- mode = GET_MODE (mem); +- +- switch (mode) +- { +- case E_QImode: gen = gen_aarch64_atomic_casqi; break; +- case E_HImode: gen = gen_aarch64_atomic_cashi; break; +- case E_SImode: gen = gen_aarch64_atomic_cassi; break; +- case E_DImode: gen = gen_aarch64_atomic_casdi; break; +- default: +- gcc_unreachable (); +- } +- +- /* Move the expected value into the CAS destination register. */ +- emit_insn (gen_rtx_SET (rval, expected)); +- +- /* Emit the CAS. */ +- emit_insn (gen (rval, mem, desired, model)); +- +- /* Compare the expected value with the value loaded by the CAS, to establish +- whether the swap was made. */ +- aarch64_gen_compare_reg (EQ, rval, expected); +-} +- + /* Split a compare and swap pattern. */ + + void +@@ -14339,13 +14549,11 @@ aarch64_split_compare_and_swap (rtx operands[]) + /* Split after prolog/epilog to avoid interactions with shrinkwrapping. */ + gcc_assert (epilogue_completed); + +- rtx rval, mem, oldval, newval, scratch; ++ rtx rval, mem, oldval, newval, scratch, x, model_rtx; + machine_mode mode; + bool is_weak; + rtx_code_label *label1, *label2; +- rtx x, cond; + enum memmodel model; +- rtx model_rtx; + + rval = operands[0]; + mem = operands[1]; +@@ -14366,7 +14574,7 @@ aarch64_split_compare_and_swap (rtx operands[]) + CBNZ scratch, .label1 + .label2: + CMP rval, 0. */ +- bool strong_zero_p = !is_weak && oldval == const0_rtx; ++ bool strong_zero_p = (!is_weak && oldval == const0_rtx && mode != TImode); + + label1 = NULL; + if (!is_weak) +@@ -14379,26 +14587,20 @@ aarch64_split_compare_and_swap (rtx operands[]) + /* The initial load can be relaxed for a __sync operation since a final + barrier will be emitted to stop code hoisting. */ + if (is_mm_sync (model)) +- aarch64_emit_load_exclusive (mode, rval, mem, +- GEN_INT (MEMMODEL_RELAXED)); ++ aarch64_emit_load_exclusive (mode, rval, mem, GEN_INT (MEMMODEL_RELAXED)); + else + aarch64_emit_load_exclusive (mode, rval, mem, model_rtx); + + if (strong_zero_p) +- { +- 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)); +- } ++ x = gen_rtx_NE (VOIDmode, rval, const0_rtx); + else + { +- cond = aarch64_gen_compare_reg (NE, rval, oldval); +- x = gen_rtx_NE (VOIDmode, cond, 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)); ++ rtx cc_reg = aarch64_gen_compare_reg_maybe_ze (NE, rval, oldval, mode); ++ x = gen_rtx_NE (VOIDmode, cc_reg, 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)); + + aarch64_emit_store_exclusive (mode, scratch, mem, newval, model_rtx); + +@@ -14410,273 +14612,21 @@ aarch64_split_compare_and_swap (rtx operands[]) + aarch64_emit_unlikely_jump (gen_rtx_SET (pc_rtx, x)); + } + else +- { +- cond = gen_rtx_REG (CCmode, CC_REGNUM); +- x = gen_rtx_COMPARE (CCmode, scratch, const0_rtx); +- emit_insn (gen_rtx_SET (cond, x)); +- } ++ aarch64_gen_compare_reg (NE, scratch, const0_rtx); + + emit_label (label2); ++ + /* If we used a CBNZ in the exchange loop emit an explicit compare with RVAL + to set the condition flags. If this is not used it will be removed by + later passes. */ + if (strong_zero_p) +- { +- cond = gen_rtx_REG (CCmode, CC_REGNUM); +- x = gen_rtx_COMPARE (CCmode, rval, const0_rtx); +- emit_insn (gen_rtx_SET (cond, x)); +- } ++ aarch64_gen_compare_reg (NE, rval, const0_rtx); ++ + /* Emit any final barrier needed for a __sync operation. */ + if (is_mm_sync (model)) + aarch64_emit_post_barrier (model); + } + +-/* Emit a BIC instruction. */ +- +-static void +-aarch64_emit_bic (machine_mode mode, rtx dst, rtx s1, rtx s2, int shift) +-{ +- rtx shift_rtx = GEN_INT (shift); +- rtx (*gen) (rtx, rtx, rtx, rtx); +- +- switch (mode) +- { +- case E_SImode: gen = gen_and_one_cmpl_lshrsi3; break; +- case E_DImode: gen = gen_and_one_cmpl_lshrdi3; break; +- default: +- gcc_unreachable (); +- } +- +- emit_insn (gen (dst, s2, shift_rtx, s1)); +-} +- +-/* Emit an atomic swap. */ +- +-static void +-aarch64_emit_atomic_swap (machine_mode mode, rtx dst, rtx value, +- rtx mem, rtx model) +-{ +- rtx (*gen) (rtx, rtx, rtx, rtx); +- +- switch (mode) +- { +- case E_QImode: gen = gen_aarch64_atomic_swpqi; break; +- case E_HImode: gen = gen_aarch64_atomic_swphi; break; +- case E_SImode: gen = gen_aarch64_atomic_swpsi; break; +- case E_DImode: gen = gen_aarch64_atomic_swpdi; break; +- default: +- gcc_unreachable (); +- } +- +- emit_insn (gen (dst, mem, value, model)); +-} +- +-/* Operations supported by aarch64_emit_atomic_load_op. */ +- +-enum aarch64_atomic_load_op_code +-{ +- AARCH64_LDOP_PLUS, /* A + B */ +- AARCH64_LDOP_XOR, /* A ^ B */ +- AARCH64_LDOP_OR, /* A | B */ +- AARCH64_LDOP_BIC /* A & ~B */ +-}; +- +-/* Emit an atomic load-operate. */ +- +-static void +-aarch64_emit_atomic_load_op (enum aarch64_atomic_load_op_code code, +- machine_mode mode, rtx dst, rtx src, +- rtx mem, rtx model) +-{ +- typedef rtx (*aarch64_atomic_load_op_fn) (rtx, rtx, rtx, rtx); +- const aarch64_atomic_load_op_fn plus[] = +- { +- gen_aarch64_atomic_loadaddqi, +- gen_aarch64_atomic_loadaddhi, +- gen_aarch64_atomic_loadaddsi, +- gen_aarch64_atomic_loadadddi +- }; +- const aarch64_atomic_load_op_fn eor[] = +- { +- gen_aarch64_atomic_loadeorqi, +- gen_aarch64_atomic_loadeorhi, +- gen_aarch64_atomic_loadeorsi, +- gen_aarch64_atomic_loadeordi +- }; +- const aarch64_atomic_load_op_fn ior[] = +- { +- gen_aarch64_atomic_loadsetqi, +- gen_aarch64_atomic_loadsethi, +- gen_aarch64_atomic_loadsetsi, +- gen_aarch64_atomic_loadsetdi +- }; +- const aarch64_atomic_load_op_fn bic[] = +- { +- gen_aarch64_atomic_loadclrqi, +- gen_aarch64_atomic_loadclrhi, +- gen_aarch64_atomic_loadclrsi, +- gen_aarch64_atomic_loadclrdi +- }; +- aarch64_atomic_load_op_fn gen; +- int idx = 0; +- +- switch (mode) +- { +- case E_QImode: idx = 0; break; +- case E_HImode: idx = 1; break; +- case E_SImode: idx = 2; break; +- case E_DImode: idx = 3; break; +- default: +- gcc_unreachable (); +- } +- +- switch (code) +- { +- case AARCH64_LDOP_PLUS: gen = plus[idx]; break; +- case AARCH64_LDOP_XOR: gen = eor[idx]; break; +- case AARCH64_LDOP_OR: gen = ior[idx]; break; +- case AARCH64_LDOP_BIC: gen = bic[idx]; break; +- default: +- gcc_unreachable (); +- } +- +- emit_insn (gen (dst, mem, src, model)); +-} +- +-/* Emit an atomic load+operate. CODE is the operation. OUT_DATA is the +- location to store the data read from memory. OUT_RESULT is the location to +- store the result of the operation. MEM is the memory location to read and +- modify. MODEL_RTX is the memory ordering to use. VALUE is the second +- operand for the operation. Either OUT_DATA or OUT_RESULT, but not both, can +- be NULL. */ +- +-void +-aarch64_gen_atomic_ldop (enum rtx_code code, rtx out_data, rtx out_result, +- rtx mem, rtx value, rtx model_rtx) +-{ +- machine_mode mode = GET_MODE (mem); +- machine_mode wmode = (mode == DImode ? DImode : SImode); +- const bool short_mode = (mode < SImode); +- aarch64_atomic_load_op_code ldop_code; +- rtx src; +- rtx x; +- +- if (out_data) +- out_data = gen_lowpart (mode, out_data); +- +- if (out_result) +- out_result = gen_lowpart (mode, out_result); +- +- /* Make sure the value is in a register, putting it into a destination +- register if it needs to be manipulated. */ +- if (!register_operand (value, mode) +- || code == AND || code == MINUS) +- { +- src = out_result ? out_result : out_data; +- emit_move_insn (src, gen_lowpart (mode, value)); +- } +- else +- src = value; +- gcc_assert (register_operand (src, mode)); +- +- /* Preprocess the data for the operation as necessary. If the operation is +- a SET then emit a swap instruction and finish. */ +- switch (code) +- { +- case SET: +- aarch64_emit_atomic_swap (mode, out_data, src, mem, model_rtx); +- return; +- +- case MINUS: +- /* Negate the value and treat it as a PLUS. */ +- { +- rtx neg_src; +- +- /* Resize the value if necessary. */ +- if (short_mode) +- src = gen_lowpart (wmode, src); +- +- neg_src = gen_rtx_NEG (wmode, src); +- emit_insn (gen_rtx_SET (src, neg_src)); +- +- if (short_mode) +- src = gen_lowpart (mode, src); +- } +- /* Fall-through. */ +- case PLUS: +- ldop_code = AARCH64_LDOP_PLUS; +- break; +- +- case IOR: +- ldop_code = AARCH64_LDOP_OR; +- break; +- +- case XOR: +- ldop_code = AARCH64_LDOP_XOR; +- break; +- +- case AND: +- { +- rtx not_src; +- +- /* Resize the value if necessary. */ +- if (short_mode) +- src = gen_lowpart (wmode, src); +- +- not_src = gen_rtx_NOT (wmode, src); +- emit_insn (gen_rtx_SET (src, not_src)); +- +- if (short_mode) +- src = gen_lowpart (mode, src); +- } +- ldop_code = AARCH64_LDOP_BIC; +- break; +- +- default: +- /* The operation can't be done with atomic instructions. */ +- gcc_unreachable (); +- } +- +- aarch64_emit_atomic_load_op (ldop_code, mode, out_data, src, mem, model_rtx); +- +- /* If necessary, calculate the data in memory after the update by redoing the +- operation from values in registers. */ +- if (!out_result) +- return; +- +- if (short_mode) +- { +- src = gen_lowpart (wmode, src); +- out_data = gen_lowpart (wmode, out_data); +- out_result = gen_lowpart (wmode, out_result); +- } +- +- x = NULL_RTX; +- +- switch (code) +- { +- case MINUS: +- case PLUS: +- x = gen_rtx_PLUS (wmode, out_data, src); +- break; +- case IOR: +- x = gen_rtx_IOR (wmode, out_data, src); +- break; +- case XOR: +- x = gen_rtx_XOR (wmode, out_data, src); +- break; +- case AND: +- aarch64_emit_bic (wmode, out_result, out_data, src, 0); +- return; +- default: +- gcc_unreachable (); +- } +- +- emit_set_insn (out_result, x); +- +- return; +-} +- + /* Split an atomic operation. */ + + void +@@ -15435,7 +15385,8 @@ aarch64_evpc_rev_local (struct expand_vec_perm_d *d) + + if (d->vec_flags == VEC_SVE_PRED + || !d->one_vector_p +- || !d->perm[0].is_constant (&diff)) ++ || !d->perm[0].is_constant (&diff) ++ || !diff) + return false; + + size = (diff + 1) * GET_MODE_UNIT_SIZE (d->vmode); +@@ -16046,7 +15997,7 @@ aarch64_copy_one_block_and_progress_pointers (rtx *src, rtx *dst, + bool + aarch64_expand_movmem (rtx *operands) + { +- unsigned int n; ++ unsigned HOST_WIDE_INT n; + rtx dst = operands[0]; + rtx src = operands[1]; + rtx base; +--- a/src/gcc/config/aarch64/aarch64.h ++++ b/src/gcc/config/aarch64/aarch64.h +@@ -157,6 +157,7 @@ extern unsigned aarch64_architecture_version; + #define AARCH64_FL_SM4 (1 << 17) /* Has ARMv8.4-A SM3 and SM4. */ + #define AARCH64_FL_SHA3 (1 << 18) /* Has ARMv8.4-a SHA3 and SHA512. */ + #define AARCH64_FL_F16FML (1 << 19) /* Has ARMv8.4-a FP16 extensions. */ ++#define AARCH64_FL_RNG (1 << 23) /* ARMv8.5-A Random Number Insns. */ + + /* Has FP and SIMD. */ + #define AARCH64_FL_FPSIMD (AARCH64_FL_FP | AARCH64_FL_SIMD) +@@ -196,6 +197,7 @@ extern unsigned aarch64_architecture_version; + #define AARCH64_ISA_SM4 (aarch64_isa_flags & AARCH64_FL_SM4) + #define AARCH64_ISA_SHA3 (aarch64_isa_flags & AARCH64_FL_SHA3) + #define AARCH64_ISA_F16FML (aarch64_isa_flags & AARCH64_FL_F16FML) ++#define AARCH64_ISA_RNG (aarch64_isa_flags & AARCH64_FL_RNG) + + /* Crypto is an optional extension to AdvSIMD. */ + #define TARGET_CRYPTO (TARGET_SIMD && AARCH64_ISA_CRYPTO) +@@ -234,6 +236,15 @@ extern unsigned aarch64_architecture_version; + /* ARMv8.3-A features. */ + #define TARGET_ARMV8_3 (AARCH64_ISA_V8_3) + ++/* Javascript conversion instruction from Armv8.3-a. */ ++#define TARGET_JSCVT (TARGET_FLOAT && AARCH64_ISA_V8_3) ++ ++/* Random number instructions from Armv8.5-a. */ ++#define TARGET_RNG (AARCH64_ISA_RNG) ++ ++/* Armv8.3-a Complex number extension to AdvSIMD extensions. */ ++#define TARGET_COMPLEX (TARGET_SIMD && TARGET_ARMV8_3) ++ + /* Make sure this is always defined so we don't have to check for ifdefs + but rather use normal ifs. */ + #ifndef TARGET_FIX_ERR_A53_835769_DEFAULT +@@ -918,7 +929,7 @@ typedef struct + #define PROFILE_HOOK(LABEL) \ + { \ + rtx fun, lr; \ +- lr = get_hard_reg_initial_val (Pmode, LR_REGNUM); \ ++ lr = aarch64_return_addr_rtx (); \ + fun = gen_rtx_SYMBOL_REF (Pmode, MCOUNT_NAME); \ + emit_library_call (fun, LCT_NORMAL, VOIDmode, lr, Pmode); \ + } +--- a/src/gcc/config/aarch64/aarch64.md ++++ b/src/gcc/config/aarch64/aarch64.md +@@ -105,6 +105,7 @@ + UNSPEC_CRC32X + UNSPEC_FCVTZS + UNSPEC_FCVTZU ++ UNSPEC_FJCVTZS + UNSPEC_URECPE + UNSPEC_FRECPE + UNSPEC_FRECPS +@@ -200,6 +201,8 @@ + UNSPECV_SET_FPSR ; Represent assign of FPSR content. + UNSPECV_BLOCKAGE ; Represent a blockage + UNSPECV_PROBE_STACK_RANGE ; Represent stack range probing. ++ UNSPEC_RNDR ; Represent RNDR ++ UNSPEC_RNDRRS ; Represent RNDRRS + ] + ) + +@@ -5885,6 +5888,16 @@ + [(set_attr "length" "0")] + ) + ++(define_insn "aarch64_fjcvtzs" ++ [(set (match_operand:SI 0 "register_operand" "=r") ++ (unspec:SI [(match_operand:DF 1 "register_operand" "w")] ++ UNSPEC_FJCVTZS)) ++ (clobber (reg:CC CC_REGNUM))] ++ "TARGET_JSCVT" ++ "fjcvtzs\\t%w0, %d1" ++ [(set_attr "type" "f_cvtf2i")] ++) ++ + ;; Pointer authentication patterns are always provided. In architecture + ;; revisions prior to ARMv8.3-A these HINT instructions operate as NOPs. + ;; This lets the user write portable software which authenticates pointers +@@ -5982,35 +5995,30 @@ + (match_operand 2)] + "" + { +- rtx result; + machine_mode mode = GET_MODE (operands[0]); + +- result = gen_reg_rtx(mode); +- + emit_insn ((mode == DImode +- ? gen_stack_protect_test_di +- : gen_stack_protect_test_si) (result, +- operands[0], +- operands[1])); +- +- if (mode == DImode) +- emit_jump_insn (gen_cbranchdi4 (gen_rtx_EQ (VOIDmode, result, const0_rtx), +- result, const0_rtx, operands[2])); +- else +- emit_jump_insn (gen_cbranchsi4 (gen_rtx_EQ (VOIDmode, result, const0_rtx), +- result, const0_rtx, operands[2])); ++ ? gen_stack_protect_test_di ++ : gen_stack_protect_test_si) (operands[0], operands[1])); ++ ++ rtx cc_reg = gen_rtx_REG (CCmode, CC_REGNUM); ++ emit_jump_insn (gen_condjump (gen_rtx_EQ (VOIDmode, cc_reg, const0_rtx), ++ cc_reg, operands[2])); + DONE; + }) + ++;; DO NOT SPLIT THIS PATTERN. It is important for security reasons that the ++;; canary value does not live beyond the end of this sequence. + (define_insn "stack_protect_test_" +- [(set (match_operand:PTR 0 "register_operand" "=r") +- (unspec:PTR [(match_operand:PTR 1 "memory_operand" "m") +- (match_operand:PTR 2 "memory_operand" "m")] +- UNSPEC_SP_TEST)) ++ [(set (reg:CC CC_REGNUM) ++ (unspec:CC [(match_operand:PTR 0 "memory_operand" "m") ++ (match_operand:PTR 1 "memory_operand" "m")] ++ UNSPEC_SP_TEST)) ++ (clobber (match_scratch:PTR 2 "=&r")) + (clobber (match_scratch:PTR 3 "=&r"))] + "" +- "ldr\t%3, %1\;ldr\t%0, %2\;eor\t%0, %3, %0" +- [(set_attr "length" "12") ++ "ldr\t%2, %0\;ldr\t%3, %1\;subs\t%2, %2, %3\;mov\t%3, 0" ++ [(set_attr "length" "16") + (set_attr "type" "multiple")]) + + ;; Write Floating-point Control Register. +@@ -6087,6 +6095,26 @@ + (match_operand 1)) + (clobber (reg:CC CC_REGNUM))])]) + ++(define_insn "aarch64_rndr" ++ [(set (match_operand:DI 0 "register_operand" "=r") ++ (unspec_volatile:DI [(const_int 0)] UNSPEC_RNDR)) ++ (set (reg:CC_Z CC_REGNUM) ++ (unspec_volatile:CC_Z [(const_int 0)] UNSPEC_RNDR))] ++ "TARGET_RNG" ++ "mrs\t%0, RNDR" ++ [(set_attr "type" "mrs")] ++) ++ ++(define_insn "aarch64_rndrrs" ++ [(set (match_operand:DI 0 "register_operand" "=r") ++ (unspec_volatile:DI [(const_int 0)] UNSPEC_RNDRRS)) ++ (set (reg:CC_Z CC_REGNUM) ++ (unspec_volatile:CC_Z [(const_int 0)] UNSPEC_RNDRRS))] ++ "TARGET_RNG" ++ "mrs\t%0, RNDRRS" ++ [(set_attr "type" "mrs")] ++) ++ + ;; AdvSIMD Stuff + (include "aarch64-simd.md") + +--- a/src/gcc/config/aarch64/aarch64.opt ++++ b/src/gcc/config/aarch64/aarch64.opt +@@ -214,3 +214,7 @@ Target RejectNegative Joined Enum(sve_vector_bits) Var(aarch64_sve_vector_bits) + mverbose-cost-dump + Common Undocumented Var(flag_aarch64_verbose_cost) + Enables verbose cost model dumping in the debug dump files. ++ ++moutline-atomics ++Target Report Mask(OUTLINE_ATOMICS) Save ++Generate local calls to out-of-line atomic operations. +--- a/src/gcc/config/aarch64/arm_acle.h ++++ b/src/gcc/config/aarch64/arm_acle.h +@@ -29,6 +29,16 @@ + + #include + ++#pragma GCC push_options ++#pragma GCC target ("arch=armv8.3-a") ++__extension__ static __inline int32_t __attribute__ ((__always_inline__)) ++__jcvt (double __a) ++{ ++ return __builtin_aarch64_jcvtzs (__a); ++} ++ ++#pragma GCC pop_options ++ + #pragma GCC push_options + + #pragma GCC target ("+nothing+crc") +@@ -85,6 +95,24 @@ __crc32d (uint32_t __a, uint64_t __b) + return __builtin_aarch64_crc32x (__a, __b); + } + ++#pragma GCC pop_options ++ ++#pragma GCC push_options ++#pragma GCC target ("+nothing+rng") ++__extension__ static __inline int __attribute__ ((__always_inline__)) ++__rndr (uint64_t *__res) ++{ ++ return __builtin_aarch64_rndr (__res); ++} ++ ++__extension__ static __inline int __attribute__ ((__always_inline__)) ++__rndrrs (uint64_t *__res) ++{ ++ return __builtin_aarch64_rndrrs (__res); ++} ++ ++#pragma GCC pop_options ++ + #ifdef __cplusplus + } + #endif +--- a/src/gcc/config/aarch64/arm_neon.h ++++ b/src/gcc/config/aarch64/arm_neon.h +@@ -6055,6 +6055,20 @@ vreinterpretq_u32_p128 (poly128_t __a) + return (uint32x4_t)__a; + } + ++__extension__ extern __inline float64x2_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vreinterpretq_f64_p128 (poly128_t __a) ++{ ++ return (float64x2_t) __a; ++} ++ ++__extension__ extern __inline poly128_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vreinterpretq_p128_f64 (float64x2_t __a) ++{ ++ return (poly128_t) __a; ++} ++ + /* vset_lane */ + + __extension__ extern __inline float16x4_t +@@ -11822,6 +11836,18 @@ vabsq_s64 (int64x2_t __a) + return __builtin_aarch64_absv2di (__a); + } + ++/* Try to avoid moving between integer and vector registers. ++ For why the cast to unsigned is needed check the vnegd_s64 intrinsic. ++ There is a testcase related to this issue: ++ gcc.target/aarch64/vabsd_s64.c. */ ++ ++__extension__ extern __inline int64_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vabsd_s64 (int64_t __a) ++{ ++ return __a < 0 ? - (uint64_t) __a : __a; ++} ++ + /* vadd */ + + __extension__ extern __inline int64_t +@@ -12789,6 +12815,13 @@ vceqq_u64 (uint64x2_t __a, uint64x2_t __b) + return (__a == __b); + } + ++__extension__ extern __inline uint64x2_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vceqq_p64 (poly64x2_t __a, poly64x2_t __b) ++{ ++ return (__a == __b); ++} ++ + /* vceq - scalar. */ + + __extension__ extern __inline uint32_t +@@ -12898,6 +12931,13 @@ vceqz_u64 (uint64x1_t __a) + return (__a == __AARCH64_UINT64_C (0)); + } + ++__extension__ extern __inline uint64x1_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vceqz_p64 (poly64x1_t __a) ++{ ++ return (__a == __AARCH64_UINT64_C (0)); ++} ++ + __extension__ extern __inline uint32x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) + vceqzq_f32 (float32x4_t __a) +@@ -12975,6 +13015,13 @@ vceqzq_u64 (uint64x2_t __a) + return (__a == __AARCH64_UINT64_C (0)); + } + ++__extension__ extern __inline uint64x2_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vceqzq_p64 (poly64x2_t __a) ++{ ++ return (__a == __AARCH64_UINT64_C (0)); ++} ++ + /* vceqz - scalar. */ + + __extension__ extern __inline uint32_t +@@ -14173,6 +14220,48 @@ vclsq_s32 (int32x4_t __a) + return __builtin_aarch64_clrsbv4si (__a); + } + ++__extension__ extern __inline int8x8_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vcls_u8 (uint8x8_t __a) ++{ ++ return __builtin_aarch64_clrsbv8qi ((int8x8_t) __a); ++} ++ ++__extension__ extern __inline int16x4_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vcls_u16 (uint16x4_t __a) ++{ ++ return __builtin_aarch64_clrsbv4hi ((int16x4_t) __a); ++} ++ ++__extension__ extern __inline int32x2_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vcls_u32 (uint32x2_t __a) ++{ ++ return __builtin_aarch64_clrsbv2si ((int32x2_t) __a); ++} ++ ++__extension__ extern __inline int8x16_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vclsq_u8 (uint8x16_t __a) ++{ ++ return __builtin_aarch64_clrsbv16qi ((int8x16_t) __a); ++} ++ ++__extension__ extern __inline int16x8_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vclsq_u16 (uint16x8_t __a) ++{ ++ return __builtin_aarch64_clrsbv8hi ((int16x8_t) __a); ++} ++ ++__extension__ extern __inline int32x4_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vclsq_u32 (uint32x4_t __a) ++{ ++ return __builtin_aarch64_clrsbv4si ((int32x4_t) __a); ++} ++ + /* vclz. */ + + __extension__ extern __inline int8x8_t +@@ -15657,7 +15746,7 @@ vdupq_n_f64 (float64_t __a) + + __extension__ extern __inline poly8x16_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vdupq_n_p8 (uint32_t __a) ++vdupq_n_p8 (poly8_t __a) + { + return (poly8x16_t) {__a, __a, __a, __a, __a, __a, __a, __a, + __a, __a, __a, __a, __a, __a, __a, __a}; +@@ -15665,21 +15754,21 @@ vdupq_n_p8 (uint32_t __a) + + __extension__ extern __inline poly16x8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vdupq_n_p16 (uint32_t __a) ++vdupq_n_p16 (poly16_t __a) + { + return (poly16x8_t) {__a, __a, __a, __a, __a, __a, __a, __a}; + } + + __extension__ extern __inline poly64x2_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vdupq_n_p64 (uint64_t __a) ++vdupq_n_p64 (poly64_t __a) + { + return (poly64x2_t) {__a, __a}; + } + + __extension__ extern __inline int8x16_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vdupq_n_s8 (int32_t __a) ++vdupq_n_s8 (int8_t __a) + { + return (int8x16_t) {__a, __a, __a, __a, __a, __a, __a, __a, + __a, __a, __a, __a, __a, __a, __a, __a}; +@@ -15687,7 +15776,7 @@ vdupq_n_s8 (int32_t __a) + + __extension__ extern __inline int16x8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vdupq_n_s16 (int32_t __a) ++vdupq_n_s16 (int16_t __a) + { + return (int16x8_t) {__a, __a, __a, __a, __a, __a, __a, __a}; + } +@@ -15708,7 +15797,7 @@ vdupq_n_s64 (int64_t __a) + + __extension__ extern __inline uint8x16_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vdupq_n_u8 (uint32_t __a) ++vdupq_n_u8 (uint8_t __a) + { + return (uint8x16_t) {__a, __a, __a, __a, __a, __a, __a, __a, + __a, __a, __a, __a, __a, __a, __a, __a}; +@@ -15716,7 +15805,7 @@ vdupq_n_u8 (uint32_t __a) + + __extension__ extern __inline uint16x8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vdupq_n_u16 (uint32_t __a) ++vdupq_n_u16 (uint16_t __a) + { + return (uint16x8_t) {__a, __a, __a, __a, __a, __a, __a, __a}; + } +@@ -17145,6 +17234,374 @@ vld1_u64 (const uint64_t *a) + return (uint64x1_t) {*a}; + } + ++/* vld1x3 */ ++ ++__extension__ extern __inline uint8x8x3_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vld1_u8_x3 (const uint8_t *__a) ++{ ++ uint8x8x3_t __i; ++ __builtin_aarch64_simd_ci __o; ++ __o = (__builtin_aarch64_simd_ci)__builtin_aarch64_ld1x3v8qi ((const __builtin_aarch64_simd_qi *) __a); ++ __i.val[0] = (uint8x8_t) __builtin_aarch64_get_dregciv8qi (__o, 0); ++ __i.val[1] = (uint8x8_t) __builtin_aarch64_get_dregciv8qi (__o, 1); ++ __i.val[2] = (uint8x8_t) __builtin_aarch64_get_dregciv8qi (__o, 2); ++ return __i; ++} ++ ++__extension__ extern __inline int8x8x3_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vld1_s8_x3 (const uint8_t *__a) ++{ ++ int8x8x3_t __i; ++ __builtin_aarch64_simd_ci __o; ++ __o = __builtin_aarch64_ld1x3v8qi ((const __builtin_aarch64_simd_qi *) __a); ++ __i.val[0] = (int8x8_t) __builtin_aarch64_get_dregciv8qi (__o, 0); ++ __i.val[1] = (int8x8_t) __builtin_aarch64_get_dregciv8qi (__o, 1); ++ __i.val[2] = (int8x8_t) __builtin_aarch64_get_dregciv8qi (__o, 2); ++ return __i; ++} ++ ++__extension__ extern __inline uint16x4x3_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vld1_u16_x3 (const uint16_t *__a) ++{ ++ uint16x4x3_t __i; ++ __builtin_aarch64_simd_ci __o; ++ __o = __builtin_aarch64_ld1x3v4hi ((const __builtin_aarch64_simd_hi *) __a); ++ __i.val[0] = (uint16x4_t) __builtin_aarch64_get_dregciv4hi (__o, 0); ++ __i.val[1] = (uint16x4_t) __builtin_aarch64_get_dregciv4hi (__o, 1); ++ __i.val[2] = (uint16x4_t) __builtin_aarch64_get_dregciv4hi (__o, 2); ++ return __i; ++} ++ ++__extension__ extern __inline int16x4x3_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vld1_s16_x3 (const int16_t *__a) ++{ ++ int16x4x3_t __i; ++ __builtin_aarch64_simd_ci __o; ++ __o = __builtin_aarch64_ld1x3v4hi ((const __builtin_aarch64_simd_hi *) __a); ++ __i.val[0] = (int16x4_t) __builtin_aarch64_get_dregciv4hi (__o, 0); ++ __i.val[1] = (int16x4_t) __builtin_aarch64_get_dregciv4hi (__o, 1); ++ __i.val[2] = (int16x4_t) __builtin_aarch64_get_dregciv4hi (__o, 2); ++ return __i; ++} ++ ++__extension__ extern __inline uint32x2x3_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vld1_u32_x3 (const uint32_t *__a) ++{ ++ uint32x2x3_t __i; ++ __builtin_aarch64_simd_ci __o; ++ __o = __builtin_aarch64_ld1x3v2si ((const __builtin_aarch64_simd_si *) __a); ++ __i.val[0] = (uint32x2_t) __builtin_aarch64_get_dregciv2si (__o, 0); ++ __i.val[1] = (uint32x2_t) __builtin_aarch64_get_dregciv2si (__o, 1); ++ __i.val[2] = (uint32x2_t) __builtin_aarch64_get_dregciv2si (__o, 2); ++ return __i; ++} ++ ++__extension__ extern __inline int32x2x3_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vld1_s32_x3 (const uint32_t *__a) ++{ ++ int32x2x3_t __i; ++ __builtin_aarch64_simd_ci __o; ++ __o = __builtin_aarch64_ld1x3v2si ((const __builtin_aarch64_simd_si *) __a); ++ __i.val[0] = (int32x2_t) __builtin_aarch64_get_dregciv2si (__o, 0); ++ __i.val[1] = (int32x2_t) __builtin_aarch64_get_dregciv2si (__o, 1); ++ __i.val[2] = (int32x2_t) __builtin_aarch64_get_dregciv2si (__o, 2); ++ return __i; ++} ++ ++__extension__ extern __inline uint64x1x3_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vld1_u64_x3 (const uint64_t *__a) ++{ ++ uint64x1x3_t __i; ++ __builtin_aarch64_simd_ci __o; ++ __o = __builtin_aarch64_ld1x3di ((const __builtin_aarch64_simd_di *) __a); ++ __i.val[0] = (uint64x1_t) __builtin_aarch64_get_dregcidi (__o, 0); ++ __i.val[1] = (uint64x1_t) __builtin_aarch64_get_dregcidi (__o, 1); ++ __i.val[2] = (uint64x1_t) __builtin_aarch64_get_dregcidi (__o, 2); ++ return __i; ++} ++ ++__extension__ extern __inline int64x1x3_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vld1_s64_x3 (const int64_t *__a) ++{ ++ int64x1x3_t __i; ++ __builtin_aarch64_simd_ci __o; ++ __o = __builtin_aarch64_ld1x3di ((const __builtin_aarch64_simd_di *) __a); ++ __i.val[0] = (int64x1_t) __builtin_aarch64_get_dregcidi (__o, 0); ++ __i.val[1] = (int64x1_t) __builtin_aarch64_get_dregcidi (__o, 1); ++ __i.val[2] = (int64x1_t) __builtin_aarch64_get_dregcidi (__o, 2); ++ ++ return __i; ++} ++ ++__extension__ extern __inline float16x4x3_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vld1_f16_x3 (const float16_t *__a) ++{ ++ float16x4x3_t __i; ++ __builtin_aarch64_simd_ci __o; ++ __o = __builtin_aarch64_ld1x3v4hf ((const __builtin_aarch64_simd_hf *) __a); ++ __i.val[0] = (float16x4_t) __builtin_aarch64_get_dregciv4hf (__o, 0); ++ __i.val[1] = (float16x4_t) __builtin_aarch64_get_dregciv4hf (__o, 1); ++ __i.val[2] = (float16x4_t) __builtin_aarch64_get_dregciv4hf (__o, 2); ++ return __i; ++} ++ ++__extension__ extern __inline float32x2x3_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vld1_f32_x3 (const float32_t *__a) ++{ ++ float32x2x3_t __i; ++ __builtin_aarch64_simd_ci __o; ++ __o = __builtin_aarch64_ld1x3v2sf ((const __builtin_aarch64_simd_sf *) __a); ++ __i.val[0] = (float32x2_t) __builtin_aarch64_get_dregciv2sf (__o, 0); ++ __i.val[1] = (float32x2_t) __builtin_aarch64_get_dregciv2sf (__o, 1); ++ __i.val[2] = (float32x2_t) __builtin_aarch64_get_dregciv2sf (__o, 2); ++ return __i; ++} ++ ++__extension__ extern __inline float64x1x3_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vld1_f64_x3 (const float64_t *__a) ++{ ++ float64x1x3_t __i; ++ __builtin_aarch64_simd_ci __o; ++ __o = __builtin_aarch64_ld1x3df ((const __builtin_aarch64_simd_df *) __a); ++ __i.val[0] = (float64x1_t) __builtin_aarch64_get_dregcidi (__o, 0); ++ __i.val[1] = (float64x1_t) __builtin_aarch64_get_dregcidi (__o, 1); ++ __i.val[2] = (float64x1_t) __builtin_aarch64_get_dregcidi (__o, 2); ++ return __i; ++} ++ ++__extension__ extern __inline poly8x8x3_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vld1_p8_x3 (const poly8_t *__a) ++{ ++ poly8x8x3_t __i; ++ __builtin_aarch64_simd_ci __o; ++ __o = __builtin_aarch64_ld1x3v8qi ((const __builtin_aarch64_simd_qi *) __a); ++ __i.val[0] = (poly8x8_t) __builtin_aarch64_get_dregciv8qi (__o, 0); ++ __i.val[1] = (poly8x8_t) __builtin_aarch64_get_dregciv8qi (__o, 1); ++ __i.val[2] = (poly8x8_t) __builtin_aarch64_get_dregciv8qi (__o, 2); ++ return __i; ++} ++ ++__extension__ extern __inline poly16x4x3_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vld1_p16_x3 (const poly16_t *__a) ++{ ++ poly16x4x3_t __i; ++ __builtin_aarch64_simd_ci __o; ++ __o = __builtin_aarch64_ld1x3v4hi ((const __builtin_aarch64_simd_hi *) __a); ++ __i.val[0] = (poly16x4_t) __builtin_aarch64_get_dregciv4hi (__o, 0); ++ __i.val[1] = (poly16x4_t) __builtin_aarch64_get_dregciv4hi (__o, 1); ++ __i.val[2] = (poly16x4_t) __builtin_aarch64_get_dregciv4hi (__o, 2); ++ return __i; ++} ++ ++__extension__ extern __inline poly64x1x3_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vld1_p64_x3 (const poly64_t *__a) ++{ ++ poly64x1x3_t __i; ++ __builtin_aarch64_simd_ci __o; ++ __o = __builtin_aarch64_ld1x3di ((const __builtin_aarch64_simd_di *) __a); ++ __i.val[0] = (poly64x1_t) __builtin_aarch64_get_dregcidi (__o, 0); ++ __i.val[1] = (poly64x1_t) __builtin_aarch64_get_dregcidi (__o, 1); ++ __i.val[2] = (poly64x1_t) __builtin_aarch64_get_dregcidi (__o, 2); ++ ++return __i; ++} ++ ++__extension__ extern __inline uint8x16x3_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vld1q_u8_x3 (const uint8_t *__a) ++{ ++ uint8x16x3_t __i; ++ __builtin_aarch64_simd_ci __o; ++ __o = __builtin_aarch64_ld1x3v16qi ((const __builtin_aarch64_simd_qi *) __a); ++ __i.val[0] = (uint8x16_t) __builtin_aarch64_get_qregciv16qi (__o, 0); ++ __i.val[1] = (uint8x16_t) __builtin_aarch64_get_qregciv16qi (__o, 1); ++ __i.val[2] = (uint8x16_t) __builtin_aarch64_get_qregciv16qi (__o, 2); ++ return __i; ++} ++ ++__extension__ extern __inline int8x16x3_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vld1q_s8_x3 (const int8_t *__a) ++{ ++ int8x16x3_t __i; ++ __builtin_aarch64_simd_ci __o; ++ __o = __builtin_aarch64_ld1x3v16qi ((const __builtin_aarch64_simd_qi *) __a); ++ __i.val[0] = (int8x16_t) __builtin_aarch64_get_qregciv16qi (__o, 0); ++ __i.val[1] = (int8x16_t) __builtin_aarch64_get_qregciv16qi (__o, 1); ++ __i.val[2] = (int8x16_t) __builtin_aarch64_get_qregciv16qi (__o, 2); ++ return __i; ++} ++ ++__extension__ extern __inline uint16x8x3_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vld1q_u16_x3 (const uint16_t *__a) ++{ ++ uint16x8x3_t __i; ++ __builtin_aarch64_simd_ci __o; ++ __o = __builtin_aarch64_ld1x3v8hi ((const __builtin_aarch64_simd_hi *) __a); ++ __i.val[0] = (uint16x8_t) __builtin_aarch64_get_qregciv8hi (__o, 0); ++ __i.val[1] = (uint16x8_t) __builtin_aarch64_get_qregciv8hi (__o, 1); ++ __i.val[2] = (uint16x8_t) __builtin_aarch64_get_qregciv8hi (__o, 2); ++ return __i; ++} ++ ++__extension__ extern __inline int16x8x3_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vld1q_s16_x3 (const int16_t *__a) ++{ ++ int16x8x3_t __i; ++ __builtin_aarch64_simd_ci __o; ++ __o = __builtin_aarch64_ld1x3v8hi ((const __builtin_aarch64_simd_hi *) __a); ++ __i.val[0] = (int16x8_t) __builtin_aarch64_get_qregciv8hi (__o, 0); ++ __i.val[1] = (int16x8_t) __builtin_aarch64_get_qregciv8hi (__o, 1); ++ __i.val[2] = (int16x8_t) __builtin_aarch64_get_qregciv8hi (__o, 2); ++ return __i; ++} ++ ++__extension__ extern __inline uint32x4x3_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vld1q_u32_x3 (const uint32_t *__a) ++{ ++ uint32x4x3_t __i; ++ __builtin_aarch64_simd_ci __o; ++ __o = __builtin_aarch64_ld1x3v4si ((const __builtin_aarch64_simd_si *) __a); ++ __i.val[0] = (uint32x4_t) __builtin_aarch64_get_qregciv4si (__o, 0); ++ __i.val[1] = (uint32x4_t) __builtin_aarch64_get_qregciv4si (__o, 1); ++ __i.val[2] = (uint32x4_t) __builtin_aarch64_get_qregciv4si (__o, 2); ++ return __i; ++} ++ ++__extension__ extern __inline int32x4x3_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vld1q_s32_x3 (const int32_t *__a) ++{ ++ int32x4x3_t __i; ++ __builtin_aarch64_simd_ci __o; ++ __o = __builtin_aarch64_ld1x3v4si ((const __builtin_aarch64_simd_si *) __a); ++ __i.val[0] = (int32x4_t) __builtin_aarch64_get_qregciv4si (__o, 0); ++ __i.val[1] = (int32x4_t) __builtin_aarch64_get_qregciv4si (__o, 1); ++ __i.val[2] = (int32x4_t) __builtin_aarch64_get_qregciv4si (__o, 2); ++ return __i; ++} ++ ++__extension__ extern __inline uint64x2x3_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vld1q_u64_x3 (const uint64_t *__a) ++{ ++ uint64x2x3_t __i; ++ __builtin_aarch64_simd_ci __o; ++ __o = __builtin_aarch64_ld1x3v2di ((const __builtin_aarch64_simd_di *) __a); ++ __i.val[0] = (uint64x2_t) __builtin_aarch64_get_qregciv2di (__o, 0); ++ __i.val[1] = (uint64x2_t) __builtin_aarch64_get_qregciv2di (__o, 1); ++ __i.val[2] = (uint64x2_t) __builtin_aarch64_get_qregciv2di (__o, 2); ++ return __i; ++} ++ ++__extension__ extern __inline int64x2x3_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vld1q_s64_x3 (const int64_t *__a) ++{ ++ int64x2x3_t __i; ++ __builtin_aarch64_simd_ci __o; ++ __o = __builtin_aarch64_ld1x3v2di ((const __builtin_aarch64_simd_di *) __a); ++ __i.val[0] = (int64x2_t) __builtin_aarch64_get_qregciv2di (__o, 0); ++ __i.val[1] = (int64x2_t) __builtin_aarch64_get_qregciv2di (__o, 1); ++ __i.val[2] = (int64x2_t) __builtin_aarch64_get_qregciv2di (__o, 2); ++ return __i; ++} ++ ++__extension__ extern __inline float16x8x3_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vld1q_f16_x3 (const float16_t *__a) ++{ ++ float16x8x3_t __i; ++ __builtin_aarch64_simd_ci __o; ++ __o = __builtin_aarch64_ld1x3v8hf ((const __builtin_aarch64_simd_hf *) __a); ++ __i.val[0] = (float16x8_t) __builtin_aarch64_get_qregciv8hf (__o, 0); ++ __i.val[1] = (float16x8_t) __builtin_aarch64_get_qregciv8hf (__o, 1); ++ __i.val[2] = (float16x8_t) __builtin_aarch64_get_qregciv8hf (__o, 2); ++ return __i; ++} ++ ++__extension__ extern __inline float32x4x3_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vld1q_f32_x3 (const float32_t *__a) ++{ ++ float32x4x3_t __i; ++ __builtin_aarch64_simd_ci __o; ++ __o = __builtin_aarch64_ld1x3v4sf ((const __builtin_aarch64_simd_sf *) __a); ++ __i.val[0] = (float32x4_t) __builtin_aarch64_get_qregciv4sf (__o, 0); ++ __i.val[1] = (float32x4_t) __builtin_aarch64_get_qregciv4sf (__o, 1); ++ __i.val[2] = (float32x4_t) __builtin_aarch64_get_qregciv4sf (__o, 2); ++ return __i; ++} ++ ++__extension__ extern __inline float64x2x3_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vld1q_f64_x3 (const float64_t *__a) ++{ ++ float64x2x3_t __i; ++ __builtin_aarch64_simd_ci __o; ++ __o = __builtin_aarch64_ld1x3v2df ((const __builtin_aarch64_simd_df *) __a); ++ __i.val[0] = (float64x2_t) __builtin_aarch64_get_qregciv2df (__o, 0); ++ __i.val[1] = (float64x2_t) __builtin_aarch64_get_qregciv2df (__o, 1); ++ __i.val[2] = (float64x2_t) __builtin_aarch64_get_qregciv2df (__o, 2); ++ return __i; ++} ++ ++__extension__ extern __inline poly8x16x3_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vld1q_p8_x3 (const poly8_t *__a) ++{ ++ poly8x16x3_t __i; ++ __builtin_aarch64_simd_ci __o; ++ __o = __builtin_aarch64_ld1x3v16qi ((const __builtin_aarch64_simd_qi *) __a); ++ __i.val[0] = (poly8x16_t) __builtin_aarch64_get_qregciv16qi (__o, 0); ++ __i.val[1] = (poly8x16_t) __builtin_aarch64_get_qregciv16qi (__o, 1); ++ __i.val[2] = (poly8x16_t) __builtin_aarch64_get_qregciv16qi (__o, 2); ++ return __i; ++} ++ ++__extension__ extern __inline poly16x8x3_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vld1q_p16_x3 (const poly16_t *__a) ++{ ++ poly16x8x3_t __i; ++ __builtin_aarch64_simd_ci __o; ++ __o = __builtin_aarch64_ld1x3v8hi ((const __builtin_aarch64_simd_hi *) __a); ++ __i.val[0] = (poly16x8_t) __builtin_aarch64_get_qregciv8hi (__o, 0); ++ __i.val[1] = (poly16x8_t) __builtin_aarch64_get_qregciv8hi (__o, 1); ++ __i.val[2] = (poly16x8_t) __builtin_aarch64_get_qregciv8hi (__o, 2); ++ return __i; ++} ++ ++__extension__ extern __inline poly64x2x3_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vld1q_p64_x3 (const poly64_t *__a) ++{ ++ poly64x2x3_t __i; ++ __builtin_aarch64_simd_ci __o; ++ __o = __builtin_aarch64_ld1x3v2di ((const __builtin_aarch64_simd_di *) __a); ++ __i.val[0] = (poly64x2_t) __builtin_aarch64_get_qregciv2di (__o, 0); ++ __i.val[1] = (poly64x2_t) __builtin_aarch64_get_qregciv2di (__o, 1); ++ __i.val[2] = (poly64x2_t) __builtin_aarch64_get_qregciv2di (__o, 2); ++ return __i; ++} ++ + /* vld1q */ + + __extension__ extern __inline float16x8_t +@@ -17588,37 +18045,319 @@ vld1q_u64 (const uint64_t *a) + __builtin_aarch64_ld1v2di ((const __builtin_aarch64_simd_di *) a); + } + +-/* vld1_dup */ ++/* vld1(q)_x4. */ + +-__extension__ extern __inline float16x4_t ++__extension__ extern __inline int8x8x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vld1_dup_f16 (const float16_t* __a) ++vld1_s8_x4 (const int8_t *__a) + { +- return vdup_n_f16 (*__a); ++ union { int8x8x4_t __i; __builtin_aarch64_simd_xi __o; } __au; ++ __au.__o ++ = __builtin_aarch64_ld1x4v8qi ((const __builtin_aarch64_simd_qi *) __a); ++ return __au.__i; + } + +-__extension__ extern __inline float32x2_t ++__extension__ extern __inline int8x16x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vld1_dup_f32 (const float32_t* __a) ++vld1q_s8_x4 (const int8_t *__a) + { +- return vdup_n_f32 (*__a); ++ union { int8x16x4_t __i; __builtin_aarch64_simd_xi __o; } __au; ++ __au.__o ++ = __builtin_aarch64_ld1x4v16qi ((const __builtin_aarch64_simd_qi *) __a); ++ return __au.__i; + } + +-__extension__ extern __inline float64x1_t ++__extension__ extern __inline int16x4x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vld1_dup_f64 (const float64_t* __a) ++vld1_s16_x4 (const int16_t *__a) + { +- return vdup_n_f64 (*__a); ++ union { int16x4x4_t __i; __builtin_aarch64_simd_xi __o; } __au; ++ __au.__o ++ = __builtin_aarch64_ld1x4v4hi ((const __builtin_aarch64_simd_hi *) __a); ++ return __au.__i; + } + +-__extension__ extern __inline poly8x8_t ++__extension__ extern __inline int16x8x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vld1_dup_p8 (const poly8_t* __a) ++vld1q_s16_x4 (const int16_t *__a) + { +- return vdup_n_p8 (*__a); ++ union { int16x8x4_t __i; __builtin_aarch64_simd_xi __o; } __au; ++ __au.__o ++ = __builtin_aarch64_ld1x4v8hi ((const __builtin_aarch64_simd_hi *) __a); ++ return __au.__i; + } + +-__extension__ extern __inline poly16x4_t ++__extension__ extern __inline int32x2x4_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vld1_s32_x4 (const int32_t *__a) ++{ ++ union { int32x2x4_t __i; __builtin_aarch64_simd_xi __o; } __au; ++ __au.__o ++ = __builtin_aarch64_ld1x4v2si ((const __builtin_aarch64_simd_si *) __a); ++ return __au.__i; ++} ++ ++__extension__ extern __inline int32x4x4_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vld1q_s32_x4 (const int32_t *__a) ++{ ++ union { int32x4x4_t __i; __builtin_aarch64_simd_xi __o; } __au; ++ __au.__o ++ = __builtin_aarch64_ld1x4v4si ((const __builtin_aarch64_simd_si *) __a); ++ return __au.__i; ++} ++ ++__extension__ extern __inline uint8x8x4_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vld1_u8_x4 (const uint8_t *__a) ++{ ++ union { uint8x8x4_t __i; __builtin_aarch64_simd_xi __o; } __au; ++ __au.__o ++ = __builtin_aarch64_ld1x4v8qi ((const __builtin_aarch64_simd_qi *) __a); ++ return __au.__i; ++} ++ ++__extension__ extern __inline uint8x16x4_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vld1q_u8_x4 (const uint8_t *__a) ++{ ++ union { uint8x16x4_t __i; __builtin_aarch64_simd_xi __o; } __au; ++ __au.__o ++ = __builtin_aarch64_ld1x4v16qi ((const __builtin_aarch64_simd_qi *) __a); ++ return __au.__i; ++} ++ ++__extension__ extern __inline uint16x4x4_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vld1_u16_x4 (const uint16_t *__a) ++{ ++ union { uint16x4x4_t __i; __builtin_aarch64_simd_xi __o; } __au; ++ __au.__o ++ = __builtin_aarch64_ld1x4v4hi ((const __builtin_aarch64_simd_hi *) __a); ++ return __au.__i; ++} ++ ++__extension__ extern __inline uint16x8x4_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vld1q_u16_x4 (const uint16_t *__a) ++{ ++ union { uint16x8x4_t __i; __builtin_aarch64_simd_xi __o; } __au; ++ __au.__o ++ = __builtin_aarch64_ld1x4v8hi ((const __builtin_aarch64_simd_hi *) __a); ++ return __au.__i; ++} ++ ++__extension__ extern __inline uint32x2x4_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vld1_u32_x4 (const uint32_t *__a) ++{ ++ union { uint32x2x4_t __i; __builtin_aarch64_simd_xi __o; } __au; ++ __au.__o ++ = __builtin_aarch64_ld1x4v2si ((const __builtin_aarch64_simd_si *) __a); ++ return __au.__i; ++} ++ ++__extension__ extern __inline uint32x4x4_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vld1q_u32_x4 (const uint32_t *__a) ++{ ++ union { uint32x4x4_t __i; __builtin_aarch64_simd_xi __o; } __au; ++ __au.__o ++ = __builtin_aarch64_ld1x4v4si ((const __builtin_aarch64_simd_si *) __a); ++ return __au.__i; ++} ++ ++__extension__ extern __inline float16x4x4_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vld1_f16_x4 (const float16_t *__a) ++{ ++ union { float16x4x4_t __i; __builtin_aarch64_simd_xi __o; } __au; ++ __au.__o ++ = __builtin_aarch64_ld1x4v4hf ((const __builtin_aarch64_simd_hf *) __a); ++ return __au.__i; ++} ++ ++__extension__ extern __inline float16x8x4_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vld1q_f16_x4 (const float16_t *__a) ++{ ++ union { float16x8x4_t __i; __builtin_aarch64_simd_xi __o; } __au; ++ __au.__o ++ = __builtin_aarch64_ld1x4v8hf ((const __builtin_aarch64_simd_hf *) __a); ++ return __au.__i; ++} ++ ++__extension__ extern __inline float32x2x4_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vld1_f32_x4 (const float32_t *__a) ++{ ++ union { float32x2x4_t __i; __builtin_aarch64_simd_xi __o; } __au; ++ __au.__o ++ = __builtin_aarch64_ld1x4v2sf ((const __builtin_aarch64_simd_sf *) __a); ++ return __au.__i; ++} ++ ++__extension__ extern __inline float32x4x4_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vld1q_f32_x4 (const float32_t *__a) ++{ ++ union { float32x4x4_t __i; __builtin_aarch64_simd_xi __o; } __au; ++ __au.__o ++ = __builtin_aarch64_ld1x4v4sf ((const __builtin_aarch64_simd_sf *) __a); ++ return __au.__i; ++} ++ ++__extension__ extern __inline poly8x8x4_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vld1_p8_x4 (const poly8_t *__a) ++{ ++ union { poly8x8x4_t __i; __builtin_aarch64_simd_xi __o; } __au; ++ __au.__o ++ = __builtin_aarch64_ld1x4v8qi ((const __builtin_aarch64_simd_qi *) __a); ++ return __au.__i; ++} ++ ++__extension__ extern __inline poly8x16x4_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vld1q_p8_x4 (const poly8_t *__a) ++{ ++ union { poly8x16x4_t __i; __builtin_aarch64_simd_xi __o; } __au; ++ __au.__o ++ = __builtin_aarch64_ld1x4v16qi ((const __builtin_aarch64_simd_qi *) __a); ++ return __au.__i; ++} ++ ++__extension__ extern __inline poly16x4x4_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vld1_p16_x4 (const poly16_t *__a) ++{ ++ union { poly16x4x4_t __i; __builtin_aarch64_simd_xi __o; } __au; ++ __au.__o ++ = __builtin_aarch64_ld1x4v4hi ((const __builtin_aarch64_simd_hi *) __a); ++ return __au.__i; ++} ++ ++__extension__ extern __inline poly16x8x4_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vld1q_p16_x4 (const poly16_t *__a) ++{ ++ union { poly16x8x4_t __i; __builtin_aarch64_simd_xi __o; } __au; ++ __au.__o ++ = __builtin_aarch64_ld1x4v8hi ((const __builtin_aarch64_simd_hi *) __a); ++ return __au.__i; ++} ++ ++__extension__ extern __inline int64x1x4_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vld1_s64_x4 (const int64_t *__a) ++{ ++ union { int64x1x4_t __i; __builtin_aarch64_simd_xi __o; } __au; ++ __au.__o ++ = __builtin_aarch64_ld1x4di ((const __builtin_aarch64_simd_di *) __a); ++ return __au.__i; ++} ++ ++__extension__ extern __inline uint64x1x4_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vld1_u64_x4 (const uint64_t *__a) ++{ ++ union { uint64x1x4_t __i; __builtin_aarch64_simd_xi __o; } __au; ++ __au.__o ++ = __builtin_aarch64_ld1x4di ((const __builtin_aarch64_simd_di *) __a); ++ return __au.__i; ++} ++ ++__extension__ extern __inline poly64x1x4_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vld1_p64_x4 (const poly64_t *__a) ++{ ++ union { poly64x1x4_t __i; __builtin_aarch64_simd_xi __o; } __au; ++ __au.__o ++ = __builtin_aarch64_ld1x4di ((const __builtin_aarch64_simd_di *) __a); ++ return __au.__i; ++} ++ ++__extension__ extern __inline int64x2x4_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vld1q_s64_x4 (const int64_t *__a) ++{ ++ union { int64x2x4_t __i; __builtin_aarch64_simd_xi __o; } __au; ++ __au.__o ++ = __builtin_aarch64_ld1x4v2di ((const __builtin_aarch64_simd_di *) __a); ++ return __au.__i; ++} ++ ++__extension__ extern __inline uint64x2x4_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vld1q_u64_x4 (const uint64_t *__a) ++{ ++ union { uint64x2x4_t __i; __builtin_aarch64_simd_xi __o; } __au; ++ __au.__o ++ = __builtin_aarch64_ld1x4v2di ((const __builtin_aarch64_simd_di *) __a); ++ return __au.__i; ++} ++ ++__extension__ extern __inline poly64x2x4_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vld1q_p64_x4 (const poly64_t *__a) ++{ ++ union { poly64x2x4_t __i; __builtin_aarch64_simd_xi __o; } __au; ++ __au.__o ++ = __builtin_aarch64_ld1x4v2di ((const __builtin_aarch64_simd_di *) __a); ++ return __au.__i; ++} ++ ++__extension__ extern __inline float64x1x4_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vld1_f64_x4 (const float64_t *__a) ++{ ++ union { float64x1x4_t __i; __builtin_aarch64_simd_xi __o; } __au; ++ __au.__o ++ = __builtin_aarch64_ld1x4df ((const __builtin_aarch64_simd_df *) __a); ++ return __au.__i; ++} ++ ++__extension__ extern __inline float64x2x4_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vld1q_f64_x4 (const float64_t *__a) ++{ ++ union { float64x2x4_t __i; __builtin_aarch64_simd_xi __o; } __au; ++ __au.__o ++ = __builtin_aarch64_ld1x4v2df ((const __builtin_aarch64_simd_df *) __a); ++ return __au.__i; ++} ++ ++/* vld1_dup */ ++ ++__extension__ extern __inline float16x4_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vld1_dup_f16 (const float16_t* __a) ++{ ++ return vdup_n_f16 (*__a); ++} ++ ++__extension__ extern __inline float32x2_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vld1_dup_f32 (const float32_t* __a) ++{ ++ return vdup_n_f32 (*__a); ++} ++ ++__extension__ extern __inline float64x1_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vld1_dup_f64 (const float64_t* __a) ++{ ++ return vdup_n_f64 (*__a); ++} ++ ++__extension__ extern __inline poly8x8_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vld1_dup_p8 (const poly8_t* __a) ++{ ++ return vdup_n_p8 (*__a); ++} ++ ++__extension__ extern __inline poly16x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) + vld1_dup_p16 (const poly16_t* __a) + { +@@ -19082,6 +19821,13 @@ vld4q_p64 (const poly64_t * __a) + return ret; + } + ++__extension__ extern __inline poly128_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vldrq_p128 (const poly128_t * __ptr) ++{ ++ return *__ptr; ++} ++ + /* vldn_dup */ + + __extension__ extern __inline int8x8x2_t +@@ -22539,6 +23285,25 @@ vneg_s64 (int64x1_t __a) + return -__a; + } + ++/* According to the ACLE, the negative of the minimum (signed) ++ value is itself. This leads to a semantics mismatch, as this is ++ undefined behaviour in C. The value range predictor is not ++ aware that the negation of a negative number can still be negative ++ and it may try to fold the expression. See the test in ++ gcc.target/aarch64/vnegd_s64.c for an example. ++ ++ The cast below tricks the value range predictor to include ++ INT64_MIN in the range it computes. So for x in the range ++ [INT64_MIN, y] the range prediction after vnegd_s64 (x) will ++ be ~[INT64_MIN + 1, y]. */ ++ ++__extension__ extern __inline int64_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vnegd_s64 (int64_t __a) ++{ ++ return - (uint64_t) __a; ++} ++ + __extension__ extern __inline float32x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) + vnegq_f32 (float32x4_t __a) +@@ -23412,42 +24177,42 @@ __extension__ extern __inline uint8x8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) + vqmovun_s16 (int16x8_t __a) + { +- return (uint8x8_t) __builtin_aarch64_sqmovunv8hi (__a); ++ return __builtin_aarch64_sqmovunv8hi_us (__a); + } + + __extension__ extern __inline uint16x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) + vqmovun_s32 (int32x4_t __a) + { +- return (uint16x4_t) __builtin_aarch64_sqmovunv4si (__a); ++ return __builtin_aarch64_sqmovunv4si_us (__a); + } + + __extension__ extern __inline uint32x2_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) + vqmovun_s64 (int64x2_t __a) + { +- return (uint32x2_t) __builtin_aarch64_sqmovunv2di (__a); ++ return __builtin_aarch64_sqmovunv2di_us (__a); + } + +-__extension__ extern __inline int8_t ++__extension__ extern __inline uint8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) + vqmovunh_s16 (int16_t __a) + { +- return (int8_t) __builtin_aarch64_sqmovunhi (__a); ++ return __builtin_aarch64_sqmovunhi_us (__a); + } + +-__extension__ extern __inline int16_t ++__extension__ extern __inline uint16_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) + vqmovuns_s32 (int32_t __a) + { +- return (int16_t) __builtin_aarch64_sqmovunsi (__a); ++ return __builtin_aarch64_sqmovunsi_us (__a); + } + +-__extension__ extern __inline int32_t ++__extension__ extern __inline uint32_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) + vqmovund_s64 (int64_t __a) + { +- return (int32_t) __builtin_aarch64_sqmovundi (__a); ++ return __builtin_aarch64_sqmovundi_us (__a); + } + + /* vqneg */ +@@ -23703,28 +24468,28 @@ vqrshld_s64 (int64_t __a, int64_t __b) + + __extension__ extern __inline uint8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vqrshlb_u8 (uint8_t __a, uint8_t __b) ++vqrshlb_u8 (uint8_t __a, int8_t __b) + { + return __builtin_aarch64_uqrshlqi_uus (__a, __b); + } + + __extension__ extern __inline uint16_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vqrshlh_u16 (uint16_t __a, uint16_t __b) ++vqrshlh_u16 (uint16_t __a, int16_t __b) + { + return __builtin_aarch64_uqrshlhi_uus (__a, __b); + } + + __extension__ extern __inline uint32_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vqrshls_u32 (uint32_t __a, uint32_t __b) ++vqrshls_u32 (uint32_t __a, int32_t __b) + { + return __builtin_aarch64_uqrshlsi_uus (__a, __b); + } + + __extension__ extern __inline uint64_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vqrshld_u64 (uint64_t __a, uint64_t __b) ++vqrshld_u64 (uint64_t __a, int64_t __b) + { + return __builtin_aarch64_uqrshldi_uus (__a, __b); + } +@@ -24003,28 +24768,28 @@ vqshld_s64 (int64_t __a, int64_t __b) + + __extension__ extern __inline uint8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vqshlb_u8 (uint8_t __a, uint8_t __b) ++vqshlb_u8 (uint8_t __a, int8_t __b) + { + return __builtin_aarch64_uqshlqi_uus (__a, __b); + } + + __extension__ extern __inline uint16_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vqshlh_u16 (uint16_t __a, uint16_t __b) ++vqshlh_u16 (uint16_t __a, int16_t __b) + { + return __builtin_aarch64_uqshlhi_uus (__a, __b); + } + + __extension__ extern __inline uint32_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vqshls_u32 (uint32_t __a, uint32_t __b) ++vqshls_u32 (uint32_t __a, int32_t __b) + { + return __builtin_aarch64_uqshlsi_uus (__a, __b); + } + + __extension__ extern __inline uint64_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vqshld_u64 (uint64_t __a, uint64_t __b) ++vqshld_u64 (uint64_t __a, int64_t __b) + { + return __builtin_aarch64_uqshldi_uus (__a, __b); + } +@@ -25453,6 +26218,13 @@ vrndmq_f64 (float64x2_t __a) + + /* vrndn */ + ++__extension__ extern __inline float32_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vrndns_f32 (float32_t __a) ++{ ++ return __builtin_aarch64_frintnsf (__a); ++} ++ + __extension__ extern __inline float32x2_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) + vrndn_f32 (float32x2_t __a) +@@ -26355,7 +27127,7 @@ vshld_s64 (int64_t __a, int64_t __b) + + __extension__ extern __inline uint64_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vshld_u64 (uint64_t __a, uint64_t __b) ++vshld_u64 (uint64_t __a, int64_t __b) + { + return __builtin_aarch64_ushldi_uus (__a, __b); + } +@@ -27497,11 +28269,11 @@ vst1q_lane_u64 (uint64_t *__a, uint64x2_t __b, const int __lane) + *__a = __aarch64_vget_lane_any (__b, __lane); + } + +-/* vstn */ ++/* vst1x2 */ + + __extension__ extern __inline void + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vst2_s64 (int64_t * __a, int64x1x2_t val) ++vst1_s64_x2 (int64_t * __a, int64x1x2_t val) + { + __builtin_aarch64_simd_oi __o; + int64x2x2_t temp; +@@ -27509,12 +28281,12 @@ vst2_s64 (int64_t * __a, int64x1x2_t val) + temp.val[1] = vcombine_s64 (val.val[1], vcreate_s64 (__AARCH64_INT64_C (0))); + __o = __builtin_aarch64_set_qregoiv2di (__o, (int64x2_t) temp.val[0], 0); + __o = __builtin_aarch64_set_qregoiv2di (__o, (int64x2_t) temp.val[1], 1); +- __builtin_aarch64_st2di ((__builtin_aarch64_simd_di *) __a, __o); ++ __builtin_aarch64_st1x2di ((__builtin_aarch64_simd_di *) __a, __o); + } + + __extension__ extern __inline void + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vst2_u64 (uint64_t * __a, uint64x1x2_t val) ++vst1_u64_x2 (uint64_t * __a, uint64x1x2_t val) + { + __builtin_aarch64_simd_oi __o; + uint64x2x2_t temp; +@@ -27522,12 +28294,12 @@ vst2_u64 (uint64_t * __a, uint64x1x2_t val) + temp.val[1] = vcombine_u64 (val.val[1], vcreate_u64 (__AARCH64_UINT64_C (0))); + __o = __builtin_aarch64_set_qregoiv2di (__o, (int64x2_t) temp.val[0], 0); + __o = __builtin_aarch64_set_qregoiv2di (__o, (int64x2_t) temp.val[1], 1); +- __builtin_aarch64_st2di ((__builtin_aarch64_simd_di *) __a, __o); ++ __builtin_aarch64_st1x2di ((__builtin_aarch64_simd_di *) __a, __o); + } + + __extension__ extern __inline void + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vst2_f64 (float64_t * __a, float64x1x2_t val) ++vst1_f64_x2 (float64_t * __a, float64x1x2_t val) + { + __builtin_aarch64_simd_oi __o; + float64x2x2_t temp; +@@ -27535,12 +28307,12 @@ vst2_f64 (float64_t * __a, float64x1x2_t val) + temp.val[1] = vcombine_f64 (val.val[1], vcreate_f64 (__AARCH64_UINT64_C (0))); + __o = __builtin_aarch64_set_qregoiv2df (__o, (float64x2_t) temp.val[0], 0); + __o = __builtin_aarch64_set_qregoiv2df (__o, (float64x2_t) temp.val[1], 1); +- __builtin_aarch64_st2df ((__builtin_aarch64_simd_df *) __a, __o); ++ __builtin_aarch64_st1x2df ((__builtin_aarch64_simd_df *) __a, __o); + } + + __extension__ extern __inline void + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vst2_s8 (int8_t * __a, int8x8x2_t val) ++vst1_s8_x2 (int8_t * __a, int8x8x2_t val) + { + __builtin_aarch64_simd_oi __o; + int8x16x2_t temp; +@@ -27548,12 +28320,12 @@ vst2_s8 (int8_t * __a, int8x8x2_t val) + temp.val[1] = vcombine_s8 (val.val[1], vcreate_s8 (__AARCH64_INT64_C (0))); + __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) temp.val[0], 0); + __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) temp.val[1], 1); +- __builtin_aarch64_st2v8qi ((__builtin_aarch64_simd_qi *) __a, __o); ++ __builtin_aarch64_st1x2v8qi ((__builtin_aarch64_simd_qi *) __a, __o); + } + + __extension__ extern __inline void + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vst2_p8 (poly8_t * __a, poly8x8x2_t val) ++vst1_p8_x2 (poly8_t * __a, poly8x8x2_t val) + { + __builtin_aarch64_simd_oi __o; + poly8x16x2_t temp; +@@ -27561,12 +28333,12 @@ vst2_p8 (poly8_t * __a, poly8x8x2_t val) + temp.val[1] = vcombine_p8 (val.val[1], vcreate_p8 (__AARCH64_UINT64_C (0))); + __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) temp.val[0], 0); + __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) temp.val[1], 1); +- __builtin_aarch64_st2v8qi ((__builtin_aarch64_simd_qi *) __a, __o); ++ __builtin_aarch64_st1x2v8qi ((__builtin_aarch64_simd_qi *) __a, __o); + } + + __extension__ extern __inline void + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vst2_s16 (int16_t * __a, int16x4x2_t val) ++vst1_s16_x2 (int16_t * __a, int16x4x2_t val) + { + __builtin_aarch64_simd_oi __o; + int16x8x2_t temp; +@@ -27574,12 +28346,12 @@ vst2_s16 (int16_t * __a, int16x4x2_t val) + temp.val[1] = vcombine_s16 (val.val[1], vcreate_s16 (__AARCH64_INT64_C (0))); + __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) temp.val[0], 0); + __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) temp.val[1], 1); +- __builtin_aarch64_st2v4hi ((__builtin_aarch64_simd_hi *) __a, __o); ++ __builtin_aarch64_st1x2v4hi ((__builtin_aarch64_simd_hi *) __a, __o); + } + + __extension__ extern __inline void + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vst2_p16 (poly16_t * __a, poly16x4x2_t val) ++vst1_p16_x2 (poly16_t * __a, poly16x4x2_t val) + { + __builtin_aarch64_simd_oi __o; + poly16x8x2_t temp; +@@ -27587,12 +28359,12 @@ vst2_p16 (poly16_t * __a, poly16x4x2_t val) + temp.val[1] = vcombine_p16 (val.val[1], vcreate_p16 (__AARCH64_UINT64_C (0))); + __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) temp.val[0], 0); + __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) temp.val[1], 1); +- __builtin_aarch64_st2v4hi ((__builtin_aarch64_simd_hi *) __a, __o); ++ __builtin_aarch64_st1x2v4hi ((__builtin_aarch64_simd_hi *) __a, __o); + } + + __extension__ extern __inline void + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vst2_s32 (int32_t * __a, int32x2x2_t val) ++vst1_s32_x2 (int32_t * __a, int32x2x2_t val) + { + __builtin_aarch64_simd_oi __o; + int32x4x2_t temp; +@@ -27600,12 +28372,12 @@ vst2_s32 (int32_t * __a, int32x2x2_t val) + temp.val[1] = vcombine_s32 (val.val[1], vcreate_s32 (__AARCH64_INT64_C (0))); + __o = __builtin_aarch64_set_qregoiv4si (__o, (int32x4_t) temp.val[0], 0); + __o = __builtin_aarch64_set_qregoiv4si (__o, (int32x4_t) temp.val[1], 1); +- __builtin_aarch64_st2v2si ((__builtin_aarch64_simd_si *) __a, __o); ++ __builtin_aarch64_st1x2v2si ((__builtin_aarch64_simd_si *) __a, __o); + } + + __extension__ extern __inline void + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vst2_u8 (uint8_t * __a, uint8x8x2_t val) ++vst1_u8_x2 (uint8_t * __a, uint8x8x2_t val) + { + __builtin_aarch64_simd_oi __o; + uint8x16x2_t temp; +@@ -27613,12 +28385,12 @@ vst2_u8 (uint8_t * __a, uint8x8x2_t val) + temp.val[1] = vcombine_u8 (val.val[1], vcreate_u8 (__AARCH64_UINT64_C (0))); + __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) temp.val[0], 0); + __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) temp.val[1], 1); +- __builtin_aarch64_st2v8qi ((__builtin_aarch64_simd_qi *) __a, __o); ++ __builtin_aarch64_st1x2v8qi ((__builtin_aarch64_simd_qi *) __a, __o); + } + + __extension__ extern __inline void + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vst2_u16 (uint16_t * __a, uint16x4x2_t val) ++vst1_u16_x2 (uint16_t * __a, uint16x4x2_t val) + { + __builtin_aarch64_simd_oi __o; + uint16x8x2_t temp; +@@ -27626,12 +28398,12 @@ vst2_u16 (uint16_t * __a, uint16x4x2_t val) + temp.val[1] = vcombine_u16 (val.val[1], vcreate_u16 (__AARCH64_UINT64_C (0))); + __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) temp.val[0], 0); + __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) temp.val[1], 1); +- __builtin_aarch64_st2v4hi ((__builtin_aarch64_simd_hi *) __a, __o); ++ __builtin_aarch64_st1x2v4hi ((__builtin_aarch64_simd_hi *) __a, __o); + } + + __extension__ extern __inline void + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vst2_u32 (uint32_t * __a, uint32x2x2_t val) ++vst1_u32_x2 (uint32_t * __a, uint32x2x2_t val) + { + __builtin_aarch64_simd_oi __o; + uint32x4x2_t temp; +@@ -27639,12 +28411,12 @@ vst2_u32 (uint32_t * __a, uint32x2x2_t val) + temp.val[1] = vcombine_u32 (val.val[1], vcreate_u32 (__AARCH64_UINT64_C (0))); + __o = __builtin_aarch64_set_qregoiv4si (__o, (int32x4_t) temp.val[0], 0); + __o = __builtin_aarch64_set_qregoiv4si (__o, (int32x4_t) temp.val[1], 1); +- __builtin_aarch64_st2v2si ((__builtin_aarch64_simd_si *) __a, __o); ++ __builtin_aarch64_st1x2v2si ((__builtin_aarch64_simd_si *) __a, __o); + } + + __extension__ extern __inline void + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vst2_f16 (float16_t * __a, float16x4x2_t val) ++vst1_f16_x2 (float16_t * __a, float16x4x2_t val) + { + __builtin_aarch64_simd_oi __o; + float16x8x2_t temp; +@@ -27652,12 +28424,12 @@ vst2_f16 (float16_t * __a, float16x4x2_t val) + temp.val[1] = vcombine_f16 (val.val[1], vcreate_f16 (__AARCH64_UINT64_C (0))); + __o = __builtin_aarch64_set_qregoiv8hf (__o, temp.val[0], 0); + __o = __builtin_aarch64_set_qregoiv8hf (__o, temp.val[1], 1); +- __builtin_aarch64_st2v4hf (__a, __o); ++ __builtin_aarch64_st1x2v4hf (__a, __o); + } + + __extension__ extern __inline void + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vst2_f32 (float32_t * __a, float32x2x2_t val) ++vst1_f32_x2 (float32_t * __a, float32x2x2_t val) + { + __builtin_aarch64_simd_oi __o; + float32x4x2_t temp; +@@ -27665,12 +28437,12 @@ vst2_f32 (float32_t * __a, float32x2x2_t val) + temp.val[1] = vcombine_f32 (val.val[1], vcreate_f32 (__AARCH64_UINT64_C (0))); + __o = __builtin_aarch64_set_qregoiv4sf (__o, (float32x4_t) temp.val[0], 0); + __o = __builtin_aarch64_set_qregoiv4sf (__o, (float32x4_t) temp.val[1], 1); +- __builtin_aarch64_st2v2sf ((__builtin_aarch64_simd_sf *) __a, __o); ++ __builtin_aarch64_st1x2v2sf ((__builtin_aarch64_simd_sf *) __a, __o); + } + + __extension__ extern __inline void + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vst2_p64 (poly64_t * __a, poly64x1x2_t val) ++vst1_p64_x2 (poly64_t * __a, poly64x1x2_t val) + { + __builtin_aarch64_simd_oi __o; + poly64x2x2_t temp; +@@ -27680,154 +28452,156 @@ vst2_p64 (poly64_t * __a, poly64x1x2_t val) + (poly64x2_t) temp.val[0], 0); + __o = __builtin_aarch64_set_qregoiv2di_ssps (__o, + (poly64x2_t) temp.val[1], 1); +- __builtin_aarch64_st2di ((__builtin_aarch64_simd_di *) __a, __o); ++ __builtin_aarch64_st1x2di ((__builtin_aarch64_simd_di *) __a, __o); + } + + __extension__ extern __inline void + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vst2q_s8 (int8_t * __a, int8x16x2_t val) ++vst1q_s8_x2 (int8_t * __a, int8x16x2_t val) + { + __builtin_aarch64_simd_oi __o; + __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) val.val[0], 0); + __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) val.val[1], 1); +- __builtin_aarch64_st2v16qi ((__builtin_aarch64_simd_qi *) __a, __o); ++ __builtin_aarch64_st1x2v16qi ((__builtin_aarch64_simd_qi *) __a, __o); + } + + __extension__ extern __inline void + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vst2q_p8 (poly8_t * __a, poly8x16x2_t val) ++vst1q_p8_x2 (poly8_t * __a, poly8x16x2_t val) + { + __builtin_aarch64_simd_oi __o; + __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) val.val[0], 0); + __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) val.val[1], 1); +- __builtin_aarch64_st2v16qi ((__builtin_aarch64_simd_qi *) __a, __o); ++ __builtin_aarch64_st1x2v16qi ((__builtin_aarch64_simd_qi *) __a, __o); + } + + __extension__ extern __inline void + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vst2q_s16 (int16_t * __a, int16x8x2_t val) ++vst1q_s16_x2 (int16_t * __a, int16x8x2_t val) + { + __builtin_aarch64_simd_oi __o; + __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) val.val[0], 0); + __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) val.val[1], 1); +- __builtin_aarch64_st2v8hi ((__builtin_aarch64_simd_hi *) __a, __o); ++ __builtin_aarch64_st1x2v8hi ((__builtin_aarch64_simd_hi *) __a, __o); + } + + __extension__ extern __inline void + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vst2q_p16 (poly16_t * __a, poly16x8x2_t val) ++vst1q_p16_x2 (poly16_t * __a, poly16x8x2_t val) + { + __builtin_aarch64_simd_oi __o; + __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) val.val[0], 0); + __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) val.val[1], 1); +- __builtin_aarch64_st2v8hi ((__builtin_aarch64_simd_hi *) __a, __o); ++ __builtin_aarch64_st1x2v8hi ((__builtin_aarch64_simd_hi *) __a, __o); + } + + __extension__ extern __inline void + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vst2q_s32 (int32_t * __a, int32x4x2_t val) ++vst1q_s32_x2 (int32_t * __a, int32x4x2_t val) + { + __builtin_aarch64_simd_oi __o; + __o = __builtin_aarch64_set_qregoiv4si (__o, (int32x4_t) val.val[0], 0); + __o = __builtin_aarch64_set_qregoiv4si (__o, (int32x4_t) val.val[1], 1); +- __builtin_aarch64_st2v4si ((__builtin_aarch64_simd_si *) __a, __o); ++ __builtin_aarch64_st1x2v4si ((__builtin_aarch64_simd_si *) __a, __o); + } + + __extension__ extern __inline void + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vst2q_s64 (int64_t * __a, int64x2x2_t val) ++vst1q_s64_x2 (int64_t * __a, int64x2x2_t val) + { + __builtin_aarch64_simd_oi __o; + __o = __builtin_aarch64_set_qregoiv2di (__o, (int64x2_t) val.val[0], 0); + __o = __builtin_aarch64_set_qregoiv2di (__o, (int64x2_t) val.val[1], 1); +- __builtin_aarch64_st2v2di ((__builtin_aarch64_simd_di *) __a, __o); ++ __builtin_aarch64_st1x2v2di ((__builtin_aarch64_simd_di *) __a, __o); + } + + __extension__ extern __inline void + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vst2q_u8 (uint8_t * __a, uint8x16x2_t val) ++vst1q_u8_x2 (uint8_t * __a, uint8x16x2_t val) + { + __builtin_aarch64_simd_oi __o; + __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) val.val[0], 0); + __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) val.val[1], 1); +- __builtin_aarch64_st2v16qi ((__builtin_aarch64_simd_qi *) __a, __o); ++ __builtin_aarch64_st1x2v16qi ((__builtin_aarch64_simd_qi *) __a, __o); + } + + __extension__ extern __inline void + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vst2q_u16 (uint16_t * __a, uint16x8x2_t val) ++vst1q_u16_x2 (uint16_t * __a, uint16x8x2_t val) + { + __builtin_aarch64_simd_oi __o; + __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) val.val[0], 0); + __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) val.val[1], 1); +- __builtin_aarch64_st2v8hi ((__builtin_aarch64_simd_hi *) __a, __o); ++ __builtin_aarch64_st1x2v8hi ((__builtin_aarch64_simd_hi *) __a, __o); + } + + __extension__ extern __inline void + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vst2q_u32 (uint32_t * __a, uint32x4x2_t val) ++vst1q_u32_x2 (uint32_t * __a, uint32x4x2_t val) + { + __builtin_aarch64_simd_oi __o; + __o = __builtin_aarch64_set_qregoiv4si (__o, (int32x4_t) val.val[0], 0); + __o = __builtin_aarch64_set_qregoiv4si (__o, (int32x4_t) val.val[1], 1); +- __builtin_aarch64_st2v4si ((__builtin_aarch64_simd_si *) __a, __o); ++ __builtin_aarch64_st1x2v4si ((__builtin_aarch64_simd_si *) __a, __o); + } + + __extension__ extern __inline void + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vst2q_u64 (uint64_t * __a, uint64x2x2_t val) ++vst1q_u64_x2 (uint64_t * __a, uint64x2x2_t val) + { + __builtin_aarch64_simd_oi __o; + __o = __builtin_aarch64_set_qregoiv2di (__o, (int64x2_t) val.val[0], 0); + __o = __builtin_aarch64_set_qregoiv2di (__o, (int64x2_t) val.val[1], 1); +- __builtin_aarch64_st2v2di ((__builtin_aarch64_simd_di *) __a, __o); ++ __builtin_aarch64_st1x2v2di ((__builtin_aarch64_simd_di *) __a, __o); + } + + __extension__ extern __inline void + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vst2q_f16 (float16_t * __a, float16x8x2_t val) ++vst1q_f16_x2 (float16_t * __a, float16x8x2_t val) + { + __builtin_aarch64_simd_oi __o; + __o = __builtin_aarch64_set_qregoiv8hf (__o, val.val[0], 0); + __o = __builtin_aarch64_set_qregoiv8hf (__o, val.val[1], 1); +- __builtin_aarch64_st2v8hf (__a, __o); ++ __builtin_aarch64_st1x2v8hf (__a, __o); + } + + __extension__ extern __inline void + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vst2q_f32 (float32_t * __a, float32x4x2_t val) ++vst1q_f32_x2 (float32_t * __a, float32x4x2_t val) + { + __builtin_aarch64_simd_oi __o; + __o = __builtin_aarch64_set_qregoiv4sf (__o, (float32x4_t) val.val[0], 0); + __o = __builtin_aarch64_set_qregoiv4sf (__o, (float32x4_t) val.val[1], 1); +- __builtin_aarch64_st2v4sf ((__builtin_aarch64_simd_sf *) __a, __o); ++ __builtin_aarch64_st1x2v4sf ((__builtin_aarch64_simd_sf *) __a, __o); + } + + __extension__ extern __inline void + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vst2q_f64 (float64_t * __a, float64x2x2_t val) ++vst1q_f64_x2 (float64_t * __a, float64x2x2_t val) + { + __builtin_aarch64_simd_oi __o; + __o = __builtin_aarch64_set_qregoiv2df (__o, (float64x2_t) val.val[0], 0); + __o = __builtin_aarch64_set_qregoiv2df (__o, (float64x2_t) val.val[1], 1); +- __builtin_aarch64_st2v2df ((__builtin_aarch64_simd_df *) __a, __o); ++ __builtin_aarch64_st1x2v2df ((__builtin_aarch64_simd_df *) __a, __o); + } + + __extension__ extern __inline void + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vst2q_p64 (poly64_t * __a, poly64x2x2_t val) ++vst1q_p64_x2 (poly64_t * __a, poly64x2x2_t val) + { + __builtin_aarch64_simd_oi __o; + __o = __builtin_aarch64_set_qregoiv2di_ssps (__o, + (poly64x2_t) val.val[0], 0); + __o = __builtin_aarch64_set_qregoiv2di_ssps (__o, + (poly64x2_t) val.val[1], 1); +- __builtin_aarch64_st2v2di ((__builtin_aarch64_simd_di *) __a, __o); ++ __builtin_aarch64_st1x2v2di ((__builtin_aarch64_simd_di *) __a, __o); + } + ++/* vst1x3 */ ++ + __extension__ extern __inline void + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vst3_s64 (int64_t * __a, int64x1x3_t val) ++vst1_s64_x3 (int64_t * __a, int64x1x3_t val) + { + __builtin_aarch64_simd_ci __o; + int64x2x3_t temp; +@@ -27837,12 +28611,12 @@ vst3_s64 (int64_t * __a, int64x1x3_t val) + __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) temp.val[0], 0); + __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) temp.val[1], 1); + __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) temp.val[2], 2); +- __builtin_aarch64_st3di ((__builtin_aarch64_simd_di *) __a, __o); ++ __builtin_aarch64_st1x3di ((__builtin_aarch64_simd_di *) __a, __o); + } + + __extension__ extern __inline void + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vst3_u64 (uint64_t * __a, uint64x1x3_t val) ++vst1_u64_x3 (uint64_t * __a, uint64x1x3_t val) + { + __builtin_aarch64_simd_ci __o; + uint64x2x3_t temp; +@@ -27852,12 +28626,12 @@ vst3_u64 (uint64_t * __a, uint64x1x3_t val) + __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) temp.val[0], 0); + __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) temp.val[1], 1); + __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) temp.val[2], 2); +- __builtin_aarch64_st3di ((__builtin_aarch64_simd_di *) __a, __o); ++ __builtin_aarch64_st1x3di ((__builtin_aarch64_simd_di *) __a, __o); + } + + __extension__ extern __inline void + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vst3_f64 (float64_t * __a, float64x1x3_t val) ++vst1_f64_x3 (float64_t * __a, float64x1x3_t val) + { + __builtin_aarch64_simd_ci __o; + float64x2x3_t temp; +@@ -27867,12 +28641,12 @@ vst3_f64 (float64_t * __a, float64x1x3_t val) + __o = __builtin_aarch64_set_qregciv2df (__o, (float64x2_t) temp.val[0], 0); + __o = __builtin_aarch64_set_qregciv2df (__o, (float64x2_t) temp.val[1], 1); + __o = __builtin_aarch64_set_qregciv2df (__o, (float64x2_t) temp.val[2], 2); +- __builtin_aarch64_st3df ((__builtin_aarch64_simd_df *) __a, __o); ++ __builtin_aarch64_st1x3df ((__builtin_aarch64_simd_df *) __a, __o); + } + + __extension__ extern __inline void + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vst3_s8 (int8_t * __a, int8x8x3_t val) ++vst1_s8_x3 (int8_t * __a, int8x8x3_t val) + { + __builtin_aarch64_simd_ci __o; + int8x16x3_t temp; +@@ -27882,12 +28656,12 @@ vst3_s8 (int8_t * __a, int8x8x3_t val) + __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) temp.val[0], 0); + __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) temp.val[1], 1); + __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) temp.val[2], 2); +- __builtin_aarch64_st3v8qi ((__builtin_aarch64_simd_qi *) __a, __o); ++ __builtin_aarch64_st1x3v8qi ((__builtin_aarch64_simd_qi *) __a, __o); + } + + __extension__ extern __inline void + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vst3_p8 (poly8_t * __a, poly8x8x3_t val) ++vst1_p8_x3 (poly8_t * __a, poly8x8x3_t val) + { + __builtin_aarch64_simd_ci __o; + poly8x16x3_t temp; +@@ -27897,12 +28671,12 @@ vst3_p8 (poly8_t * __a, poly8x8x3_t val) + __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) temp.val[0], 0); + __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) temp.val[1], 1); + __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) temp.val[2], 2); +- __builtin_aarch64_st3v8qi ((__builtin_aarch64_simd_qi *) __a, __o); ++ __builtin_aarch64_st1x3v8qi ((__builtin_aarch64_simd_qi *) __a, __o); + } + + __extension__ extern __inline void + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vst3_s16 (int16_t * __a, int16x4x3_t val) ++vst1_s16_x3 (int16_t * __a, int16x4x3_t val) + { + __builtin_aarch64_simd_ci __o; + int16x8x3_t temp; +@@ -27912,12 +28686,12 @@ vst3_s16 (int16_t * __a, int16x4x3_t val) + __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) temp.val[0], 0); + __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) temp.val[1], 1); + __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) temp.val[2], 2); +- __builtin_aarch64_st3v4hi ((__builtin_aarch64_simd_hi *) __a, __o); ++ __builtin_aarch64_st1x3v4hi ((__builtin_aarch64_simd_hi *) __a, __o); + } + + __extension__ extern __inline void + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vst3_p16 (poly16_t * __a, poly16x4x3_t val) ++vst1_p16_x3 (poly16_t * __a, poly16x4x3_t val) + { + __builtin_aarch64_simd_ci __o; + poly16x8x3_t temp; +@@ -27927,12 +28701,12 @@ vst3_p16 (poly16_t * __a, poly16x4x3_t val) + __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) temp.val[0], 0); + __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) temp.val[1], 1); + __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) temp.val[2], 2); +- __builtin_aarch64_st3v4hi ((__builtin_aarch64_simd_hi *) __a, __o); ++ __builtin_aarch64_st1x3v4hi ((__builtin_aarch64_simd_hi *) __a, __o); + } + + __extension__ extern __inline void + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vst3_s32 (int32_t * __a, int32x2x3_t val) ++vst1_s32_x3 (int32_t * __a, int32x2x3_t val) + { + __builtin_aarch64_simd_ci __o; + int32x4x3_t temp; +@@ -27942,12 +28716,12 @@ vst3_s32 (int32_t * __a, int32x2x3_t val) + __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) temp.val[0], 0); + __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) temp.val[1], 1); + __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) temp.val[2], 2); +- __builtin_aarch64_st3v2si ((__builtin_aarch64_simd_si *) __a, __o); ++ __builtin_aarch64_st1x3v2si ((__builtin_aarch64_simd_si *) __a, __o); + } + + __extension__ extern __inline void + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vst3_u8 (uint8_t * __a, uint8x8x3_t val) ++vst1_u8_x3 (uint8_t * __a, uint8x8x3_t val) + { + __builtin_aarch64_simd_ci __o; + uint8x16x3_t temp; +@@ -27957,12 +28731,12 @@ vst3_u8 (uint8_t * __a, uint8x8x3_t val) + __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) temp.val[0], 0); + __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) temp.val[1], 1); + __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) temp.val[2], 2); +- __builtin_aarch64_st3v8qi ((__builtin_aarch64_simd_qi *) __a, __o); ++ __builtin_aarch64_st1x3v8qi ((__builtin_aarch64_simd_qi *) __a, __o); + } + + __extension__ extern __inline void + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vst3_u16 (uint16_t * __a, uint16x4x3_t val) ++vst1_u16_x3 (uint16_t * __a, uint16x4x3_t val) + { + __builtin_aarch64_simd_ci __o; + uint16x8x3_t temp; +@@ -27972,12 +28746,12 @@ vst3_u16 (uint16_t * __a, uint16x4x3_t val) + __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) temp.val[0], 0); + __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) temp.val[1], 1); + __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) temp.val[2], 2); +- __builtin_aarch64_st3v4hi ((__builtin_aarch64_simd_hi *) __a, __o); ++ __builtin_aarch64_st1x3v4hi ((__builtin_aarch64_simd_hi *) __a, __o); + } + + __extension__ extern __inline void + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vst3_u32 (uint32_t * __a, uint32x2x3_t val) ++vst1_u32_x3 (uint32_t * __a, uint32x2x3_t val) + { + __builtin_aarch64_simd_ci __o; + uint32x4x3_t temp; +@@ -27987,12 +28761,12 @@ vst3_u32 (uint32_t * __a, uint32x2x3_t val) + __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) temp.val[0], 0); + __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) temp.val[1], 1); + __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) temp.val[2], 2); +- __builtin_aarch64_st3v2si ((__builtin_aarch64_simd_si *) __a, __o); ++ __builtin_aarch64_st1x3v2si ((__builtin_aarch64_simd_si *) __a, __o); + } + + __extension__ extern __inline void + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vst3_f16 (float16_t * __a, float16x4x3_t val) ++vst1_f16_x3 (float16_t * __a, float16x4x3_t val) + { + __builtin_aarch64_simd_ci __o; + float16x8x3_t temp; +@@ -28002,12 +28776,12 @@ vst3_f16 (float16_t * __a, float16x4x3_t val) + __o = __builtin_aarch64_set_qregciv8hf (__o, (float16x8_t) temp.val[0], 0); + __o = __builtin_aarch64_set_qregciv8hf (__o, (float16x8_t) temp.val[1], 1); + __o = __builtin_aarch64_set_qregciv8hf (__o, (float16x8_t) temp.val[2], 2); +- __builtin_aarch64_st3v4hf ((__builtin_aarch64_simd_hf *) __a, __o); ++ __builtin_aarch64_st1x3v4hf ((__builtin_aarch64_simd_hf *) __a, __o); + } + + __extension__ extern __inline void + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vst3_f32 (float32_t * __a, float32x2x3_t val) ++vst1_f32_x3 (float32_t * __a, float32x2x3_t val) + { + __builtin_aarch64_simd_ci __o; + float32x4x3_t temp; +@@ -28017,12 +28791,12 @@ vst3_f32 (float32_t * __a, float32x2x3_t val) + __o = __builtin_aarch64_set_qregciv4sf (__o, (float32x4_t) temp.val[0], 0); + __o = __builtin_aarch64_set_qregciv4sf (__o, (float32x4_t) temp.val[1], 1); + __o = __builtin_aarch64_set_qregciv4sf (__o, (float32x4_t) temp.val[2], 2); +- __builtin_aarch64_st3v2sf ((__builtin_aarch64_simd_sf *) __a, __o); ++ __builtin_aarch64_st1x3v2sf ((__builtin_aarch64_simd_sf *) __a, __o); + } + + __extension__ extern __inline void + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vst3_p64 (poly64_t * __a, poly64x1x3_t val) ++vst1_p64_x3 (poly64_t * __a, poly64x1x3_t val) + { + __builtin_aarch64_simd_ci __o; + poly64x2x3_t temp; +@@ -28035,155 +28809,155 @@ vst3_p64 (poly64_t * __a, poly64x1x3_t val) + (poly64x2_t) temp.val[1], 1); + __o = __builtin_aarch64_set_qregciv2di_ssps (__o, + (poly64x2_t) temp.val[2], 2); +- __builtin_aarch64_st3di ((__builtin_aarch64_simd_di *) __a, __o); ++ __builtin_aarch64_st1x3di ((__builtin_aarch64_simd_di *) __a, __o); + } + + __extension__ extern __inline void + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vst3q_s8 (int8_t * __a, int8x16x3_t val) ++vst1q_s8_x3 (int8_t * __a, int8x16x3_t val) + { + __builtin_aarch64_simd_ci __o; + __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) val.val[0], 0); + __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) val.val[1], 1); + __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) val.val[2], 2); +- __builtin_aarch64_st3v16qi ((__builtin_aarch64_simd_qi *) __a, __o); ++ __builtin_aarch64_st1x3v16qi ((__builtin_aarch64_simd_qi *) __a, __o); + } + + __extension__ extern __inline void + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vst3q_p8 (poly8_t * __a, poly8x16x3_t val) ++vst1q_p8_x3 (poly8_t * __a, poly8x16x3_t val) + { + __builtin_aarch64_simd_ci __o; + __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) val.val[0], 0); + __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) val.val[1], 1); + __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) val.val[2], 2); +- __builtin_aarch64_st3v16qi ((__builtin_aarch64_simd_qi *) __a, __o); ++ __builtin_aarch64_st1x3v16qi ((__builtin_aarch64_simd_qi *) __a, __o); + } + + __extension__ extern __inline void + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vst3q_s16 (int16_t * __a, int16x8x3_t val) ++vst1q_s16_x3 (int16_t * __a, int16x8x3_t val) + { + __builtin_aarch64_simd_ci __o; + __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) val.val[0], 0); + __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) val.val[1], 1); + __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) val.val[2], 2); +- __builtin_aarch64_st3v8hi ((__builtin_aarch64_simd_hi *) __a, __o); ++ __builtin_aarch64_st1x3v8hi ((__builtin_aarch64_simd_hi *) __a, __o); + } + + __extension__ extern __inline void + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vst3q_p16 (poly16_t * __a, poly16x8x3_t val) ++vst1q_p16_x3 (poly16_t * __a, poly16x8x3_t val) + { + __builtin_aarch64_simd_ci __o; + __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) val.val[0], 0); + __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) val.val[1], 1); + __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) val.val[2], 2); +- __builtin_aarch64_st3v8hi ((__builtin_aarch64_simd_hi *) __a, __o); ++ __builtin_aarch64_st1x3v8hi ((__builtin_aarch64_simd_hi *) __a, __o); + } + + __extension__ extern __inline void + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vst3q_s32 (int32_t * __a, int32x4x3_t val) ++vst1q_s32_x3 (int32_t * __a, int32x4x3_t val) + { + __builtin_aarch64_simd_ci __o; + __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) val.val[0], 0); + __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) val.val[1], 1); + __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) val.val[2], 2); +- __builtin_aarch64_st3v4si ((__builtin_aarch64_simd_si *) __a, __o); ++ __builtin_aarch64_st1x3v4si ((__builtin_aarch64_simd_si *) __a, __o); + } + + __extension__ extern __inline void + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vst3q_s64 (int64_t * __a, int64x2x3_t val) ++vst1q_s64_x3 (int64_t * __a, int64x2x3_t val) + { + __builtin_aarch64_simd_ci __o; + __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) val.val[0], 0); + __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) val.val[1], 1); + __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) val.val[2], 2); +- __builtin_aarch64_st3v2di ((__builtin_aarch64_simd_di *) __a, __o); ++ __builtin_aarch64_st1x3v2di ((__builtin_aarch64_simd_di *) __a, __o); + } + + __extension__ extern __inline void + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vst3q_u8 (uint8_t * __a, uint8x16x3_t val) ++vst1q_u8_x3 (uint8_t * __a, uint8x16x3_t val) + { + __builtin_aarch64_simd_ci __o; + __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) val.val[0], 0); + __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) val.val[1], 1); + __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) val.val[2], 2); +- __builtin_aarch64_st3v16qi ((__builtin_aarch64_simd_qi *) __a, __o); ++ __builtin_aarch64_st1x3v16qi ((__builtin_aarch64_simd_qi *) __a, __o); + } + + __extension__ extern __inline void + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vst3q_u16 (uint16_t * __a, uint16x8x3_t val) ++vst1q_u16_x3 (uint16_t * __a, uint16x8x3_t val) + { + __builtin_aarch64_simd_ci __o; + __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) val.val[0], 0); + __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) val.val[1], 1); + __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) val.val[2], 2); +- __builtin_aarch64_st3v8hi ((__builtin_aarch64_simd_hi *) __a, __o); ++ __builtin_aarch64_st1x3v8hi ((__builtin_aarch64_simd_hi *) __a, __o); + } + + __extension__ extern __inline void + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vst3q_u32 (uint32_t * __a, uint32x4x3_t val) ++vst1q_u32_x3 (uint32_t * __a, uint32x4x3_t val) + { + __builtin_aarch64_simd_ci __o; + __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) val.val[0], 0); + __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) val.val[1], 1); + __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) val.val[2], 2); +- __builtin_aarch64_st3v4si ((__builtin_aarch64_simd_si *) __a, __o); ++ __builtin_aarch64_st1x3v4si ((__builtin_aarch64_simd_si *) __a, __o); + } + + __extension__ extern __inline void + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vst3q_u64 (uint64_t * __a, uint64x2x3_t val) ++vst1q_u64_x3 (uint64_t * __a, uint64x2x3_t val) + { + __builtin_aarch64_simd_ci __o; + __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) val.val[0], 0); + __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) val.val[1], 1); + __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) val.val[2], 2); +- __builtin_aarch64_st3v2di ((__builtin_aarch64_simd_di *) __a, __o); ++ __builtin_aarch64_st1x3v2di ((__builtin_aarch64_simd_di *) __a, __o); + } + + __extension__ extern __inline void + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vst3q_f16 (float16_t * __a, float16x8x3_t val) ++vst1q_f16_x3 (float16_t * __a, float16x8x3_t val) + { + __builtin_aarch64_simd_ci __o; + __o = __builtin_aarch64_set_qregciv8hf (__o, (float16x8_t) val.val[0], 0); + __o = __builtin_aarch64_set_qregciv8hf (__o, (float16x8_t) val.val[1], 1); + __o = __builtin_aarch64_set_qregciv8hf (__o, (float16x8_t) val.val[2], 2); +- __builtin_aarch64_st3v8hf ((__builtin_aarch64_simd_hf *) __a, __o); ++ __builtin_aarch64_st1x3v8hf ((__builtin_aarch64_simd_hf *) __a, __o); + } + + __extension__ extern __inline void + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vst3q_f32 (float32_t * __a, float32x4x3_t val) ++vst1q_f32_x3 (float32_t * __a, float32x4x3_t val) + { + __builtin_aarch64_simd_ci __o; + __o = __builtin_aarch64_set_qregciv4sf (__o, (float32x4_t) val.val[0], 0); + __o = __builtin_aarch64_set_qregciv4sf (__o, (float32x4_t) val.val[1], 1); + __o = __builtin_aarch64_set_qregciv4sf (__o, (float32x4_t) val.val[2], 2); +- __builtin_aarch64_st3v4sf ((__builtin_aarch64_simd_sf *) __a, __o); ++ __builtin_aarch64_st1x3v4sf ((__builtin_aarch64_simd_sf *) __a, __o); + } + + __extension__ extern __inline void + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vst3q_f64 (float64_t * __a, float64x2x3_t val) ++vst1q_f64_x3 (float64_t * __a, float64x2x3_t val) + { + __builtin_aarch64_simd_ci __o; + __o = __builtin_aarch64_set_qregciv2df (__o, (float64x2_t) val.val[0], 0); + __o = __builtin_aarch64_set_qregciv2df (__o, (float64x2_t) val.val[1], 1); + __o = __builtin_aarch64_set_qregciv2df (__o, (float64x2_t) val.val[2], 2); +- __builtin_aarch64_st3v2df ((__builtin_aarch64_simd_df *) __a, __o); ++ __builtin_aarch64_st1x3v2df ((__builtin_aarch64_simd_df *) __a, __o); + } + + __extension__ extern __inline void + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vst3q_p64 (poly64_t * __a, poly64x2x3_t val) ++vst1q_p64_x3 (poly64_t * __a, poly64x2x3_t val) + { + __builtin_aarch64_simd_ci __o; + __o = __builtin_aarch64_set_qregciv2di_ssps (__o, +@@ -28192,1481 +28966,2979 @@ vst3q_p64 (poly64_t * __a, poly64x2x3_t val) + (poly64x2_t) val.val[1], 1); + __o = __builtin_aarch64_set_qregciv2di_ssps (__o, + (poly64x2_t) val.val[2], 2); +- __builtin_aarch64_st3v2di ((__builtin_aarch64_simd_di *) __a, __o); ++ __builtin_aarch64_st1x3v2di ((__builtin_aarch64_simd_di *) __a, __o); + } + ++/* vst1(q)_x4. */ ++ + __extension__ extern __inline void + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vst4_s64 (int64_t * __a, int64x1x4_t val) ++vst1_s8_x4 (int8_t * __a, int8x8x4_t val) + { +- __builtin_aarch64_simd_xi __o; +- int64x2x4_t temp; +- temp.val[0] = vcombine_s64 (val.val[0], vcreate_s64 (__AARCH64_INT64_C (0))); +- temp.val[1] = vcombine_s64 (val.val[1], vcreate_s64 (__AARCH64_INT64_C (0))); +- temp.val[2] = vcombine_s64 (val.val[2], vcreate_s64 (__AARCH64_INT64_C (0))); +- temp.val[3] = vcombine_s64 (val.val[3], vcreate_s64 (__AARCH64_INT64_C (0))); +- __o = __builtin_aarch64_set_qregxiv2di (__o, (int64x2_t) temp.val[0], 0); +- __o = __builtin_aarch64_set_qregxiv2di (__o, (int64x2_t) temp.val[1], 1); +- __o = __builtin_aarch64_set_qregxiv2di (__o, (int64x2_t) temp.val[2], 2); +- __o = __builtin_aarch64_set_qregxiv2di (__o, (int64x2_t) temp.val[3], 3); +- __builtin_aarch64_st4di ((__builtin_aarch64_simd_di *) __a, __o); ++ union { int8x8x4_t __i; __builtin_aarch64_simd_xi __o; } __u = { val }; ++ __builtin_aarch64_st1x4v8qi ((__builtin_aarch64_simd_qi *) __a, __u.__o); + } + + __extension__ extern __inline void + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vst4_u64 (uint64_t * __a, uint64x1x4_t val) ++vst1q_s8_x4 (int8_t * __a, int8x16x4_t val) + { +- __builtin_aarch64_simd_xi __o; +- uint64x2x4_t temp; +- temp.val[0] = vcombine_u64 (val.val[0], vcreate_u64 (__AARCH64_UINT64_C (0))); +- temp.val[1] = vcombine_u64 (val.val[1], vcreate_u64 (__AARCH64_UINT64_C (0))); +- temp.val[2] = vcombine_u64 (val.val[2], vcreate_u64 (__AARCH64_UINT64_C (0))); +- temp.val[3] = vcombine_u64 (val.val[3], vcreate_u64 (__AARCH64_UINT64_C (0))); +- __o = __builtin_aarch64_set_qregxiv2di (__o, (int64x2_t) temp.val[0], 0); +- __o = __builtin_aarch64_set_qregxiv2di (__o, (int64x2_t) temp.val[1], 1); +- __o = __builtin_aarch64_set_qregxiv2di (__o, (int64x2_t) temp.val[2], 2); +- __o = __builtin_aarch64_set_qregxiv2di (__o, (int64x2_t) temp.val[3], 3); +- __builtin_aarch64_st4di ((__builtin_aarch64_simd_di *) __a, __o); ++ union { int8x16x4_t __i; __builtin_aarch64_simd_xi __o; } __u = { val }; ++ __builtin_aarch64_st1x4v16qi ((__builtin_aarch64_simd_qi *) __a, __u.__o); + } + + __extension__ extern __inline void + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vst4_f64 (float64_t * __a, float64x1x4_t val) ++vst1_s16_x4 (int16_t * __a, int16x4x4_t val) + { +- __builtin_aarch64_simd_xi __o; +- float64x2x4_t temp; +- temp.val[0] = vcombine_f64 (val.val[0], vcreate_f64 (__AARCH64_UINT64_C (0))); +- temp.val[1] = vcombine_f64 (val.val[1], vcreate_f64 (__AARCH64_UINT64_C (0))); +- temp.val[2] = vcombine_f64 (val.val[2], vcreate_f64 (__AARCH64_UINT64_C (0))); +- temp.val[3] = vcombine_f64 (val.val[3], vcreate_f64 (__AARCH64_UINT64_C (0))); +- __o = __builtin_aarch64_set_qregxiv2df (__o, (float64x2_t) temp.val[0], 0); +- __o = __builtin_aarch64_set_qregxiv2df (__o, (float64x2_t) temp.val[1], 1); +- __o = __builtin_aarch64_set_qregxiv2df (__o, (float64x2_t) temp.val[2], 2); +- __o = __builtin_aarch64_set_qregxiv2df (__o, (float64x2_t) temp.val[3], 3); +- __builtin_aarch64_st4df ((__builtin_aarch64_simd_df *) __a, __o); ++ union { int16x4x4_t __i; __builtin_aarch64_simd_xi __o; } __u = { val }; ++ __builtin_aarch64_st1x4v4hi ((__builtin_aarch64_simd_hi *) __a, __u.__o); + } + + __extension__ extern __inline void + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vst4_s8 (int8_t * __a, int8x8x4_t val) ++vst1q_s16_x4 (int16_t * __a, int16x8x4_t val) + { +- __builtin_aarch64_simd_xi __o; +- int8x16x4_t temp; +- temp.val[0] = vcombine_s8 (val.val[0], vcreate_s8 (__AARCH64_INT64_C (0))); +- temp.val[1] = vcombine_s8 (val.val[1], vcreate_s8 (__AARCH64_INT64_C (0))); +- temp.val[2] = vcombine_s8 (val.val[2], vcreate_s8 (__AARCH64_INT64_C (0))); +- temp.val[3] = vcombine_s8 (val.val[3], vcreate_s8 (__AARCH64_INT64_C (0))); +- __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) temp.val[0], 0); +- __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) temp.val[1], 1); +- __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) temp.val[2], 2); +- __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) temp.val[3], 3); +- __builtin_aarch64_st4v8qi ((__builtin_aarch64_simd_qi *) __a, __o); ++ union { int16x8x4_t __i; __builtin_aarch64_simd_xi __o; } __u = { val }; ++ __builtin_aarch64_st1x4v8hi ((__builtin_aarch64_simd_hi *) __a, __u.__o); + } + + __extension__ extern __inline void + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vst4_p8 (poly8_t * __a, poly8x8x4_t val) ++vst1_s32_x4 (int32_t * __a, int32x2x4_t val) + { +- __builtin_aarch64_simd_xi __o; +- poly8x16x4_t temp; +- temp.val[0] = vcombine_p8 (val.val[0], vcreate_p8 (__AARCH64_UINT64_C (0))); +- temp.val[1] = vcombine_p8 (val.val[1], vcreate_p8 (__AARCH64_UINT64_C (0))); +- temp.val[2] = vcombine_p8 (val.val[2], vcreate_p8 (__AARCH64_UINT64_C (0))); +- temp.val[3] = vcombine_p8 (val.val[3], vcreate_p8 (__AARCH64_UINT64_C (0))); +- __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) temp.val[0], 0); +- __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) temp.val[1], 1); +- __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) temp.val[2], 2); +- __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) temp.val[3], 3); +- __builtin_aarch64_st4v8qi ((__builtin_aarch64_simd_qi *) __a, __o); ++ union { int32x2x4_t __i; __builtin_aarch64_simd_xi __o; } __u = { val }; ++ __builtin_aarch64_st1x4v2si ((__builtin_aarch64_simd_si *) __a, __u.__o); + } + + __extension__ extern __inline void + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vst4_s16 (int16_t * __a, int16x4x4_t val) ++vst1q_s32_x4 (int32_t * __a, int32x4x4_t val) + { +- __builtin_aarch64_simd_xi __o; +- int16x8x4_t temp; +- temp.val[0] = vcombine_s16 (val.val[0], vcreate_s16 (__AARCH64_INT64_C (0))); +- temp.val[1] = vcombine_s16 (val.val[1], vcreate_s16 (__AARCH64_INT64_C (0))); +- temp.val[2] = vcombine_s16 (val.val[2], vcreate_s16 (__AARCH64_INT64_C (0))); +- temp.val[3] = vcombine_s16 (val.val[3], vcreate_s16 (__AARCH64_INT64_C (0))); +- __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) temp.val[0], 0); +- __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) temp.val[1], 1); +- __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) temp.val[2], 2); +- __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) temp.val[3], 3); +- __builtin_aarch64_st4v4hi ((__builtin_aarch64_simd_hi *) __a, __o); ++ union { int32x4x4_t __i; __builtin_aarch64_simd_xi __o; } __u = { val }; ++ __builtin_aarch64_st1x4v4si ((__builtin_aarch64_simd_si *) __a, __u.__o); + } + + __extension__ extern __inline void + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vst4_p16 (poly16_t * __a, poly16x4x4_t val) ++vst1_u8_x4 (uint8_t * __a, uint8x8x4_t val) + { +- __builtin_aarch64_simd_xi __o; +- poly16x8x4_t temp; +- temp.val[0] = vcombine_p16 (val.val[0], vcreate_p16 (__AARCH64_UINT64_C (0))); +- temp.val[1] = vcombine_p16 (val.val[1], vcreate_p16 (__AARCH64_UINT64_C (0))); +- temp.val[2] = vcombine_p16 (val.val[2], vcreate_p16 (__AARCH64_UINT64_C (0))); +- temp.val[3] = vcombine_p16 (val.val[3], vcreate_p16 (__AARCH64_UINT64_C (0))); +- __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) temp.val[0], 0); +- __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) temp.val[1], 1); +- __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) temp.val[2], 2); +- __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) temp.val[3], 3); +- __builtin_aarch64_st4v4hi ((__builtin_aarch64_simd_hi *) __a, __o); ++ union { uint8x8x4_t __i; __builtin_aarch64_simd_xi __o; } __u = { val }; ++ __builtin_aarch64_st1x4v8qi ((__builtin_aarch64_simd_qi *) __a, __u.__o); + } + + __extension__ extern __inline void + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vst4_s32 (int32_t * __a, int32x2x4_t val) ++vst1q_u8_x4 (uint8_t * __a, uint8x16x4_t val) + { +- __builtin_aarch64_simd_xi __o; +- int32x4x4_t temp; +- temp.val[0] = vcombine_s32 (val.val[0], vcreate_s32 (__AARCH64_INT64_C (0))); +- temp.val[1] = vcombine_s32 (val.val[1], vcreate_s32 (__AARCH64_INT64_C (0))); +- temp.val[2] = vcombine_s32 (val.val[2], vcreate_s32 (__AARCH64_INT64_C (0))); +- temp.val[3] = vcombine_s32 (val.val[3], vcreate_s32 (__AARCH64_INT64_C (0))); +- __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) temp.val[0], 0); +- __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) temp.val[1], 1); +- __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) temp.val[2], 2); +- __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) temp.val[3], 3); +- __builtin_aarch64_st4v2si ((__builtin_aarch64_simd_si *) __a, __o); ++ union { uint8x16x4_t __i; __builtin_aarch64_simd_xi __o; } __u = { val }; ++ __builtin_aarch64_st1x4v16qi ((__builtin_aarch64_simd_qi *) __a, __u.__o); + } + + __extension__ extern __inline void + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vst4_u8 (uint8_t * __a, uint8x8x4_t val) ++vst1_u16_x4 (uint16_t * __a, uint16x4x4_t val) + { +- __builtin_aarch64_simd_xi __o; +- uint8x16x4_t temp; +- temp.val[0] = vcombine_u8 (val.val[0], vcreate_u8 (__AARCH64_UINT64_C (0))); +- temp.val[1] = vcombine_u8 (val.val[1], vcreate_u8 (__AARCH64_UINT64_C (0))); +- temp.val[2] = vcombine_u8 (val.val[2], vcreate_u8 (__AARCH64_UINT64_C (0))); +- temp.val[3] = vcombine_u8 (val.val[3], vcreate_u8 (__AARCH64_UINT64_C (0))); +- __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) temp.val[0], 0); +- __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) temp.val[1], 1); +- __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) temp.val[2], 2); +- __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) temp.val[3], 3); +- __builtin_aarch64_st4v8qi ((__builtin_aarch64_simd_qi *) __a, __o); ++ union { uint16x4x4_t __i; __builtin_aarch64_simd_xi __o; } __u = { val }; ++ __builtin_aarch64_st1x4v4hi ((__builtin_aarch64_simd_hi *) __a, __u.__o); + } + + __extension__ extern __inline void + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vst4_u16 (uint16_t * __a, uint16x4x4_t val) ++vst1q_u16_x4 (uint16_t * __a, uint16x8x4_t val) + { +- __builtin_aarch64_simd_xi __o; +- uint16x8x4_t temp; +- temp.val[0] = vcombine_u16 (val.val[0], vcreate_u16 (__AARCH64_UINT64_C (0))); +- temp.val[1] = vcombine_u16 (val.val[1], vcreate_u16 (__AARCH64_UINT64_C (0))); +- temp.val[2] = vcombine_u16 (val.val[2], vcreate_u16 (__AARCH64_UINT64_C (0))); +- temp.val[3] = vcombine_u16 (val.val[3], vcreate_u16 (__AARCH64_UINT64_C (0))); +- __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) temp.val[0], 0); +- __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) temp.val[1], 1); +- __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) temp.val[2], 2); +- __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) temp.val[3], 3); +- __builtin_aarch64_st4v4hi ((__builtin_aarch64_simd_hi *) __a, __o); ++ union { uint16x8x4_t __i; __builtin_aarch64_simd_xi __o; } __u = { val }; ++ __builtin_aarch64_st1x4v8hi ((__builtin_aarch64_simd_hi *) __a, __u.__o); + } + + __extension__ extern __inline void + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vst4_u32 (uint32_t * __a, uint32x2x4_t val) ++vst1_u32_x4 (uint32_t * __a, uint32x2x4_t val) + { +- __builtin_aarch64_simd_xi __o; +- uint32x4x4_t temp; +- temp.val[0] = vcombine_u32 (val.val[0], vcreate_u32 (__AARCH64_UINT64_C (0))); +- temp.val[1] = vcombine_u32 (val.val[1], vcreate_u32 (__AARCH64_UINT64_C (0))); +- temp.val[2] = vcombine_u32 (val.val[2], vcreate_u32 (__AARCH64_UINT64_C (0))); +- temp.val[3] = vcombine_u32 (val.val[3], vcreate_u32 (__AARCH64_UINT64_C (0))); +- __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) temp.val[0], 0); +- __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) temp.val[1], 1); +- __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) temp.val[2], 2); +- __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) temp.val[3], 3); +- __builtin_aarch64_st4v2si ((__builtin_aarch64_simd_si *) __a, __o); ++ union { uint32x2x4_t __i; __builtin_aarch64_simd_xi __o; } __u = { val }; ++ __builtin_aarch64_st1x4v2si ((__builtin_aarch64_simd_si *) __a, __u.__o); + } + + __extension__ extern __inline void + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vst4_f16 (float16_t * __a, float16x4x4_t val) ++vst1q_u32_x4 (uint32_t * __a, uint32x4x4_t val) + { +- __builtin_aarch64_simd_xi __o; +- float16x8x4_t temp; +- temp.val[0] = vcombine_f16 (val.val[0], vcreate_f16 (__AARCH64_UINT64_C (0))); +- temp.val[1] = vcombine_f16 (val.val[1], vcreate_f16 (__AARCH64_UINT64_C (0))); +- temp.val[2] = vcombine_f16 (val.val[2], vcreate_f16 (__AARCH64_UINT64_C (0))); +- temp.val[3] = vcombine_f16 (val.val[3], vcreate_f16 (__AARCH64_UINT64_C (0))); +- __o = __builtin_aarch64_set_qregxiv8hf (__o, (float16x8_t) temp.val[0], 0); +- __o = __builtin_aarch64_set_qregxiv8hf (__o, (float16x8_t) temp.val[1], 1); +- __o = __builtin_aarch64_set_qregxiv8hf (__o, (float16x8_t) temp.val[2], 2); +- __o = __builtin_aarch64_set_qregxiv8hf (__o, (float16x8_t) temp.val[3], 3); +- __builtin_aarch64_st4v4hf ((__builtin_aarch64_simd_hf *) __a, __o); ++ union { uint32x4x4_t __i; __builtin_aarch64_simd_xi __o; } __u = { val }; ++ __builtin_aarch64_st1x4v4si ((__builtin_aarch64_simd_si *) __a, __u.__o); + } + + __extension__ extern __inline void + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vst4_f32 (float32_t * __a, float32x2x4_t val) ++vst1_f16_x4 (float16_t * __a, float16x4x4_t val) + { +- __builtin_aarch64_simd_xi __o; +- float32x4x4_t temp; +- temp.val[0] = vcombine_f32 (val.val[0], vcreate_f32 (__AARCH64_UINT64_C (0))); +- temp.val[1] = vcombine_f32 (val.val[1], vcreate_f32 (__AARCH64_UINT64_C (0))); +- temp.val[2] = vcombine_f32 (val.val[2], vcreate_f32 (__AARCH64_UINT64_C (0))); +- temp.val[3] = vcombine_f32 (val.val[3], vcreate_f32 (__AARCH64_UINT64_C (0))); +- __o = __builtin_aarch64_set_qregxiv4sf (__o, (float32x4_t) temp.val[0], 0); +- __o = __builtin_aarch64_set_qregxiv4sf (__o, (float32x4_t) temp.val[1], 1); +- __o = __builtin_aarch64_set_qregxiv4sf (__o, (float32x4_t) temp.val[2], 2); +- __o = __builtin_aarch64_set_qregxiv4sf (__o, (float32x4_t) temp.val[3], 3); +- __builtin_aarch64_st4v2sf ((__builtin_aarch64_simd_sf *) __a, __o); ++ union { float16x4x4_t __i; __builtin_aarch64_simd_xi __o; } __u = { val }; ++ __builtin_aarch64_st1x4v4hf ((__builtin_aarch64_simd_hf *) __a, __u.__o); + } + + __extension__ extern __inline void + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vst4_p64 (poly64_t * __a, poly64x1x4_t val) ++vst1q_f16_x4 (float16_t * __a, float16x8x4_t val) + { +- __builtin_aarch64_simd_xi __o; +- poly64x2x4_t temp; +- temp.val[0] = vcombine_p64 (val.val[0], vcreate_p64 (__AARCH64_UINT64_C (0))); +- temp.val[1] = vcombine_p64 (val.val[1], vcreate_p64 (__AARCH64_UINT64_C (0))); +- temp.val[2] = vcombine_p64 (val.val[2], vcreate_p64 (__AARCH64_UINT64_C (0))); +- temp.val[3] = vcombine_p64 (val.val[3], vcreate_p64 (__AARCH64_UINT64_C (0))); +- __o = __builtin_aarch64_set_qregxiv2di_ssps (__o, +- (poly64x2_t) temp.val[0], 0); +- __o = __builtin_aarch64_set_qregxiv2di_ssps (__o, +- (poly64x2_t) temp.val[1], 1); +- __o = __builtin_aarch64_set_qregxiv2di_ssps (__o, +- (poly64x2_t) temp.val[2], 2); +- __o = __builtin_aarch64_set_qregxiv2di_ssps (__o, +- (poly64x2_t) temp.val[3], 3); +- __builtin_aarch64_st4di ((__builtin_aarch64_simd_di *) __a, __o); ++ union { float16x8x4_t __i; __builtin_aarch64_simd_xi __o; } __u = { val }; ++ __builtin_aarch64_st1x4v8hf ((__builtin_aarch64_simd_hf *) __a, __u.__o); + } + + __extension__ extern __inline void + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vst4q_s8 (int8_t * __a, int8x16x4_t val) ++vst1_f32_x4 (float32_t * __a, float32x2x4_t val) + { +- __builtin_aarch64_simd_xi __o; +- __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) val.val[0], 0); +- __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) val.val[1], 1); +- __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) val.val[2], 2); +- __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) val.val[3], 3); +- __builtin_aarch64_st4v16qi ((__builtin_aarch64_simd_qi *) __a, __o); ++ union { float32x2x4_t __i; __builtin_aarch64_simd_xi __o; } __u = { val }; ++ __builtin_aarch64_st1x4v2sf ((__builtin_aarch64_simd_sf *) __a, __u.__o); + } + + __extension__ extern __inline void + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vst4q_p8 (poly8_t * __a, poly8x16x4_t val) ++vst1q_f32_x4 (float32_t * __a, float32x4x4_t val) + { +- __builtin_aarch64_simd_xi __o; +- __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) val.val[0], 0); +- __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) val.val[1], 1); +- __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) val.val[2], 2); +- __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) val.val[3], 3); +- __builtin_aarch64_st4v16qi ((__builtin_aarch64_simd_qi *) __a, __o); ++ union { float32x4x4_t __i; __builtin_aarch64_simd_xi __o; } __u = { val }; ++ __builtin_aarch64_st1x4v4sf ((__builtin_aarch64_simd_sf *) __a, __u.__o); + } + + __extension__ extern __inline void + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vst4q_s16 (int16_t * __a, int16x8x4_t val) ++vst1_p8_x4 (poly8_t * __a, poly8x8x4_t val) + { +- __builtin_aarch64_simd_xi __o; +- __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) val.val[0], 0); +- __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) val.val[1], 1); +- __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) val.val[2], 2); +- __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) val.val[3], 3); +- __builtin_aarch64_st4v8hi ((__builtin_aarch64_simd_hi *) __a, __o); ++ union { poly8x8x4_t __i; __builtin_aarch64_simd_xi __o; } __u = { val }; ++ __builtin_aarch64_st1x4v8qi ((__builtin_aarch64_simd_qi *) __a, __u.__o); + } + + __extension__ extern __inline void + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vst4q_p16 (poly16_t * __a, poly16x8x4_t val) ++vst1q_p8_x4 (poly8_t * __a, poly8x16x4_t val) + { +- __builtin_aarch64_simd_xi __o; +- __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) val.val[0], 0); +- __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) val.val[1], 1); +- __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) val.val[2], 2); +- __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) val.val[3], 3); +- __builtin_aarch64_st4v8hi ((__builtin_aarch64_simd_hi *) __a, __o); ++ union { poly8x16x4_t __i; __builtin_aarch64_simd_xi __o; } __u = { val }; ++ __builtin_aarch64_st1x4v16qi ((__builtin_aarch64_simd_qi *) __a, __u.__o); + } + + __extension__ extern __inline void + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vst4q_s32 (int32_t * __a, int32x4x4_t val) ++vst1_p16_x4 (poly16_t * __a, poly16x4x4_t val) + { +- __builtin_aarch64_simd_xi __o; +- __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) val.val[0], 0); +- __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) val.val[1], 1); +- __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) val.val[2], 2); +- __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) val.val[3], 3); +- __builtin_aarch64_st4v4si ((__builtin_aarch64_simd_si *) __a, __o); ++ union { poly16x4x4_t __i; __builtin_aarch64_simd_xi __o; } __u = { val }; ++ __builtin_aarch64_st1x4v4hi ((__builtin_aarch64_simd_hi *) __a, __u.__o); + } + + __extension__ extern __inline void + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vst4q_s64 (int64_t * __a, int64x2x4_t val) ++vst1q_p16_x4 (poly16_t * __a, poly16x8x4_t val) + { +- __builtin_aarch64_simd_xi __o; +- __o = __builtin_aarch64_set_qregxiv2di (__o, (int64x2_t) val.val[0], 0); +- __o = __builtin_aarch64_set_qregxiv2di (__o, (int64x2_t) val.val[1], 1); +- __o = __builtin_aarch64_set_qregxiv2di (__o, (int64x2_t) val.val[2], 2); +- __o = __builtin_aarch64_set_qregxiv2di (__o, (int64x2_t) val.val[3], 3); +- __builtin_aarch64_st4v2di ((__builtin_aarch64_simd_di *) __a, __o); ++ union { poly16x8x4_t __i; __builtin_aarch64_simd_xi __o; } __u = { val }; ++ __builtin_aarch64_st1x4v8hi ((__builtin_aarch64_simd_hi *) __a, __u.__o); + } + + __extension__ extern __inline void + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vst4q_u8 (uint8_t * __a, uint8x16x4_t val) ++vst1_s64_x4 (int64_t * __a, int64x1x4_t val) + { +- __builtin_aarch64_simd_xi __o; +- __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) val.val[0], 0); +- __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) val.val[1], 1); +- __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) val.val[2], 2); +- __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) val.val[3], 3); +- __builtin_aarch64_st4v16qi ((__builtin_aarch64_simd_qi *) __a, __o); ++ union { int64x1x4_t __i; __builtin_aarch64_simd_xi __o; } __u = { val }; ++ __builtin_aarch64_st1x4di ((__builtin_aarch64_simd_di *) __a, __u.__o); + } + + __extension__ extern __inline void + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vst4q_u16 (uint16_t * __a, uint16x8x4_t val) ++vst1_u64_x4 (uint64_t * __a, uint64x1x4_t val) + { +- __builtin_aarch64_simd_xi __o; +- __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) val.val[0], 0); +- __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) val.val[1], 1); +- __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) val.val[2], 2); +- __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) val.val[3], 3); +- __builtin_aarch64_st4v8hi ((__builtin_aarch64_simd_hi *) __a, __o); ++ union { uint64x1x4_t __i; __builtin_aarch64_simd_xi __o; } __u = { val }; ++ __builtin_aarch64_st1x4di ((__builtin_aarch64_simd_di *) __a, __u.__o); + } + + __extension__ extern __inline void + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vst4q_u32 (uint32_t * __a, uint32x4x4_t val) ++vst1_p64_x4 (poly64_t * __a, poly64x1x4_t val) + { +- __builtin_aarch64_simd_xi __o; +- __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) val.val[0], 0); +- __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) val.val[1], 1); +- __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) val.val[2], 2); +- __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) val.val[3], 3); +- __builtin_aarch64_st4v4si ((__builtin_aarch64_simd_si *) __a, __o); ++ union { poly64x1x4_t __i; __builtin_aarch64_simd_xi __o; } __u = { val }; ++ __builtin_aarch64_st1x4di ((__builtin_aarch64_simd_di *) __a, __u.__o); + } + + __extension__ extern __inline void + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vst4q_u64 (uint64_t * __a, uint64x2x4_t val) ++vst1q_s64_x4 (int64_t * __a, int64x2x4_t val) + { +- __builtin_aarch64_simd_xi __o; +- __o = __builtin_aarch64_set_qregxiv2di (__o, (int64x2_t) val.val[0], 0); +- __o = __builtin_aarch64_set_qregxiv2di (__o, (int64x2_t) val.val[1], 1); +- __o = __builtin_aarch64_set_qregxiv2di (__o, (int64x2_t) val.val[2], 2); +- __o = __builtin_aarch64_set_qregxiv2di (__o, (int64x2_t) val.val[3], 3); +- __builtin_aarch64_st4v2di ((__builtin_aarch64_simd_di *) __a, __o); ++ union { int64x2x4_t __i; __builtin_aarch64_simd_xi __o; } __u = { val }; ++ __builtin_aarch64_st1x4v2di ((__builtin_aarch64_simd_di *) __a, __u.__o); + } + + __extension__ extern __inline void + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vst4q_f16 (float16_t * __a, float16x8x4_t val) ++vst1q_u64_x4 (uint64_t * __a, uint64x2x4_t val) + { +- __builtin_aarch64_simd_xi __o; +- __o = __builtin_aarch64_set_qregxiv8hf (__o, (float16x8_t) val.val[0], 0); +- __o = __builtin_aarch64_set_qregxiv8hf (__o, (float16x8_t) val.val[1], 1); +- __o = __builtin_aarch64_set_qregxiv8hf (__o, (float16x8_t) val.val[2], 2); +- __o = __builtin_aarch64_set_qregxiv8hf (__o, (float16x8_t) val.val[3], 3); +- __builtin_aarch64_st4v8hf ((__builtin_aarch64_simd_hf *) __a, __o); ++ union { uint64x2x4_t __i; __builtin_aarch64_simd_xi __o; } __u = { val }; ++ __builtin_aarch64_st1x4v2di ((__builtin_aarch64_simd_di *) __a, __u.__o); + } + + __extension__ extern __inline void + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vst4q_f32 (float32_t * __a, float32x4x4_t val) ++vst1q_p64_x4 (poly64_t * __a, poly64x2x4_t val) + { +- __builtin_aarch64_simd_xi __o; +- __o = __builtin_aarch64_set_qregxiv4sf (__o, (float32x4_t) val.val[0], 0); +- __o = __builtin_aarch64_set_qregxiv4sf (__o, (float32x4_t) val.val[1], 1); +- __o = __builtin_aarch64_set_qregxiv4sf (__o, (float32x4_t) val.val[2], 2); +- __o = __builtin_aarch64_set_qregxiv4sf (__o, (float32x4_t) val.val[3], 3); +- __builtin_aarch64_st4v4sf ((__builtin_aarch64_simd_sf *) __a, __o); ++ union { poly64x2x4_t __i; __builtin_aarch64_simd_xi __o; } __u = { val }; ++ __builtin_aarch64_st1x4v2di ((__builtin_aarch64_simd_di *) __a, __u.__o); + } + + __extension__ extern __inline void + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vst4q_f64 (float64_t * __a, float64x2x4_t val) ++vst1_f64_x4 (float64_t * __a, float64x1x4_t val) + { +- __builtin_aarch64_simd_xi __o; +- __o = __builtin_aarch64_set_qregxiv2df (__o, (float64x2_t) val.val[0], 0); +- __o = __builtin_aarch64_set_qregxiv2df (__o, (float64x2_t) val.val[1], 1); +- __o = __builtin_aarch64_set_qregxiv2df (__o, (float64x2_t) val.val[2], 2); +- __o = __builtin_aarch64_set_qregxiv2df (__o, (float64x2_t) val.val[3], 3); +- __builtin_aarch64_st4v2df ((__builtin_aarch64_simd_df *) __a, __o); ++ union { float64x1x4_t __i; __builtin_aarch64_simd_xi __o; } __u = { val }; ++ __builtin_aarch64_st1x4df ((__builtin_aarch64_simd_df *) __a, __u.__o); + } + + __extension__ extern __inline void + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vst4q_p64 (poly64_t * __a, poly64x2x4_t val) ++vst1q_f64_x4 (float64_t * __a, float64x2x4_t val) + { +- __builtin_aarch64_simd_xi __o; +- __o = __builtin_aarch64_set_qregxiv2di_ssps (__o, +- (poly64x2_t) val.val[0], 0); +- __o = __builtin_aarch64_set_qregxiv2di_ssps (__o, +- (poly64x2_t) val.val[1], 1); +- __o = __builtin_aarch64_set_qregxiv2di_ssps (__o, +- (poly64x2_t) val.val[2], 2); +- __o = __builtin_aarch64_set_qregxiv2di_ssps (__o, +- (poly64x2_t) val.val[3], 3); +- __builtin_aarch64_st4v2di ((__builtin_aarch64_simd_di *) __a, __o); ++ union { float64x2x4_t __i; __builtin_aarch64_simd_xi __o; } __u = { val }; ++ __builtin_aarch64_st1x4v2df ((__builtin_aarch64_simd_df *) __a, __u.__o); + } + +-/* vsub */ ++/* vstn */ + +-__extension__ extern __inline int64_t ++__extension__ extern __inline void + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vsubd_s64 (int64_t __a, int64_t __b) ++vst2_s64 (int64_t * __a, int64x1x2_t val) + { +- return __a - __b; ++ __builtin_aarch64_simd_oi __o; ++ int64x2x2_t temp; ++ temp.val[0] = vcombine_s64 (val.val[0], vcreate_s64 (__AARCH64_INT64_C (0))); ++ temp.val[1] = vcombine_s64 (val.val[1], vcreate_s64 (__AARCH64_INT64_C (0))); ++ __o = __builtin_aarch64_set_qregoiv2di (__o, (int64x2_t) temp.val[0], 0); ++ __o = __builtin_aarch64_set_qregoiv2di (__o, (int64x2_t) temp.val[1], 1); ++ __builtin_aarch64_st2di ((__builtin_aarch64_simd_di *) __a, __o); + } + +-__extension__ extern __inline uint64_t ++__extension__ extern __inline void + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vsubd_u64 (uint64_t __a, uint64_t __b) ++vst2_u64 (uint64_t * __a, uint64x1x2_t val) + { +- return __a - __b; ++ __builtin_aarch64_simd_oi __o; ++ uint64x2x2_t temp; ++ temp.val[0] = vcombine_u64 (val.val[0], vcreate_u64 (__AARCH64_UINT64_C (0))); ++ temp.val[1] = vcombine_u64 (val.val[1], vcreate_u64 (__AARCH64_UINT64_C (0))); ++ __o = __builtin_aarch64_set_qregoiv2di (__o, (int64x2_t) temp.val[0], 0); ++ __o = __builtin_aarch64_set_qregoiv2di (__o, (int64x2_t) temp.val[1], 1); ++ __builtin_aarch64_st2di ((__builtin_aarch64_simd_di *) __a, __o); + } + +-/* vtbx1 */ ++__extension__ extern __inline void ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vst2_f64 (float64_t * __a, float64x1x2_t val) ++{ ++ __builtin_aarch64_simd_oi __o; ++ float64x2x2_t temp; ++ temp.val[0] = vcombine_f64 (val.val[0], vcreate_f64 (__AARCH64_UINT64_C (0))); ++ temp.val[1] = vcombine_f64 (val.val[1], vcreate_f64 (__AARCH64_UINT64_C (0))); ++ __o = __builtin_aarch64_set_qregoiv2df (__o, (float64x2_t) temp.val[0], 0); ++ __o = __builtin_aarch64_set_qregoiv2df (__o, (float64x2_t) temp.val[1], 1); ++ __builtin_aarch64_st2df ((__builtin_aarch64_simd_df *) __a, __o); ++} + +-__extension__ extern __inline int8x8_t ++__extension__ extern __inline void + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vtbx1_s8 (int8x8_t __r, int8x8_t __tab, int8x8_t __idx) ++vst2_s8 (int8_t * __a, int8x8x2_t val) + { +- uint8x8_t __mask = vclt_u8 (vreinterpret_u8_s8 (__idx), +- vmov_n_u8 (8)); +- int8x8_t __tbl = vtbl1_s8 (__tab, __idx); ++ __builtin_aarch64_simd_oi __o; ++ int8x16x2_t temp; ++ temp.val[0] = vcombine_s8 (val.val[0], vcreate_s8 (__AARCH64_INT64_C (0))); ++ temp.val[1] = vcombine_s8 (val.val[1], vcreate_s8 (__AARCH64_INT64_C (0))); ++ __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) temp.val[0], 0); ++ __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) temp.val[1], 1); ++ __builtin_aarch64_st2v8qi ((__builtin_aarch64_simd_qi *) __a, __o); ++} + +- return vbsl_s8 (__mask, __tbl, __r); ++__extension__ extern __inline void ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vst2_p8 (poly8_t * __a, poly8x8x2_t val) ++{ ++ __builtin_aarch64_simd_oi __o; ++ poly8x16x2_t temp; ++ temp.val[0] = vcombine_p8 (val.val[0], vcreate_p8 (__AARCH64_UINT64_C (0))); ++ temp.val[1] = vcombine_p8 (val.val[1], vcreate_p8 (__AARCH64_UINT64_C (0))); ++ __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) temp.val[0], 0); ++ __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) temp.val[1], 1); ++ __builtin_aarch64_st2v8qi ((__builtin_aarch64_simd_qi *) __a, __o); + } + +-__extension__ extern __inline uint8x8_t ++__extension__ extern __inline void + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vtbx1_u8 (uint8x8_t __r, uint8x8_t __tab, uint8x8_t __idx) ++vst2_s16 (int16_t * __a, int16x4x2_t val) + { +- uint8x8_t __mask = vclt_u8 (__idx, vmov_n_u8 (8)); +- uint8x8_t __tbl = vtbl1_u8 (__tab, __idx); ++ __builtin_aarch64_simd_oi __o; ++ int16x8x2_t temp; ++ temp.val[0] = vcombine_s16 (val.val[0], vcreate_s16 (__AARCH64_INT64_C (0))); ++ temp.val[1] = vcombine_s16 (val.val[1], vcreate_s16 (__AARCH64_INT64_C (0))); ++ __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) temp.val[0], 0); ++ __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) temp.val[1], 1); ++ __builtin_aarch64_st2v4hi ((__builtin_aarch64_simd_hi *) __a, __o); ++} + +- return vbsl_u8 (__mask, __tbl, __r); ++__extension__ extern __inline void ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vst2_p16 (poly16_t * __a, poly16x4x2_t val) ++{ ++ __builtin_aarch64_simd_oi __o; ++ poly16x8x2_t temp; ++ temp.val[0] = vcombine_p16 (val.val[0], vcreate_p16 (__AARCH64_UINT64_C (0))); ++ temp.val[1] = vcombine_p16 (val.val[1], vcreate_p16 (__AARCH64_UINT64_C (0))); ++ __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) temp.val[0], 0); ++ __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) temp.val[1], 1); ++ __builtin_aarch64_st2v4hi ((__builtin_aarch64_simd_hi *) __a, __o); + } + +-__extension__ extern __inline poly8x8_t ++__extension__ extern __inline void + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vtbx1_p8 (poly8x8_t __r, poly8x8_t __tab, uint8x8_t __idx) ++vst2_s32 (int32_t * __a, int32x2x2_t val) + { +- uint8x8_t __mask = vclt_u8 (__idx, vmov_n_u8 (8)); +- poly8x8_t __tbl = vtbl1_p8 (__tab, __idx); ++ __builtin_aarch64_simd_oi __o; ++ int32x4x2_t temp; ++ temp.val[0] = vcombine_s32 (val.val[0], vcreate_s32 (__AARCH64_INT64_C (0))); ++ temp.val[1] = vcombine_s32 (val.val[1], vcreate_s32 (__AARCH64_INT64_C (0))); ++ __o = __builtin_aarch64_set_qregoiv4si (__o, (int32x4_t) temp.val[0], 0); ++ __o = __builtin_aarch64_set_qregoiv4si (__o, (int32x4_t) temp.val[1], 1); ++ __builtin_aarch64_st2v2si ((__builtin_aarch64_simd_si *) __a, __o); ++} + +- return vbsl_p8 (__mask, __tbl, __r); ++__extension__ extern __inline void ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vst2_u8 (uint8_t * __a, uint8x8x2_t val) ++{ ++ __builtin_aarch64_simd_oi __o; ++ uint8x16x2_t temp; ++ temp.val[0] = vcombine_u8 (val.val[0], vcreate_u8 (__AARCH64_UINT64_C (0))); ++ temp.val[1] = vcombine_u8 (val.val[1], vcreate_u8 (__AARCH64_UINT64_C (0))); ++ __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) temp.val[0], 0); ++ __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) temp.val[1], 1); ++ __builtin_aarch64_st2v8qi ((__builtin_aarch64_simd_qi *) __a, __o); + } + +-/* vtbx3 */ ++__extension__ extern __inline void ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vst2_u16 (uint16_t * __a, uint16x4x2_t val) ++{ ++ __builtin_aarch64_simd_oi __o; ++ uint16x8x2_t temp; ++ temp.val[0] = vcombine_u16 (val.val[0], vcreate_u16 (__AARCH64_UINT64_C (0))); ++ temp.val[1] = vcombine_u16 (val.val[1], vcreate_u16 (__AARCH64_UINT64_C (0))); ++ __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) temp.val[0], 0); ++ __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) temp.val[1], 1); ++ __builtin_aarch64_st2v4hi ((__builtin_aarch64_simd_hi *) __a, __o); ++} + +-__extension__ extern __inline int8x8_t ++__extension__ extern __inline void + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vtbx3_s8 (int8x8_t __r, int8x8x3_t __tab, int8x8_t __idx) ++vst2_u32 (uint32_t * __a, uint32x2x2_t val) + { +- uint8x8_t __mask = vclt_u8 (vreinterpret_u8_s8 (__idx), +- vmov_n_u8 (24)); +- int8x8_t __tbl = vtbl3_s8 (__tab, __idx); ++ __builtin_aarch64_simd_oi __o; ++ uint32x4x2_t temp; ++ temp.val[0] = vcombine_u32 (val.val[0], vcreate_u32 (__AARCH64_UINT64_C (0))); ++ temp.val[1] = vcombine_u32 (val.val[1], vcreate_u32 (__AARCH64_UINT64_C (0))); ++ __o = __builtin_aarch64_set_qregoiv4si (__o, (int32x4_t) temp.val[0], 0); ++ __o = __builtin_aarch64_set_qregoiv4si (__o, (int32x4_t) temp.val[1], 1); ++ __builtin_aarch64_st2v2si ((__builtin_aarch64_simd_si *) __a, __o); ++} + +- return vbsl_s8 (__mask, __tbl, __r); ++__extension__ extern __inline void ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vst2_f16 (float16_t * __a, float16x4x2_t val) ++{ ++ __builtin_aarch64_simd_oi __o; ++ float16x8x2_t temp; ++ temp.val[0] = vcombine_f16 (val.val[0], vcreate_f16 (__AARCH64_UINT64_C (0))); ++ temp.val[1] = vcombine_f16 (val.val[1], vcreate_f16 (__AARCH64_UINT64_C (0))); ++ __o = __builtin_aarch64_set_qregoiv8hf (__o, temp.val[0], 0); ++ __o = __builtin_aarch64_set_qregoiv8hf (__o, temp.val[1], 1); ++ __builtin_aarch64_st2v4hf (__a, __o); ++} ++ ++__extension__ extern __inline void ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vst2_f32 (float32_t * __a, float32x2x2_t val) ++{ ++ __builtin_aarch64_simd_oi __o; ++ float32x4x2_t temp; ++ temp.val[0] = vcombine_f32 (val.val[0], vcreate_f32 (__AARCH64_UINT64_C (0))); ++ temp.val[1] = vcombine_f32 (val.val[1], vcreate_f32 (__AARCH64_UINT64_C (0))); ++ __o = __builtin_aarch64_set_qregoiv4sf (__o, (float32x4_t) temp.val[0], 0); ++ __o = __builtin_aarch64_set_qregoiv4sf (__o, (float32x4_t) temp.val[1], 1); ++ __builtin_aarch64_st2v2sf ((__builtin_aarch64_simd_sf *) __a, __o); ++} ++ ++__extension__ extern __inline void ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vst2_p64 (poly64_t * __a, poly64x1x2_t val) ++{ ++ __builtin_aarch64_simd_oi __o; ++ poly64x2x2_t temp; ++ temp.val[0] = vcombine_p64 (val.val[0], vcreate_p64 (__AARCH64_UINT64_C (0))); ++ temp.val[1] = vcombine_p64 (val.val[1], vcreate_p64 (__AARCH64_UINT64_C (0))); ++ __o = __builtin_aarch64_set_qregoiv2di_ssps (__o, ++ (poly64x2_t) temp.val[0], 0); ++ __o = __builtin_aarch64_set_qregoiv2di_ssps (__o, ++ (poly64x2_t) temp.val[1], 1); ++ __builtin_aarch64_st2di ((__builtin_aarch64_simd_di *) __a, __o); ++} ++ ++__extension__ extern __inline void ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vst2q_s8 (int8_t * __a, int8x16x2_t val) ++{ ++ __builtin_aarch64_simd_oi __o; ++ __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) val.val[0], 0); ++ __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) val.val[1], 1); ++ __builtin_aarch64_st2v16qi ((__builtin_aarch64_simd_qi *) __a, __o); ++} ++ ++__extension__ extern __inline void ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vst2q_p8 (poly8_t * __a, poly8x16x2_t val) ++{ ++ __builtin_aarch64_simd_oi __o; ++ __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) val.val[0], 0); ++ __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) val.val[1], 1); ++ __builtin_aarch64_st2v16qi ((__builtin_aarch64_simd_qi *) __a, __o); ++} ++ ++__extension__ extern __inline void ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vst2q_s16 (int16_t * __a, int16x8x2_t val) ++{ ++ __builtin_aarch64_simd_oi __o; ++ __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) val.val[0], 0); ++ __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) val.val[1], 1); ++ __builtin_aarch64_st2v8hi ((__builtin_aarch64_simd_hi *) __a, __o); ++} ++ ++__extension__ extern __inline void ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vst2q_p16 (poly16_t * __a, poly16x8x2_t val) ++{ ++ __builtin_aarch64_simd_oi __o; ++ __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) val.val[0], 0); ++ __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) val.val[1], 1); ++ __builtin_aarch64_st2v8hi ((__builtin_aarch64_simd_hi *) __a, __o); ++} ++ ++__extension__ extern __inline void ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vst2q_s32 (int32_t * __a, int32x4x2_t val) ++{ ++ __builtin_aarch64_simd_oi __o; ++ __o = __builtin_aarch64_set_qregoiv4si (__o, (int32x4_t) val.val[0], 0); ++ __o = __builtin_aarch64_set_qregoiv4si (__o, (int32x4_t) val.val[1], 1); ++ __builtin_aarch64_st2v4si ((__builtin_aarch64_simd_si *) __a, __o); ++} ++ ++__extension__ extern __inline void ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vst2q_s64 (int64_t * __a, int64x2x2_t val) ++{ ++ __builtin_aarch64_simd_oi __o; ++ __o = __builtin_aarch64_set_qregoiv2di (__o, (int64x2_t) val.val[0], 0); ++ __o = __builtin_aarch64_set_qregoiv2di (__o, (int64x2_t) val.val[1], 1); ++ __builtin_aarch64_st2v2di ((__builtin_aarch64_simd_di *) __a, __o); ++} ++ ++__extension__ extern __inline void ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vst2q_u8 (uint8_t * __a, uint8x16x2_t val) ++{ ++ __builtin_aarch64_simd_oi __o; ++ __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) val.val[0], 0); ++ __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) val.val[1], 1); ++ __builtin_aarch64_st2v16qi ((__builtin_aarch64_simd_qi *) __a, __o); ++} ++ ++__extension__ extern __inline void ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vst2q_u16 (uint16_t * __a, uint16x8x2_t val) ++{ ++ __builtin_aarch64_simd_oi __o; ++ __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) val.val[0], 0); ++ __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) val.val[1], 1); ++ __builtin_aarch64_st2v8hi ((__builtin_aarch64_simd_hi *) __a, __o); ++} ++ ++__extension__ extern __inline void ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vst2q_u32 (uint32_t * __a, uint32x4x2_t val) ++{ ++ __builtin_aarch64_simd_oi __o; ++ __o = __builtin_aarch64_set_qregoiv4si (__o, (int32x4_t) val.val[0], 0); ++ __o = __builtin_aarch64_set_qregoiv4si (__o, (int32x4_t) val.val[1], 1); ++ __builtin_aarch64_st2v4si ((__builtin_aarch64_simd_si *) __a, __o); ++} ++ ++__extension__ extern __inline void ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vst2q_u64 (uint64_t * __a, uint64x2x2_t val) ++{ ++ __builtin_aarch64_simd_oi __o; ++ __o = __builtin_aarch64_set_qregoiv2di (__o, (int64x2_t) val.val[0], 0); ++ __o = __builtin_aarch64_set_qregoiv2di (__o, (int64x2_t) val.val[1], 1); ++ __builtin_aarch64_st2v2di ((__builtin_aarch64_simd_di *) __a, __o); ++} ++ ++__extension__ extern __inline void ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vst2q_f16 (float16_t * __a, float16x8x2_t val) ++{ ++ __builtin_aarch64_simd_oi __o; ++ __o = __builtin_aarch64_set_qregoiv8hf (__o, val.val[0], 0); ++ __o = __builtin_aarch64_set_qregoiv8hf (__o, val.val[1], 1); ++ __builtin_aarch64_st2v8hf (__a, __o); ++} ++ ++__extension__ extern __inline void ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vst2q_f32 (float32_t * __a, float32x4x2_t val) ++{ ++ __builtin_aarch64_simd_oi __o; ++ __o = __builtin_aarch64_set_qregoiv4sf (__o, (float32x4_t) val.val[0], 0); ++ __o = __builtin_aarch64_set_qregoiv4sf (__o, (float32x4_t) val.val[1], 1); ++ __builtin_aarch64_st2v4sf ((__builtin_aarch64_simd_sf *) __a, __o); ++} ++ ++__extension__ extern __inline void ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vst2q_f64 (float64_t * __a, float64x2x2_t val) ++{ ++ __builtin_aarch64_simd_oi __o; ++ __o = __builtin_aarch64_set_qregoiv2df (__o, (float64x2_t) val.val[0], 0); ++ __o = __builtin_aarch64_set_qregoiv2df (__o, (float64x2_t) val.val[1], 1); ++ __builtin_aarch64_st2v2df ((__builtin_aarch64_simd_df *) __a, __o); ++} ++ ++__extension__ extern __inline void ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vst2q_p64 (poly64_t * __a, poly64x2x2_t val) ++{ ++ __builtin_aarch64_simd_oi __o; ++ __o = __builtin_aarch64_set_qregoiv2di_ssps (__o, ++ (poly64x2_t) val.val[0], 0); ++ __o = __builtin_aarch64_set_qregoiv2di_ssps (__o, ++ (poly64x2_t) val.val[1], 1); ++ __builtin_aarch64_st2v2di ((__builtin_aarch64_simd_di *) __a, __o); ++} ++ ++__extension__ extern __inline void ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vst3_s64 (int64_t * __a, int64x1x3_t val) ++{ ++ __builtin_aarch64_simd_ci __o; ++ int64x2x3_t temp; ++ temp.val[0] = vcombine_s64 (val.val[0], vcreate_s64 (__AARCH64_INT64_C (0))); ++ temp.val[1] = vcombine_s64 (val.val[1], vcreate_s64 (__AARCH64_INT64_C (0))); ++ temp.val[2] = vcombine_s64 (val.val[2], vcreate_s64 (__AARCH64_INT64_C (0))); ++ __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) temp.val[0], 0); ++ __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) temp.val[1], 1); ++ __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) temp.val[2], 2); ++ __builtin_aarch64_st3di ((__builtin_aarch64_simd_di *) __a, __o); ++} ++ ++__extension__ extern __inline void ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vst3_u64 (uint64_t * __a, uint64x1x3_t val) ++{ ++ __builtin_aarch64_simd_ci __o; ++ uint64x2x3_t temp; ++ temp.val[0] = vcombine_u64 (val.val[0], vcreate_u64 (__AARCH64_UINT64_C (0))); ++ temp.val[1] = vcombine_u64 (val.val[1], vcreate_u64 (__AARCH64_UINT64_C (0))); ++ temp.val[2] = vcombine_u64 (val.val[2], vcreate_u64 (__AARCH64_UINT64_C (0))); ++ __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) temp.val[0], 0); ++ __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) temp.val[1], 1); ++ __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) temp.val[2], 2); ++ __builtin_aarch64_st3di ((__builtin_aarch64_simd_di *) __a, __o); ++} ++ ++__extension__ extern __inline void ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vst3_f64 (float64_t * __a, float64x1x3_t val) ++{ ++ __builtin_aarch64_simd_ci __o; ++ float64x2x3_t temp; ++ temp.val[0] = vcombine_f64 (val.val[0], vcreate_f64 (__AARCH64_UINT64_C (0))); ++ temp.val[1] = vcombine_f64 (val.val[1], vcreate_f64 (__AARCH64_UINT64_C (0))); ++ temp.val[2] = vcombine_f64 (val.val[2], vcreate_f64 (__AARCH64_UINT64_C (0))); ++ __o = __builtin_aarch64_set_qregciv2df (__o, (float64x2_t) temp.val[0], 0); ++ __o = __builtin_aarch64_set_qregciv2df (__o, (float64x2_t) temp.val[1], 1); ++ __o = __builtin_aarch64_set_qregciv2df (__o, (float64x2_t) temp.val[2], 2); ++ __builtin_aarch64_st3df ((__builtin_aarch64_simd_df *) __a, __o); ++} ++ ++__extension__ extern __inline void ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vst3_s8 (int8_t * __a, int8x8x3_t val) ++{ ++ __builtin_aarch64_simd_ci __o; ++ int8x16x3_t temp; ++ temp.val[0] = vcombine_s8 (val.val[0], vcreate_s8 (__AARCH64_INT64_C (0))); ++ temp.val[1] = vcombine_s8 (val.val[1], vcreate_s8 (__AARCH64_INT64_C (0))); ++ temp.val[2] = vcombine_s8 (val.val[2], vcreate_s8 (__AARCH64_INT64_C (0))); ++ __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) temp.val[0], 0); ++ __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) temp.val[1], 1); ++ __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) temp.val[2], 2); ++ __builtin_aarch64_st3v8qi ((__builtin_aarch64_simd_qi *) __a, __o); ++} ++ ++__extension__ extern __inline void ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vst3_p8 (poly8_t * __a, poly8x8x3_t val) ++{ ++ __builtin_aarch64_simd_ci __o; ++ poly8x16x3_t temp; ++ temp.val[0] = vcombine_p8 (val.val[0], vcreate_p8 (__AARCH64_UINT64_C (0))); ++ temp.val[1] = vcombine_p8 (val.val[1], vcreate_p8 (__AARCH64_UINT64_C (0))); ++ temp.val[2] = vcombine_p8 (val.val[2], vcreate_p8 (__AARCH64_UINT64_C (0))); ++ __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) temp.val[0], 0); ++ __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) temp.val[1], 1); ++ __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) temp.val[2], 2); ++ __builtin_aarch64_st3v8qi ((__builtin_aarch64_simd_qi *) __a, __o); ++} ++ ++__extension__ extern __inline void ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vst3_s16 (int16_t * __a, int16x4x3_t val) ++{ ++ __builtin_aarch64_simd_ci __o; ++ int16x8x3_t temp; ++ temp.val[0] = vcombine_s16 (val.val[0], vcreate_s16 (__AARCH64_INT64_C (0))); ++ temp.val[1] = vcombine_s16 (val.val[1], vcreate_s16 (__AARCH64_INT64_C (0))); ++ temp.val[2] = vcombine_s16 (val.val[2], vcreate_s16 (__AARCH64_INT64_C (0))); ++ __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) temp.val[0], 0); ++ __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) temp.val[1], 1); ++ __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) temp.val[2], 2); ++ __builtin_aarch64_st3v4hi ((__builtin_aarch64_simd_hi *) __a, __o); ++} ++ ++__extension__ extern __inline void ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vst3_p16 (poly16_t * __a, poly16x4x3_t val) ++{ ++ __builtin_aarch64_simd_ci __o; ++ poly16x8x3_t temp; ++ temp.val[0] = vcombine_p16 (val.val[0], vcreate_p16 (__AARCH64_UINT64_C (0))); ++ temp.val[1] = vcombine_p16 (val.val[1], vcreate_p16 (__AARCH64_UINT64_C (0))); ++ temp.val[2] = vcombine_p16 (val.val[2], vcreate_p16 (__AARCH64_UINT64_C (0))); ++ __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) temp.val[0], 0); ++ __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) temp.val[1], 1); ++ __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) temp.val[2], 2); ++ __builtin_aarch64_st3v4hi ((__builtin_aarch64_simd_hi *) __a, __o); ++} ++ ++__extension__ extern __inline void ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vst3_s32 (int32_t * __a, int32x2x3_t val) ++{ ++ __builtin_aarch64_simd_ci __o; ++ int32x4x3_t temp; ++ temp.val[0] = vcombine_s32 (val.val[0], vcreate_s32 (__AARCH64_INT64_C (0))); ++ temp.val[1] = vcombine_s32 (val.val[1], vcreate_s32 (__AARCH64_INT64_C (0))); ++ temp.val[2] = vcombine_s32 (val.val[2], vcreate_s32 (__AARCH64_INT64_C (0))); ++ __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) temp.val[0], 0); ++ __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) temp.val[1], 1); ++ __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) temp.val[2], 2); ++ __builtin_aarch64_st3v2si ((__builtin_aarch64_simd_si *) __a, __o); ++} ++ ++__extension__ extern __inline void ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vst3_u8 (uint8_t * __a, uint8x8x3_t val) ++{ ++ __builtin_aarch64_simd_ci __o; ++ uint8x16x3_t temp; ++ temp.val[0] = vcombine_u8 (val.val[0], vcreate_u8 (__AARCH64_UINT64_C (0))); ++ temp.val[1] = vcombine_u8 (val.val[1], vcreate_u8 (__AARCH64_UINT64_C (0))); ++ temp.val[2] = vcombine_u8 (val.val[2], vcreate_u8 (__AARCH64_UINT64_C (0))); ++ __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) temp.val[0], 0); ++ __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) temp.val[1], 1); ++ __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) temp.val[2], 2); ++ __builtin_aarch64_st3v8qi ((__builtin_aarch64_simd_qi *) __a, __o); ++} ++ ++__extension__ extern __inline void ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vst3_u16 (uint16_t * __a, uint16x4x3_t val) ++{ ++ __builtin_aarch64_simd_ci __o; ++ uint16x8x3_t temp; ++ temp.val[0] = vcombine_u16 (val.val[0], vcreate_u16 (__AARCH64_UINT64_C (0))); ++ temp.val[1] = vcombine_u16 (val.val[1], vcreate_u16 (__AARCH64_UINT64_C (0))); ++ temp.val[2] = vcombine_u16 (val.val[2], vcreate_u16 (__AARCH64_UINT64_C (0))); ++ __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) temp.val[0], 0); ++ __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) temp.val[1], 1); ++ __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) temp.val[2], 2); ++ __builtin_aarch64_st3v4hi ((__builtin_aarch64_simd_hi *) __a, __o); ++} ++ ++__extension__ extern __inline void ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vst3_u32 (uint32_t * __a, uint32x2x3_t val) ++{ ++ __builtin_aarch64_simd_ci __o; ++ uint32x4x3_t temp; ++ temp.val[0] = vcombine_u32 (val.val[0], vcreate_u32 (__AARCH64_UINT64_C (0))); ++ temp.val[1] = vcombine_u32 (val.val[1], vcreate_u32 (__AARCH64_UINT64_C (0))); ++ temp.val[2] = vcombine_u32 (val.val[2], vcreate_u32 (__AARCH64_UINT64_C (0))); ++ __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) temp.val[0], 0); ++ __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) temp.val[1], 1); ++ __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) temp.val[2], 2); ++ __builtin_aarch64_st3v2si ((__builtin_aarch64_simd_si *) __a, __o); ++} ++ ++__extension__ extern __inline void ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vst3_f16 (float16_t * __a, float16x4x3_t val) ++{ ++ __builtin_aarch64_simd_ci __o; ++ float16x8x3_t temp; ++ temp.val[0] = vcombine_f16 (val.val[0], vcreate_f16 (__AARCH64_UINT64_C (0))); ++ temp.val[1] = vcombine_f16 (val.val[1], vcreate_f16 (__AARCH64_UINT64_C (0))); ++ temp.val[2] = vcombine_f16 (val.val[2], vcreate_f16 (__AARCH64_UINT64_C (0))); ++ __o = __builtin_aarch64_set_qregciv8hf (__o, (float16x8_t) temp.val[0], 0); ++ __o = __builtin_aarch64_set_qregciv8hf (__o, (float16x8_t) temp.val[1], 1); ++ __o = __builtin_aarch64_set_qregciv8hf (__o, (float16x8_t) temp.val[2], 2); ++ __builtin_aarch64_st3v4hf ((__builtin_aarch64_simd_hf *) __a, __o); ++} ++ ++__extension__ extern __inline void ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vst3_f32 (float32_t * __a, float32x2x3_t val) ++{ ++ __builtin_aarch64_simd_ci __o; ++ float32x4x3_t temp; ++ temp.val[0] = vcombine_f32 (val.val[0], vcreate_f32 (__AARCH64_UINT64_C (0))); ++ temp.val[1] = vcombine_f32 (val.val[1], vcreate_f32 (__AARCH64_UINT64_C (0))); ++ temp.val[2] = vcombine_f32 (val.val[2], vcreate_f32 (__AARCH64_UINT64_C (0))); ++ __o = __builtin_aarch64_set_qregciv4sf (__o, (float32x4_t) temp.val[0], 0); ++ __o = __builtin_aarch64_set_qregciv4sf (__o, (float32x4_t) temp.val[1], 1); ++ __o = __builtin_aarch64_set_qregciv4sf (__o, (float32x4_t) temp.val[2], 2); ++ __builtin_aarch64_st3v2sf ((__builtin_aarch64_simd_sf *) __a, __o); ++} ++ ++__extension__ extern __inline void ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vst3_p64 (poly64_t * __a, poly64x1x3_t val) ++{ ++ __builtin_aarch64_simd_ci __o; ++ poly64x2x3_t temp; ++ temp.val[0] = vcombine_p64 (val.val[0], vcreate_p64 (__AARCH64_UINT64_C (0))); ++ temp.val[1] = vcombine_p64 (val.val[1], vcreate_p64 (__AARCH64_UINT64_C (0))); ++ temp.val[2] = vcombine_p64 (val.val[2], vcreate_p64 (__AARCH64_UINT64_C (0))); ++ __o = __builtin_aarch64_set_qregciv2di_ssps (__o, ++ (poly64x2_t) temp.val[0], 0); ++ __o = __builtin_aarch64_set_qregciv2di_ssps (__o, ++ (poly64x2_t) temp.val[1], 1); ++ __o = __builtin_aarch64_set_qregciv2di_ssps (__o, ++ (poly64x2_t) temp.val[2], 2); ++ __builtin_aarch64_st3di ((__builtin_aarch64_simd_di *) __a, __o); ++} ++ ++__extension__ extern __inline void ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vst3q_s8 (int8_t * __a, int8x16x3_t val) ++{ ++ __builtin_aarch64_simd_ci __o; ++ __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) val.val[0], 0); ++ __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) val.val[1], 1); ++ __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) val.val[2], 2); ++ __builtin_aarch64_st3v16qi ((__builtin_aarch64_simd_qi *) __a, __o); ++} ++ ++__extension__ extern __inline void ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vst3q_p8 (poly8_t * __a, poly8x16x3_t val) ++{ ++ __builtin_aarch64_simd_ci __o; ++ __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) val.val[0], 0); ++ __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) val.val[1], 1); ++ __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) val.val[2], 2); ++ __builtin_aarch64_st3v16qi ((__builtin_aarch64_simd_qi *) __a, __o); ++} ++ ++__extension__ extern __inline void ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vst3q_s16 (int16_t * __a, int16x8x3_t val) ++{ ++ __builtin_aarch64_simd_ci __o; ++ __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) val.val[0], 0); ++ __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) val.val[1], 1); ++ __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) val.val[2], 2); ++ __builtin_aarch64_st3v8hi ((__builtin_aarch64_simd_hi *) __a, __o); ++} ++ ++__extension__ extern __inline void ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vst3q_p16 (poly16_t * __a, poly16x8x3_t val) ++{ ++ __builtin_aarch64_simd_ci __o; ++ __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) val.val[0], 0); ++ __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) val.val[1], 1); ++ __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) val.val[2], 2); ++ __builtin_aarch64_st3v8hi ((__builtin_aarch64_simd_hi *) __a, __o); ++} ++ ++__extension__ extern __inline void ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vst3q_s32 (int32_t * __a, int32x4x3_t val) ++{ ++ __builtin_aarch64_simd_ci __o; ++ __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) val.val[0], 0); ++ __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) val.val[1], 1); ++ __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) val.val[2], 2); ++ __builtin_aarch64_st3v4si ((__builtin_aarch64_simd_si *) __a, __o); ++} ++ ++__extension__ extern __inline void ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vst3q_s64 (int64_t * __a, int64x2x3_t val) ++{ ++ __builtin_aarch64_simd_ci __o; ++ __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) val.val[0], 0); ++ __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) val.val[1], 1); ++ __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) val.val[2], 2); ++ __builtin_aarch64_st3v2di ((__builtin_aarch64_simd_di *) __a, __o); ++} ++ ++__extension__ extern __inline void ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vst3q_u8 (uint8_t * __a, uint8x16x3_t val) ++{ ++ __builtin_aarch64_simd_ci __o; ++ __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) val.val[0], 0); ++ __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) val.val[1], 1); ++ __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) val.val[2], 2); ++ __builtin_aarch64_st3v16qi ((__builtin_aarch64_simd_qi *) __a, __o); ++} ++ ++__extension__ extern __inline void ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vst3q_u16 (uint16_t * __a, uint16x8x3_t val) ++{ ++ __builtin_aarch64_simd_ci __o; ++ __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) val.val[0], 0); ++ __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) val.val[1], 1); ++ __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) val.val[2], 2); ++ __builtin_aarch64_st3v8hi ((__builtin_aarch64_simd_hi *) __a, __o); ++} ++ ++__extension__ extern __inline void ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vst3q_u32 (uint32_t * __a, uint32x4x3_t val) ++{ ++ __builtin_aarch64_simd_ci __o; ++ __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) val.val[0], 0); ++ __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) val.val[1], 1); ++ __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) val.val[2], 2); ++ __builtin_aarch64_st3v4si ((__builtin_aarch64_simd_si *) __a, __o); ++} ++ ++__extension__ extern __inline void ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vst3q_u64 (uint64_t * __a, uint64x2x3_t val) ++{ ++ __builtin_aarch64_simd_ci __o; ++ __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) val.val[0], 0); ++ __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) val.val[1], 1); ++ __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) val.val[2], 2); ++ __builtin_aarch64_st3v2di ((__builtin_aarch64_simd_di *) __a, __o); ++} ++ ++__extension__ extern __inline void ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vst3q_f16 (float16_t * __a, float16x8x3_t val) ++{ ++ __builtin_aarch64_simd_ci __o; ++ __o = __builtin_aarch64_set_qregciv8hf (__o, (float16x8_t) val.val[0], 0); ++ __o = __builtin_aarch64_set_qregciv8hf (__o, (float16x8_t) val.val[1], 1); ++ __o = __builtin_aarch64_set_qregciv8hf (__o, (float16x8_t) val.val[2], 2); ++ __builtin_aarch64_st3v8hf ((__builtin_aarch64_simd_hf *) __a, __o); ++} ++ ++__extension__ extern __inline void ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vst3q_f32 (float32_t * __a, float32x4x3_t val) ++{ ++ __builtin_aarch64_simd_ci __o; ++ __o = __builtin_aarch64_set_qregciv4sf (__o, (float32x4_t) val.val[0], 0); ++ __o = __builtin_aarch64_set_qregciv4sf (__o, (float32x4_t) val.val[1], 1); ++ __o = __builtin_aarch64_set_qregciv4sf (__o, (float32x4_t) val.val[2], 2); ++ __builtin_aarch64_st3v4sf ((__builtin_aarch64_simd_sf *) __a, __o); ++} ++ ++__extension__ extern __inline void ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vst3q_f64 (float64_t * __a, float64x2x3_t val) ++{ ++ __builtin_aarch64_simd_ci __o; ++ __o = __builtin_aarch64_set_qregciv2df (__o, (float64x2_t) val.val[0], 0); ++ __o = __builtin_aarch64_set_qregciv2df (__o, (float64x2_t) val.val[1], 1); ++ __o = __builtin_aarch64_set_qregciv2df (__o, (float64x2_t) val.val[2], 2); ++ __builtin_aarch64_st3v2df ((__builtin_aarch64_simd_df *) __a, __o); ++} ++ ++__extension__ extern __inline void ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vst3q_p64 (poly64_t * __a, poly64x2x3_t val) ++{ ++ __builtin_aarch64_simd_ci __o; ++ __o = __builtin_aarch64_set_qregciv2di_ssps (__o, ++ (poly64x2_t) val.val[0], 0); ++ __o = __builtin_aarch64_set_qregciv2di_ssps (__o, ++ (poly64x2_t) val.val[1], 1); ++ __o = __builtin_aarch64_set_qregciv2di_ssps (__o, ++ (poly64x2_t) val.val[2], 2); ++ __builtin_aarch64_st3v2di ((__builtin_aarch64_simd_di *) __a, __o); ++} ++ ++__extension__ extern __inline void ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vst4_s64 (int64_t * __a, int64x1x4_t val) ++{ ++ __builtin_aarch64_simd_xi __o; ++ int64x2x4_t temp; ++ temp.val[0] = vcombine_s64 (val.val[0], vcreate_s64 (__AARCH64_INT64_C (0))); ++ temp.val[1] = vcombine_s64 (val.val[1], vcreate_s64 (__AARCH64_INT64_C (0))); ++ temp.val[2] = vcombine_s64 (val.val[2], vcreate_s64 (__AARCH64_INT64_C (0))); ++ temp.val[3] = vcombine_s64 (val.val[3], vcreate_s64 (__AARCH64_INT64_C (0))); ++ __o = __builtin_aarch64_set_qregxiv2di (__o, (int64x2_t) temp.val[0], 0); ++ __o = __builtin_aarch64_set_qregxiv2di (__o, (int64x2_t) temp.val[1], 1); ++ __o = __builtin_aarch64_set_qregxiv2di (__o, (int64x2_t) temp.val[2], 2); ++ __o = __builtin_aarch64_set_qregxiv2di (__o, (int64x2_t) temp.val[3], 3); ++ __builtin_aarch64_st4di ((__builtin_aarch64_simd_di *) __a, __o); ++} ++ ++__extension__ extern __inline void ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vst4_u64 (uint64_t * __a, uint64x1x4_t val) ++{ ++ __builtin_aarch64_simd_xi __o; ++ uint64x2x4_t temp; ++ temp.val[0] = vcombine_u64 (val.val[0], vcreate_u64 (__AARCH64_UINT64_C (0))); ++ temp.val[1] = vcombine_u64 (val.val[1], vcreate_u64 (__AARCH64_UINT64_C (0))); ++ temp.val[2] = vcombine_u64 (val.val[2], vcreate_u64 (__AARCH64_UINT64_C (0))); ++ temp.val[3] = vcombine_u64 (val.val[3], vcreate_u64 (__AARCH64_UINT64_C (0))); ++ __o = __builtin_aarch64_set_qregxiv2di (__o, (int64x2_t) temp.val[0], 0); ++ __o = __builtin_aarch64_set_qregxiv2di (__o, (int64x2_t) temp.val[1], 1); ++ __o = __builtin_aarch64_set_qregxiv2di (__o, (int64x2_t) temp.val[2], 2); ++ __o = __builtin_aarch64_set_qregxiv2di (__o, (int64x2_t) temp.val[3], 3); ++ __builtin_aarch64_st4di ((__builtin_aarch64_simd_di *) __a, __o); ++} ++ ++__extension__ extern __inline void ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vst4_f64 (float64_t * __a, float64x1x4_t val) ++{ ++ __builtin_aarch64_simd_xi __o; ++ float64x2x4_t temp; ++ temp.val[0] = vcombine_f64 (val.val[0], vcreate_f64 (__AARCH64_UINT64_C (0))); ++ temp.val[1] = vcombine_f64 (val.val[1], vcreate_f64 (__AARCH64_UINT64_C (0))); ++ temp.val[2] = vcombine_f64 (val.val[2], vcreate_f64 (__AARCH64_UINT64_C (0))); ++ temp.val[3] = vcombine_f64 (val.val[3], vcreate_f64 (__AARCH64_UINT64_C (0))); ++ __o = __builtin_aarch64_set_qregxiv2df (__o, (float64x2_t) temp.val[0], 0); ++ __o = __builtin_aarch64_set_qregxiv2df (__o, (float64x2_t) temp.val[1], 1); ++ __o = __builtin_aarch64_set_qregxiv2df (__o, (float64x2_t) temp.val[2], 2); ++ __o = __builtin_aarch64_set_qregxiv2df (__o, (float64x2_t) temp.val[3], 3); ++ __builtin_aarch64_st4df ((__builtin_aarch64_simd_df *) __a, __o); ++} ++ ++__extension__ extern __inline void ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vst4_s8 (int8_t * __a, int8x8x4_t val) ++{ ++ __builtin_aarch64_simd_xi __o; ++ int8x16x4_t temp; ++ temp.val[0] = vcombine_s8 (val.val[0], vcreate_s8 (__AARCH64_INT64_C (0))); ++ temp.val[1] = vcombine_s8 (val.val[1], vcreate_s8 (__AARCH64_INT64_C (0))); ++ temp.val[2] = vcombine_s8 (val.val[2], vcreate_s8 (__AARCH64_INT64_C (0))); ++ temp.val[3] = vcombine_s8 (val.val[3], vcreate_s8 (__AARCH64_INT64_C (0))); ++ __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) temp.val[0], 0); ++ __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) temp.val[1], 1); ++ __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) temp.val[2], 2); ++ __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) temp.val[3], 3); ++ __builtin_aarch64_st4v8qi ((__builtin_aarch64_simd_qi *) __a, __o); ++} ++ ++__extension__ extern __inline void ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vst4_p8 (poly8_t * __a, poly8x8x4_t val) ++{ ++ __builtin_aarch64_simd_xi __o; ++ poly8x16x4_t temp; ++ temp.val[0] = vcombine_p8 (val.val[0], vcreate_p8 (__AARCH64_UINT64_C (0))); ++ temp.val[1] = vcombine_p8 (val.val[1], vcreate_p8 (__AARCH64_UINT64_C (0))); ++ temp.val[2] = vcombine_p8 (val.val[2], vcreate_p8 (__AARCH64_UINT64_C (0))); ++ temp.val[3] = vcombine_p8 (val.val[3], vcreate_p8 (__AARCH64_UINT64_C (0))); ++ __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) temp.val[0], 0); ++ __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) temp.val[1], 1); ++ __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) temp.val[2], 2); ++ __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) temp.val[3], 3); ++ __builtin_aarch64_st4v8qi ((__builtin_aarch64_simd_qi *) __a, __o); ++} ++ ++__extension__ extern __inline void ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vst4_s16 (int16_t * __a, int16x4x4_t val) ++{ ++ __builtin_aarch64_simd_xi __o; ++ int16x8x4_t temp; ++ temp.val[0] = vcombine_s16 (val.val[0], vcreate_s16 (__AARCH64_INT64_C (0))); ++ temp.val[1] = vcombine_s16 (val.val[1], vcreate_s16 (__AARCH64_INT64_C (0))); ++ temp.val[2] = vcombine_s16 (val.val[2], vcreate_s16 (__AARCH64_INT64_C (0))); ++ temp.val[3] = vcombine_s16 (val.val[3], vcreate_s16 (__AARCH64_INT64_C (0))); ++ __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) temp.val[0], 0); ++ __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) temp.val[1], 1); ++ __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) temp.val[2], 2); ++ __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) temp.val[3], 3); ++ __builtin_aarch64_st4v4hi ((__builtin_aarch64_simd_hi *) __a, __o); ++} ++ ++__extension__ extern __inline void ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vst4_p16 (poly16_t * __a, poly16x4x4_t val) ++{ ++ __builtin_aarch64_simd_xi __o; ++ poly16x8x4_t temp; ++ temp.val[0] = vcombine_p16 (val.val[0], vcreate_p16 (__AARCH64_UINT64_C (0))); ++ temp.val[1] = vcombine_p16 (val.val[1], vcreate_p16 (__AARCH64_UINT64_C (0))); ++ temp.val[2] = vcombine_p16 (val.val[2], vcreate_p16 (__AARCH64_UINT64_C (0))); ++ temp.val[3] = vcombine_p16 (val.val[3], vcreate_p16 (__AARCH64_UINT64_C (0))); ++ __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) temp.val[0], 0); ++ __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) temp.val[1], 1); ++ __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) temp.val[2], 2); ++ __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) temp.val[3], 3); ++ __builtin_aarch64_st4v4hi ((__builtin_aarch64_simd_hi *) __a, __o); ++} ++ ++__extension__ extern __inline void ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vst4_s32 (int32_t * __a, int32x2x4_t val) ++{ ++ __builtin_aarch64_simd_xi __o; ++ int32x4x4_t temp; ++ temp.val[0] = vcombine_s32 (val.val[0], vcreate_s32 (__AARCH64_INT64_C (0))); ++ temp.val[1] = vcombine_s32 (val.val[1], vcreate_s32 (__AARCH64_INT64_C (0))); ++ temp.val[2] = vcombine_s32 (val.val[2], vcreate_s32 (__AARCH64_INT64_C (0))); ++ temp.val[3] = vcombine_s32 (val.val[3], vcreate_s32 (__AARCH64_INT64_C (0))); ++ __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) temp.val[0], 0); ++ __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) temp.val[1], 1); ++ __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) temp.val[2], 2); ++ __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) temp.val[3], 3); ++ __builtin_aarch64_st4v2si ((__builtin_aarch64_simd_si *) __a, __o); ++} ++ ++__extension__ extern __inline void ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vst4_u8 (uint8_t * __a, uint8x8x4_t val) ++{ ++ __builtin_aarch64_simd_xi __o; ++ uint8x16x4_t temp; ++ temp.val[0] = vcombine_u8 (val.val[0], vcreate_u8 (__AARCH64_UINT64_C (0))); ++ temp.val[1] = vcombine_u8 (val.val[1], vcreate_u8 (__AARCH64_UINT64_C (0))); ++ temp.val[2] = vcombine_u8 (val.val[2], vcreate_u8 (__AARCH64_UINT64_C (0))); ++ temp.val[3] = vcombine_u8 (val.val[3], vcreate_u8 (__AARCH64_UINT64_C (0))); ++ __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) temp.val[0], 0); ++ __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) temp.val[1], 1); ++ __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) temp.val[2], 2); ++ __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) temp.val[3], 3); ++ __builtin_aarch64_st4v8qi ((__builtin_aarch64_simd_qi *) __a, __o); ++} ++ ++__extension__ extern __inline void ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vst4_u16 (uint16_t * __a, uint16x4x4_t val) ++{ ++ __builtin_aarch64_simd_xi __o; ++ uint16x8x4_t temp; ++ temp.val[0] = vcombine_u16 (val.val[0], vcreate_u16 (__AARCH64_UINT64_C (0))); ++ temp.val[1] = vcombine_u16 (val.val[1], vcreate_u16 (__AARCH64_UINT64_C (0))); ++ temp.val[2] = vcombine_u16 (val.val[2], vcreate_u16 (__AARCH64_UINT64_C (0))); ++ temp.val[3] = vcombine_u16 (val.val[3], vcreate_u16 (__AARCH64_UINT64_C (0))); ++ __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) temp.val[0], 0); ++ __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) temp.val[1], 1); ++ __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) temp.val[2], 2); ++ __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) temp.val[3], 3); ++ __builtin_aarch64_st4v4hi ((__builtin_aarch64_simd_hi *) __a, __o); ++} ++ ++__extension__ extern __inline void ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vst4_u32 (uint32_t * __a, uint32x2x4_t val) ++{ ++ __builtin_aarch64_simd_xi __o; ++ uint32x4x4_t temp; ++ temp.val[0] = vcombine_u32 (val.val[0], vcreate_u32 (__AARCH64_UINT64_C (0))); ++ temp.val[1] = vcombine_u32 (val.val[1], vcreate_u32 (__AARCH64_UINT64_C (0))); ++ temp.val[2] = vcombine_u32 (val.val[2], vcreate_u32 (__AARCH64_UINT64_C (0))); ++ temp.val[3] = vcombine_u32 (val.val[3], vcreate_u32 (__AARCH64_UINT64_C (0))); ++ __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) temp.val[0], 0); ++ __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) temp.val[1], 1); ++ __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) temp.val[2], 2); ++ __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) temp.val[3], 3); ++ __builtin_aarch64_st4v2si ((__builtin_aarch64_simd_si *) __a, __o); ++} ++ ++__extension__ extern __inline void ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vst4_f16 (float16_t * __a, float16x4x4_t val) ++{ ++ __builtin_aarch64_simd_xi __o; ++ float16x8x4_t temp; ++ temp.val[0] = vcombine_f16 (val.val[0], vcreate_f16 (__AARCH64_UINT64_C (0))); ++ temp.val[1] = vcombine_f16 (val.val[1], vcreate_f16 (__AARCH64_UINT64_C (0))); ++ temp.val[2] = vcombine_f16 (val.val[2], vcreate_f16 (__AARCH64_UINT64_C (0))); ++ temp.val[3] = vcombine_f16 (val.val[3], vcreate_f16 (__AARCH64_UINT64_C (0))); ++ __o = __builtin_aarch64_set_qregxiv8hf (__o, (float16x8_t) temp.val[0], 0); ++ __o = __builtin_aarch64_set_qregxiv8hf (__o, (float16x8_t) temp.val[1], 1); ++ __o = __builtin_aarch64_set_qregxiv8hf (__o, (float16x8_t) temp.val[2], 2); ++ __o = __builtin_aarch64_set_qregxiv8hf (__o, (float16x8_t) temp.val[3], 3); ++ __builtin_aarch64_st4v4hf ((__builtin_aarch64_simd_hf *) __a, __o); ++} ++ ++__extension__ extern __inline void ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vst4_f32 (float32_t * __a, float32x2x4_t val) ++{ ++ __builtin_aarch64_simd_xi __o; ++ float32x4x4_t temp; ++ temp.val[0] = vcombine_f32 (val.val[0], vcreate_f32 (__AARCH64_UINT64_C (0))); ++ temp.val[1] = vcombine_f32 (val.val[1], vcreate_f32 (__AARCH64_UINT64_C (0))); ++ temp.val[2] = vcombine_f32 (val.val[2], vcreate_f32 (__AARCH64_UINT64_C (0))); ++ temp.val[3] = vcombine_f32 (val.val[3], vcreate_f32 (__AARCH64_UINT64_C (0))); ++ __o = __builtin_aarch64_set_qregxiv4sf (__o, (float32x4_t) temp.val[0], 0); ++ __o = __builtin_aarch64_set_qregxiv4sf (__o, (float32x4_t) temp.val[1], 1); ++ __o = __builtin_aarch64_set_qregxiv4sf (__o, (float32x4_t) temp.val[2], 2); ++ __o = __builtin_aarch64_set_qregxiv4sf (__o, (float32x4_t) temp.val[3], 3); ++ __builtin_aarch64_st4v2sf ((__builtin_aarch64_simd_sf *) __a, __o); ++} ++ ++__extension__ extern __inline void ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vst4_p64 (poly64_t * __a, poly64x1x4_t val) ++{ ++ __builtin_aarch64_simd_xi __o; ++ poly64x2x4_t temp; ++ temp.val[0] = vcombine_p64 (val.val[0], vcreate_p64 (__AARCH64_UINT64_C (0))); ++ temp.val[1] = vcombine_p64 (val.val[1], vcreate_p64 (__AARCH64_UINT64_C (0))); ++ temp.val[2] = vcombine_p64 (val.val[2], vcreate_p64 (__AARCH64_UINT64_C (0))); ++ temp.val[3] = vcombine_p64 (val.val[3], vcreate_p64 (__AARCH64_UINT64_C (0))); ++ __o = __builtin_aarch64_set_qregxiv2di_ssps (__o, ++ (poly64x2_t) temp.val[0], 0); ++ __o = __builtin_aarch64_set_qregxiv2di_ssps (__o, ++ (poly64x2_t) temp.val[1], 1); ++ __o = __builtin_aarch64_set_qregxiv2di_ssps (__o, ++ (poly64x2_t) temp.val[2], 2); ++ __o = __builtin_aarch64_set_qregxiv2di_ssps (__o, ++ (poly64x2_t) temp.val[3], 3); ++ __builtin_aarch64_st4di ((__builtin_aarch64_simd_di *) __a, __o); ++} ++ ++__extension__ extern __inline void ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vst4q_s8 (int8_t * __a, int8x16x4_t val) ++{ ++ __builtin_aarch64_simd_xi __o; ++ __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) val.val[0], 0); ++ __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) val.val[1], 1); ++ __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) val.val[2], 2); ++ __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) val.val[3], 3); ++ __builtin_aarch64_st4v16qi ((__builtin_aarch64_simd_qi *) __a, __o); ++} ++ ++__extension__ extern __inline void ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vst4q_p8 (poly8_t * __a, poly8x16x4_t val) ++{ ++ __builtin_aarch64_simd_xi __o; ++ __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) val.val[0], 0); ++ __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) val.val[1], 1); ++ __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) val.val[2], 2); ++ __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) val.val[3], 3); ++ __builtin_aarch64_st4v16qi ((__builtin_aarch64_simd_qi *) __a, __o); ++} ++ ++__extension__ extern __inline void ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vst4q_s16 (int16_t * __a, int16x8x4_t val) ++{ ++ __builtin_aarch64_simd_xi __o; ++ __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) val.val[0], 0); ++ __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) val.val[1], 1); ++ __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) val.val[2], 2); ++ __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) val.val[3], 3); ++ __builtin_aarch64_st4v8hi ((__builtin_aarch64_simd_hi *) __a, __o); ++} ++ ++__extension__ extern __inline void ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vst4q_p16 (poly16_t * __a, poly16x8x4_t val) ++{ ++ __builtin_aarch64_simd_xi __o; ++ __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) val.val[0], 0); ++ __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) val.val[1], 1); ++ __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) val.val[2], 2); ++ __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) val.val[3], 3); ++ __builtin_aarch64_st4v8hi ((__builtin_aarch64_simd_hi *) __a, __o); ++} ++ ++__extension__ extern __inline void ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vst4q_s32 (int32_t * __a, int32x4x4_t val) ++{ ++ __builtin_aarch64_simd_xi __o; ++ __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) val.val[0], 0); ++ __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) val.val[1], 1); ++ __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) val.val[2], 2); ++ __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) val.val[3], 3); ++ __builtin_aarch64_st4v4si ((__builtin_aarch64_simd_si *) __a, __o); ++} ++ ++__extension__ extern __inline void ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vst4q_s64 (int64_t * __a, int64x2x4_t val) ++{ ++ __builtin_aarch64_simd_xi __o; ++ __o = __builtin_aarch64_set_qregxiv2di (__o, (int64x2_t) val.val[0], 0); ++ __o = __builtin_aarch64_set_qregxiv2di (__o, (int64x2_t) val.val[1], 1); ++ __o = __builtin_aarch64_set_qregxiv2di (__o, (int64x2_t) val.val[2], 2); ++ __o = __builtin_aarch64_set_qregxiv2di (__o, (int64x2_t) val.val[3], 3); ++ __builtin_aarch64_st4v2di ((__builtin_aarch64_simd_di *) __a, __o); ++} ++ ++__extension__ extern __inline void ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vst4q_u8 (uint8_t * __a, uint8x16x4_t val) ++{ ++ __builtin_aarch64_simd_xi __o; ++ __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) val.val[0], 0); ++ __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) val.val[1], 1); ++ __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) val.val[2], 2); ++ __o = __builtin_aarch64_set_qregxiv16qi (__o, (int8x16_t) val.val[3], 3); ++ __builtin_aarch64_st4v16qi ((__builtin_aarch64_simd_qi *) __a, __o); ++} ++ ++__extension__ extern __inline void ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vst4q_u16 (uint16_t * __a, uint16x8x4_t val) ++{ ++ __builtin_aarch64_simd_xi __o; ++ __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) val.val[0], 0); ++ __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) val.val[1], 1); ++ __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) val.val[2], 2); ++ __o = __builtin_aarch64_set_qregxiv8hi (__o, (int16x8_t) val.val[3], 3); ++ __builtin_aarch64_st4v8hi ((__builtin_aarch64_simd_hi *) __a, __o); ++} ++ ++__extension__ extern __inline void ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vst4q_u32 (uint32_t * __a, uint32x4x4_t val) ++{ ++ __builtin_aarch64_simd_xi __o; ++ __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) val.val[0], 0); ++ __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) val.val[1], 1); ++ __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) val.val[2], 2); ++ __o = __builtin_aarch64_set_qregxiv4si (__o, (int32x4_t) val.val[3], 3); ++ __builtin_aarch64_st4v4si ((__builtin_aarch64_simd_si *) __a, __o); ++} ++ ++__extension__ extern __inline void ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vst4q_u64 (uint64_t * __a, uint64x2x4_t val) ++{ ++ __builtin_aarch64_simd_xi __o; ++ __o = __builtin_aarch64_set_qregxiv2di (__o, (int64x2_t) val.val[0], 0); ++ __o = __builtin_aarch64_set_qregxiv2di (__o, (int64x2_t) val.val[1], 1); ++ __o = __builtin_aarch64_set_qregxiv2di (__o, (int64x2_t) val.val[2], 2); ++ __o = __builtin_aarch64_set_qregxiv2di (__o, (int64x2_t) val.val[3], 3); ++ __builtin_aarch64_st4v2di ((__builtin_aarch64_simd_di *) __a, __o); ++} ++ ++__extension__ extern __inline void ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vst4q_f16 (float16_t * __a, float16x8x4_t val) ++{ ++ __builtin_aarch64_simd_xi __o; ++ __o = __builtin_aarch64_set_qregxiv8hf (__o, (float16x8_t) val.val[0], 0); ++ __o = __builtin_aarch64_set_qregxiv8hf (__o, (float16x8_t) val.val[1], 1); ++ __o = __builtin_aarch64_set_qregxiv8hf (__o, (float16x8_t) val.val[2], 2); ++ __o = __builtin_aarch64_set_qregxiv8hf (__o, (float16x8_t) val.val[3], 3); ++ __builtin_aarch64_st4v8hf ((__builtin_aarch64_simd_hf *) __a, __o); ++} ++ ++__extension__ extern __inline void ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vst4q_f32 (float32_t * __a, float32x4x4_t val) ++{ ++ __builtin_aarch64_simd_xi __o; ++ __o = __builtin_aarch64_set_qregxiv4sf (__o, (float32x4_t) val.val[0], 0); ++ __o = __builtin_aarch64_set_qregxiv4sf (__o, (float32x4_t) val.val[1], 1); ++ __o = __builtin_aarch64_set_qregxiv4sf (__o, (float32x4_t) val.val[2], 2); ++ __o = __builtin_aarch64_set_qregxiv4sf (__o, (float32x4_t) val.val[3], 3); ++ __builtin_aarch64_st4v4sf ((__builtin_aarch64_simd_sf *) __a, __o); ++} ++ ++__extension__ extern __inline void ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vst4q_f64 (float64_t * __a, float64x2x4_t val) ++{ ++ __builtin_aarch64_simd_xi __o; ++ __o = __builtin_aarch64_set_qregxiv2df (__o, (float64x2_t) val.val[0], 0); ++ __o = __builtin_aarch64_set_qregxiv2df (__o, (float64x2_t) val.val[1], 1); ++ __o = __builtin_aarch64_set_qregxiv2df (__o, (float64x2_t) val.val[2], 2); ++ __o = __builtin_aarch64_set_qregxiv2df (__o, (float64x2_t) val.val[3], 3); ++ __builtin_aarch64_st4v2df ((__builtin_aarch64_simd_df *) __a, __o); ++} ++ ++__extension__ extern __inline void ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vst4q_p64 (poly64_t * __a, poly64x2x4_t val) ++{ ++ __builtin_aarch64_simd_xi __o; ++ __o = __builtin_aarch64_set_qregxiv2di_ssps (__o, ++ (poly64x2_t) val.val[0], 0); ++ __o = __builtin_aarch64_set_qregxiv2di_ssps (__o, ++ (poly64x2_t) val.val[1], 1); ++ __o = __builtin_aarch64_set_qregxiv2di_ssps (__o, ++ (poly64x2_t) val.val[2], 2); ++ __o = __builtin_aarch64_set_qregxiv2di_ssps (__o, ++ (poly64x2_t) val.val[3], 3); ++ __builtin_aarch64_st4v2di ((__builtin_aarch64_simd_di *) __a, __o); ++} ++ ++__extension__ extern __inline void ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vstrq_p128 (poly128_t * __ptr, poly128_t __val) ++{ ++ *__ptr = __val; ++} ++ ++/* vsub */ ++ ++__extension__ extern __inline int64_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vsubd_s64 (int64_t __a, int64_t __b) ++{ ++ return __a - __b; ++} ++ ++__extension__ extern __inline uint64_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vsubd_u64 (uint64_t __a, uint64_t __b) ++{ ++ return __a - __b; ++} ++ ++/* vtbx1 */ ++ ++__extension__ extern __inline int8x8_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vtbx1_s8 (int8x8_t __r, int8x8_t __tab, int8x8_t __idx) ++{ ++ uint8x8_t __mask = vclt_u8 (vreinterpret_u8_s8 (__idx), ++ vmov_n_u8 (8)); ++ int8x8_t __tbl = vtbl1_s8 (__tab, __idx); ++ ++ return vbsl_s8 (__mask, __tbl, __r); ++} ++ ++__extension__ extern __inline uint8x8_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vtbx1_u8 (uint8x8_t __r, uint8x8_t __tab, uint8x8_t __idx) ++{ ++ uint8x8_t __mask = vclt_u8 (__idx, vmov_n_u8 (8)); ++ uint8x8_t __tbl = vtbl1_u8 (__tab, __idx); ++ ++ return vbsl_u8 (__mask, __tbl, __r); ++} ++ ++__extension__ extern __inline poly8x8_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vtbx1_p8 (poly8x8_t __r, poly8x8_t __tab, uint8x8_t __idx) ++{ ++ uint8x8_t __mask = vclt_u8 (__idx, vmov_n_u8 (8)); ++ poly8x8_t __tbl = vtbl1_p8 (__tab, __idx); ++ ++ return vbsl_p8 (__mask, __tbl, __r); ++} ++ ++/* vtbx3 */ ++ ++__extension__ extern __inline int8x8_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vtbx3_s8 (int8x8_t __r, int8x8x3_t __tab, int8x8_t __idx) ++{ ++ uint8x8_t __mask = vclt_u8 (vreinterpret_u8_s8 (__idx), ++ vmov_n_u8 (24)); ++ int8x8_t __tbl = vtbl3_s8 (__tab, __idx); ++ ++ return vbsl_s8 (__mask, __tbl, __r); ++} ++ ++__extension__ extern __inline uint8x8_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vtbx3_u8 (uint8x8_t __r, uint8x8x3_t __tab, uint8x8_t __idx) ++{ ++ uint8x8_t __mask = vclt_u8 (__idx, vmov_n_u8 (24)); ++ uint8x8_t __tbl = vtbl3_u8 (__tab, __idx); ++ ++ return vbsl_u8 (__mask, __tbl, __r); ++} ++ ++__extension__ extern __inline poly8x8_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vtbx3_p8 (poly8x8_t __r, poly8x8x3_t __tab, uint8x8_t __idx) ++{ ++ uint8x8_t __mask = vclt_u8 (__idx, vmov_n_u8 (24)); ++ poly8x8_t __tbl = vtbl3_p8 (__tab, __idx); ++ ++ return vbsl_p8 (__mask, __tbl, __r); ++} ++ ++/* vtbx4 */ ++ ++__extension__ extern __inline int8x8_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vtbx4_s8 (int8x8_t __r, int8x8x4_t __tab, int8x8_t __idx) ++{ ++ int8x8_t result; ++ int8x16x2_t temp; ++ __builtin_aarch64_simd_oi __o; ++ temp.val[0] = vcombine_s8 (__tab.val[0], __tab.val[1]); ++ temp.val[1] = vcombine_s8 (__tab.val[2], __tab.val[3]); ++ __o = __builtin_aarch64_set_qregoiv16qi (__o, ++ (int8x16_t) temp.val[0], 0); ++ __o = __builtin_aarch64_set_qregoiv16qi (__o, ++ (int8x16_t) temp.val[1], 1); ++ result = __builtin_aarch64_tbx4v8qi (__r, __o, __idx); ++ return result; ++} ++ ++__extension__ extern __inline uint8x8_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vtbx4_u8 (uint8x8_t __r, uint8x8x4_t __tab, uint8x8_t __idx) ++{ ++ uint8x8_t result; ++ uint8x16x2_t temp; ++ __builtin_aarch64_simd_oi __o; ++ temp.val[0] = vcombine_u8 (__tab.val[0], __tab.val[1]); ++ temp.val[1] = vcombine_u8 (__tab.val[2], __tab.val[3]); ++ __o = __builtin_aarch64_set_qregoiv16qi (__o, ++ (int8x16_t) temp.val[0], 0); ++ __o = __builtin_aarch64_set_qregoiv16qi (__o, ++ (int8x16_t) temp.val[1], 1); ++ result = (uint8x8_t)__builtin_aarch64_tbx4v8qi ((int8x8_t)__r, __o, ++ (int8x8_t)__idx); ++ return result; ++} ++ ++__extension__ extern __inline poly8x8_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vtbx4_p8 (poly8x8_t __r, poly8x8x4_t __tab, uint8x8_t __idx) ++{ ++ poly8x8_t result; ++ poly8x16x2_t temp; ++ __builtin_aarch64_simd_oi __o; ++ temp.val[0] = vcombine_p8 (__tab.val[0], __tab.val[1]); ++ temp.val[1] = vcombine_p8 (__tab.val[2], __tab.val[3]); ++ __o = __builtin_aarch64_set_qregoiv16qi (__o, ++ (int8x16_t) temp.val[0], 0); ++ __o = __builtin_aarch64_set_qregoiv16qi (__o, ++ (int8x16_t) temp.val[1], 1); ++ result = (poly8x8_t)__builtin_aarch64_tbx4v8qi ((int8x8_t)__r, __o, ++ (int8x8_t)__idx); ++ return result; ++} ++ ++/* vtrn */ ++ ++__extension__ extern __inline float16x4_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vtrn1_f16 (float16x4_t __a, float16x4_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint16x4_t) {5, 1, 7, 3}); ++#else ++ return __builtin_shuffle (__a, __b, (uint16x4_t) {0, 4, 2, 6}); ++#endif ++} ++ ++__extension__ extern __inline float32x2_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vtrn1_f32 (float32x2_t __a, float32x2_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint32x2_t) {3, 1}); ++#else ++ return __builtin_shuffle (__a, __b, (uint32x2_t) {0, 2}); ++#endif ++} ++ ++__extension__ extern __inline poly8x8_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vtrn1_p8 (poly8x8_t __a, poly8x8_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint8x8_t) {9, 1, 11, 3, 13, 5, 15, 7}); ++#else ++ return __builtin_shuffle (__a, __b, (uint8x8_t) {0, 8, 2, 10, 4, 12, 6, 14}); ++#endif ++} ++ ++__extension__ extern __inline poly16x4_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vtrn1_p16 (poly16x4_t __a, poly16x4_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint16x4_t) {5, 1, 7, 3}); ++#else ++ return __builtin_shuffle (__a, __b, (uint16x4_t) {0, 4, 2, 6}); ++#endif ++} ++ ++__extension__ extern __inline int8x8_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vtrn1_s8 (int8x8_t __a, int8x8_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint8x8_t) {9, 1, 11, 3, 13, 5, 15, 7}); ++#else ++ return __builtin_shuffle (__a, __b, (uint8x8_t) {0, 8, 2, 10, 4, 12, 6, 14}); ++#endif ++} ++ ++__extension__ extern __inline int16x4_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vtrn1_s16 (int16x4_t __a, int16x4_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint16x4_t) {5, 1, 7, 3}); ++#else ++ return __builtin_shuffle (__a, __b, (uint16x4_t) {0, 4, 2, 6}); ++#endif ++} ++ ++__extension__ extern __inline int32x2_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vtrn1_s32 (int32x2_t __a, int32x2_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint32x2_t) {3, 1}); ++#else ++ return __builtin_shuffle (__a, __b, (uint32x2_t) {0, 2}); ++#endif ++} ++ ++__extension__ extern __inline uint8x8_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vtrn1_u8 (uint8x8_t __a, uint8x8_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint8x8_t) {9, 1, 11, 3, 13, 5, 15, 7}); ++#else ++ return __builtin_shuffle (__a, __b, (uint8x8_t) {0, 8, 2, 10, 4, 12, 6, 14}); ++#endif ++} ++ ++__extension__ extern __inline uint16x4_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vtrn1_u16 (uint16x4_t __a, uint16x4_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint16x4_t) {5, 1, 7, 3}); ++#else ++ return __builtin_shuffle (__a, __b, (uint16x4_t) {0, 4, 2, 6}); ++#endif ++} ++ ++__extension__ extern __inline uint32x2_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vtrn1_u32 (uint32x2_t __a, uint32x2_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint32x2_t) {3, 1}); ++#else ++ return __builtin_shuffle (__a, __b, (uint32x2_t) {0, 2}); ++#endif ++} ++ ++__extension__ extern __inline float16x8_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vtrn1q_f16 (float16x8_t __a, float16x8_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint16x8_t) {9, 1, 11, 3, 13, 5, 15, 7}); ++#else ++ return __builtin_shuffle (__a, __b, (uint16x8_t) {0, 8, 2, 10, 4, 12, 6, 14}); ++#endif ++} ++ ++__extension__ extern __inline float32x4_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vtrn1q_f32 (float32x4_t __a, float32x4_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint32x4_t) {5, 1, 7, 3}); ++#else ++ return __builtin_shuffle (__a, __b, (uint32x4_t) {0, 4, 2, 6}); ++#endif ++} ++ ++__extension__ extern __inline float64x2_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vtrn1q_f64 (float64x2_t __a, float64x2_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint64x2_t) {3, 1}); ++#else ++ return __builtin_shuffle (__a, __b, (uint64x2_t) {0, 2}); ++#endif ++} ++ ++__extension__ extern __inline poly8x16_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vtrn1q_p8 (poly8x16_t __a, poly8x16_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, ++ (uint8x16_t) {17, 1, 19, 3, 21, 5, 23, 7, 25, 9, 27, 11, 29, 13, 31, 15}); ++#else ++ return __builtin_shuffle (__a, __b, ++ (uint8x16_t) {0, 16, 2, 18, 4, 20, 6, 22, 8, 24, 10, 26, 12, 28, 14, 30}); ++#endif ++} ++ ++__extension__ extern __inline poly16x8_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vtrn1q_p16 (poly16x8_t __a, poly16x8_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint16x8_t) {9, 1, 11, 3, 13, 5, 15, 7}); ++#else ++ return __builtin_shuffle (__a, __b, (uint16x8_t) {0, 8, 2, 10, 4, 12, 6, 14}); ++#endif ++} ++ ++__extension__ extern __inline int8x16_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vtrn1q_s8 (int8x16_t __a, int8x16_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, ++ (uint8x16_t) {17, 1, 19, 3, 21, 5, 23, 7, 25, 9, 27, 11, 29, 13, 31, 15}); ++#else ++ return __builtin_shuffle (__a, __b, ++ (uint8x16_t) {0, 16, 2, 18, 4, 20, 6, 22, 8, 24, 10, 26, 12, 28, 14, 30}); ++#endif ++} ++ ++__extension__ extern __inline int16x8_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vtrn1q_s16 (int16x8_t __a, int16x8_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint16x8_t) {9, 1, 11, 3, 13, 5, 15, 7}); ++#else ++ return __builtin_shuffle (__a, __b, (uint16x8_t) {0, 8, 2, 10, 4, 12, 6, 14}); ++#endif ++} ++ ++__extension__ extern __inline int32x4_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vtrn1q_s32 (int32x4_t __a, int32x4_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint32x4_t) {5, 1, 7, 3}); ++#else ++ return __builtin_shuffle (__a, __b, (uint32x4_t) {0, 4, 2, 6}); ++#endif ++} ++ ++__extension__ extern __inline int64x2_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vtrn1q_s64 (int64x2_t __a, int64x2_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint64x2_t) {3, 1}); ++#else ++ return __builtin_shuffle (__a, __b, (uint64x2_t) {0, 2}); ++#endif ++} ++ ++__extension__ extern __inline uint8x16_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vtrn1q_u8 (uint8x16_t __a, uint8x16_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, ++ (uint8x16_t) {17, 1, 19, 3, 21, 5, 23, 7, 25, 9, 27, 11, 29, 13, 31, 15}); ++#else ++ return __builtin_shuffle (__a, __b, ++ (uint8x16_t) {0, 16, 2, 18, 4, 20, 6, 22, 8, 24, 10, 26, 12, 28, 14, 30}); ++#endif ++} ++ ++__extension__ extern __inline uint16x8_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vtrn1q_u16 (uint16x8_t __a, uint16x8_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint16x8_t) {9, 1, 11, 3, 13, 5, 15, 7}); ++#else ++ return __builtin_shuffle (__a, __b, (uint16x8_t) {0, 8, 2, 10, 4, 12, 6, 14}); ++#endif ++} ++ ++__extension__ extern __inline uint32x4_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vtrn1q_u32 (uint32x4_t __a, uint32x4_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint32x4_t) {5, 1, 7, 3}); ++#else ++ return __builtin_shuffle (__a, __b, (uint32x4_t) {0, 4, 2, 6}); ++#endif ++} ++ ++__extension__ extern __inline poly64x2_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vtrn1q_p64 (poly64x2_t __a, poly64x2_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (poly64x2_t) {3, 1}); ++#else ++ return __builtin_shuffle (__a, __b, (poly64x2_t) {0, 2}); ++#endif ++} ++ ++__extension__ extern __inline uint64x2_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vtrn1q_u64 (uint64x2_t __a, uint64x2_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint64x2_t) {3, 1}); ++#else ++ return __builtin_shuffle (__a, __b, (uint64x2_t) {0, 2}); ++#endif ++} ++ ++__extension__ extern __inline float16x4_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vtrn2_f16 (float16x4_t __a, float16x4_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint16x4_t) {4, 0, 6, 2}); ++#else ++ return __builtin_shuffle (__a, __b, (uint16x4_t) {1, 5, 3, 7}); ++#endif ++} ++ ++__extension__ extern __inline float32x2_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vtrn2_f32 (float32x2_t __a, float32x2_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint32x2_t) {2, 0}); ++#else ++ return __builtin_shuffle (__a, __b, (uint32x2_t) {1, 3}); ++#endif ++} ++ ++__extension__ extern __inline poly8x8_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vtrn2_p8 (poly8x8_t __a, poly8x8_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint8x8_t) {8, 0, 10, 2, 12, 4, 14, 6}); ++#else ++ return __builtin_shuffle (__a, __b, (uint8x8_t) {1, 9, 3, 11, 5, 13, 7, 15}); ++#endif ++} ++ ++__extension__ extern __inline poly16x4_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vtrn2_p16 (poly16x4_t __a, poly16x4_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint16x4_t) {4, 0, 6, 2}); ++#else ++ return __builtin_shuffle (__a, __b, (uint16x4_t) {1, 5, 3, 7}); ++#endif ++} ++ ++__extension__ extern __inline int8x8_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vtrn2_s8 (int8x8_t __a, int8x8_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint8x8_t) {8, 0, 10, 2, 12, 4, 14, 6}); ++#else ++ return __builtin_shuffle (__a, __b, (uint8x8_t) {1, 9, 3, 11, 5, 13, 7, 15}); ++#endif ++} ++ ++__extension__ extern __inline int16x4_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vtrn2_s16 (int16x4_t __a, int16x4_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint16x4_t) {4, 0, 6, 2}); ++#else ++ return __builtin_shuffle (__a, __b, (uint16x4_t) {1, 5, 3, 7}); ++#endif ++} ++ ++__extension__ extern __inline int32x2_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vtrn2_s32 (int32x2_t __a, int32x2_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint32x2_t) {2, 0}); ++#else ++ return __builtin_shuffle (__a, __b, (uint32x2_t) {1, 3}); ++#endif ++} ++ ++__extension__ extern __inline uint8x8_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vtrn2_u8 (uint8x8_t __a, uint8x8_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint8x8_t) {8, 0, 10, 2, 12, 4, 14, 6}); ++#else ++ return __builtin_shuffle (__a, __b, (uint8x8_t) {1, 9, 3, 11, 5, 13, 7, 15}); ++#endif ++} ++ ++__extension__ extern __inline uint16x4_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vtrn2_u16 (uint16x4_t __a, uint16x4_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint16x4_t) {4, 0, 6, 2}); ++#else ++ return __builtin_shuffle (__a, __b, (uint16x4_t) {1, 5, 3, 7}); ++#endif ++} ++ ++__extension__ extern __inline uint32x2_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vtrn2_u32 (uint32x2_t __a, uint32x2_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint32x2_t) {2, 0}); ++#else ++ return __builtin_shuffle (__a, __b, (uint32x2_t) {1, 3}); ++#endif ++} ++ ++__extension__ extern __inline float16x8_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vtrn2q_f16 (float16x8_t __a, float16x8_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint16x8_t) {8, 0, 10, 2, 12, 4, 14, 6}); ++#else ++ return __builtin_shuffle (__a, __b, (uint16x8_t) {1, 9, 3, 11, 5, 13, 7, 15}); ++#endif ++} ++ ++__extension__ extern __inline float32x4_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vtrn2q_f32 (float32x4_t __a, float32x4_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint32x4_t) {4, 0, 6, 2}); ++#else ++ return __builtin_shuffle (__a, __b, (uint32x4_t) {1, 5, 3, 7}); ++#endif ++} ++ ++__extension__ extern __inline float64x2_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vtrn2q_f64 (float64x2_t __a, float64x2_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint64x2_t) {2, 0}); ++#else ++ return __builtin_shuffle (__a, __b, (uint64x2_t) {1, 3}); ++#endif ++} ++ ++__extension__ extern __inline poly8x16_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vtrn2q_p8 (poly8x16_t __a, poly8x16_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, ++ (uint8x16_t) {16, 0, 18, 2, 20, 4, 22, 6, 24, 8, 26, 10, 28, 12, 30, 14}); ++#else ++ return __builtin_shuffle (__a, __b, ++ (uint8x16_t) {1, 17, 3, 19, 5, 21, 7, 23, 9, 25, 11, 27, 13, 29, 15, 31}); ++#endif ++} ++ ++__extension__ extern __inline poly16x8_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vtrn2q_p16 (poly16x8_t __a, poly16x8_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint16x8_t) {8, 0, 10, 2, 12, 4, 14, 6}); ++#else ++ return __builtin_shuffle (__a, __b, (uint16x8_t) {1, 9, 3, 11, 5, 13, 7, 15}); ++#endif ++} ++ ++__extension__ extern __inline int8x16_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vtrn2q_s8 (int8x16_t __a, int8x16_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, ++ (uint8x16_t) {16, 0, 18, 2, 20, 4, 22, 6, 24, 8, 26, 10, 28, 12, 30, 14}); ++#else ++ return __builtin_shuffle (__a, __b, ++ (uint8x16_t) {1, 17, 3, 19, 5, 21, 7, 23, 9, 25, 11, 27, 13, 29, 15, 31}); ++#endif ++} ++ ++__extension__ extern __inline int16x8_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vtrn2q_s16 (int16x8_t __a, int16x8_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint16x8_t) {8, 0, 10, 2, 12, 4, 14, 6}); ++#else ++ return __builtin_shuffle (__a, __b, (uint16x8_t) {1, 9, 3, 11, 5, 13, 7, 15}); ++#endif ++} ++ ++__extension__ extern __inline int32x4_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vtrn2q_s32 (int32x4_t __a, int32x4_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint32x4_t) {4, 0, 6, 2}); ++#else ++ return __builtin_shuffle (__a, __b, (uint32x4_t) {1, 5, 3, 7}); ++#endif ++} ++ ++__extension__ extern __inline int64x2_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vtrn2q_s64 (int64x2_t __a, int64x2_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint64x2_t) {2, 0}); ++#else ++ return __builtin_shuffle (__a, __b, (uint64x2_t) {1, 3}); ++#endif ++} ++ ++__extension__ extern __inline uint8x16_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vtrn2q_u8 (uint8x16_t __a, uint8x16_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, ++ (uint8x16_t) {16, 0, 18, 2, 20, 4, 22, 6, 24, 8, 26, 10, 28, 12, 30, 14}); ++#else ++ return __builtin_shuffle (__a, __b, ++ (uint8x16_t) {1, 17, 3, 19, 5, 21, 7, 23, 9, 25, 11, 27, 13, 29, 15, 31}); ++#endif ++} ++ ++__extension__ extern __inline uint16x8_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vtrn2q_u16 (uint16x8_t __a, uint16x8_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint16x8_t) {8, 0, 10, 2, 12, 4, 14, 6}); ++#else ++ return __builtin_shuffle (__a, __b, (uint16x8_t) {1, 9, 3, 11, 5, 13, 7, 15}); ++#endif ++} ++ ++__extension__ extern __inline uint32x4_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vtrn2q_u32 (uint32x4_t __a, uint32x4_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint32x4_t) {4, 0, 6, 2}); ++#else ++ return __builtin_shuffle (__a, __b, (uint32x4_t) {1, 5, 3, 7}); ++#endif ++} ++ ++__extension__ extern __inline uint64x2_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vtrn2q_u64 (uint64x2_t __a, uint64x2_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint64x2_t) {2, 0}); ++#else ++ return __builtin_shuffle (__a, __b, (uint64x2_t) {1, 3}); ++#endif ++} ++ ++ ++__extension__ extern __inline poly64x2_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vtrn2q_p64 (poly64x2_t __a, poly64x2_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (poly64x2_t) {2, 0}); ++#else ++ return __builtin_shuffle (__a, __b, (poly64x2_t) {1, 3}); ++#endif ++} ++ ++__extension__ extern __inline float16x4x2_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vtrn_f16 (float16x4_t __a, float16x4_t __b) ++{ ++ return (float16x4x2_t) {vtrn1_f16 (__a, __b), vtrn2_f16 (__a, __b)}; ++} ++ ++__extension__ extern __inline float32x2x2_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vtrn_f32 (float32x2_t a, float32x2_t b) ++{ ++ return (float32x2x2_t) {vtrn1_f32 (a, b), vtrn2_f32 (a, b)}; ++} ++ ++__extension__ extern __inline poly8x8x2_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vtrn_p8 (poly8x8_t a, poly8x8_t b) ++{ ++ return (poly8x8x2_t) {vtrn1_p8 (a, b), vtrn2_p8 (a, b)}; ++} ++ ++__extension__ extern __inline poly16x4x2_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vtrn_p16 (poly16x4_t a, poly16x4_t b) ++{ ++ return (poly16x4x2_t) {vtrn1_p16 (a, b), vtrn2_p16 (a, b)}; + } + +-__extension__ extern __inline uint8x8_t ++__extension__ extern __inline int8x8x2_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vtbx3_u8 (uint8x8_t __r, uint8x8x3_t __tab, uint8x8_t __idx) ++vtrn_s8 (int8x8_t a, int8x8_t b) + { +- uint8x8_t __mask = vclt_u8 (__idx, vmov_n_u8 (24)); +- uint8x8_t __tbl = vtbl3_u8 (__tab, __idx); +- +- return vbsl_u8 (__mask, __tbl, __r); ++ return (int8x8x2_t) {vtrn1_s8 (a, b), vtrn2_s8 (a, b)}; + } + +-__extension__ extern __inline poly8x8_t ++__extension__ extern __inline int16x4x2_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vtbx3_p8 (poly8x8_t __r, poly8x8x3_t __tab, uint8x8_t __idx) ++vtrn_s16 (int16x4_t a, int16x4_t b) + { +- uint8x8_t __mask = vclt_u8 (__idx, vmov_n_u8 (24)); +- poly8x8_t __tbl = vtbl3_p8 (__tab, __idx); +- +- return vbsl_p8 (__mask, __tbl, __r); ++ return (int16x4x2_t) {vtrn1_s16 (a, b), vtrn2_s16 (a, b)}; + } + +-/* vtbx4 */ +- +-__extension__ extern __inline int8x8_t ++__extension__ extern __inline int32x2x2_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vtbx4_s8 (int8x8_t __r, int8x8x4_t __tab, int8x8_t __idx) ++vtrn_s32 (int32x2_t a, int32x2_t b) + { +- int8x8_t result; +- int8x16x2_t temp; +- __builtin_aarch64_simd_oi __o; +- temp.val[0] = vcombine_s8 (__tab.val[0], __tab.val[1]); +- temp.val[1] = vcombine_s8 (__tab.val[2], __tab.val[3]); +- __o = __builtin_aarch64_set_qregoiv16qi (__o, +- (int8x16_t) temp.val[0], 0); +- __o = __builtin_aarch64_set_qregoiv16qi (__o, +- (int8x16_t) temp.val[1], 1); +- result = __builtin_aarch64_tbx4v8qi (__r, __o, __idx); +- return result; ++ return (int32x2x2_t) {vtrn1_s32 (a, b), vtrn2_s32 (a, b)}; + } + +-__extension__ extern __inline uint8x8_t ++__extension__ extern __inline uint8x8x2_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vtbx4_u8 (uint8x8_t __r, uint8x8x4_t __tab, uint8x8_t __idx) ++vtrn_u8 (uint8x8_t a, uint8x8_t b) + { +- uint8x8_t result; +- uint8x16x2_t temp; +- __builtin_aarch64_simd_oi __o; +- temp.val[0] = vcombine_u8 (__tab.val[0], __tab.val[1]); +- temp.val[1] = vcombine_u8 (__tab.val[2], __tab.val[3]); +- __o = __builtin_aarch64_set_qregoiv16qi (__o, +- (int8x16_t) temp.val[0], 0); +- __o = __builtin_aarch64_set_qregoiv16qi (__o, +- (int8x16_t) temp.val[1], 1); +- result = (uint8x8_t)__builtin_aarch64_tbx4v8qi ((int8x8_t)__r, __o, +- (int8x8_t)__idx); +- return result; ++ return (uint8x8x2_t) {vtrn1_u8 (a, b), vtrn2_u8 (a, b)}; + } + +-__extension__ extern __inline poly8x8_t ++__extension__ extern __inline uint16x4x2_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vtbx4_p8 (poly8x8_t __r, poly8x8x4_t __tab, uint8x8_t __idx) ++vtrn_u16 (uint16x4_t a, uint16x4_t b) + { +- poly8x8_t result; +- poly8x16x2_t temp; +- __builtin_aarch64_simd_oi __o; +- temp.val[0] = vcombine_p8 (__tab.val[0], __tab.val[1]); +- temp.val[1] = vcombine_p8 (__tab.val[2], __tab.val[3]); +- __o = __builtin_aarch64_set_qregoiv16qi (__o, +- (int8x16_t) temp.val[0], 0); +- __o = __builtin_aarch64_set_qregoiv16qi (__o, +- (int8x16_t) temp.val[1], 1); +- result = (poly8x8_t)__builtin_aarch64_tbx4v8qi ((int8x8_t)__r, __o, +- (int8x8_t)__idx); +- return result; ++ return (uint16x4x2_t) {vtrn1_u16 (a, b), vtrn2_u16 (a, b)}; + } + +-/* vtrn */ +- +-__extension__ extern __inline float16x4_t ++__extension__ extern __inline uint32x2x2_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vtrn1_f16 (float16x4_t __a, float16x4_t __b) ++vtrn_u32 (uint32x2_t a, uint32x2_t b) + { +-#ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, (uint16x4_t) {5, 1, 7, 3}); +-#else +- return __builtin_shuffle (__a, __b, (uint16x4_t) {0, 4, 2, 6}); +-#endif ++ return (uint32x2x2_t) {vtrn1_u32 (a, b), vtrn2_u32 (a, b)}; + } + +-__extension__ extern __inline float32x2_t ++__extension__ extern __inline float16x8x2_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vtrn1_f32 (float32x2_t __a, float32x2_t __b) ++vtrnq_f16 (float16x8_t __a, float16x8_t __b) + { +-#ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, (uint32x2_t) {3, 1}); +-#else +- return __builtin_shuffle (__a, __b, (uint32x2_t) {0, 2}); +-#endif ++ return (float16x8x2_t) {vtrn1q_f16 (__a, __b), vtrn2q_f16 (__a, __b)}; + } + +-__extension__ extern __inline poly8x8_t ++__extension__ extern __inline float32x4x2_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vtrn1_p8 (poly8x8_t __a, poly8x8_t __b) ++vtrnq_f32 (float32x4_t a, float32x4_t b) + { +-#ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, (uint8x8_t) {9, 1, 11, 3, 13, 5, 15, 7}); +-#else +- return __builtin_shuffle (__a, __b, (uint8x8_t) {0, 8, 2, 10, 4, 12, 6, 14}); +-#endif ++ return (float32x4x2_t) {vtrn1q_f32 (a, b), vtrn2q_f32 (a, b)}; + } + +-__extension__ extern __inline poly16x4_t ++__extension__ extern __inline poly8x16x2_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vtrn1_p16 (poly16x4_t __a, poly16x4_t __b) ++vtrnq_p8 (poly8x16_t a, poly8x16_t b) + { +-#ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, (uint16x4_t) {5, 1, 7, 3}); +-#else +- return __builtin_shuffle (__a, __b, (uint16x4_t) {0, 4, 2, 6}); +-#endif ++ return (poly8x16x2_t) {vtrn1q_p8 (a, b), vtrn2q_p8 (a, b)}; + } + +-__extension__ extern __inline int8x8_t ++__extension__ extern __inline poly16x8x2_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vtrn1_s8 (int8x8_t __a, int8x8_t __b) ++vtrnq_p16 (poly16x8_t a, poly16x8_t b) + { +-#ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, (uint8x8_t) {9, 1, 11, 3, 13, 5, 15, 7}); +-#else +- return __builtin_shuffle (__a, __b, (uint8x8_t) {0, 8, 2, 10, 4, 12, 6, 14}); +-#endif ++ return (poly16x8x2_t) {vtrn1q_p16 (a, b), vtrn2q_p16 (a, b)}; + } + +-__extension__ extern __inline int16x4_t ++__extension__ extern __inline int8x16x2_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vtrn1_s16 (int16x4_t __a, int16x4_t __b) ++vtrnq_s8 (int8x16_t a, int8x16_t b) + { +-#ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, (uint16x4_t) {5, 1, 7, 3}); +-#else +- return __builtin_shuffle (__a, __b, (uint16x4_t) {0, 4, 2, 6}); +-#endif ++ return (int8x16x2_t) {vtrn1q_s8 (a, b), vtrn2q_s8 (a, b)}; + } + +-__extension__ extern __inline int32x2_t ++__extension__ extern __inline int16x8x2_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vtrn1_s32 (int32x2_t __a, int32x2_t __b) ++vtrnq_s16 (int16x8_t a, int16x8_t b) + { +-#ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, (uint32x2_t) {3, 1}); +-#else +- return __builtin_shuffle (__a, __b, (uint32x2_t) {0, 2}); +-#endif ++ return (int16x8x2_t) {vtrn1q_s16 (a, b), vtrn2q_s16 (a, b)}; + } + +-__extension__ extern __inline uint8x8_t ++__extension__ extern __inline int32x4x2_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vtrn1_u8 (uint8x8_t __a, uint8x8_t __b) ++vtrnq_s32 (int32x4_t a, int32x4_t b) + { +-#ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, (uint8x8_t) {9, 1, 11, 3, 13, 5, 15, 7}); +-#else +- return __builtin_shuffle (__a, __b, (uint8x8_t) {0, 8, 2, 10, 4, 12, 6, 14}); +-#endif ++ return (int32x4x2_t) {vtrn1q_s32 (a, b), vtrn2q_s32 (a, b)}; + } + +-__extension__ extern __inline uint16x4_t ++__extension__ extern __inline uint8x16x2_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vtrn1_u16 (uint16x4_t __a, uint16x4_t __b) ++vtrnq_u8 (uint8x16_t a, uint8x16_t b) + { +-#ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, (uint16x4_t) {5, 1, 7, 3}); +-#else +- return __builtin_shuffle (__a, __b, (uint16x4_t) {0, 4, 2, 6}); +-#endif ++ return (uint8x16x2_t) {vtrn1q_u8 (a, b), vtrn2q_u8 (a, b)}; + } + +-__extension__ extern __inline uint32x2_t ++__extension__ extern __inline uint16x8x2_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vtrn1_u32 (uint32x2_t __a, uint32x2_t __b) ++vtrnq_u16 (uint16x8_t a, uint16x8_t b) + { +-#ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, (uint32x2_t) {3, 1}); +-#else +- return __builtin_shuffle (__a, __b, (uint32x2_t) {0, 2}); +-#endif ++ return (uint16x8x2_t) {vtrn1q_u16 (a, b), vtrn2q_u16 (a, b)}; + } + +-__extension__ extern __inline float16x8_t ++__extension__ extern __inline uint32x4x2_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vtrn1q_f16 (float16x8_t __a, float16x8_t __b) ++vtrnq_u32 (uint32x4_t a, uint32x4_t b) + { +-#ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, (uint16x8_t) {9, 1, 11, 3, 13, 5, 15, 7}); +-#else +- return __builtin_shuffle (__a, __b, (uint16x8_t) {0, 8, 2, 10, 4, 12, 6, 14}); +-#endif ++ return (uint32x4x2_t) {vtrn1q_u32 (a, b), vtrn2q_u32 (a, b)}; + } + +-__extension__ extern __inline float32x4_t ++/* vtst */ ++ ++__extension__ extern __inline uint8x8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vtrn1q_f32 (float32x4_t __a, float32x4_t __b) ++vtst_s8 (int8x8_t __a, int8x8_t __b) + { +-#ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, (uint32x4_t) {5, 1, 7, 3}); +-#else +- return __builtin_shuffle (__a, __b, (uint32x4_t) {0, 4, 2, 6}); +-#endif ++ return (uint8x8_t) ((__a & __b) != 0); + } + +-__extension__ extern __inline float64x2_t ++__extension__ extern __inline uint16x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vtrn1q_f64 (float64x2_t __a, float64x2_t __b) ++vtst_s16 (int16x4_t __a, int16x4_t __b) + { +-#ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, (uint64x2_t) {3, 1}); +-#else +- return __builtin_shuffle (__a, __b, (uint64x2_t) {0, 2}); +-#endif ++ return (uint16x4_t) ((__a & __b) != 0); + } + +-__extension__ extern __inline poly8x16_t ++__extension__ extern __inline uint32x2_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vtrn1q_p8 (poly8x16_t __a, poly8x16_t __b) ++vtst_s32 (int32x2_t __a, int32x2_t __b) + { +-#ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, +- (uint8x16_t) {17, 1, 19, 3, 21, 5, 23, 7, 25, 9, 27, 11, 29, 13, 31, 15}); +-#else +- return __builtin_shuffle (__a, __b, +- (uint8x16_t) {0, 16, 2, 18, 4, 20, 6, 22, 8, 24, 10, 26, 12, 28, 14, 30}); +-#endif ++ return (uint32x2_t) ((__a & __b) != 0); + } + +-__extension__ extern __inline poly16x8_t ++__extension__ extern __inline uint64x1_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vtrn1q_p16 (poly16x8_t __a, poly16x8_t __b) ++vtst_s64 (int64x1_t __a, int64x1_t __b) + { +-#ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, (uint16x8_t) {9, 1, 11, 3, 13, 5, 15, 7}); +-#else +- return __builtin_shuffle (__a, __b, (uint16x8_t) {0, 8, 2, 10, 4, 12, 6, 14}); +-#endif ++ return (uint64x1_t) ((__a & __b) != __AARCH64_INT64_C (0)); + } + +-__extension__ extern __inline int8x16_t ++__extension__ extern __inline uint8x8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vtrn1q_s8 (int8x16_t __a, int8x16_t __b) ++vtst_u8 (uint8x8_t __a, uint8x8_t __b) + { +-#ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, +- (uint8x16_t) {17, 1, 19, 3, 21, 5, 23, 7, 25, 9, 27, 11, 29, 13, 31, 15}); +-#else +- return __builtin_shuffle (__a, __b, +- (uint8x16_t) {0, 16, 2, 18, 4, 20, 6, 22, 8, 24, 10, 26, 12, 28, 14, 30}); +-#endif ++ return ((__a & __b) != 0); + } + +-__extension__ extern __inline int16x8_t ++__extension__ extern __inline uint16x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vtrn1q_s16 (int16x8_t __a, int16x8_t __b) ++vtst_u16 (uint16x4_t __a, uint16x4_t __b) + { +-#ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, (uint16x8_t) {9, 1, 11, 3, 13, 5, 15, 7}); +-#else +- return __builtin_shuffle (__a, __b, (uint16x8_t) {0, 8, 2, 10, 4, 12, 6, 14}); +-#endif ++ return ((__a & __b) != 0); + } + +-__extension__ extern __inline int32x4_t ++__extension__ extern __inline uint32x2_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vtrn1q_s32 (int32x4_t __a, int32x4_t __b) ++vtst_u32 (uint32x2_t __a, uint32x2_t __b) + { +-#ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, (uint32x4_t) {5, 1, 7, 3}); +-#else +- return __builtin_shuffle (__a, __b, (uint32x4_t) {0, 4, 2, 6}); +-#endif ++ return ((__a & __b) != 0); + } + +-__extension__ extern __inline int64x2_t ++__extension__ extern __inline uint64x1_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vtrn1q_s64 (int64x2_t __a, int64x2_t __b) ++vtst_u64 (uint64x1_t __a, uint64x1_t __b) + { +-#ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, (uint64x2_t) {3, 1}); +-#else +- return __builtin_shuffle (__a, __b, (uint64x2_t) {0, 2}); +-#endif ++ return ((__a & __b) != __AARCH64_UINT64_C (0)); + } + + __extension__ extern __inline uint8x16_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vtrn1q_u8 (uint8x16_t __a, uint8x16_t __b) ++vtstq_s8 (int8x16_t __a, int8x16_t __b) + { +-#ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, +- (uint8x16_t) {17, 1, 19, 3, 21, 5, 23, 7, 25, 9, 27, 11, 29, 13, 31, 15}); +-#else +- return __builtin_shuffle (__a, __b, +- (uint8x16_t) {0, 16, 2, 18, 4, 20, 6, 22, 8, 24, 10, 26, 12, 28, 14, 30}); +-#endif ++ return (uint8x16_t) ((__a & __b) != 0); + } + + __extension__ extern __inline uint16x8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vtrn1q_u16 (uint16x8_t __a, uint16x8_t __b) ++vtstq_s16 (int16x8_t __a, int16x8_t __b) + { +-#ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, (uint16x8_t) {9, 1, 11, 3, 13, 5, 15, 7}); +-#else +- return __builtin_shuffle (__a, __b, (uint16x8_t) {0, 8, 2, 10, 4, 12, 6, 14}); +-#endif ++ return (uint16x8_t) ((__a & __b) != 0); + } + + __extension__ extern __inline uint32x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vtrn1q_u32 (uint32x4_t __a, uint32x4_t __b) ++vtstq_s32 (int32x4_t __a, int32x4_t __b) + { +-#ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, (uint32x4_t) {5, 1, 7, 3}); +-#else +- return __builtin_shuffle (__a, __b, (uint32x4_t) {0, 4, 2, 6}); +-#endif ++ return (uint32x4_t) ((__a & __b) != 0); + } + + __extension__ extern __inline uint64x2_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vtrn1q_u64 (uint64x2_t __a, uint64x2_t __b) ++vtstq_s64 (int64x2_t __a, int64x2_t __b) + { +-#ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, (uint64x2_t) {3, 1}); +-#else +- return __builtin_shuffle (__a, __b, (uint64x2_t) {0, 2}); +-#endif ++ return (uint64x2_t) ((__a & __b) != __AARCH64_INT64_C (0)); + } + +-__extension__ extern __inline float16x4_t ++__extension__ extern __inline uint8x16_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vtrn2_f16 (float16x4_t __a, float16x4_t __b) ++vtstq_u8 (uint8x16_t __a, uint8x16_t __b) + { +-#ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, (uint16x4_t) {4, 0, 6, 2}); +-#else +- return __builtin_shuffle (__a, __b, (uint16x4_t) {1, 5, 3, 7}); +-#endif ++ return ((__a & __b) != 0); + } + +-__extension__ extern __inline float32x2_t ++__extension__ extern __inline uint16x8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vtrn2_f32 (float32x2_t __a, float32x2_t __b) ++vtstq_u16 (uint16x8_t __a, uint16x8_t __b) + { +-#ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, (uint32x2_t) {2, 0}); +-#else +- return __builtin_shuffle (__a, __b, (uint32x2_t) {1, 3}); +-#endif ++ return ((__a & __b) != 0); + } + +-__extension__ extern __inline poly8x8_t ++__extension__ extern __inline uint32x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vtrn2_p8 (poly8x8_t __a, poly8x8_t __b) ++vtstq_u32 (uint32x4_t __a, uint32x4_t __b) + { +-#ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, (uint8x8_t) {8, 0, 10, 2, 12, 4, 14, 6}); +-#else +- return __builtin_shuffle (__a, __b, (uint8x8_t) {1, 9, 3, 11, 5, 13, 7, 15}); +-#endif ++ return ((__a & __b) != 0); + } + +-__extension__ extern __inline poly16x4_t ++__extension__ extern __inline uint64x2_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vtrn2_p16 (poly16x4_t __a, poly16x4_t __b) ++vtstq_u64 (uint64x2_t __a, uint64x2_t __b) + { +-#ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, (uint16x4_t) {4, 0, 6, 2}); +-#else +- return __builtin_shuffle (__a, __b, (uint16x4_t) {1, 5, 3, 7}); +-#endif ++ return ((__a & __b) != __AARCH64_UINT64_C (0)); ++} ++ ++__extension__ extern __inline uint64_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vtstd_s64 (int64_t __a, int64_t __b) ++{ ++ return (__a & __b) ? -1ll : 0ll; ++} ++ ++__extension__ extern __inline uint64_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vtstd_u64 (uint64_t __a, uint64_t __b) ++{ ++ return (__a & __b) ? -1ll : 0ll; + } + ++/* vuqadd */ ++ + __extension__ extern __inline int8x8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vtrn2_s8 (int8x8_t __a, int8x8_t __b) ++vuqadd_s8 (int8x8_t __a, uint8x8_t __b) + { +-#ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, (uint8x8_t) {8, 0, 10, 2, 12, 4, 14, 6}); +-#else +- return __builtin_shuffle (__a, __b, (uint8x8_t) {1, 9, 3, 11, 5, 13, 7, 15}); +-#endif ++ return __builtin_aarch64_suqaddv8qi_ssu (__a, __b); + } + + __extension__ extern __inline int16x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vtrn2_s16 (int16x4_t __a, int16x4_t __b) ++vuqadd_s16 (int16x4_t __a, uint16x4_t __b) + { +-#ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, (uint16x4_t) {4, 0, 6, 2}); +-#else +- return __builtin_shuffle (__a, __b, (uint16x4_t) {1, 5, 3, 7}); +-#endif ++ return __builtin_aarch64_suqaddv4hi_ssu (__a, __b); + } + + __extension__ extern __inline int32x2_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vtrn2_s32 (int32x2_t __a, int32x2_t __b) ++vuqadd_s32 (int32x2_t __a, uint32x2_t __b) + { +-#ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, (uint32x2_t) {2, 0}); +-#else +- return __builtin_shuffle (__a, __b, (uint32x2_t) {1, 3}); +-#endif ++ return __builtin_aarch64_suqaddv2si_ssu (__a, __b); + } + +-__extension__ extern __inline uint8x8_t ++__extension__ extern __inline int64x1_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vtrn2_u8 (uint8x8_t __a, uint8x8_t __b) ++vuqadd_s64 (int64x1_t __a, uint64x1_t __b) + { +-#ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, (uint8x8_t) {8, 0, 10, 2, 12, 4, 14, 6}); +-#else +- return __builtin_shuffle (__a, __b, (uint8x8_t) {1, 9, 3, 11, 5, 13, 7, 15}); +-#endif ++ return (int64x1_t) {__builtin_aarch64_suqadddi_ssu (__a[0], __b[0])}; + } + +-__extension__ extern __inline uint16x4_t ++__extension__ extern __inline int8x16_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vtrn2_u16 (uint16x4_t __a, uint16x4_t __b) ++vuqaddq_s8 (int8x16_t __a, uint8x16_t __b) + { +-#ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, (uint16x4_t) {4, 0, 6, 2}); +-#else +- return __builtin_shuffle (__a, __b, (uint16x4_t) {1, 5, 3, 7}); +-#endif ++ return __builtin_aarch64_suqaddv16qi_ssu (__a, __b); + } + +-__extension__ extern __inline uint32x2_t ++__extension__ extern __inline int16x8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vtrn2_u32 (uint32x2_t __a, uint32x2_t __b) ++vuqaddq_s16 (int16x8_t __a, uint16x8_t __b) + { +-#ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, (uint32x2_t) {2, 0}); +-#else +- return __builtin_shuffle (__a, __b, (uint32x2_t) {1, 3}); +-#endif ++ return __builtin_aarch64_suqaddv8hi_ssu (__a, __b); + } + +-__extension__ extern __inline float16x8_t ++__extension__ extern __inline int32x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vtrn2q_f16 (float16x8_t __a, float16x8_t __b) ++vuqaddq_s32 (int32x4_t __a, uint32x4_t __b) + { +-#ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, (uint16x8_t) {8, 0, 10, 2, 12, 4, 14, 6}); +-#else +- return __builtin_shuffle (__a, __b, (uint16x8_t) {1, 9, 3, 11, 5, 13, 7, 15}); +-#endif ++ return __builtin_aarch64_suqaddv4si_ssu (__a, __b); + } + +-__extension__ extern __inline float32x4_t ++__extension__ extern __inline int64x2_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vtrn2q_f32 (float32x4_t __a, float32x4_t __b) ++vuqaddq_s64 (int64x2_t __a, uint64x2_t __b) + { +-#ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, (uint32x4_t) {4, 0, 6, 2}); +-#else +- return __builtin_shuffle (__a, __b, (uint32x4_t) {1, 5, 3, 7}); +-#endif ++ return __builtin_aarch64_suqaddv2di_ssu (__a, __b); + } + +-__extension__ extern __inline float64x2_t ++__extension__ extern __inline int8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vtrn2q_f64 (float64x2_t __a, float64x2_t __b) ++vuqaddb_s8 (int8_t __a, uint8_t __b) + { +-#ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, (uint64x2_t) {2, 0}); +-#else +- return __builtin_shuffle (__a, __b, (uint64x2_t) {1, 3}); +-#endif ++ return __builtin_aarch64_suqaddqi_ssu (__a, __b); + } + +-__extension__ extern __inline poly8x16_t ++__extension__ extern __inline int16_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vtrn2q_p8 (poly8x16_t __a, poly8x16_t __b) ++vuqaddh_s16 (int16_t __a, uint16_t __b) + { +-#ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, +- (uint8x16_t) {16, 0, 18, 2, 20, 4, 22, 6, 24, 8, 26, 10, 28, 12, 30, 14}); +-#else +- return __builtin_shuffle (__a, __b, +- (uint8x16_t) {1, 17, 3, 19, 5, 21, 7, 23, 9, 25, 11, 27, 13, 29, 15, 31}); +-#endif ++ return __builtin_aarch64_suqaddhi_ssu (__a, __b); + } + +-__extension__ extern __inline poly16x8_t ++__extension__ extern __inline int32_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vtrn2q_p16 (poly16x8_t __a, poly16x8_t __b) ++vuqadds_s32 (int32_t __a, uint32_t __b) + { +-#ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, (uint16x8_t) {8, 0, 10, 2, 12, 4, 14, 6}); +-#else +- return __builtin_shuffle (__a, __b, (uint16x8_t) {1, 9, 3, 11, 5, 13, 7, 15}); +-#endif ++ return __builtin_aarch64_suqaddsi_ssu (__a, __b); + } + +-__extension__ extern __inline int8x16_t ++__extension__ extern __inline int64_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vtrn2q_s8 (int8x16_t __a, int8x16_t __b) ++vuqaddd_s64 (int64_t __a, uint64_t __b) + { +-#ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, +- (uint8x16_t) {16, 0, 18, 2, 20, 4, 22, 6, 24, 8, 26, 10, 28, 12, 30, 14}); +-#else +- return __builtin_shuffle (__a, __b, +- (uint8x16_t) {1, 17, 3, 19, 5, 21, 7, 23, 9, 25, 11, 27, 13, 29, 15, 31}); +-#endif ++ return __builtin_aarch64_suqadddi_ssu (__a, __b); + } + +-__extension__ extern __inline int16x8_t ++#define __DEFINTERLEAVE(op, rettype, intype, funcsuffix, Q) \ ++ __extension__ extern __inline rettype \ ++ __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) \ ++ v ## op ## Q ## _ ## funcsuffix (intype a, intype b) \ ++ { \ ++ return (rettype) {v ## op ## 1 ## Q ## _ ## funcsuffix (a, b), \ ++ v ## op ## 2 ## Q ## _ ## funcsuffix (a, b)}; \ ++ } ++ ++#define __INTERLEAVE_LIST(op) \ ++ __DEFINTERLEAVE (op, float16x4x2_t, float16x4_t, f16,) \ ++ __DEFINTERLEAVE (op, float32x2x2_t, float32x2_t, f32,) \ ++ __DEFINTERLEAVE (op, poly8x8x2_t, poly8x8_t, p8,) \ ++ __DEFINTERLEAVE (op, poly16x4x2_t, poly16x4_t, p16,) \ ++ __DEFINTERLEAVE (op, int8x8x2_t, int8x8_t, s8,) \ ++ __DEFINTERLEAVE (op, int16x4x2_t, int16x4_t, s16,) \ ++ __DEFINTERLEAVE (op, int32x2x2_t, int32x2_t, s32,) \ ++ __DEFINTERLEAVE (op, uint8x8x2_t, uint8x8_t, u8,) \ ++ __DEFINTERLEAVE (op, uint16x4x2_t, uint16x4_t, u16,) \ ++ __DEFINTERLEAVE (op, uint32x2x2_t, uint32x2_t, u32,) \ ++ __DEFINTERLEAVE (op, float16x8x2_t, float16x8_t, f16, q) \ ++ __DEFINTERLEAVE (op, float32x4x2_t, float32x4_t, f32, q) \ ++ __DEFINTERLEAVE (op, poly8x16x2_t, poly8x16_t, p8, q) \ ++ __DEFINTERLEAVE (op, poly16x8x2_t, poly16x8_t, p16, q) \ ++ __DEFINTERLEAVE (op, int8x16x2_t, int8x16_t, s8, q) \ ++ __DEFINTERLEAVE (op, int16x8x2_t, int16x8_t, s16, q) \ ++ __DEFINTERLEAVE (op, int32x4x2_t, int32x4_t, s32, q) \ ++ __DEFINTERLEAVE (op, uint8x16x2_t, uint8x16_t, u8, q) \ ++ __DEFINTERLEAVE (op, uint16x8x2_t, uint16x8_t, u16, q) \ ++ __DEFINTERLEAVE (op, uint32x4x2_t, uint32x4_t, u32, q) ++ ++/* vuzp */ ++ ++__extension__ extern __inline float16x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vtrn2q_s16 (int16x8_t __a, int16x8_t __b) ++vuzp1_f16 (float16x4_t __a, float16x4_t __b) + { + #ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, (uint16x8_t) {8, 0, 10, 2, 12, 4, 14, 6}); ++ return __builtin_shuffle (__a, __b, (uint16x4_t) {5, 7, 1, 3}); + #else +- return __builtin_shuffle (__a, __b, (uint16x8_t) {1, 9, 3, 11, 5, 13, 7, 15}); ++ return __builtin_shuffle (__a, __b, (uint16x4_t) {0, 2, 4, 6}); + #endif + } + +-__extension__ extern __inline int32x4_t ++__extension__ extern __inline float32x2_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vtrn2q_s32 (int32x4_t __a, int32x4_t __b) ++vuzp1_f32 (float32x2_t __a, float32x2_t __b) + { + #ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, (uint32x4_t) {4, 0, 6, 2}); ++ return __builtin_shuffle (__a, __b, (uint32x2_t) {3, 1}); + #else +- return __builtin_shuffle (__a, __b, (uint32x4_t) {1, 5, 3, 7}); ++ return __builtin_shuffle (__a, __b, (uint32x2_t) {0, 2}); + #endif + } + +-__extension__ extern __inline int64x2_t ++__extension__ extern __inline poly8x8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vtrn2q_s64 (int64x2_t __a, int64x2_t __b) ++vuzp1_p8 (poly8x8_t __a, poly8x8_t __b) + { + #ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, (uint64x2_t) {2, 0}); ++ return __builtin_shuffle (__a, __b, (uint8x8_t) {9, 11, 13, 15, 1, 3, 5, 7}); + #else +- return __builtin_shuffle (__a, __b, (uint64x2_t) {1, 3}); ++ return __builtin_shuffle (__a, __b, (uint8x8_t) {0, 2, 4, 6, 8, 10, 12, 14}); + #endif + } + +-__extension__ extern __inline uint8x16_t ++__extension__ extern __inline poly16x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vtrn2q_u8 (uint8x16_t __a, uint8x16_t __b) ++vuzp1_p16 (poly16x4_t __a, poly16x4_t __b) + { + #ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, +- (uint8x16_t) {16, 0, 18, 2, 20, 4, 22, 6, 24, 8, 26, 10, 28, 12, 30, 14}); ++ return __builtin_shuffle (__a, __b, (uint16x4_t) {5, 7, 1, 3}); + #else +- return __builtin_shuffle (__a, __b, +- (uint8x16_t) {1, 17, 3, 19, 5, 21, 7, 23, 9, 25, 11, 27, 13, 29, 15, 31}); ++ return __builtin_shuffle (__a, __b, (uint16x4_t) {0, 2, 4, 6}); + #endif + } + +-__extension__ extern __inline uint16x8_t ++__extension__ extern __inline int8x8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vtrn2q_u16 (uint16x8_t __a, uint16x8_t __b) ++vuzp1_s8 (int8x8_t __a, int8x8_t __b) + { + #ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, (uint16x8_t) {8, 0, 10, 2, 12, 4, 14, 6}); ++ return __builtin_shuffle (__a, __b, (uint8x8_t) {9, 11, 13, 15, 1, 3, 5, 7}); + #else +- return __builtin_shuffle (__a, __b, (uint16x8_t) {1, 9, 3, 11, 5, 13, 7, 15}); ++ return __builtin_shuffle (__a, __b, (uint8x8_t) {0, 2, 4, 6, 8, 10, 12, 14}); + #endif + } + +-__extension__ extern __inline uint32x4_t ++__extension__ extern __inline int16x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vtrn2q_u32 (uint32x4_t __a, uint32x4_t __b) ++vuzp1_s16 (int16x4_t __a, int16x4_t __b) + { + #ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, (uint32x4_t) {4, 0, 6, 2}); ++ return __builtin_shuffle (__a, __b, (uint16x4_t) {5, 7, 1, 3}); + #else +- return __builtin_shuffle (__a, __b, (uint32x4_t) {1, 5, 3, 7}); ++ return __builtin_shuffle (__a, __b, (uint16x4_t) {0, 2, 4, 6}); + #endif + } + +-__extension__ extern __inline uint64x2_t ++__extension__ extern __inline int32x2_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vtrn2q_u64 (uint64x2_t __a, uint64x2_t __b) ++vuzp1_s32 (int32x2_t __a, int32x2_t __b) + { + #ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, (uint64x2_t) {2, 0}); ++ return __builtin_shuffle (__a, __b, (uint32x2_t) {3, 1}); + #else +- return __builtin_shuffle (__a, __b, (uint64x2_t) {1, 3}); ++ return __builtin_shuffle (__a, __b, (uint32x2_t) {0, 2}); + #endif + } + +-__extension__ extern __inline float16x4x2_t +-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vtrn_f16 (float16x4_t __a, float16x4_t __b) +-{ +- return (float16x4x2_t) {vtrn1_f16 (__a, __b), vtrn2_f16 (__a, __b)}; +-} +- +-__extension__ extern __inline float32x2x2_t +-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vtrn_f32 (float32x2_t a, float32x2_t b) +-{ +- return (float32x2x2_t) {vtrn1_f32 (a, b), vtrn2_f32 (a, b)}; +-} +- +-__extension__ extern __inline poly8x8x2_t +-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vtrn_p8 (poly8x8_t a, poly8x8_t b) +-{ +- return (poly8x8x2_t) {vtrn1_p8 (a, b), vtrn2_p8 (a, b)}; +-} +- +-__extension__ extern __inline poly16x4x2_t +-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vtrn_p16 (poly16x4_t a, poly16x4_t b) +-{ +- return (poly16x4x2_t) {vtrn1_p16 (a, b), vtrn2_p16 (a, b)}; +-} +- +-__extension__ extern __inline int8x8x2_t +-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vtrn_s8 (int8x8_t a, int8x8_t b) +-{ +- return (int8x8x2_t) {vtrn1_s8 (a, b), vtrn2_s8 (a, b)}; +-} +- +-__extension__ extern __inline int16x4x2_t +-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vtrn_s16 (int16x4_t a, int16x4_t b) +-{ +- return (int16x4x2_t) {vtrn1_s16 (a, b), vtrn2_s16 (a, b)}; +-} +- +-__extension__ extern __inline int32x2x2_t +-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vtrn_s32 (int32x2_t a, int32x2_t b) +-{ +- return (int32x2x2_t) {vtrn1_s32 (a, b), vtrn2_s32 (a, b)}; +-} +- +-__extension__ extern __inline uint8x8x2_t +-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vtrn_u8 (uint8x8_t a, uint8x8_t b) +-{ +- return (uint8x8x2_t) {vtrn1_u8 (a, b), vtrn2_u8 (a, b)}; +-} +- +-__extension__ extern __inline uint16x4x2_t +-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vtrn_u16 (uint16x4_t a, uint16x4_t b) +-{ +- return (uint16x4x2_t) {vtrn1_u16 (a, b), vtrn2_u16 (a, b)}; +-} +- +-__extension__ extern __inline uint32x2x2_t +-__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vtrn_u32 (uint32x2_t a, uint32x2_t b) +-{ +- return (uint32x2x2_t) {vtrn1_u32 (a, b), vtrn2_u32 (a, b)}; +-} +- +-__extension__ extern __inline float16x8x2_t ++__extension__ extern __inline uint8x8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vtrnq_f16 (float16x8_t __a, float16x8_t __b) ++vuzp1_u8 (uint8x8_t __a, uint8x8_t __b) + { +- return (float16x8x2_t) {vtrn1q_f16 (__a, __b), vtrn2q_f16 (__a, __b)}; ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint8x8_t) {9, 11, 13, 15, 1, 3, 5, 7}); ++#else ++ return __builtin_shuffle (__a, __b, (uint8x8_t) {0, 2, 4, 6, 8, 10, 12, 14}); ++#endif + } + +-__extension__ extern __inline float32x4x2_t ++__extension__ extern __inline uint16x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vtrnq_f32 (float32x4_t a, float32x4_t b) ++vuzp1_u16 (uint16x4_t __a, uint16x4_t __b) + { +- return (float32x4x2_t) {vtrn1q_f32 (a, b), vtrn2q_f32 (a, b)}; ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint16x4_t) {5, 7, 1, 3}); ++#else ++ return __builtin_shuffle (__a, __b, (uint16x4_t) {0, 2, 4, 6}); ++#endif + } + +-__extension__ extern __inline poly8x16x2_t ++__extension__ extern __inline uint32x2_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vtrnq_p8 (poly8x16_t a, poly8x16_t b) ++vuzp1_u32 (uint32x2_t __a, uint32x2_t __b) + { +- return (poly8x16x2_t) {vtrn1q_p8 (a, b), vtrn2q_p8 (a, b)}; ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint32x2_t) {3, 1}); ++#else ++ return __builtin_shuffle (__a, __b, (uint32x2_t) {0, 2}); ++#endif + } + +-__extension__ extern __inline poly16x8x2_t ++__extension__ extern __inline float16x8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vtrnq_p16 (poly16x8_t a, poly16x8_t b) ++vuzp1q_f16 (float16x8_t __a, float16x8_t __b) + { +- return (poly16x8x2_t) {vtrn1q_p16 (a, b), vtrn2q_p16 (a, b)}; ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint16x8_t) {9, 11, 13, 15, 1, 3, 5, 7}); ++#else ++ return __builtin_shuffle (__a, __b, (uint16x8_t) {0, 2, 4, 6, 8, 10, 12, 14}); ++#endif + } + +-__extension__ extern __inline int8x16x2_t ++__extension__ extern __inline float32x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vtrnq_s8 (int8x16_t a, int8x16_t b) ++vuzp1q_f32 (float32x4_t __a, float32x4_t __b) + { +- return (int8x16x2_t) {vtrn1q_s8 (a, b), vtrn2q_s8 (a, b)}; ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint32x4_t) {5, 7, 1, 3}); ++#else ++ return __builtin_shuffle (__a, __b, (uint32x4_t) {0, 2, 4, 6}); ++#endif + } + +-__extension__ extern __inline int16x8x2_t ++__extension__ extern __inline float64x2_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vtrnq_s16 (int16x8_t a, int16x8_t b) ++vuzp1q_f64 (float64x2_t __a, float64x2_t __b) + { +- return (int16x8x2_t) {vtrn1q_s16 (a, b), vtrn2q_s16 (a, b)}; ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint64x2_t) {3, 1}); ++#else ++ return __builtin_shuffle (__a, __b, (uint64x2_t) {0, 2}); ++#endif + } + +-__extension__ extern __inline int32x4x2_t ++__extension__ extern __inline poly8x16_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vtrnq_s32 (int32x4_t a, int32x4_t b) ++vuzp1q_p8 (poly8x16_t __a, poly8x16_t __b) + { +- return (int32x4x2_t) {vtrn1q_s32 (a, b), vtrn2q_s32 (a, b)}; ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint8x16_t) ++ {17, 19, 21, 23, 25, 27, 29, 31, 1, 3, 5, 7, 9, 11, 13, 15}); ++#else ++ return __builtin_shuffle (__a, __b, (uint8x16_t) ++ {0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30}); ++#endif + } + +-__extension__ extern __inline uint8x16x2_t ++__extension__ extern __inline poly16x8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vtrnq_u8 (uint8x16_t a, uint8x16_t b) ++vuzp1q_p16 (poly16x8_t __a, poly16x8_t __b) + { +- return (uint8x16x2_t) {vtrn1q_u8 (a, b), vtrn2q_u8 (a, b)}; ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint16x8_t) {9, 11, 13, 15, 1, 3, 5, 7}); ++#else ++ return __builtin_shuffle (__a, __b, (uint16x8_t) {0, 2, 4, 6, 8, 10, 12, 14}); ++#endif + } + +-__extension__ extern __inline uint16x8x2_t ++__extension__ extern __inline int8x16_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vtrnq_u16 (uint16x8_t a, uint16x8_t b) ++vuzp1q_s8 (int8x16_t __a, int8x16_t __b) + { +- return (uint16x8x2_t) {vtrn1q_u16 (a, b), vtrn2q_u16 (a, b)}; ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, ++ (uint8x16_t) {17, 19, 21, 23, 25, 27, 29, 31, 1, 3, 5, 7, 9, 11, 13, 15}); ++#else ++ return __builtin_shuffle (__a, __b, ++ (uint8x16_t) {0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30}); ++#endif + } + +-__extension__ extern __inline uint32x4x2_t ++__extension__ extern __inline int16x8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vtrnq_u32 (uint32x4_t a, uint32x4_t b) ++vuzp1q_s16 (int16x8_t __a, int16x8_t __b) + { +- return (uint32x4x2_t) {vtrn1q_u32 (a, b), vtrn2q_u32 (a, b)}; ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint16x8_t) {9, 11, 13, 15, 1, 3, 5, 7}); ++#else ++ return __builtin_shuffle (__a, __b, (uint16x8_t) {0, 2, 4, 6, 8, 10, 12, 14}); ++#endif + } + +-/* vtst */ +- +-__extension__ extern __inline uint8x8_t ++__extension__ extern __inline int32x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vtst_s8 (int8x8_t __a, int8x8_t __b) ++vuzp1q_s32 (int32x4_t __a, int32x4_t __b) + { +- return (uint8x8_t) ((__a & __b) != 0); ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint32x4_t) {5, 7, 1, 3}); ++#else ++ return __builtin_shuffle (__a, __b, (uint32x4_t) {0, 2, 4, 6}); ++#endif + } + +-__extension__ extern __inline uint16x4_t ++__extension__ extern __inline int64x2_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vtst_s16 (int16x4_t __a, int16x4_t __b) ++vuzp1q_s64 (int64x2_t __a, int64x2_t __b) + { +- return (uint16x4_t) ((__a & __b) != 0); ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint64x2_t) {3, 1}); ++#else ++ return __builtin_shuffle (__a, __b, (uint64x2_t) {0, 2}); ++#endif + } + +-__extension__ extern __inline uint32x2_t ++__extension__ extern __inline uint8x16_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vtst_s32 (int32x2_t __a, int32x2_t __b) ++vuzp1q_u8 (uint8x16_t __a, uint8x16_t __b) + { +- return (uint32x2_t) ((__a & __b) != 0); ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, ++ (uint8x16_t) {17, 19, 21, 23, 25, 27, 29, 31, 1, 3, 5, 7, 9, 11, 13, 15}); ++#else ++ return __builtin_shuffle (__a, __b, ++ (uint8x16_t) {0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30}); ++#endif + } + +-__extension__ extern __inline uint64x1_t ++__extension__ extern __inline uint16x8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vtst_s64 (int64x1_t __a, int64x1_t __b) ++vuzp1q_u16 (uint16x8_t __a, uint16x8_t __b) + { +- return (uint64x1_t) ((__a & __b) != __AARCH64_INT64_C (0)); ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint16x8_t) {9, 11, 13, 15, 1, 3, 5, 7}); ++#else ++ return __builtin_shuffle (__a, __b, (uint16x8_t) {0, 2, 4, 6, 8, 10, 12, 14}); ++#endif + } + +-__extension__ extern __inline uint8x8_t ++__extension__ extern __inline uint32x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vtst_u8 (uint8x8_t __a, uint8x8_t __b) ++vuzp1q_u32 (uint32x4_t __a, uint32x4_t __b) + { +- return ((__a & __b) != 0); ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint32x4_t) {5, 7, 1, 3}); ++#else ++ return __builtin_shuffle (__a, __b, (uint32x4_t) {0, 2, 4, 6}); ++#endif + } + +-__extension__ extern __inline uint16x4_t ++__extension__ extern __inline uint64x2_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vtst_u16 (uint16x4_t __a, uint16x4_t __b) ++vuzp1q_u64 (uint64x2_t __a, uint64x2_t __b) + { +- return ((__a & __b) != 0); ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint64x2_t) {3, 1}); ++#else ++ return __builtin_shuffle (__a, __b, (uint64x2_t) {0, 2}); ++#endif + } + +-__extension__ extern __inline uint32x2_t ++__extension__ extern __inline poly64x2_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vtst_u32 (uint32x2_t __a, uint32x2_t __b) ++vuzp1q_p64 (poly64x2_t __a, poly64x2_t __b) + { +- return ((__a & __b) != 0); ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (poly64x2_t) {3, 1}); ++#else ++ return __builtin_shuffle (__a, __b, (poly64x2_t) {0, 2}); ++#endif + } + +-__extension__ extern __inline uint64x1_t ++__extension__ extern __inline float16x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vtst_u64 (uint64x1_t __a, uint64x1_t __b) ++vuzp2_f16 (float16x4_t __a, float16x4_t __b) + { +- return ((__a & __b) != __AARCH64_UINT64_C (0)); ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint16x4_t) {4, 6, 0, 2}); ++#else ++ return __builtin_shuffle (__a, __b, (uint16x4_t) {1, 3, 5, 7}); ++#endif + } + +-__extension__ extern __inline uint8x16_t ++__extension__ extern __inline float32x2_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vtstq_s8 (int8x16_t __a, int8x16_t __b) ++vuzp2_f32 (float32x2_t __a, float32x2_t __b) + { +- return (uint8x16_t) ((__a & __b) != 0); ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint32x2_t) {2, 0}); ++#else ++ return __builtin_shuffle (__a, __b, (uint32x2_t) {1, 3}); ++#endif + } + +-__extension__ extern __inline uint16x8_t ++__extension__ extern __inline poly8x8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vtstq_s16 (int16x8_t __a, int16x8_t __b) ++vuzp2_p8 (poly8x8_t __a, poly8x8_t __b) + { +- return (uint16x8_t) ((__a & __b) != 0); ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint8x8_t) {8, 10, 12, 14, 0, 2, 4, 6}); ++#else ++ return __builtin_shuffle (__a, __b, (uint8x8_t) {1, 3, 5, 7, 9, 11, 13, 15}); ++#endif + } + +-__extension__ extern __inline uint32x4_t ++__extension__ extern __inline poly16x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vtstq_s32 (int32x4_t __a, int32x4_t __b) ++vuzp2_p16 (poly16x4_t __a, poly16x4_t __b) + { +- return (uint32x4_t) ((__a & __b) != 0); ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint16x4_t) {4, 6, 0, 2}); ++#else ++ return __builtin_shuffle (__a, __b, (uint16x4_t) {1, 3, 5, 7}); ++#endif + } + +-__extension__ extern __inline uint64x2_t ++__extension__ extern __inline int8x8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vtstq_s64 (int64x2_t __a, int64x2_t __b) ++vuzp2_s8 (int8x8_t __a, int8x8_t __b) + { +- return (uint64x2_t) ((__a & __b) != __AARCH64_INT64_C (0)); ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint8x8_t) {8, 10, 12, 14, 0, 2, 4, 6}); ++#else ++ return __builtin_shuffle (__a, __b, (uint8x8_t) {1, 3, 5, 7, 9, 11, 13, 15}); ++#endif + } + +-__extension__ extern __inline uint8x16_t ++__extension__ extern __inline int16x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vtstq_u8 (uint8x16_t __a, uint8x16_t __b) ++vuzp2_s16 (int16x4_t __a, int16x4_t __b) + { +- return ((__a & __b) != 0); ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint16x4_t) {4, 6, 0, 2}); ++#else ++ return __builtin_shuffle (__a, __b, (uint16x4_t) {1, 3, 5, 7}); ++#endif + } + +-__extension__ extern __inline uint16x8_t ++__extension__ extern __inline int32x2_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vtstq_u16 (uint16x8_t __a, uint16x8_t __b) ++vuzp2_s32 (int32x2_t __a, int32x2_t __b) + { +- return ((__a & __b) != 0); ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint32x2_t) {2, 0}); ++#else ++ return __builtin_shuffle (__a, __b, (uint32x2_t) {1, 3}); ++#endif + } + +-__extension__ extern __inline uint32x4_t ++__extension__ extern __inline uint8x8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vtstq_u32 (uint32x4_t __a, uint32x4_t __b) ++vuzp2_u8 (uint8x8_t __a, uint8x8_t __b) + { +- return ((__a & __b) != 0); ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint8x8_t) {8, 10, 12, 14, 0, 2, 4, 6}); ++#else ++ return __builtin_shuffle (__a, __b, (uint8x8_t) {1, 3, 5, 7, 9, 11, 13, 15}); ++#endif + } + +-__extension__ extern __inline uint64x2_t ++__extension__ extern __inline uint16x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vtstq_u64 (uint64x2_t __a, uint64x2_t __b) ++vuzp2_u16 (uint16x4_t __a, uint16x4_t __b) + { +- return ((__a & __b) != __AARCH64_UINT64_C (0)); ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint16x4_t) {4, 6, 0, 2}); ++#else ++ return __builtin_shuffle (__a, __b, (uint16x4_t) {1, 3, 5, 7}); ++#endif + } + +-__extension__ extern __inline uint64_t ++__extension__ extern __inline uint32x2_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vtstd_s64 (int64_t __a, int64_t __b) ++vuzp2_u32 (uint32x2_t __a, uint32x2_t __b) + { +- return (__a & __b) ? -1ll : 0ll; ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint32x2_t) {2, 0}); ++#else ++ return __builtin_shuffle (__a, __b, (uint32x2_t) {1, 3}); ++#endif + } + +-__extension__ extern __inline uint64_t ++__extension__ extern __inline float16x8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vtstd_u64 (uint64_t __a, uint64_t __b) ++vuzp2q_f16 (float16x8_t __a, float16x8_t __b) + { +- return (__a & __b) ? -1ll : 0ll; ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint16x8_t) {8, 10, 12, 14, 0, 2, 4, 6}); ++#else ++ return __builtin_shuffle (__a, __b, (uint16x8_t) {1, 3, 5, 7, 9, 11, 13, 15}); ++#endif + } + +-/* vuqadd */ +- +-__extension__ extern __inline int8x8_t ++__extension__ extern __inline float32x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vuqadd_s8 (int8x8_t __a, uint8x8_t __b) ++vuzp2q_f32 (float32x4_t __a, float32x4_t __b) + { +- return __builtin_aarch64_suqaddv8qi_ssu (__a, __b); ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint32x4_t) {4, 6, 0, 2}); ++#else ++ return __builtin_shuffle (__a, __b, (uint32x4_t) {1, 3, 5, 7}); ++#endif + } + +-__extension__ extern __inline int16x4_t ++__extension__ extern __inline float64x2_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vuqadd_s16 (int16x4_t __a, uint16x4_t __b) ++vuzp2q_f64 (float64x2_t __a, float64x2_t __b) + { +- return __builtin_aarch64_suqaddv4hi_ssu (__a, __b); ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint64x2_t) {2, 0}); ++#else ++ return __builtin_shuffle (__a, __b, (uint64x2_t) {1, 3}); ++#endif + } + +-__extension__ extern __inline int32x2_t ++__extension__ extern __inline poly8x16_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vuqadd_s32 (int32x2_t __a, uint32x2_t __b) ++vuzp2q_p8 (poly8x16_t __a, poly8x16_t __b) + { +- return __builtin_aarch64_suqaddv2si_ssu (__a, __b); ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, ++ (uint8x16_t) {16, 18, 20, 22, 24, 26, 28, 30, 0, 2, 4, 6, 8, 10, 12, 14}); ++#else ++ return __builtin_shuffle (__a, __b, ++ (uint8x16_t) {1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31}); ++#endif + } + +-__extension__ extern __inline int64x1_t ++__extension__ extern __inline poly16x8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vuqadd_s64 (int64x1_t __a, uint64x1_t __b) ++vuzp2q_p16 (poly16x8_t __a, poly16x8_t __b) + { +- return (int64x1_t) {__builtin_aarch64_suqadddi_ssu (__a[0], __b[0])}; ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint16x8_t) {8, 10, 12, 14, 0, 2, 4, 6}); ++#else ++ return __builtin_shuffle (__a, __b, (uint16x8_t) {1, 3, 5, 7, 9, 11, 13, 15}); ++#endif + } + + __extension__ extern __inline int8x16_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vuqaddq_s8 (int8x16_t __a, uint8x16_t __b) ++vuzp2q_s8 (int8x16_t __a, int8x16_t __b) + { +- return __builtin_aarch64_suqaddv16qi_ssu (__a, __b); ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, ++ (uint8x16_t) {16, 18, 20, 22, 24, 26, 28, 30, 0, 2, 4, 6, 8, 10, 12, 14}); ++#else ++ return __builtin_shuffle (__a, __b, ++ (uint8x16_t) {1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31}); ++#endif + } + + __extension__ extern __inline int16x8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vuqaddq_s16 (int16x8_t __a, uint16x8_t __b) ++vuzp2q_s16 (int16x8_t __a, int16x8_t __b) + { +- return __builtin_aarch64_suqaddv8hi_ssu (__a, __b); ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint16x8_t) {8, 10, 12, 14, 0, 2, 4, 6}); ++#else ++ return __builtin_shuffle (__a, __b, (uint16x8_t) {1, 3, 5, 7, 9, 11, 13, 15}); ++#endif + } + + __extension__ extern __inline int32x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vuqaddq_s32 (int32x4_t __a, uint32x4_t __b) ++vuzp2q_s32 (int32x4_t __a, int32x4_t __b) + { +- return __builtin_aarch64_suqaddv4si_ssu (__a, __b); ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint32x4_t) {4, 6, 0, 2}); ++#else ++ return __builtin_shuffle (__a, __b, (uint32x4_t) {1, 3, 5, 7}); ++#endif + } + + __extension__ extern __inline int64x2_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vuqaddq_s64 (int64x2_t __a, uint64x2_t __b) ++vuzp2q_s64 (int64x2_t __a, int64x2_t __b) + { +- return __builtin_aarch64_suqaddv2di_ssu (__a, __b); ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint64x2_t) {2, 0}); ++#else ++ return __builtin_shuffle (__a, __b, (uint64x2_t) {1, 3}); ++#endif + } + +-__extension__ extern __inline int8_t ++__extension__ extern __inline uint8x16_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vuqaddb_s8 (int8_t __a, uint8_t __b) ++vuzp2q_u8 (uint8x16_t __a, uint8x16_t __b) + { +- return __builtin_aarch64_suqaddqi_ssu (__a, __b); ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint8x16_t) ++ {16, 18, 20, 22, 24, 26, 28, 30, 0, 2, 4, 6, 8, 10, 12, 14}); ++#else ++ return __builtin_shuffle (__a, __b, (uint8x16_t) ++ {1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31}); ++#endif ++} ++ ++__extension__ extern __inline uint16x8_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vuzp2q_u16 (uint16x8_t __a, uint16x8_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint16x8_t) {8, 10, 12, 14, 0, 2, 4, 6}); ++#else ++ return __builtin_shuffle (__a, __b, (uint16x8_t) {1, 3, 5, 7, 9, 11, 13, 15}); ++#endif + } + +-__extension__ extern __inline int16_t ++__extension__ extern __inline uint32x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vuqaddh_s16 (int16_t __a, uint16_t __b) ++vuzp2q_u32 (uint32x4_t __a, uint32x4_t __b) + { +- return __builtin_aarch64_suqaddhi_ssu (__a, __b); ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint32x4_t) {4, 6, 0, 2}); ++#else ++ return __builtin_shuffle (__a, __b, (uint32x4_t) {1, 3, 5, 7}); ++#endif + } + +-__extension__ extern __inline int32_t ++__extension__ extern __inline uint64x2_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vuqadds_s32 (int32_t __a, uint32_t __b) ++vuzp2q_u64 (uint64x2_t __a, uint64x2_t __b) + { +- return __builtin_aarch64_suqaddsi_ssu (__a, __b); ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (uint64x2_t) {2, 0}); ++#else ++ return __builtin_shuffle (__a, __b, (uint64x2_t) {1, 3}); ++#endif + } + +-__extension__ extern __inline int64_t ++__extension__ extern __inline poly64x2_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vuqaddd_s64 (int64_t __a, uint64_t __b) ++vuzp2q_p64 (poly64x2_t __a, poly64x2_t __b) + { +- return __builtin_aarch64_suqadddi_ssu (__a, __b); ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (poly64x2_t) {2, 0}); ++#else ++ return __builtin_shuffle (__a, __b, (poly64x2_t) {1, 3}); ++#endif + } + +-#define __DEFINTERLEAVE(op, rettype, intype, funcsuffix, Q) \ +- __extension__ extern __inline rettype \ +- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) \ +- v ## op ## Q ## _ ## funcsuffix (intype a, intype b) \ +- { \ +- return (rettype) {v ## op ## 1 ## Q ## _ ## funcsuffix (a, b), \ +- v ## op ## 2 ## Q ## _ ## funcsuffix (a, b)}; \ +- } +- +-#define __INTERLEAVE_LIST(op) \ +- __DEFINTERLEAVE (op, float16x4x2_t, float16x4_t, f16,) \ +- __DEFINTERLEAVE (op, float32x2x2_t, float32x2_t, f32,) \ +- __DEFINTERLEAVE (op, poly8x8x2_t, poly8x8_t, p8,) \ +- __DEFINTERLEAVE (op, poly16x4x2_t, poly16x4_t, p16,) \ +- __DEFINTERLEAVE (op, int8x8x2_t, int8x8_t, s8,) \ +- __DEFINTERLEAVE (op, int16x4x2_t, int16x4_t, s16,) \ +- __DEFINTERLEAVE (op, int32x2x2_t, int32x2_t, s32,) \ +- __DEFINTERLEAVE (op, uint8x8x2_t, uint8x8_t, u8,) \ +- __DEFINTERLEAVE (op, uint16x4x2_t, uint16x4_t, u16,) \ +- __DEFINTERLEAVE (op, uint32x2x2_t, uint32x2_t, u32,) \ +- __DEFINTERLEAVE (op, float16x8x2_t, float16x8_t, f16, q) \ +- __DEFINTERLEAVE (op, float32x4x2_t, float32x4_t, f32, q) \ +- __DEFINTERLEAVE (op, poly8x16x2_t, poly8x16_t, p8, q) \ +- __DEFINTERLEAVE (op, poly16x8x2_t, poly16x8_t, p16, q) \ +- __DEFINTERLEAVE (op, int8x16x2_t, int8x16_t, s8, q) \ +- __DEFINTERLEAVE (op, int16x8x2_t, int16x8_t, s16, q) \ +- __DEFINTERLEAVE (op, int32x4x2_t, int32x4_t, s32, q) \ +- __DEFINTERLEAVE (op, uint8x16x2_t, uint8x16_t, u8, q) \ +- __DEFINTERLEAVE (op, uint16x8x2_t, uint16x8_t, u16, q) \ +- __DEFINTERLEAVE (op, uint32x4x2_t, uint32x4_t, u32, q) ++__INTERLEAVE_LIST (uzp) + +-/* vuzp */ ++/* vzip */ + + __extension__ extern __inline float16x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vuzp1_f16 (float16x4_t __a, float16x4_t __b) ++vzip1_f16 (float16x4_t __a, float16x4_t __b) + { + #ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, (uint16x4_t) {5, 7, 1, 3}); ++ return __builtin_shuffle (__a, __b, (uint16x4_t) {6, 2, 7, 3}); + #else +- return __builtin_shuffle (__a, __b, (uint16x4_t) {0, 2, 4, 6}); ++ return __builtin_shuffle (__a, __b, (uint16x4_t) {0, 4, 1, 5}); + #endif + } + + __extension__ extern __inline float32x2_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vuzp1_f32 (float32x2_t __a, float32x2_t __b) ++vzip1_f32 (float32x2_t __a, float32x2_t __b) + { + #ifdef __AARCH64EB__ + return __builtin_shuffle (__a, __b, (uint32x2_t) {3, 1}); +@@ -29677,51 +31949,51 @@ vuzp1_f32 (float32x2_t __a, float32x2_t __b) + + __extension__ extern __inline poly8x8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vuzp1_p8 (poly8x8_t __a, poly8x8_t __b) ++vzip1_p8 (poly8x8_t __a, poly8x8_t __b) + { + #ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, (uint8x8_t) {9, 11, 13, 15, 1, 3, 5, 7}); ++ return __builtin_shuffle (__a, __b, (uint8x8_t) {12, 4, 13, 5, 14, 6, 15, 7}); + #else +- return __builtin_shuffle (__a, __b, (uint8x8_t) {0, 2, 4, 6, 8, 10, 12, 14}); ++ return __builtin_shuffle (__a, __b, (uint8x8_t) {0, 8, 1, 9, 2, 10, 3, 11}); + #endif + } + + __extension__ extern __inline poly16x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vuzp1_p16 (poly16x4_t __a, poly16x4_t __b) ++vzip1_p16 (poly16x4_t __a, poly16x4_t __b) + { + #ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, (uint16x4_t) {5, 7, 1, 3}); ++ return __builtin_shuffle (__a, __b, (uint16x4_t) {6, 2, 7, 3}); + #else +- return __builtin_shuffle (__a, __b, (uint16x4_t) {0, 2, 4, 6}); ++ return __builtin_shuffle (__a, __b, (uint16x4_t) {0, 4, 1, 5}); + #endif + } + + __extension__ extern __inline int8x8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vuzp1_s8 (int8x8_t __a, int8x8_t __b) ++vzip1_s8 (int8x8_t __a, int8x8_t __b) + { + #ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, (uint8x8_t) {9, 11, 13, 15, 1, 3, 5, 7}); ++ return __builtin_shuffle (__a, __b, (uint8x8_t) {12, 4, 13, 5, 14, 6, 15, 7}); + #else +- return __builtin_shuffle (__a, __b, (uint8x8_t) {0, 2, 4, 6, 8, 10, 12, 14}); ++ return __builtin_shuffle (__a, __b, (uint8x8_t) {0, 8, 1, 9, 2, 10, 3, 11}); + #endif + } + + __extension__ extern __inline int16x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vuzp1_s16 (int16x4_t __a, int16x4_t __b) ++vzip1_s16 (int16x4_t __a, int16x4_t __b) + { + #ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, (uint16x4_t) {5, 7, 1, 3}); ++ return __builtin_shuffle (__a, __b, (uint16x4_t) {6, 2, 7, 3}); + #else +- return __builtin_shuffle (__a, __b, (uint16x4_t) {0, 2, 4, 6}); ++ return __builtin_shuffle (__a, __b, (uint16x4_t) {0, 4, 1, 5}); + #endif + } + + __extension__ extern __inline int32x2_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vuzp1_s32 (int32x2_t __a, int32x2_t __b) ++vzip1_s32 (int32x2_t __a, int32x2_t __b) + { + #ifdef __AARCH64EB__ + return __builtin_shuffle (__a, __b, (uint32x2_t) {3, 1}); +@@ -29732,29 +32004,29 @@ vuzp1_s32 (int32x2_t __a, int32x2_t __b) + + __extension__ extern __inline uint8x8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vuzp1_u8 (uint8x8_t __a, uint8x8_t __b) ++vzip1_u8 (uint8x8_t __a, uint8x8_t __b) + { + #ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, (uint8x8_t) {9, 11, 13, 15, 1, 3, 5, 7}); ++ return __builtin_shuffle (__a, __b, (uint8x8_t) {12, 4, 13, 5, 14, 6, 15, 7}); + #else +- return __builtin_shuffle (__a, __b, (uint8x8_t) {0, 2, 4, 6, 8, 10, 12, 14}); ++ return __builtin_shuffle (__a, __b, (uint8x8_t) {0, 8, 1, 9, 2, 10, 3, 11}); + #endif + } + + __extension__ extern __inline uint16x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vuzp1_u16 (uint16x4_t __a, uint16x4_t __b) ++vzip1_u16 (uint16x4_t __a, uint16x4_t __b) + { + #ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, (uint16x4_t) {5, 7, 1, 3}); ++ return __builtin_shuffle (__a, __b, (uint16x4_t) {6, 2, 7, 3}); + #else +- return __builtin_shuffle (__a, __b, (uint16x4_t) {0, 2, 4, 6}); ++ return __builtin_shuffle (__a, __b, (uint16x4_t) {0, 4, 1, 5}); + #endif + } + + __extension__ extern __inline uint32x2_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vuzp1_u32 (uint32x2_t __a, uint32x2_t __b) ++vzip1_u32 (uint32x2_t __a, uint32x2_t __b) + { + #ifdef __AARCH64EB__ + return __builtin_shuffle (__a, __b, (uint32x2_t) {3, 1}); +@@ -29765,29 +32037,31 @@ vuzp1_u32 (uint32x2_t __a, uint32x2_t __b) + + __extension__ extern __inline float16x8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vuzp1q_f16 (float16x8_t __a, float16x8_t __b) ++vzip1q_f16 (float16x8_t __a, float16x8_t __b) + { + #ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, (uint16x8_t) {9, 11, 13, 15, 1, 3, 5, 7}); ++ return __builtin_shuffle (__a, __b, ++ (uint16x8_t) {12, 4, 13, 5, 14, 6, 15, 7}); + #else +- return __builtin_shuffle (__a, __b, (uint16x8_t) {0, 2, 4, 6, 8, 10, 12, 14}); ++ return __builtin_shuffle (__a, __b, ++ (uint16x8_t) {0, 8, 1, 9, 2, 10, 3, 11}); + #endif + } + + __extension__ extern __inline float32x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vuzp1q_f32 (float32x4_t __a, float32x4_t __b) ++vzip1q_f32 (float32x4_t __a, float32x4_t __b) + { + #ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, (uint32x4_t) {5, 7, 1, 3}); ++ return __builtin_shuffle (__a, __b, (uint32x4_t) {6, 2, 7, 3}); + #else +- return __builtin_shuffle (__a, __b, (uint32x4_t) {0, 2, 4, 6}); ++ return __builtin_shuffle (__a, __b, (uint32x4_t) {0, 4, 1, 5}); + #endif + } + + __extension__ extern __inline float64x2_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vuzp1q_f64 (float64x2_t __a, float64x2_t __b) ++vzip1q_f64 (float64x2_t __a, float64x2_t __b) + { + #ifdef __AARCH64EB__ + return __builtin_shuffle (__a, __b, (uint64x2_t) {3, 1}); +@@ -29798,66 +32072,68 @@ vuzp1q_f64 (float64x2_t __a, float64x2_t __b) + + __extension__ extern __inline poly8x16_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vuzp1q_p8 (poly8x16_t __a, poly8x16_t __b) ++vzip1q_p8 (poly8x16_t __a, poly8x16_t __b) + { + #ifdef __AARCH64EB__ + return __builtin_shuffle (__a, __b, (uint8x16_t) +- {17, 19, 21, 23, 25, 27, 29, 31, 1, 3, 5, 7, 9, 11, 13, 15}); ++ {24, 8, 25, 9, 26, 10, 27, 11, 28, 12, 29, 13, 30, 14, 31, 15}); + #else + return __builtin_shuffle (__a, __b, (uint8x16_t) +- {0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30}); ++ {0, 16, 1, 17, 2, 18, 3, 19, 4, 20, 5, 21, 6, 22, 7, 23}); + #endif + } + + __extension__ extern __inline poly16x8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vuzp1q_p16 (poly16x8_t __a, poly16x8_t __b) ++vzip1q_p16 (poly16x8_t __a, poly16x8_t __b) + { + #ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, (uint16x8_t) {9, 11, 13, 15, 1, 3, 5, 7}); ++ return __builtin_shuffle (__a, __b, (uint16x8_t) ++ {12, 4, 13, 5, 14, 6, 15, 7}); + #else +- return __builtin_shuffle (__a, __b, (uint16x8_t) {0, 2, 4, 6, 8, 10, 12, 14}); ++ return __builtin_shuffle (__a, __b, (uint16x8_t) {0, 8, 1, 9, 2, 10, 3, 11}); + #endif + } + + __extension__ extern __inline int8x16_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vuzp1q_s8 (int8x16_t __a, int8x16_t __b) ++vzip1q_s8 (int8x16_t __a, int8x16_t __b) + { + #ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, +- (uint8x16_t) {17, 19, 21, 23, 25, 27, 29, 31, 1, 3, 5, 7, 9, 11, 13, 15}); ++ return __builtin_shuffle (__a, __b, (uint8x16_t) ++ {24, 8, 25, 9, 26, 10, 27, 11, 28, 12, 29, 13, 30, 14, 31, 15}); + #else +- return __builtin_shuffle (__a, __b, +- (uint8x16_t) {0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30}); ++ return __builtin_shuffle (__a, __b, (uint8x16_t) ++ {0, 16, 1, 17, 2, 18, 3, 19, 4, 20, 5, 21, 6, 22, 7, 23}); + #endif + } + + __extension__ extern __inline int16x8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vuzp1q_s16 (int16x8_t __a, int16x8_t __b) ++vzip1q_s16 (int16x8_t __a, int16x8_t __b) + { + #ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, (uint16x8_t) {9, 11, 13, 15, 1, 3, 5, 7}); ++ return __builtin_shuffle (__a, __b, (uint16x8_t) ++ {12, 4, 13, 5, 14, 6, 15, 7}); + #else +- return __builtin_shuffle (__a, __b, (uint16x8_t) {0, 2, 4, 6, 8, 10, 12, 14}); ++ return __builtin_shuffle (__a, __b, (uint16x8_t) {0, 8, 1, 9, 2, 10, 3, 11}); + #endif + } + + __extension__ extern __inline int32x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vuzp1q_s32 (int32x4_t __a, int32x4_t __b) ++vzip1q_s32 (int32x4_t __a, int32x4_t __b) + { + #ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, (uint32x4_t) {5, 7, 1, 3}); ++ return __builtin_shuffle (__a, __b, (uint32x4_t) {6, 2, 7, 3}); + #else +- return __builtin_shuffle (__a, __b, (uint32x4_t) {0, 2, 4, 6}); ++ return __builtin_shuffle (__a, __b, (uint32x4_t) {0, 4, 1, 5}); + #endif + } + + __extension__ extern __inline int64x2_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vuzp1q_s64 (int64x2_t __a, int64x2_t __b) ++vzip1q_s64 (int64x2_t __a, int64x2_t __b) + { + #ifdef __AARCH64EB__ + return __builtin_shuffle (__a, __b, (uint64x2_t) {3, 1}); +@@ -29868,42 +32144,43 @@ vuzp1q_s64 (int64x2_t __a, int64x2_t __b) + + __extension__ extern __inline uint8x16_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vuzp1q_u8 (uint8x16_t __a, uint8x16_t __b) ++vzip1q_u8 (uint8x16_t __a, uint8x16_t __b) + { + #ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, +- (uint8x16_t) {17, 19, 21, 23, 25, 27, 29, 31, 1, 3, 5, 7, 9, 11, 13, 15}); ++ return __builtin_shuffle (__a, __b, (uint8x16_t) ++ {24, 8, 25, 9, 26, 10, 27, 11, 28, 12, 29, 13, 30, 14, 31, 15}); + #else +- return __builtin_shuffle (__a, __b, +- (uint8x16_t) {0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30}); ++ return __builtin_shuffle (__a, __b, (uint8x16_t) ++ {0, 16, 1, 17, 2, 18, 3, 19, 4, 20, 5, 21, 6, 22, 7, 23}); + #endif + } + + __extension__ extern __inline uint16x8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vuzp1q_u16 (uint16x8_t __a, uint16x8_t __b) ++vzip1q_u16 (uint16x8_t __a, uint16x8_t __b) + { + #ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, (uint16x8_t) {9, 11, 13, 15, 1, 3, 5, 7}); ++ return __builtin_shuffle (__a, __b, (uint16x8_t) ++ {12, 4, 13, 5, 14, 6, 15, 7}); + #else +- return __builtin_shuffle (__a, __b, (uint16x8_t) {0, 2, 4, 6, 8, 10, 12, 14}); ++ return __builtin_shuffle (__a, __b, (uint16x8_t) {0, 8, 1, 9, 2, 10, 3, 11}); + #endif + } + + __extension__ extern __inline uint32x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vuzp1q_u32 (uint32x4_t __a, uint32x4_t __b) ++vzip1q_u32 (uint32x4_t __a, uint32x4_t __b) + { + #ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, (uint32x4_t) {5, 7, 1, 3}); ++ return __builtin_shuffle (__a, __b, (uint32x4_t) {6, 2, 7, 3}); + #else +- return __builtin_shuffle (__a, __b, (uint32x4_t) {0, 2, 4, 6}); ++ return __builtin_shuffle (__a, __b, (uint32x4_t) {0, 4, 1, 5}); + #endif + } + + __extension__ extern __inline uint64x2_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vuzp1q_u64 (uint64x2_t __a, uint64x2_t __b) ++vzip1q_u64 (uint64x2_t __a, uint64x2_t __b) + { + #ifdef __AARCH64EB__ + return __builtin_shuffle (__a, __b, (uint64x2_t) {3, 1}); +@@ -29912,20 +32189,31 @@ vuzp1q_u64 (uint64x2_t __a, uint64x2_t __b) + #endif + } + ++__extension__ extern __inline poly64x2_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vzip1q_p64 (poly64x2_t __a, poly64x2_t __b) ++{ ++#ifdef __AARCH64EB__ ++ return __builtin_shuffle (__a, __b, (poly64x2_t) {3, 1}); ++#else ++ return __builtin_shuffle (__a, __b, (poly64x2_t) {0, 2}); ++#endif ++} ++ + __extension__ extern __inline float16x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vuzp2_f16 (float16x4_t __a, float16x4_t __b) ++vzip2_f16 (float16x4_t __a, float16x4_t __b) + { + #ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, (uint16x4_t) {4, 6, 0, 2}); ++ return __builtin_shuffle (__a, __b, (uint16x4_t) {4, 0, 5, 1}); + #else +- return __builtin_shuffle (__a, __b, (uint16x4_t) {1, 3, 5, 7}); ++ return __builtin_shuffle (__a, __b, (uint16x4_t) {2, 6, 3, 7}); + #endif + } + + __extension__ extern __inline float32x2_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vuzp2_f32 (float32x2_t __a, float32x2_t __b) ++vzip2_f32 (float32x2_t __a, float32x2_t __b) + { + #ifdef __AARCH64EB__ + return __builtin_shuffle (__a, __b, (uint32x2_t) {2, 0}); +@@ -29936,51 +32224,51 @@ vuzp2_f32 (float32x2_t __a, float32x2_t __b) + + __extension__ extern __inline poly8x8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vuzp2_p8 (poly8x8_t __a, poly8x8_t __b) ++vzip2_p8 (poly8x8_t __a, poly8x8_t __b) + { + #ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, (uint8x8_t) {8, 10, 12, 14, 0, 2, 4, 6}); ++ return __builtin_shuffle (__a, __b, (uint8x8_t) {8, 0, 9, 1, 10, 2, 11, 3}); + #else +- return __builtin_shuffle (__a, __b, (uint8x8_t) {1, 3, 5, 7, 9, 11, 13, 15}); ++ return __builtin_shuffle (__a, __b, (uint8x8_t) {4, 12, 5, 13, 6, 14, 7, 15}); + #endif + } + + __extension__ extern __inline poly16x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vuzp2_p16 (poly16x4_t __a, poly16x4_t __b) ++vzip2_p16 (poly16x4_t __a, poly16x4_t __b) + { + #ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, (uint16x4_t) {4, 6, 0, 2}); ++ return __builtin_shuffle (__a, __b, (uint16x4_t) {4, 0, 5, 1}); + #else +- return __builtin_shuffle (__a, __b, (uint16x4_t) {1, 3, 5, 7}); ++ return __builtin_shuffle (__a, __b, (uint16x4_t) {2, 6, 3, 7}); + #endif + } + + __extension__ extern __inline int8x8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vuzp2_s8 (int8x8_t __a, int8x8_t __b) ++vzip2_s8 (int8x8_t __a, int8x8_t __b) + { + #ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, (uint8x8_t) {8, 10, 12, 14, 0, 2, 4, 6}); ++ return __builtin_shuffle (__a, __b, (uint8x8_t) {8, 0, 9, 1, 10, 2, 11, 3}); + #else +- return __builtin_shuffle (__a, __b, (uint8x8_t) {1, 3, 5, 7, 9, 11, 13, 15}); ++ return __builtin_shuffle (__a, __b, (uint8x8_t) {4, 12, 5, 13, 6, 14, 7, 15}); + #endif + } + + __extension__ extern __inline int16x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vuzp2_s16 (int16x4_t __a, int16x4_t __b) ++vzip2_s16 (int16x4_t __a, int16x4_t __b) + { + #ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, (uint16x4_t) {4, 6, 0, 2}); ++ return __builtin_shuffle (__a, __b, (uint16x4_t) {4, 0, 5, 1}); + #else +- return __builtin_shuffle (__a, __b, (uint16x4_t) {1, 3, 5, 7}); ++ return __builtin_shuffle (__a, __b, (uint16x4_t) {2, 6, 3, 7}); + #endif + } + + __extension__ extern __inline int32x2_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vuzp2_s32 (int32x2_t __a, int32x2_t __b) ++vzip2_s32 (int32x2_t __a, int32x2_t __b) + { + #ifdef __AARCH64EB__ + return __builtin_shuffle (__a, __b, (uint32x2_t) {2, 0}); +@@ -29991,29 +32279,29 @@ vuzp2_s32 (int32x2_t __a, int32x2_t __b) + + __extension__ extern __inline uint8x8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vuzp2_u8 (uint8x8_t __a, uint8x8_t __b) ++vzip2_u8 (uint8x8_t __a, uint8x8_t __b) + { + #ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, (uint8x8_t) {8, 10, 12, 14, 0, 2, 4, 6}); ++ return __builtin_shuffle (__a, __b, (uint8x8_t) {8, 0, 9, 1, 10, 2, 11, 3}); + #else +- return __builtin_shuffle (__a, __b, (uint8x8_t) {1, 3, 5, 7, 9, 11, 13, 15}); ++ return __builtin_shuffle (__a, __b, (uint8x8_t) {4, 12, 5, 13, 6, 14, 7, 15}); + #endif + } + + __extension__ extern __inline uint16x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vuzp2_u16 (uint16x4_t __a, uint16x4_t __b) ++vzip2_u16 (uint16x4_t __a, uint16x4_t __b) + { + #ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, (uint16x4_t) {4, 6, 0, 2}); ++ return __builtin_shuffle (__a, __b, (uint16x4_t) {4, 0, 5, 1}); + #else +- return __builtin_shuffle (__a, __b, (uint16x4_t) {1, 3, 5, 7}); ++ return __builtin_shuffle (__a, __b, (uint16x4_t) {2, 6, 3, 7}); + #endif + } + + __extension__ extern __inline uint32x2_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vuzp2_u32 (uint32x2_t __a, uint32x2_t __b) ++vzip2_u32 (uint32x2_t __a, uint32x2_t __b) + { + #ifdef __AARCH64EB__ + return __builtin_shuffle (__a, __b, (uint32x2_t) {2, 0}); +@@ -30024,29 +32312,31 @@ vuzp2_u32 (uint32x2_t __a, uint32x2_t __b) + + __extension__ extern __inline float16x8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vuzp2q_f16 (float16x8_t __a, float16x8_t __b) ++vzip2q_f16 (float16x8_t __a, float16x8_t __b) + { + #ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, (uint16x8_t) {8, 10, 12, 14, 0, 2, 4, 6}); ++ return __builtin_shuffle (__a, __b, ++ (uint16x8_t) {8, 0, 9, 1, 10, 2, 11, 3}); + #else +- return __builtin_shuffle (__a, __b, (uint16x8_t) {1, 3, 5, 7, 9, 11, 13, 15}); ++ return __builtin_shuffle (__a, __b, ++ (uint16x8_t) {4, 12, 5, 13, 6, 14, 7, 15}); + #endif + } + + __extension__ extern __inline float32x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vuzp2q_f32 (float32x4_t __a, float32x4_t __b) ++vzip2q_f32 (float32x4_t __a, float32x4_t __b) + { + #ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, (uint32x4_t) {4, 6, 0, 2}); ++ return __builtin_shuffle (__a, __b, (uint32x4_t) {4, 0, 5, 1}); + #else +- return __builtin_shuffle (__a, __b, (uint32x4_t) {1, 3, 5, 7}); ++ return __builtin_shuffle (__a, __b, (uint32x4_t) {2, 6, 3, 7}); + #endif + } + + __extension__ extern __inline float64x2_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vuzp2q_f64 (float64x2_t __a, float64x2_t __b) ++vzip2q_f64 (float64x2_t __a, float64x2_t __b) + { + #ifdef __AARCH64EB__ + return __builtin_shuffle (__a, __b, (uint64x2_t) {2, 0}); +@@ -30057,66 +32347,68 @@ vuzp2q_f64 (float64x2_t __a, float64x2_t __b) + + __extension__ extern __inline poly8x16_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vuzp2q_p8 (poly8x16_t __a, poly8x16_t __b) ++vzip2q_p8 (poly8x16_t __a, poly8x16_t __b) + { + #ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, +- (uint8x16_t) {16, 18, 20, 22, 24, 26, 28, 30, 0, 2, 4, 6, 8, 10, 12, 14}); ++ return __builtin_shuffle (__a, __b, (uint8x16_t) ++ {16, 0, 17, 1, 18, 2, 19, 3, 20, 4, 21, 5, 22, 6, 23, 7}); + #else +- return __builtin_shuffle (__a, __b, +- (uint8x16_t) {1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31}); ++ return __builtin_shuffle (__a, __b, (uint8x16_t) ++ {8, 24, 9, 25, 10, 26, 11, 27, 12, 28, 13, 29, 14, 30, 15, 31}); + #endif + } + + __extension__ extern __inline poly16x8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vuzp2q_p16 (poly16x8_t __a, poly16x8_t __b) ++vzip2q_p16 (poly16x8_t __a, poly16x8_t __b) + { + #ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, (uint16x8_t) {8, 10, 12, 14, 0, 2, 4, 6}); ++ return __builtin_shuffle (__a, __b, (uint16x8_t) {8, 0, 9, 1, 10, 2, 11, 3}); + #else +- return __builtin_shuffle (__a, __b, (uint16x8_t) {1, 3, 5, 7, 9, 11, 13, 15}); ++ return __builtin_shuffle (__a, __b, (uint16x8_t) ++ {4, 12, 5, 13, 6, 14, 7, 15}); + #endif + } + + __extension__ extern __inline int8x16_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vuzp2q_s8 (int8x16_t __a, int8x16_t __b) ++vzip2q_s8 (int8x16_t __a, int8x16_t __b) + { + #ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, +- (uint8x16_t) {16, 18, 20, 22, 24, 26, 28, 30, 0, 2, 4, 6, 8, 10, 12, 14}); ++ return __builtin_shuffle (__a, __b, (uint8x16_t) ++ {16, 0, 17, 1, 18, 2, 19, 3, 20, 4, 21, 5, 22, 6, 23, 7}); + #else +- return __builtin_shuffle (__a, __b, +- (uint8x16_t) {1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31}); ++ return __builtin_shuffle (__a, __b, (uint8x16_t) ++ {8, 24, 9, 25, 10, 26, 11, 27, 12, 28, 13, 29, 14, 30, 15, 31}); + #endif + } + + __extension__ extern __inline int16x8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vuzp2q_s16 (int16x8_t __a, int16x8_t __b) ++vzip2q_s16 (int16x8_t __a, int16x8_t __b) + { + #ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, (uint16x8_t) {8, 10, 12, 14, 0, 2, 4, 6}); ++ return __builtin_shuffle (__a, __b, (uint16x8_t) {8, 0, 9, 1, 10, 2, 11, 3}); + #else +- return __builtin_shuffle (__a, __b, (uint16x8_t) {1, 3, 5, 7, 9, 11, 13, 15}); ++ return __builtin_shuffle (__a, __b, (uint16x8_t) ++ {4, 12, 5, 13, 6, 14, 7, 15}); + #endif + } + + __extension__ extern __inline int32x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vuzp2q_s32 (int32x4_t __a, int32x4_t __b) ++vzip2q_s32 (int32x4_t __a, int32x4_t __b) + { + #ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, (uint32x4_t) {4, 6, 0, 2}); ++ return __builtin_shuffle (__a, __b, (uint32x4_t) {4, 0, 5, 1}); + #else +- return __builtin_shuffle (__a, __b, (uint32x4_t) {1, 3, 5, 7}); ++ return __builtin_shuffle (__a, __b, (uint32x4_t) {2, 6, 3, 7}); + #endif + } + + __extension__ extern __inline int64x2_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vuzp2q_s64 (int64x2_t __a, int64x2_t __b) ++vzip2q_s64 (int64x2_t __a, int64x2_t __b) + { + #ifdef __AARCH64EB__ + return __builtin_shuffle (__a, __b, (uint64x2_t) {2, 0}); +@@ -30127,42 +32419,43 @@ vuzp2q_s64 (int64x2_t __a, int64x2_t __b) + + __extension__ extern __inline uint8x16_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vuzp2q_u8 (uint8x16_t __a, uint8x16_t __b) ++vzip2q_u8 (uint8x16_t __a, uint8x16_t __b) + { + #ifdef __AARCH64EB__ + return __builtin_shuffle (__a, __b, (uint8x16_t) +- {16, 18, 20, 22, 24, 26, 28, 30, 0, 2, 4, 6, 8, 10, 12, 14}); ++ {16, 0, 17, 1, 18, 2, 19, 3, 20, 4, 21, 5, 22, 6, 23, 7}); + #else + return __builtin_shuffle (__a, __b, (uint8x16_t) +- {1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31}); ++ {8, 24, 9, 25, 10, 26, 11, 27, 12, 28, 13, 29, 14, 30, 15, 31}); + #endif + } + + __extension__ extern __inline uint16x8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vuzp2q_u16 (uint16x8_t __a, uint16x8_t __b) ++vzip2q_u16 (uint16x8_t __a, uint16x8_t __b) + { + #ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, (uint16x8_t) {8, 10, 12, 14, 0, 2, 4, 6}); ++ return __builtin_shuffle (__a, __b, (uint16x8_t) {8, 0, 9, 1, 10, 2, 11, 3}); + #else +- return __builtin_shuffle (__a, __b, (uint16x8_t) {1, 3, 5, 7, 9, 11, 13, 15}); ++ return __builtin_shuffle (__a, __b, (uint16x8_t) ++ {4, 12, 5, 13, 6, 14, 7, 15}); + #endif + } + + __extension__ extern __inline uint32x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vuzp2q_u32 (uint32x4_t __a, uint32x4_t __b) ++vzip2q_u32 (uint32x4_t __a, uint32x4_t __b) + { + #ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, (uint32x4_t) {4, 6, 0, 2}); ++ return __builtin_shuffle (__a, __b, (uint32x4_t) {4, 0, 5, 1}); + #else +- return __builtin_shuffle (__a, __b, (uint32x4_t) {1, 3, 5, 7}); ++ return __builtin_shuffle (__a, __b, (uint32x4_t) {2, 6, 3, 7}); + #endif + } + + __extension__ extern __inline uint64x2_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vuzp2q_u64 (uint64x2_t __a, uint64x2_t __b) ++vzip2q_u64 (uint64x2_t __a, uint64x2_t __b) + { + #ifdef __AARCH64EB__ + return __builtin_shuffle (__a, __b, (uint64x2_t) {2, 0}); +@@ -30171,1930 +32464,1985 @@ vuzp2q_u64 (uint64x2_t __a, uint64x2_t __b) + #endif + } + +-__INTERLEAVE_LIST (uzp) +- +-/* vzip */ +- +-__extension__ extern __inline float16x4_t ++__extension__ extern __inline poly64x2_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vzip1_f16 (float16x4_t __a, float16x4_t __b) ++vzip2q_p64 (poly64x2_t __a, poly64x2_t __b) + { + #ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, (uint16x4_t) {6, 2, 7, 3}); ++ return __builtin_shuffle (__a, __b, (poly64x2_t) {2, 0}); + #else +- return __builtin_shuffle (__a, __b, (uint16x4_t) {0, 4, 1, 5}); ++ return __builtin_shuffle (__a, __b, (poly64x2_t) {1, 3}); + #endif + } + +-__extension__ extern __inline float32x2_t ++__INTERLEAVE_LIST (zip) ++ ++#undef __INTERLEAVE_LIST ++#undef __DEFINTERLEAVE ++ ++/* End of optimal implementations in approved order. */ ++ ++#pragma GCC pop_options ++ ++/* ARMv8.2-A FP16 intrinsics. */ ++ ++#include "arm_fp16.h" ++ ++#pragma GCC push_options ++#pragma GCC target ("arch=armv8.2-a+fp16") ++ ++/* ARMv8.2-A FP16 one operand vector intrinsics. */ ++ ++__extension__ extern __inline float16x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vzip1_f32 (float32x2_t __a, float32x2_t __b) ++vabs_f16 (float16x4_t __a) + { +-#ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, (uint32x2_t) {3, 1}); +-#else +- return __builtin_shuffle (__a, __b, (uint32x2_t) {0, 2}); +-#endif ++ return __builtin_aarch64_absv4hf (__a); ++} ++ ++__extension__ extern __inline float16x8_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vabsq_f16 (float16x8_t __a) ++{ ++ return __builtin_aarch64_absv8hf (__a); ++} ++ ++__extension__ extern __inline uint16x4_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vceqz_f16 (float16x4_t __a) ++{ ++ return __builtin_aarch64_cmeqv4hf_uss (__a, vdup_n_f16 (0.0f)); ++} ++ ++__extension__ extern __inline uint16x8_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vceqzq_f16 (float16x8_t __a) ++{ ++ return __builtin_aarch64_cmeqv8hf_uss (__a, vdupq_n_f16 (0.0f)); ++} ++ ++__extension__ extern __inline uint16x4_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vcgez_f16 (float16x4_t __a) ++{ ++ return __builtin_aarch64_cmgev4hf_uss (__a, vdup_n_f16 (0.0f)); ++} ++ ++__extension__ extern __inline uint16x8_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vcgezq_f16 (float16x8_t __a) ++{ ++ return __builtin_aarch64_cmgev8hf_uss (__a, vdupq_n_f16 (0.0f)); ++} ++ ++__extension__ extern __inline uint16x4_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vcgtz_f16 (float16x4_t __a) ++{ ++ return __builtin_aarch64_cmgtv4hf_uss (__a, vdup_n_f16 (0.0f)); ++} ++ ++__extension__ extern __inline uint16x8_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vcgtzq_f16 (float16x8_t __a) ++{ ++ return __builtin_aarch64_cmgtv8hf_uss (__a, vdupq_n_f16 (0.0f)); ++} ++ ++__extension__ extern __inline uint16x4_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vclez_f16 (float16x4_t __a) ++{ ++ return __builtin_aarch64_cmlev4hf_uss (__a, vdup_n_f16 (0.0f)); ++} ++ ++__extension__ extern __inline uint16x8_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vclezq_f16 (float16x8_t __a) ++{ ++ return __builtin_aarch64_cmlev8hf_uss (__a, vdupq_n_f16 (0.0f)); ++} ++ ++__extension__ extern __inline uint16x4_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vcltz_f16 (float16x4_t __a) ++{ ++ return __builtin_aarch64_cmltv4hf_uss (__a, vdup_n_f16 (0.0f)); ++} ++ ++__extension__ extern __inline uint16x8_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vcltzq_f16 (float16x8_t __a) ++{ ++ return __builtin_aarch64_cmltv8hf_uss (__a, vdupq_n_f16 (0.0f)); ++} ++ ++__extension__ extern __inline float16x4_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vcvt_f16_s16 (int16x4_t __a) ++{ ++ return __builtin_aarch64_floatv4hiv4hf (__a); ++} ++ ++__extension__ extern __inline float16x8_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vcvtq_f16_s16 (int16x8_t __a) ++{ ++ return __builtin_aarch64_floatv8hiv8hf (__a); ++} ++ ++__extension__ extern __inline float16x4_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vcvt_f16_u16 (uint16x4_t __a) ++{ ++ return __builtin_aarch64_floatunsv4hiv4hf ((int16x4_t) __a); ++} ++ ++__extension__ extern __inline float16x8_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vcvtq_f16_u16 (uint16x8_t __a) ++{ ++ return __builtin_aarch64_floatunsv8hiv8hf ((int16x8_t) __a); ++} ++ ++__extension__ extern __inline int16x4_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vcvt_s16_f16 (float16x4_t __a) ++{ ++ return __builtin_aarch64_lbtruncv4hfv4hi (__a); ++} ++ ++__extension__ extern __inline int16x8_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vcvtq_s16_f16 (float16x8_t __a) ++{ ++ return __builtin_aarch64_lbtruncv8hfv8hi (__a); ++} ++ ++__extension__ extern __inline uint16x4_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vcvt_u16_f16 (float16x4_t __a) ++{ ++ return __builtin_aarch64_lbtruncuv4hfv4hi_us (__a); ++} ++ ++__extension__ extern __inline uint16x8_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vcvtq_u16_f16 (float16x8_t __a) ++{ ++ return __builtin_aarch64_lbtruncuv8hfv8hi_us (__a); ++} ++ ++__extension__ extern __inline int16x4_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vcvta_s16_f16 (float16x4_t __a) ++{ ++ return __builtin_aarch64_lroundv4hfv4hi (__a); ++} ++ ++__extension__ extern __inline int16x8_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vcvtaq_s16_f16 (float16x8_t __a) ++{ ++ return __builtin_aarch64_lroundv8hfv8hi (__a); ++} ++ ++__extension__ extern __inline uint16x4_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vcvta_u16_f16 (float16x4_t __a) ++{ ++ return __builtin_aarch64_lrounduv4hfv4hi_us (__a); + } + +-__extension__ extern __inline poly8x8_t ++__extension__ extern __inline uint16x8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vzip1_p8 (poly8x8_t __a, poly8x8_t __b) ++vcvtaq_u16_f16 (float16x8_t __a) + { +-#ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, (uint8x8_t) {12, 4, 13, 5, 14, 6, 15, 7}); +-#else +- return __builtin_shuffle (__a, __b, (uint8x8_t) {0, 8, 1, 9, 2, 10, 3, 11}); +-#endif ++ return __builtin_aarch64_lrounduv8hfv8hi_us (__a); + } + +-__extension__ extern __inline poly16x4_t ++__extension__ extern __inline int16x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vzip1_p16 (poly16x4_t __a, poly16x4_t __b) ++vcvtm_s16_f16 (float16x4_t __a) + { +-#ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, (uint16x4_t) {6, 2, 7, 3}); +-#else +- return __builtin_shuffle (__a, __b, (uint16x4_t) {0, 4, 1, 5}); +-#endif ++ return __builtin_aarch64_lfloorv4hfv4hi (__a); + } + +-__extension__ extern __inline int8x8_t ++__extension__ extern __inline int16x8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vzip1_s8 (int8x8_t __a, int8x8_t __b) ++vcvtmq_s16_f16 (float16x8_t __a) + { +-#ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, (uint8x8_t) {12, 4, 13, 5, 14, 6, 15, 7}); +-#else +- return __builtin_shuffle (__a, __b, (uint8x8_t) {0, 8, 1, 9, 2, 10, 3, 11}); +-#endif ++ return __builtin_aarch64_lfloorv8hfv8hi (__a); + } + +-__extension__ extern __inline int16x4_t ++__extension__ extern __inline uint16x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vzip1_s16 (int16x4_t __a, int16x4_t __b) ++vcvtm_u16_f16 (float16x4_t __a) + { +-#ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, (uint16x4_t) {6, 2, 7, 3}); +-#else +- return __builtin_shuffle (__a, __b, (uint16x4_t) {0, 4, 1, 5}); +-#endif ++ return __builtin_aarch64_lflooruv4hfv4hi_us (__a); + } + +-__extension__ extern __inline int32x2_t ++__extension__ extern __inline uint16x8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vzip1_s32 (int32x2_t __a, int32x2_t __b) ++vcvtmq_u16_f16 (float16x8_t __a) + { +-#ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, (uint32x2_t) {3, 1}); +-#else +- return __builtin_shuffle (__a, __b, (uint32x2_t) {0, 2}); +-#endif ++ return __builtin_aarch64_lflooruv8hfv8hi_us (__a); + } + +-__extension__ extern __inline uint8x8_t ++__extension__ extern __inline int16x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vzip1_u8 (uint8x8_t __a, uint8x8_t __b) ++vcvtn_s16_f16 (float16x4_t __a) + { +-#ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, (uint8x8_t) {12, 4, 13, 5, 14, 6, 15, 7}); +-#else +- return __builtin_shuffle (__a, __b, (uint8x8_t) {0, 8, 1, 9, 2, 10, 3, 11}); +-#endif ++ return __builtin_aarch64_lfrintnv4hfv4hi (__a); + } + +-__extension__ extern __inline uint16x4_t ++__extension__ extern __inline int16x8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vzip1_u16 (uint16x4_t __a, uint16x4_t __b) ++vcvtnq_s16_f16 (float16x8_t __a) + { +-#ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, (uint16x4_t) {6, 2, 7, 3}); +-#else +- return __builtin_shuffle (__a, __b, (uint16x4_t) {0, 4, 1, 5}); +-#endif ++ return __builtin_aarch64_lfrintnv8hfv8hi (__a); + } + +-__extension__ extern __inline uint32x2_t ++__extension__ extern __inline uint16x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vzip1_u32 (uint32x2_t __a, uint32x2_t __b) ++vcvtn_u16_f16 (float16x4_t __a) + { +-#ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, (uint32x2_t) {3, 1}); +-#else +- return __builtin_shuffle (__a, __b, (uint32x2_t) {0, 2}); +-#endif ++ return __builtin_aarch64_lfrintnuv4hfv4hi_us (__a); + } + +-__extension__ extern __inline float16x8_t ++__extension__ extern __inline uint16x8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vzip1q_f16 (float16x8_t __a, float16x8_t __b) ++vcvtnq_u16_f16 (float16x8_t __a) + { +-#ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, +- (uint16x8_t) {12, 4, 13, 5, 14, 6, 15, 7}); +-#else +- return __builtin_shuffle (__a, __b, +- (uint16x8_t) {0, 8, 1, 9, 2, 10, 3, 11}); +-#endif ++ return __builtin_aarch64_lfrintnuv8hfv8hi_us (__a); + } + +-__extension__ extern __inline float32x4_t ++__extension__ extern __inline int16x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vzip1q_f32 (float32x4_t __a, float32x4_t __b) ++vcvtp_s16_f16 (float16x4_t __a) + { +-#ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, (uint32x4_t) {6, 2, 7, 3}); +-#else +- return __builtin_shuffle (__a, __b, (uint32x4_t) {0, 4, 1, 5}); +-#endif ++ return __builtin_aarch64_lceilv4hfv4hi (__a); + } + +-__extension__ extern __inline float64x2_t ++__extension__ extern __inline int16x8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vzip1q_f64 (float64x2_t __a, float64x2_t __b) ++vcvtpq_s16_f16 (float16x8_t __a) + { +-#ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, (uint64x2_t) {3, 1}); +-#else +- return __builtin_shuffle (__a, __b, (uint64x2_t) {0, 2}); +-#endif ++ return __builtin_aarch64_lceilv8hfv8hi (__a); + } + +-__extension__ extern __inline poly8x16_t ++__extension__ extern __inline uint16x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vzip1q_p8 (poly8x16_t __a, poly8x16_t __b) ++vcvtp_u16_f16 (float16x4_t __a) + { +-#ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, (uint8x16_t) +- {24, 8, 25, 9, 26, 10, 27, 11, 28, 12, 29, 13, 30, 14, 31, 15}); +-#else +- return __builtin_shuffle (__a, __b, (uint8x16_t) +- {0, 16, 1, 17, 2, 18, 3, 19, 4, 20, 5, 21, 6, 22, 7, 23}); +-#endif ++ return __builtin_aarch64_lceiluv4hfv4hi_us (__a); + } + +-__extension__ extern __inline poly16x8_t ++__extension__ extern __inline uint16x8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vzip1q_p16 (poly16x8_t __a, poly16x8_t __b) ++vcvtpq_u16_f16 (float16x8_t __a) + { +-#ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, (uint16x8_t) +- {12, 4, 13, 5, 14, 6, 15, 7}); +-#else +- return __builtin_shuffle (__a, __b, (uint16x8_t) {0, 8, 1, 9, 2, 10, 3, 11}); +-#endif ++ return __builtin_aarch64_lceiluv8hfv8hi_us (__a); + } + +-__extension__ extern __inline int8x16_t ++__extension__ extern __inline float16x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vzip1q_s8 (int8x16_t __a, int8x16_t __b) ++vneg_f16 (float16x4_t __a) + { +-#ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, (uint8x16_t) +- {24, 8, 25, 9, 26, 10, 27, 11, 28, 12, 29, 13, 30, 14, 31, 15}); +-#else +- return __builtin_shuffle (__a, __b, (uint8x16_t) +- {0, 16, 1, 17, 2, 18, 3, 19, 4, 20, 5, 21, 6, 22, 7, 23}); +-#endif ++ return -__a; + } + +-__extension__ extern __inline int16x8_t ++__extension__ extern __inline float16x8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vzip1q_s16 (int16x8_t __a, int16x8_t __b) ++vnegq_f16 (float16x8_t __a) + { +-#ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, (uint16x8_t) +- {12, 4, 13, 5, 14, 6, 15, 7}); +-#else +- return __builtin_shuffle (__a, __b, (uint16x8_t) {0, 8, 1, 9, 2, 10, 3, 11}); +-#endif ++ return -__a; + } + +-__extension__ extern __inline int32x4_t ++__extension__ extern __inline float16x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vzip1q_s32 (int32x4_t __a, int32x4_t __b) ++vrecpe_f16 (float16x4_t __a) + { +-#ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, (uint32x4_t) {6, 2, 7, 3}); +-#else +- return __builtin_shuffle (__a, __b, (uint32x4_t) {0, 4, 1, 5}); +-#endif ++ return __builtin_aarch64_frecpev4hf (__a); + } + +-__extension__ extern __inline int64x2_t ++__extension__ extern __inline float16x8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vzip1q_s64 (int64x2_t __a, int64x2_t __b) ++vrecpeq_f16 (float16x8_t __a) + { +-#ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, (uint64x2_t) {3, 1}); +-#else +- return __builtin_shuffle (__a, __b, (uint64x2_t) {0, 2}); +-#endif ++ return __builtin_aarch64_frecpev8hf (__a); + } + +-__extension__ extern __inline uint8x16_t ++__extension__ extern __inline float16x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vzip1q_u8 (uint8x16_t __a, uint8x16_t __b) ++vrnd_f16 (float16x4_t __a) + { +-#ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, (uint8x16_t) +- {24, 8, 25, 9, 26, 10, 27, 11, 28, 12, 29, 13, 30, 14, 31, 15}); +-#else +- return __builtin_shuffle (__a, __b, (uint8x16_t) +- {0, 16, 1, 17, 2, 18, 3, 19, 4, 20, 5, 21, 6, 22, 7, 23}); +-#endif ++ return __builtin_aarch64_btruncv4hf (__a); + } + +-__extension__ extern __inline uint16x8_t ++__extension__ extern __inline float16x8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vzip1q_u16 (uint16x8_t __a, uint16x8_t __b) ++vrndq_f16 (float16x8_t __a) + { +-#ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, (uint16x8_t) +- {12, 4, 13, 5, 14, 6, 15, 7}); +-#else +- return __builtin_shuffle (__a, __b, (uint16x8_t) {0, 8, 1, 9, 2, 10, 3, 11}); +-#endif ++ return __builtin_aarch64_btruncv8hf (__a); + } + +-__extension__ extern __inline uint32x4_t ++__extension__ extern __inline float16x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vzip1q_u32 (uint32x4_t __a, uint32x4_t __b) ++vrnda_f16 (float16x4_t __a) + { +-#ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, (uint32x4_t) {6, 2, 7, 3}); +-#else +- return __builtin_shuffle (__a, __b, (uint32x4_t) {0, 4, 1, 5}); +-#endif ++ return __builtin_aarch64_roundv4hf (__a); + } + +-__extension__ extern __inline uint64x2_t ++__extension__ extern __inline float16x8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vzip1q_u64 (uint64x2_t __a, uint64x2_t __b) ++vrndaq_f16 (float16x8_t __a) + { +-#ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, (uint64x2_t) {3, 1}); +-#else +- return __builtin_shuffle (__a, __b, (uint64x2_t) {0, 2}); +-#endif ++ return __builtin_aarch64_roundv8hf (__a); + } + + __extension__ extern __inline float16x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vzip2_f16 (float16x4_t __a, float16x4_t __b) ++vrndi_f16 (float16x4_t __a) + { +-#ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, (uint16x4_t) {4, 0, 5, 1}); +-#else +- return __builtin_shuffle (__a, __b, (uint16x4_t) {2, 6, 3, 7}); +-#endif ++ return __builtin_aarch64_nearbyintv4hf (__a); + } + +-__extension__ extern __inline float32x2_t ++__extension__ extern __inline float16x8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vzip2_f32 (float32x2_t __a, float32x2_t __b) ++vrndiq_f16 (float16x8_t __a) + { +-#ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, (uint32x2_t) {2, 0}); +-#else +- return __builtin_shuffle (__a, __b, (uint32x2_t) {1, 3}); +-#endif ++ return __builtin_aarch64_nearbyintv8hf (__a); + } + +-__extension__ extern __inline poly8x8_t ++__extension__ extern __inline float16x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vzip2_p8 (poly8x8_t __a, poly8x8_t __b) ++vrndm_f16 (float16x4_t __a) + { +-#ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, (uint8x8_t) {8, 0, 9, 1, 10, 2, 11, 3}); +-#else +- return __builtin_shuffle (__a, __b, (uint8x8_t) {4, 12, 5, 13, 6, 14, 7, 15}); +-#endif ++ return __builtin_aarch64_floorv4hf (__a); ++} ++ ++__extension__ extern __inline float16x8_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vrndmq_f16 (float16x8_t __a) ++{ ++ return __builtin_aarch64_floorv8hf (__a); + } + +-__extension__ extern __inline poly16x4_t ++__extension__ extern __inline float16x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vzip2_p16 (poly16x4_t __a, poly16x4_t __b) ++vrndn_f16 (float16x4_t __a) + { +-#ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, (uint16x4_t) {4, 0, 5, 1}); +-#else +- return __builtin_shuffle (__a, __b, (uint16x4_t) {2, 6, 3, 7}); +-#endif ++ return __builtin_aarch64_frintnv4hf (__a); + } + +-__extension__ extern __inline int8x8_t ++__extension__ extern __inline float16x8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vzip2_s8 (int8x8_t __a, int8x8_t __b) ++vrndnq_f16 (float16x8_t __a) + { +-#ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, (uint8x8_t) {8, 0, 9, 1, 10, 2, 11, 3}); +-#else +- return __builtin_shuffle (__a, __b, (uint8x8_t) {4, 12, 5, 13, 6, 14, 7, 15}); +-#endif ++ return __builtin_aarch64_frintnv8hf (__a); + } + +-__extension__ extern __inline int16x4_t ++__extension__ extern __inline float16x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vzip2_s16 (int16x4_t __a, int16x4_t __b) ++vrndp_f16 (float16x4_t __a) + { +-#ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, (uint16x4_t) {4, 0, 5, 1}); +-#else +- return __builtin_shuffle (__a, __b, (uint16x4_t) {2, 6, 3, 7}); +-#endif ++ return __builtin_aarch64_ceilv4hf (__a); + } + +-__extension__ extern __inline int32x2_t ++__extension__ extern __inline float16x8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vzip2_s32 (int32x2_t __a, int32x2_t __b) ++vrndpq_f16 (float16x8_t __a) + { +-#ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, (uint32x2_t) {2, 0}); +-#else +- return __builtin_shuffle (__a, __b, (uint32x2_t) {1, 3}); +-#endif ++ return __builtin_aarch64_ceilv8hf (__a); + } + +-__extension__ extern __inline uint8x8_t ++__extension__ extern __inline float16x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vzip2_u8 (uint8x8_t __a, uint8x8_t __b) ++vrndx_f16 (float16x4_t __a) + { +-#ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, (uint8x8_t) {8, 0, 9, 1, 10, 2, 11, 3}); +-#else +- return __builtin_shuffle (__a, __b, (uint8x8_t) {4, 12, 5, 13, 6, 14, 7, 15}); +-#endif ++ return __builtin_aarch64_rintv4hf (__a); + } + +-__extension__ extern __inline uint16x4_t ++__extension__ extern __inline float16x8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vzip2_u16 (uint16x4_t __a, uint16x4_t __b) ++vrndxq_f16 (float16x8_t __a) + { +-#ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, (uint16x4_t) {4, 0, 5, 1}); +-#else +- return __builtin_shuffle (__a, __b, (uint16x4_t) {2, 6, 3, 7}); +-#endif ++ return __builtin_aarch64_rintv8hf (__a); + } + +-__extension__ extern __inline uint32x2_t ++__extension__ extern __inline float16x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vzip2_u32 (uint32x2_t __a, uint32x2_t __b) ++vrsqrte_f16 (float16x4_t a) + { +-#ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, (uint32x2_t) {2, 0}); +-#else +- return __builtin_shuffle (__a, __b, (uint32x2_t) {1, 3}); +-#endif ++ return __builtin_aarch64_rsqrtev4hf (a); + } + + __extension__ extern __inline float16x8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vzip2q_f16 (float16x8_t __a, float16x8_t __b) ++vrsqrteq_f16 (float16x8_t a) + { +-#ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, +- (uint16x8_t) {8, 0, 9, 1, 10, 2, 11, 3}); +-#else +- return __builtin_shuffle (__a, __b, +- (uint16x8_t) {4, 12, 5, 13, 6, 14, 7, 15}); +-#endif ++ return __builtin_aarch64_rsqrtev8hf (a); + } + +-__extension__ extern __inline float32x4_t ++__extension__ extern __inline float16x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vzip2q_f32 (float32x4_t __a, float32x4_t __b) ++vsqrt_f16 (float16x4_t a) + { +-#ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, (uint32x4_t) {4, 0, 5, 1}); +-#else +- return __builtin_shuffle (__a, __b, (uint32x4_t) {2, 6, 3, 7}); +-#endif ++ return __builtin_aarch64_sqrtv4hf (a); + } + +-__extension__ extern __inline float64x2_t ++__extension__ extern __inline float16x8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vzip2q_f64 (float64x2_t __a, float64x2_t __b) ++vsqrtq_f16 (float16x8_t a) + { +-#ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, (uint64x2_t) {2, 0}); +-#else +- return __builtin_shuffle (__a, __b, (uint64x2_t) {1, 3}); +-#endif ++ return __builtin_aarch64_sqrtv8hf (a); + } + +-__extension__ extern __inline poly8x16_t ++/* ARMv8.2-A FP16 two operands vector intrinsics. */ ++ ++__extension__ extern __inline float16x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vzip2q_p8 (poly8x16_t __a, poly8x16_t __b) ++vadd_f16 (float16x4_t __a, float16x4_t __b) + { +-#ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, (uint8x16_t) +- {16, 0, 17, 1, 18, 2, 19, 3, 20, 4, 21, 5, 22, 6, 23, 7}); +-#else +- return __builtin_shuffle (__a, __b, (uint8x16_t) +- {8, 24, 9, 25, 10, 26, 11, 27, 12, 28, 13, 29, 14, 30, 15, 31}); +-#endif ++ return __a + __b; + } + +-__extension__ extern __inline poly16x8_t ++__extension__ extern __inline float16x8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vzip2q_p16 (poly16x8_t __a, poly16x8_t __b) ++vaddq_f16 (float16x8_t __a, float16x8_t __b) + { +-#ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, (uint16x8_t) {8, 0, 9, 1, 10, 2, 11, 3}); +-#else +- return __builtin_shuffle (__a, __b, (uint16x8_t) +- {4, 12, 5, 13, 6, 14, 7, 15}); +-#endif ++ return __a + __b; + } + +-__extension__ extern __inline int8x16_t ++__extension__ extern __inline float16x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vzip2q_s8 (int8x16_t __a, int8x16_t __b) ++vabd_f16 (float16x4_t a, float16x4_t b) + { +-#ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, (uint8x16_t) +- {16, 0, 17, 1, 18, 2, 19, 3, 20, 4, 21, 5, 22, 6, 23, 7}); +-#else +- return __builtin_shuffle (__a, __b, (uint8x16_t) +- {8, 24, 9, 25, 10, 26, 11, 27, 12, 28, 13, 29, 14, 30, 15, 31}); +-#endif ++ return __builtin_aarch64_fabdv4hf (a, b); + } + +-__extension__ extern __inline int16x8_t ++__extension__ extern __inline float16x8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vzip2q_s16 (int16x8_t __a, int16x8_t __b) ++vabdq_f16 (float16x8_t a, float16x8_t b) + { +-#ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, (uint16x8_t) {8, 0, 9, 1, 10, 2, 11, 3}); +-#else +- return __builtin_shuffle (__a, __b, (uint16x8_t) +- {4, 12, 5, 13, 6, 14, 7, 15}); +-#endif ++ return __builtin_aarch64_fabdv8hf (a, b); + } + +-__extension__ extern __inline int32x4_t ++__extension__ extern __inline uint16x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vzip2q_s32 (int32x4_t __a, int32x4_t __b) ++vcage_f16 (float16x4_t __a, float16x4_t __b) + { +-#ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, (uint32x4_t) {4, 0, 5, 1}); +-#else +- return __builtin_shuffle (__a, __b, (uint32x4_t) {2, 6, 3, 7}); +-#endif ++ return __builtin_aarch64_facgev4hf_uss (__a, __b); + } + +-__extension__ extern __inline int64x2_t ++__extension__ extern __inline uint16x8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vzip2q_s64 (int64x2_t __a, int64x2_t __b) ++vcageq_f16 (float16x8_t __a, float16x8_t __b) + { +-#ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, (uint64x2_t) {2, 0}); +-#else +- return __builtin_shuffle (__a, __b, (uint64x2_t) {1, 3}); +-#endif ++ return __builtin_aarch64_facgev8hf_uss (__a, __b); + } + +-__extension__ extern __inline uint8x16_t ++__extension__ extern __inline uint16x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vzip2q_u8 (uint8x16_t __a, uint8x16_t __b) ++vcagt_f16 (float16x4_t __a, float16x4_t __b) + { +-#ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, (uint8x16_t) +- {16, 0, 17, 1, 18, 2, 19, 3, 20, 4, 21, 5, 22, 6, 23, 7}); +-#else +- return __builtin_shuffle (__a, __b, (uint8x16_t) +- {8, 24, 9, 25, 10, 26, 11, 27, 12, 28, 13, 29, 14, 30, 15, 31}); +-#endif ++ return __builtin_aarch64_facgtv4hf_uss (__a, __b); + } + + __extension__ extern __inline uint16x8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vzip2q_u16 (uint16x8_t __a, uint16x8_t __b) ++vcagtq_f16 (float16x8_t __a, float16x8_t __b) + { +-#ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, (uint16x8_t) {8, 0, 9, 1, 10, 2, 11, 3}); +-#else +- return __builtin_shuffle (__a, __b, (uint16x8_t) +- {4, 12, 5, 13, 6, 14, 7, 15}); +-#endif ++ return __builtin_aarch64_facgtv8hf_uss (__a, __b); + } + +-__extension__ extern __inline uint32x4_t ++__extension__ extern __inline uint16x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vzip2q_u32 (uint32x4_t __a, uint32x4_t __b) ++vcale_f16 (float16x4_t __a, float16x4_t __b) + { +-#ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, (uint32x4_t) {4, 0, 5, 1}); +-#else +- return __builtin_shuffle (__a, __b, (uint32x4_t) {2, 6, 3, 7}); +-#endif ++ return __builtin_aarch64_faclev4hf_uss (__a, __b); + } + +-__extension__ extern __inline uint64x2_t ++__extension__ extern __inline uint16x8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vzip2q_u64 (uint64x2_t __a, uint64x2_t __b) ++vcaleq_f16 (float16x8_t __a, float16x8_t __b) + { +-#ifdef __AARCH64EB__ +- return __builtin_shuffle (__a, __b, (uint64x2_t) {2, 0}); +-#else +- return __builtin_shuffle (__a, __b, (uint64x2_t) {1, 3}); +-#endif ++ return __builtin_aarch64_faclev8hf_uss (__a, __b); + } + +-__INTERLEAVE_LIST (zip) +- +-#undef __INTERLEAVE_LIST +-#undef __DEFINTERLEAVE +- +-/* End of optimal implementations in approved order. */ +- +-#pragma GCC pop_options +- +-/* ARMv8.2-A FP16 intrinsics. */ +- +-#include "arm_fp16.h" +- +-#pragma GCC push_options +-#pragma GCC target ("arch=armv8.2-a+fp16") +- +-/* ARMv8.2-A FP16 one operand vector intrinsics. */ +- +-__extension__ extern __inline float16x4_t ++__extension__ extern __inline uint16x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vabs_f16 (float16x4_t __a) ++vcalt_f16 (float16x4_t __a, float16x4_t __b) + { +- return __builtin_aarch64_absv4hf (__a); ++ return __builtin_aarch64_facltv4hf_uss (__a, __b); + } + +-__extension__ extern __inline float16x8_t ++__extension__ extern __inline uint16x8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vabsq_f16 (float16x8_t __a) ++vcaltq_f16 (float16x8_t __a, float16x8_t __b) + { +- return __builtin_aarch64_absv8hf (__a); ++ return __builtin_aarch64_facltv8hf_uss (__a, __b); + } + + __extension__ extern __inline uint16x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vceqz_f16 (float16x4_t __a) ++vceq_f16 (float16x4_t __a, float16x4_t __b) + { +- return __builtin_aarch64_cmeqv4hf_uss (__a, vdup_n_f16 (0.0f)); ++ return __builtin_aarch64_cmeqv4hf_uss (__a, __b); + } + + __extension__ extern __inline uint16x8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vceqzq_f16 (float16x8_t __a) ++vceqq_f16 (float16x8_t __a, float16x8_t __b) + { +- return __builtin_aarch64_cmeqv8hf_uss (__a, vdupq_n_f16 (0.0f)); ++ return __builtin_aarch64_cmeqv8hf_uss (__a, __b); + } + + __extension__ extern __inline uint16x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vcgez_f16 (float16x4_t __a) ++vcge_f16 (float16x4_t __a, float16x4_t __b) + { +- return __builtin_aarch64_cmgev4hf_uss (__a, vdup_n_f16 (0.0f)); ++ return __builtin_aarch64_cmgev4hf_uss (__a, __b); + } + + __extension__ extern __inline uint16x8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vcgezq_f16 (float16x8_t __a) ++vcgeq_f16 (float16x8_t __a, float16x8_t __b) + { +- return __builtin_aarch64_cmgev8hf_uss (__a, vdupq_n_f16 (0.0f)); ++ return __builtin_aarch64_cmgev8hf_uss (__a, __b); + } + + __extension__ extern __inline uint16x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vcgtz_f16 (float16x4_t __a) ++vcgt_f16 (float16x4_t __a, float16x4_t __b) + { +- return __builtin_aarch64_cmgtv4hf_uss (__a, vdup_n_f16 (0.0f)); ++ return __builtin_aarch64_cmgtv4hf_uss (__a, __b); + } + + __extension__ extern __inline uint16x8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vcgtzq_f16 (float16x8_t __a) ++vcgtq_f16 (float16x8_t __a, float16x8_t __b) + { +- return __builtin_aarch64_cmgtv8hf_uss (__a, vdupq_n_f16 (0.0f)); ++ return __builtin_aarch64_cmgtv8hf_uss (__a, __b); + } + + __extension__ extern __inline uint16x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vclez_f16 (float16x4_t __a) ++vcle_f16 (float16x4_t __a, float16x4_t __b) + { +- return __builtin_aarch64_cmlev4hf_uss (__a, vdup_n_f16 (0.0f)); ++ return __builtin_aarch64_cmlev4hf_uss (__a, __b); + } + + __extension__ extern __inline uint16x8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vclezq_f16 (float16x8_t __a) ++vcleq_f16 (float16x8_t __a, float16x8_t __b) + { +- return __builtin_aarch64_cmlev8hf_uss (__a, vdupq_n_f16 (0.0f)); ++ return __builtin_aarch64_cmlev8hf_uss (__a, __b); + } + + __extension__ extern __inline uint16x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vcltz_f16 (float16x4_t __a) ++vclt_f16 (float16x4_t __a, float16x4_t __b) + { +- return __builtin_aarch64_cmltv4hf_uss (__a, vdup_n_f16 (0.0f)); ++ return __builtin_aarch64_cmltv4hf_uss (__a, __b); + } + + __extension__ extern __inline uint16x8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vcltzq_f16 (float16x8_t __a) ++vcltq_f16 (float16x8_t __a, float16x8_t __b) + { +- return __builtin_aarch64_cmltv8hf_uss (__a, vdupq_n_f16 (0.0f)); ++ return __builtin_aarch64_cmltv8hf_uss (__a, __b); + } + + __extension__ extern __inline float16x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vcvt_f16_s16 (int16x4_t __a) ++vcvt_n_f16_s16 (int16x4_t __a, const int __b) + { +- return __builtin_aarch64_floatv4hiv4hf (__a); ++ return __builtin_aarch64_scvtfv4hi (__a, __b); + } + + __extension__ extern __inline float16x8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vcvtq_f16_s16 (int16x8_t __a) ++vcvtq_n_f16_s16 (int16x8_t __a, const int __b) + { +- return __builtin_aarch64_floatv8hiv8hf (__a); ++ return __builtin_aarch64_scvtfv8hi (__a, __b); + } + + __extension__ extern __inline float16x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vcvt_f16_u16 (uint16x4_t __a) ++vcvt_n_f16_u16 (uint16x4_t __a, const int __b) + { +- return __builtin_aarch64_floatunsv4hiv4hf ((int16x4_t) __a); ++ return __builtin_aarch64_ucvtfv4hi_sus (__a, __b); + } + + __extension__ extern __inline float16x8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vcvtq_f16_u16 (uint16x8_t __a) ++vcvtq_n_f16_u16 (uint16x8_t __a, const int __b) + { +- return __builtin_aarch64_floatunsv8hiv8hf ((int16x8_t) __a); ++ return __builtin_aarch64_ucvtfv8hi_sus (__a, __b); + } + + __extension__ extern __inline int16x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vcvt_s16_f16 (float16x4_t __a) ++vcvt_n_s16_f16 (float16x4_t __a, const int __b) + { +- return __builtin_aarch64_lbtruncv4hfv4hi (__a); ++ return __builtin_aarch64_fcvtzsv4hf (__a, __b); + } + + __extension__ extern __inline int16x8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vcvtq_s16_f16 (float16x8_t __a) ++vcvtq_n_s16_f16 (float16x8_t __a, const int __b) + { +- return __builtin_aarch64_lbtruncv8hfv8hi (__a); ++ return __builtin_aarch64_fcvtzsv8hf (__a, __b); + } + + __extension__ extern __inline uint16x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vcvt_u16_f16 (float16x4_t __a) ++vcvt_n_u16_f16 (float16x4_t __a, const int __b) + { +- return __builtin_aarch64_lbtruncuv4hfv4hi_us (__a); ++ return __builtin_aarch64_fcvtzuv4hf_uss (__a, __b); + } + + __extension__ extern __inline uint16x8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vcvtq_u16_f16 (float16x8_t __a) ++vcvtq_n_u16_f16 (float16x8_t __a, const int __b) + { +- return __builtin_aarch64_lbtruncuv8hfv8hi_us (__a); ++ return __builtin_aarch64_fcvtzuv8hf_uss (__a, __b); + } + +-__extension__ extern __inline int16x4_t ++__extension__ extern __inline float16x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vcvta_s16_f16 (float16x4_t __a) ++vdiv_f16 (float16x4_t __a, float16x4_t __b) + { +- return __builtin_aarch64_lroundv4hfv4hi (__a); ++ return __a / __b; + } + +-__extension__ extern __inline int16x8_t ++__extension__ extern __inline float16x8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vcvtaq_s16_f16 (float16x8_t __a) ++vdivq_f16 (float16x8_t __a, float16x8_t __b) + { +- return __builtin_aarch64_lroundv8hfv8hi (__a); ++ return __a / __b; + } + +-__extension__ extern __inline uint16x4_t ++__extension__ extern __inline float16x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vcvta_u16_f16 (float16x4_t __a) ++vmax_f16 (float16x4_t __a, float16x4_t __b) + { +- return __builtin_aarch64_lrounduv4hfv4hi_us (__a); ++ return __builtin_aarch64_smax_nanv4hf (__a, __b); + } + +-__extension__ extern __inline uint16x8_t ++__extension__ extern __inline float16x8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vcvtaq_u16_f16 (float16x8_t __a) ++vmaxq_f16 (float16x8_t __a, float16x8_t __b) + { +- return __builtin_aarch64_lrounduv8hfv8hi_us (__a); ++ return __builtin_aarch64_smax_nanv8hf (__a, __b); + } + +-__extension__ extern __inline int16x4_t ++__extension__ extern __inline float16x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vcvtm_s16_f16 (float16x4_t __a) ++vmaxnm_f16 (float16x4_t __a, float16x4_t __b) + { +- return __builtin_aarch64_lfloorv4hfv4hi (__a); ++ return __builtin_aarch64_fmaxv4hf (__a, __b); + } + +-__extension__ extern __inline int16x8_t ++__extension__ extern __inline float16x8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vcvtmq_s16_f16 (float16x8_t __a) ++vmaxnmq_f16 (float16x8_t __a, float16x8_t __b) + { +- return __builtin_aarch64_lfloorv8hfv8hi (__a); ++ return __builtin_aarch64_fmaxv8hf (__a, __b); + } + +-__extension__ extern __inline uint16x4_t ++__extension__ extern __inline float16x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vcvtm_u16_f16 (float16x4_t __a) ++vmin_f16 (float16x4_t __a, float16x4_t __b) + { +- return __builtin_aarch64_lflooruv4hfv4hi_us (__a); ++ return __builtin_aarch64_smin_nanv4hf (__a, __b); + } + +-__extension__ extern __inline uint16x8_t ++__extension__ extern __inline float16x8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vcvtmq_u16_f16 (float16x8_t __a) ++vminq_f16 (float16x8_t __a, float16x8_t __b) + { +- return __builtin_aarch64_lflooruv8hfv8hi_us (__a); ++ return __builtin_aarch64_smin_nanv8hf (__a, __b); + } + +-__extension__ extern __inline int16x4_t ++__extension__ extern __inline float16x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vcvtn_s16_f16 (float16x4_t __a) ++vminnm_f16 (float16x4_t __a, float16x4_t __b) + { +- return __builtin_aarch64_lfrintnv4hfv4hi (__a); ++ return __builtin_aarch64_fminv4hf (__a, __b); + } + +-__extension__ extern __inline int16x8_t ++__extension__ extern __inline float16x8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vcvtnq_s16_f16 (float16x8_t __a) ++vminnmq_f16 (float16x8_t __a, float16x8_t __b) + { +- return __builtin_aarch64_lfrintnv8hfv8hi (__a); ++ return __builtin_aarch64_fminv8hf (__a, __b); + } + +-__extension__ extern __inline uint16x4_t ++__extension__ extern __inline float16x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vcvtn_u16_f16 (float16x4_t __a) ++vmul_f16 (float16x4_t __a, float16x4_t __b) + { +- return __builtin_aarch64_lfrintnuv4hfv4hi_us (__a); ++ return __a * __b; + } + +-__extension__ extern __inline uint16x8_t ++__extension__ extern __inline float16x8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vcvtnq_u16_f16 (float16x8_t __a) ++vmulq_f16 (float16x8_t __a, float16x8_t __b) + { +- return __builtin_aarch64_lfrintnuv8hfv8hi_us (__a); ++ return __a * __b; + } + +-__extension__ extern __inline int16x4_t ++__extension__ extern __inline float16x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vcvtp_s16_f16 (float16x4_t __a) ++vmulx_f16 (float16x4_t __a, float16x4_t __b) + { +- return __builtin_aarch64_lceilv4hfv4hi (__a); ++ return __builtin_aarch64_fmulxv4hf (__a, __b); + } + +-__extension__ extern __inline int16x8_t ++__extension__ extern __inline float16x8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vcvtpq_s16_f16 (float16x8_t __a) ++vmulxq_f16 (float16x8_t __a, float16x8_t __b) + { +- return __builtin_aarch64_lceilv8hfv8hi (__a); ++ return __builtin_aarch64_fmulxv8hf (__a, __b); + } + +-__extension__ extern __inline uint16x4_t ++__extension__ extern __inline float16x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vcvtp_u16_f16 (float16x4_t __a) ++vpadd_f16 (float16x4_t a, float16x4_t b) + { +- return __builtin_aarch64_lceiluv4hfv4hi_us (__a); ++ return __builtin_aarch64_faddpv4hf (a, b); + } + +-__extension__ extern __inline uint16x8_t ++__extension__ extern __inline float16x8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vcvtpq_u16_f16 (float16x8_t __a) ++vpaddq_f16 (float16x8_t a, float16x8_t b) + { +- return __builtin_aarch64_lceiluv8hfv8hi_us (__a); ++ return __builtin_aarch64_faddpv8hf (a, b); + } + + __extension__ extern __inline float16x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vneg_f16 (float16x4_t __a) ++vpmax_f16 (float16x4_t a, float16x4_t b) + { +- return -__a; ++ return __builtin_aarch64_smax_nanpv4hf (a, b); + } + + __extension__ extern __inline float16x8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vnegq_f16 (float16x8_t __a) ++vpmaxq_f16 (float16x8_t a, float16x8_t b) + { +- return -__a; ++ return __builtin_aarch64_smax_nanpv8hf (a, b); + } + + __extension__ extern __inline float16x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vrecpe_f16 (float16x4_t __a) ++vpmaxnm_f16 (float16x4_t a, float16x4_t b) + { +- return __builtin_aarch64_frecpev4hf (__a); ++ return __builtin_aarch64_smaxpv4hf (a, b); + } + + __extension__ extern __inline float16x8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vrecpeq_f16 (float16x8_t __a) ++vpmaxnmq_f16 (float16x8_t a, float16x8_t b) + { +- return __builtin_aarch64_frecpev8hf (__a); ++ return __builtin_aarch64_smaxpv8hf (a, b); + } + + __extension__ extern __inline float16x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vrnd_f16 (float16x4_t __a) ++vpmin_f16 (float16x4_t a, float16x4_t b) + { +- return __builtin_aarch64_btruncv4hf (__a); ++ return __builtin_aarch64_smin_nanpv4hf (a, b); + } + + __extension__ extern __inline float16x8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vrndq_f16 (float16x8_t __a) ++vpminq_f16 (float16x8_t a, float16x8_t b) + { +- return __builtin_aarch64_btruncv8hf (__a); ++ return __builtin_aarch64_smin_nanpv8hf (a, b); + } + + __extension__ extern __inline float16x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vrnda_f16 (float16x4_t __a) ++vpminnm_f16 (float16x4_t a, float16x4_t b) + { +- return __builtin_aarch64_roundv4hf (__a); ++ return __builtin_aarch64_sminpv4hf (a, b); + } + + __extension__ extern __inline float16x8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vrndaq_f16 (float16x8_t __a) ++vpminnmq_f16 (float16x8_t a, float16x8_t b) + { +- return __builtin_aarch64_roundv8hf (__a); ++ return __builtin_aarch64_sminpv8hf (a, b); + } + + __extension__ extern __inline float16x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vrndi_f16 (float16x4_t __a) ++vrecps_f16 (float16x4_t __a, float16x4_t __b) + { +- return __builtin_aarch64_nearbyintv4hf (__a); ++ return __builtin_aarch64_frecpsv4hf (__a, __b); + } + + __extension__ extern __inline float16x8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vrndiq_f16 (float16x8_t __a) ++vrecpsq_f16 (float16x8_t __a, float16x8_t __b) + { +- return __builtin_aarch64_nearbyintv8hf (__a); ++ return __builtin_aarch64_frecpsv8hf (__a, __b); + } + + __extension__ extern __inline float16x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vrndm_f16 (float16x4_t __a) ++vrsqrts_f16 (float16x4_t a, float16x4_t b) + { +- return __builtin_aarch64_floorv4hf (__a); ++ return __builtin_aarch64_rsqrtsv4hf (a, b); + } + + __extension__ extern __inline float16x8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vrndmq_f16 (float16x8_t __a) ++vrsqrtsq_f16 (float16x8_t a, float16x8_t b) + { +- return __builtin_aarch64_floorv8hf (__a); ++ return __builtin_aarch64_rsqrtsv8hf (a, b); + } + + __extension__ extern __inline float16x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vrndn_f16 (float16x4_t __a) ++vsub_f16 (float16x4_t __a, float16x4_t __b) + { +- return __builtin_aarch64_frintnv4hf (__a); ++ return __a - __b; + } + + __extension__ extern __inline float16x8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vrndnq_f16 (float16x8_t __a) ++vsubq_f16 (float16x8_t __a, float16x8_t __b) + { +- return __builtin_aarch64_frintnv8hf (__a); ++ return __a - __b; + } + ++/* ARMv8.2-A FP16 three operands vector intrinsics. */ ++ + __extension__ extern __inline float16x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vrndp_f16 (float16x4_t __a) ++vfma_f16 (float16x4_t __a, float16x4_t __b, float16x4_t __c) + { +- return __builtin_aarch64_ceilv4hf (__a); ++ return __builtin_aarch64_fmav4hf (__b, __c, __a); + } + + __extension__ extern __inline float16x8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vrndpq_f16 (float16x8_t __a) ++vfmaq_f16 (float16x8_t __a, float16x8_t __b, float16x8_t __c) + { +- return __builtin_aarch64_ceilv8hf (__a); ++ return __builtin_aarch64_fmav8hf (__b, __c, __a); + } + + __extension__ extern __inline float16x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vrndx_f16 (float16x4_t __a) ++vfms_f16 (float16x4_t __a, float16x4_t __b, float16x4_t __c) ++{ ++ return __builtin_aarch64_fnmav4hf (__b, __c, __a); ++} ++ ++__extension__ extern __inline float16x8_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vfmsq_f16 (float16x8_t __a, float16x8_t __b, float16x8_t __c) ++{ ++ return __builtin_aarch64_fnmav8hf (__b, __c, __a); ++} ++ ++/* ARMv8.2-A FP16 lane vector intrinsics. */ ++ ++__extension__ extern __inline float16_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vfmah_lane_f16 (float16_t __a, float16_t __b, ++ float16x4_t __c, const int __lane) ++{ ++ return vfmah_f16 (__a, __b, __aarch64_vget_lane_any (__c, __lane)); ++} ++ ++__extension__ extern __inline float16_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vfmah_laneq_f16 (float16_t __a, float16_t __b, ++ float16x8_t __c, const int __lane) ++{ ++ return vfmah_f16 (__a, __b, __aarch64_vget_lane_any (__c, __lane)); ++} ++ ++__extension__ extern __inline float16x4_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vfma_lane_f16 (float16x4_t __a, float16x4_t __b, ++ float16x4_t __c, const int __lane) + { +- return __builtin_aarch64_rintv4hf (__a); ++ return vfma_f16 (__a, __b, __aarch64_vdup_lane_f16 (__c, __lane)); + } + + __extension__ extern __inline float16x8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vrndxq_f16 (float16x8_t __a) ++vfmaq_lane_f16 (float16x8_t __a, float16x8_t __b, ++ float16x4_t __c, const int __lane) + { +- return __builtin_aarch64_rintv8hf (__a); ++ return vfmaq_f16 (__a, __b, __aarch64_vdupq_lane_f16 (__c, __lane)); + } + + __extension__ extern __inline float16x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vrsqrte_f16 (float16x4_t a) ++vfma_laneq_f16 (float16x4_t __a, float16x4_t __b, ++ float16x8_t __c, const int __lane) + { +- return __builtin_aarch64_rsqrtev4hf (a); ++ return vfma_f16 (__a, __b, __aarch64_vdup_laneq_f16 (__c, __lane)); + } + + __extension__ extern __inline float16x8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vrsqrteq_f16 (float16x8_t a) ++vfmaq_laneq_f16 (float16x8_t __a, float16x8_t __b, ++ float16x8_t __c, const int __lane) + { +- return __builtin_aarch64_rsqrtev8hf (a); ++ return vfmaq_f16 (__a, __b, __aarch64_vdupq_laneq_f16 (__c, __lane)); + } + + __extension__ extern __inline float16x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vsqrt_f16 (float16x4_t a) ++vfma_n_f16 (float16x4_t __a, float16x4_t __b, float16_t __c) + { +- return __builtin_aarch64_sqrtv4hf (a); ++ return vfma_f16 (__a, __b, vdup_n_f16 (__c)); + } + + __extension__ extern __inline float16x8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vsqrtq_f16 (float16x8_t a) ++vfmaq_n_f16 (float16x8_t __a, float16x8_t __b, float16_t __c) + { +- return __builtin_aarch64_sqrtv8hf (a); ++ return vfmaq_f16 (__a, __b, vdupq_n_f16 (__c)); + } + +-/* ARMv8.2-A FP16 two operands vector intrinsics. */ +- +-__extension__ extern __inline float16x4_t ++__extension__ extern __inline float16_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vadd_f16 (float16x4_t __a, float16x4_t __b) ++vfmsh_lane_f16 (float16_t __a, float16_t __b, ++ float16x4_t __c, const int __lane) + { +- return __a + __b; ++ return vfmsh_f16 (__a, __b, __aarch64_vget_lane_any (__c, __lane)); + } + +-__extension__ extern __inline float16x8_t ++__extension__ extern __inline float16_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vaddq_f16 (float16x8_t __a, float16x8_t __b) ++vfmsh_laneq_f16 (float16_t __a, float16_t __b, ++ float16x8_t __c, const int __lane) + { +- return __a + __b; ++ return vfmsh_f16 (__a, __b, __aarch64_vget_lane_any (__c, __lane)); + } + + __extension__ extern __inline float16x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vabd_f16 (float16x4_t a, float16x4_t b) ++vfms_lane_f16 (float16x4_t __a, float16x4_t __b, ++ float16x4_t __c, const int __lane) + { +- return __builtin_aarch64_fabdv4hf (a, b); ++ return vfms_f16 (__a, __b, __aarch64_vdup_lane_f16 (__c, __lane)); + } + + __extension__ extern __inline float16x8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vabdq_f16 (float16x8_t a, float16x8_t b) ++vfmsq_lane_f16 (float16x8_t __a, float16x8_t __b, ++ float16x4_t __c, const int __lane) + { +- return __builtin_aarch64_fabdv8hf (a, b); ++ return vfmsq_f16 (__a, __b, __aarch64_vdupq_lane_f16 (__c, __lane)); + } + +-__extension__ extern __inline uint16x4_t ++__extension__ extern __inline float16x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vcage_f16 (float16x4_t __a, float16x4_t __b) ++vfms_laneq_f16 (float16x4_t __a, float16x4_t __b, ++ float16x8_t __c, const int __lane) + { +- return __builtin_aarch64_facgev4hf_uss (__a, __b); ++ return vfms_f16 (__a, __b, __aarch64_vdup_laneq_f16 (__c, __lane)); + } + +-__extension__ extern __inline uint16x8_t ++__extension__ extern __inline float16x8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vcageq_f16 (float16x8_t __a, float16x8_t __b) ++vfmsq_laneq_f16 (float16x8_t __a, float16x8_t __b, ++ float16x8_t __c, const int __lane) + { +- return __builtin_aarch64_facgev8hf_uss (__a, __b); ++ return vfmsq_f16 (__a, __b, __aarch64_vdupq_laneq_f16 (__c, __lane)); + } + +-__extension__ extern __inline uint16x4_t ++__extension__ extern __inline float16x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vcagt_f16 (float16x4_t __a, float16x4_t __b) ++vfms_n_f16 (float16x4_t __a, float16x4_t __b, float16_t __c) + { +- return __builtin_aarch64_facgtv4hf_uss (__a, __b); ++ return vfms_f16 (__a, __b, vdup_n_f16 (__c)); + } + +-__extension__ extern __inline uint16x8_t ++__extension__ extern __inline float16x8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vcagtq_f16 (float16x8_t __a, float16x8_t __b) ++vfmsq_n_f16 (float16x8_t __a, float16x8_t __b, float16_t __c) + { +- return __builtin_aarch64_facgtv8hf_uss (__a, __b); ++ return vfmsq_f16 (__a, __b, vdupq_n_f16 (__c)); + } + +-__extension__ extern __inline uint16x4_t ++__extension__ extern __inline float16_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vcale_f16 (float16x4_t __a, float16x4_t __b) ++vmulh_lane_f16 (float16_t __a, float16x4_t __b, const int __lane) + { +- return __builtin_aarch64_faclev4hf_uss (__a, __b); ++ return __a * __aarch64_vget_lane_any (__b, __lane); + } + +-__extension__ extern __inline uint16x8_t ++__extension__ extern __inline float16x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vcaleq_f16 (float16x8_t __a, float16x8_t __b) ++vmul_lane_f16 (float16x4_t __a, float16x4_t __b, const int __lane) + { +- return __builtin_aarch64_faclev8hf_uss (__a, __b); ++ return vmul_f16 (__a, vdup_n_f16 (__aarch64_vget_lane_any (__b, __lane))); + } + +-__extension__ extern __inline uint16x4_t ++__extension__ extern __inline float16x8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vcalt_f16 (float16x4_t __a, float16x4_t __b) ++vmulq_lane_f16 (float16x8_t __a, float16x4_t __b, const int __lane) + { +- return __builtin_aarch64_facltv4hf_uss (__a, __b); ++ return vmulq_f16 (__a, vdupq_n_f16 (__aarch64_vget_lane_any (__b, __lane))); + } + +-__extension__ extern __inline uint16x8_t ++__extension__ extern __inline float16_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vcaltq_f16 (float16x8_t __a, float16x8_t __b) ++vmulh_laneq_f16 (float16_t __a, float16x8_t __b, const int __lane) + { +- return __builtin_aarch64_facltv8hf_uss (__a, __b); ++ return __a * __aarch64_vget_lane_any (__b, __lane); + } + +-__extension__ extern __inline uint16x4_t ++__extension__ extern __inline float16x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vceq_f16 (float16x4_t __a, float16x4_t __b) ++vmul_laneq_f16 (float16x4_t __a, float16x8_t __b, const int __lane) + { +- return __builtin_aarch64_cmeqv4hf_uss (__a, __b); ++ return vmul_f16 (__a, vdup_n_f16 (__aarch64_vget_lane_any (__b, __lane))); + } + +-__extension__ extern __inline uint16x8_t ++__extension__ extern __inline float16x8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vceqq_f16 (float16x8_t __a, float16x8_t __b) ++vmulq_laneq_f16 (float16x8_t __a, float16x8_t __b, const int __lane) + { +- return __builtin_aarch64_cmeqv8hf_uss (__a, __b); ++ return vmulq_f16 (__a, vdupq_n_f16 (__aarch64_vget_lane_any (__b, __lane))); + } + +-__extension__ extern __inline uint16x4_t ++__extension__ extern __inline float16x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vcge_f16 (float16x4_t __a, float16x4_t __b) ++vmul_n_f16 (float16x4_t __a, float16_t __b) + { +- return __builtin_aarch64_cmgev4hf_uss (__a, __b); ++ return vmul_lane_f16 (__a, vdup_n_f16 (__b), 0); + } + +-__extension__ extern __inline uint16x8_t ++__extension__ extern __inline float16x8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vcgeq_f16 (float16x8_t __a, float16x8_t __b) ++vmulq_n_f16 (float16x8_t __a, float16_t __b) + { +- return __builtin_aarch64_cmgev8hf_uss (__a, __b); ++ return vmulq_laneq_f16 (__a, vdupq_n_f16 (__b), 0); + } + +-__extension__ extern __inline uint16x4_t ++__extension__ extern __inline float16_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vcgt_f16 (float16x4_t __a, float16x4_t __b) ++vmulxh_lane_f16 (float16_t __a, float16x4_t __b, const int __lane) + { +- return __builtin_aarch64_cmgtv4hf_uss (__a, __b); ++ return vmulxh_f16 (__a, __aarch64_vget_lane_any (__b, __lane)); + } + +-__extension__ extern __inline uint16x8_t ++__extension__ extern __inline float16x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vcgtq_f16 (float16x8_t __a, float16x8_t __b) ++vmulx_lane_f16 (float16x4_t __a, float16x4_t __b, const int __lane) + { +- return __builtin_aarch64_cmgtv8hf_uss (__a, __b); ++ return vmulx_f16 (__a, __aarch64_vdup_lane_f16 (__b, __lane)); + } + +-__extension__ extern __inline uint16x4_t ++__extension__ extern __inline float16x8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vcle_f16 (float16x4_t __a, float16x4_t __b) ++vmulxq_lane_f16 (float16x8_t __a, float16x4_t __b, const int __lane) + { +- return __builtin_aarch64_cmlev4hf_uss (__a, __b); ++ return vmulxq_f16 (__a, __aarch64_vdupq_lane_f16 (__b, __lane)); + } + +-__extension__ extern __inline uint16x8_t ++__extension__ extern __inline float16_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vcleq_f16 (float16x8_t __a, float16x8_t __b) ++vmulxh_laneq_f16 (float16_t __a, float16x8_t __b, const int __lane) + { +- return __builtin_aarch64_cmlev8hf_uss (__a, __b); ++ return vmulxh_f16 (__a, __aarch64_vget_lane_any (__b, __lane)); + } + +-__extension__ extern __inline uint16x4_t ++__extension__ extern __inline float16x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vclt_f16 (float16x4_t __a, float16x4_t __b) ++vmulx_laneq_f16 (float16x4_t __a, float16x8_t __b, const int __lane) + { +- return __builtin_aarch64_cmltv4hf_uss (__a, __b); ++ return vmulx_f16 (__a, __aarch64_vdup_laneq_f16 (__b, __lane)); + } + +-__extension__ extern __inline uint16x8_t ++__extension__ extern __inline float16x8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vcltq_f16 (float16x8_t __a, float16x8_t __b) ++vmulxq_laneq_f16 (float16x8_t __a, float16x8_t __b, const int __lane) + { +- return __builtin_aarch64_cmltv8hf_uss (__a, __b); ++ return vmulxq_f16 (__a, __aarch64_vdupq_laneq_f16 (__b, __lane)); + } + + __extension__ extern __inline float16x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vcvt_n_f16_s16 (int16x4_t __a, const int __b) ++vmulx_n_f16 (float16x4_t __a, float16_t __b) + { +- return __builtin_aarch64_scvtfv4hi (__a, __b); ++ return vmulx_f16 (__a, vdup_n_f16 (__b)); + } + + __extension__ extern __inline float16x8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vcvtq_n_f16_s16 (int16x8_t __a, const int __b) ++vmulxq_n_f16 (float16x8_t __a, float16_t __b) + { +- return __builtin_aarch64_scvtfv8hi (__a, __b); ++ return vmulxq_f16 (__a, vdupq_n_f16 (__b)); + } + +-__extension__ extern __inline float16x4_t ++/* ARMv8.2-A FP16 reduction vector intrinsics. */ ++ ++__extension__ extern __inline float16_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vcvt_n_f16_u16 (uint16x4_t __a, const int __b) ++vmaxv_f16 (float16x4_t __a) + { +- return __builtin_aarch64_ucvtfv4hi_sus (__a, __b); ++ return __builtin_aarch64_reduc_smax_nan_scal_v4hf (__a); + } + +-__extension__ extern __inline float16x8_t ++__extension__ extern __inline float16_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vcvtq_n_f16_u16 (uint16x8_t __a, const int __b) ++vmaxvq_f16 (float16x8_t __a) + { +- return __builtin_aarch64_ucvtfv8hi_sus (__a, __b); ++ return __builtin_aarch64_reduc_smax_nan_scal_v8hf (__a); + } + +-__extension__ extern __inline int16x4_t ++__extension__ extern __inline float16_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vcvt_n_s16_f16 (float16x4_t __a, const int __b) ++vminv_f16 (float16x4_t __a) + { +- return __builtin_aarch64_fcvtzsv4hf (__a, __b); ++ return __builtin_aarch64_reduc_smin_nan_scal_v4hf (__a); + } + +-__extension__ extern __inline int16x8_t ++__extension__ extern __inline float16_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vcvtq_n_s16_f16 (float16x8_t __a, const int __b) ++vminvq_f16 (float16x8_t __a) + { +- return __builtin_aarch64_fcvtzsv8hf (__a, __b); ++ return __builtin_aarch64_reduc_smin_nan_scal_v8hf (__a); + } + +-__extension__ extern __inline uint16x4_t ++__extension__ extern __inline float16_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vcvt_n_u16_f16 (float16x4_t __a, const int __b) ++vmaxnmv_f16 (float16x4_t __a) + { +- return __builtin_aarch64_fcvtzuv4hf_uss (__a, __b); ++ return __builtin_aarch64_reduc_smax_scal_v4hf (__a); + } + +-__extension__ extern __inline uint16x8_t ++__extension__ extern __inline float16_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vcvtq_n_u16_f16 (float16x8_t __a, const int __b) ++vmaxnmvq_f16 (float16x8_t __a) + { +- return __builtin_aarch64_fcvtzuv8hf_uss (__a, __b); ++ return __builtin_aarch64_reduc_smax_scal_v8hf (__a); + } + +-__extension__ extern __inline float16x4_t ++__extension__ extern __inline float16_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vdiv_f16 (float16x4_t __a, float16x4_t __b) ++vminnmv_f16 (float16x4_t __a) + { +- return __a / __b; ++ return __builtin_aarch64_reduc_smin_scal_v4hf (__a); + } + +-__extension__ extern __inline float16x8_t ++__extension__ extern __inline float16_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vdivq_f16 (float16x8_t __a, float16x8_t __b) ++vminnmvq_f16 (float16x8_t __a) + { +- return __a / __b; ++ return __builtin_aarch64_reduc_smin_scal_v8hf (__a); + } + +-__extension__ extern __inline float16x4_t ++#pragma GCC pop_options ++ ++/* AdvSIMD Dot Product intrinsics. */ ++ ++#pragma GCC push_options ++#pragma GCC target ("arch=armv8.2-a+dotprod") ++ ++__extension__ extern __inline uint32x2_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vmax_f16 (float16x4_t __a, float16x4_t __b) ++vdot_u32 (uint32x2_t __r, uint8x8_t __a, uint8x8_t __b) + { +- return __builtin_aarch64_smax_nanv4hf (__a, __b); ++ return __builtin_aarch64_udotv8qi_uuuu (__r, __a, __b); + } + +-__extension__ extern __inline float16x8_t ++__extension__ extern __inline uint32x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vmaxq_f16 (float16x8_t __a, float16x8_t __b) ++vdotq_u32 (uint32x4_t __r, uint8x16_t __a, uint8x16_t __b) + { +- return __builtin_aarch64_smax_nanv8hf (__a, __b); ++ return __builtin_aarch64_udotv16qi_uuuu (__r, __a, __b); + } + +-__extension__ extern __inline float16x4_t ++__extension__ extern __inline int32x2_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vmaxnm_f16 (float16x4_t __a, float16x4_t __b) ++vdot_s32 (int32x2_t __r, int8x8_t __a, int8x8_t __b) + { +- return __builtin_aarch64_fmaxv4hf (__a, __b); ++ return __builtin_aarch64_sdotv8qi (__r, __a, __b); + } + +-__extension__ extern __inline float16x8_t ++__extension__ extern __inline int32x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vmaxnmq_f16 (float16x8_t __a, float16x8_t __b) ++vdotq_s32 (int32x4_t __r, int8x16_t __a, int8x16_t __b) + { +- return __builtin_aarch64_fmaxv8hf (__a, __b); ++ return __builtin_aarch64_sdotv16qi (__r, __a, __b); ++} ++ ++__extension__ extern __inline uint32x2_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vdot_lane_u32 (uint32x2_t __r, uint8x8_t __a, uint8x8_t __b, const int __index) ++{ ++ return __builtin_aarch64_udot_lanev8qi_uuuus (__r, __a, __b, __index); + } + +-__extension__ extern __inline float16x4_t ++__extension__ extern __inline uint32x2_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vmin_f16 (float16x4_t __a, float16x4_t __b) ++vdot_laneq_u32 (uint32x2_t __r, uint8x8_t __a, uint8x16_t __b, ++ const int __index) + { +- return __builtin_aarch64_smin_nanv4hf (__a, __b); ++ return __builtin_aarch64_udot_laneqv8qi_uuuus (__r, __a, __b, __index); + } + +-__extension__ extern __inline float16x8_t ++__extension__ extern __inline uint32x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vminq_f16 (float16x8_t __a, float16x8_t __b) ++vdotq_lane_u32 (uint32x4_t __r, uint8x16_t __a, uint8x8_t __b, ++ const int __index) + { +- return __builtin_aarch64_smin_nanv8hf (__a, __b); ++ return __builtin_aarch64_udot_lanev16qi_uuuus (__r, __a, __b, __index); + } + +-__extension__ extern __inline float16x4_t ++__extension__ extern __inline uint32x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vminnm_f16 (float16x4_t __a, float16x4_t __b) ++vdotq_laneq_u32 (uint32x4_t __r, uint8x16_t __a, uint8x16_t __b, ++ const int __index) + { +- return __builtin_aarch64_fminv4hf (__a, __b); ++ return __builtin_aarch64_udot_laneqv16qi_uuuus (__r, __a, __b, __index); + } + +-__extension__ extern __inline float16x8_t ++__extension__ extern __inline int32x2_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vminnmq_f16 (float16x8_t __a, float16x8_t __b) ++vdot_lane_s32 (int32x2_t __r, int8x8_t __a, int8x8_t __b, const int __index) + { +- return __builtin_aarch64_fminv8hf (__a, __b); ++ return __builtin_aarch64_sdot_lanev8qi (__r, __a, __b, __index); + } + +-__extension__ extern __inline float16x4_t ++__extension__ extern __inline int32x2_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vmul_f16 (float16x4_t __a, float16x4_t __b) ++vdot_laneq_s32 (int32x2_t __r, int8x8_t __a, int8x16_t __b, const int __index) + { +- return __a * __b; ++ return __builtin_aarch64_sdot_laneqv8qi (__r, __a, __b, __index); + } + +-__extension__ extern __inline float16x8_t ++__extension__ extern __inline int32x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vmulq_f16 (float16x8_t __a, float16x8_t __b) ++vdotq_lane_s32 (int32x4_t __r, int8x16_t __a, int8x8_t __b, const int __index) + { +- return __a * __b; ++ return __builtin_aarch64_sdot_lanev16qi (__r, __a, __b, __index); + } + +-__extension__ extern __inline float16x4_t ++__extension__ extern __inline int32x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vmulx_f16 (float16x4_t __a, float16x4_t __b) ++vdotq_laneq_s32 (int32x4_t __r, int8x16_t __a, int8x16_t __b, const int __index) + { +- return __builtin_aarch64_fmulxv4hf (__a, __b); ++ return __builtin_aarch64_sdot_laneqv16qi (__r, __a, __b, __index); + } ++#pragma GCC pop_options + +-__extension__ extern __inline float16x8_t ++#pragma GCC push_options ++#pragma GCC target ("arch=armv8.2-a+sm4") ++ ++__extension__ extern __inline uint32x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vmulxq_f16 (float16x8_t __a, float16x8_t __b) ++vsm3ss1q_u32 (uint32x4_t __a, uint32x4_t __b, uint32x4_t __c) + { +- return __builtin_aarch64_fmulxv8hf (__a, __b); ++ return __builtin_aarch64_sm3ss1qv4si_uuuu (__a, __b, __c); + } + +-__extension__ extern __inline float16x4_t ++__extension__ extern __inline uint32x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vpadd_f16 (float16x4_t a, float16x4_t b) ++vsm3tt1aq_u32 (uint32x4_t __a, uint32x4_t __b, uint32x4_t __c, const int __imm2) + { +- return __builtin_aarch64_faddpv4hf (a, b); ++ return __builtin_aarch64_sm3tt1aqv4si_uuuus (__a, __b, __c, __imm2); + } + +-__extension__ extern __inline float16x8_t ++__extension__ extern __inline uint32x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vpaddq_f16 (float16x8_t a, float16x8_t b) ++vsm3tt1bq_u32 (uint32x4_t __a, uint32x4_t __b, uint32x4_t __c, const int __imm2) + { +- return __builtin_aarch64_faddpv8hf (a, b); ++ return __builtin_aarch64_sm3tt1bqv4si_uuuus (__a, __b, __c, __imm2); + } + +-__extension__ extern __inline float16x4_t ++__extension__ extern __inline uint32x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vpmax_f16 (float16x4_t a, float16x4_t b) ++vsm3tt2aq_u32 (uint32x4_t __a, uint32x4_t __b, uint32x4_t __c, const int __imm2) + { +- return __builtin_aarch64_smax_nanpv4hf (a, b); ++ return __builtin_aarch64_sm3tt2aqv4si_uuuus (__a, __b, __c, __imm2); + } + +-__extension__ extern __inline float16x8_t ++__extension__ extern __inline uint32x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vpmaxq_f16 (float16x8_t a, float16x8_t b) ++vsm3tt2bq_u32 (uint32x4_t __a, uint32x4_t __b, uint32x4_t __c, const int __imm2) + { +- return __builtin_aarch64_smax_nanpv8hf (a, b); ++ return __builtin_aarch64_sm3tt2bqv4si_uuuus (__a, __b, __c, __imm2); + } + +-__extension__ extern __inline float16x4_t ++__extension__ extern __inline uint32x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vpmaxnm_f16 (float16x4_t a, float16x4_t b) ++vsm3partw1q_u32 (uint32x4_t __a, uint32x4_t __b, uint32x4_t __c) + { +- return __builtin_aarch64_smaxpv4hf (a, b); ++ return __builtin_aarch64_sm3partw1qv4si_uuuu (__a, __b, __c); + } +- +-__extension__ extern __inline float16x8_t ++__extension__ extern __inline uint32x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vpmaxnmq_f16 (float16x8_t a, float16x8_t b) ++vsm3partw2q_u32 (uint32x4_t __a, uint32x4_t __b, uint32x4_t __c) + { +- return __builtin_aarch64_smaxpv8hf (a, b); ++ return __builtin_aarch64_sm3partw2qv4si_uuuu (__a, __b, __c); + } + +-__extension__ extern __inline float16x4_t ++__extension__ extern __inline uint32x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vpmin_f16 (float16x4_t a, float16x4_t b) ++vsm4eq_u32 (uint32x4_t __a, uint32x4_t __b) + { +- return __builtin_aarch64_smin_nanpv4hf (a, b); ++ return __builtin_aarch64_sm4eqv4si_uuu (__a, __b); + } + +-__extension__ extern __inline float16x8_t ++__extension__ extern __inline uint32x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vpminq_f16 (float16x8_t a, float16x8_t b) ++vsm4ekeyq_u32 (uint32x4_t __a, uint32x4_t __b) + { +- return __builtin_aarch64_smin_nanpv8hf (a, b); ++ return __builtin_aarch64_sm4ekeyqv4si_uuu (__a, __b); + } + +-__extension__ extern __inline float16x4_t ++#pragma GCC pop_options ++ ++#pragma GCC push_options ++#pragma GCC target ("arch=armv8.2-a+sha3") ++ ++__extension__ extern __inline uint64x2_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vpminnm_f16 (float16x4_t a, float16x4_t b) ++vsha512hq_u64 (uint64x2_t __a, uint64x2_t __b, uint64x2_t __c) + { +- return __builtin_aarch64_sminpv4hf (a, b); ++ return __builtin_aarch64_crypto_sha512hqv2di_uuuu (__a, __b, __c); + } + +-__extension__ extern __inline float16x8_t ++__extension__ extern __inline uint64x2_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vpminnmq_f16 (float16x8_t a, float16x8_t b) ++vsha512h2q_u64 (uint64x2_t __a, uint64x2_t __b, uint64x2_t __c) + { +- return __builtin_aarch64_sminpv8hf (a, b); ++ return __builtin_aarch64_crypto_sha512h2qv2di_uuuu (__a, __b, __c); + } + +-__extension__ extern __inline float16x4_t ++__extension__ extern __inline uint64x2_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vrecps_f16 (float16x4_t __a, float16x4_t __b) ++vsha512su0q_u64 (uint64x2_t __a, uint64x2_t __b) + { +- return __builtin_aarch64_frecpsv4hf (__a, __b); ++ return __builtin_aarch64_crypto_sha512su0qv2di_uuu (__a, __b); + } + +-__extension__ extern __inline float16x8_t ++__extension__ extern __inline uint64x2_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vrecpsq_f16 (float16x8_t __a, float16x8_t __b) ++vsha512su1q_u64 (uint64x2_t __a, uint64x2_t __b, uint64x2_t __c) + { +- return __builtin_aarch64_frecpsv8hf (__a, __b); ++ return __builtin_aarch64_crypto_sha512su1qv2di_uuuu (__a, __b, __c); + } + +-__extension__ extern __inline float16x4_t ++__extension__ extern __inline uint8x16_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vrsqrts_f16 (float16x4_t a, float16x4_t b) ++veor3q_u8 (uint8x16_t __a, uint8x16_t __b, uint8x16_t __c) + { +- return __builtin_aarch64_rsqrtsv4hf (a, b); ++ return __builtin_aarch64_eor3qv16qi_uuuu (__a, __b, __c); + } + +-__extension__ extern __inline float16x8_t ++__extension__ extern __inline uint16x8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vrsqrtsq_f16 (float16x8_t a, float16x8_t b) ++veor3q_u16 (uint16x8_t __a, uint16x8_t __b, uint16x8_t __c) + { +- return __builtin_aarch64_rsqrtsv8hf (a, b); ++ return __builtin_aarch64_eor3qv8hi_uuuu (__a, __b, __c); + } + +-__extension__ extern __inline float16x4_t ++__extension__ extern __inline uint32x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vsub_f16 (float16x4_t __a, float16x4_t __b) ++veor3q_u32 (uint32x4_t __a, uint32x4_t __b, uint32x4_t __c) + { +- return __a - __b; ++ return __builtin_aarch64_eor3qv4si_uuuu (__a, __b, __c); + } + +-__extension__ extern __inline float16x8_t ++__extension__ extern __inline uint64x2_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vsubq_f16 (float16x8_t __a, float16x8_t __b) ++veor3q_u64 (uint64x2_t __a, uint64x2_t __b, uint64x2_t __c) + { +- return __a - __b; ++ return __builtin_aarch64_eor3qv2di_uuuu (__a, __b, __c); + } + +-/* ARMv8.2-A FP16 three operands vector intrinsics. */ + +-__extension__ extern __inline float16x4_t ++__extension__ extern __inline int8x16_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vfma_f16 (float16x4_t __a, float16x4_t __b, float16x4_t __c) ++veor3q_s8 (int8x16_t __a, int8x16_t __b, int8x16_t __c) + { +- return __builtin_aarch64_fmav4hf (__b, __c, __a); ++ return __builtin_aarch64_eor3qv16qi (__a, __b, __c); + } + +-__extension__ extern __inline float16x8_t ++__extension__ extern __inline int16x8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vfmaq_f16 (float16x8_t __a, float16x8_t __b, float16x8_t __c) ++veor3q_s16 (int16x8_t __a, int16x8_t __b, int16x8_t __c) + { +- return __builtin_aarch64_fmav8hf (__b, __c, __a); ++ return __builtin_aarch64_eor3qv8hi (__a, __b, __c); + } + +-__extension__ extern __inline float16x4_t ++__extension__ extern __inline int32x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vfms_f16 (float16x4_t __a, float16x4_t __b, float16x4_t __c) ++veor3q_s32 (int32x4_t __a, int32x4_t __b, int32x4_t __c) + { +- return __builtin_aarch64_fnmav4hf (__b, __c, __a); ++ return __builtin_aarch64_eor3qv4si (__a, __b, __c); + } + +-__extension__ extern __inline float16x8_t ++__extension__ extern __inline int64x2_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vfmsq_f16 (float16x8_t __a, float16x8_t __b, float16x8_t __c) ++veor3q_s64 (int64x2_t __a, int64x2_t __b, int64x2_t __c) + { +- return __builtin_aarch64_fnmav8hf (__b, __c, __a); ++ return __builtin_aarch64_eor3qv2di (__a, __b, __c); + } + +-/* ARMv8.2-A FP16 lane vector intrinsics. */ +- +-__extension__ extern __inline float16_t ++__extension__ extern __inline uint64x2_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vfmah_lane_f16 (float16_t __a, float16_t __b, +- float16x4_t __c, const int __lane) ++vrax1q_u64 (uint64x2_t __a, uint64x2_t __b) + { +- return vfmah_f16 (__a, __b, __aarch64_vget_lane_any (__c, __lane)); ++ return __builtin_aarch64_rax1qv2di_uuu (__a, __b); + } + +-__extension__ extern __inline float16_t ++__extension__ extern __inline uint64x2_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vfmah_laneq_f16 (float16_t __a, float16_t __b, +- float16x8_t __c, const int __lane) ++vxarq_u64 (uint64x2_t __a, uint64x2_t __b, const int imm6) + { +- return vfmah_f16 (__a, __b, __aarch64_vget_lane_any (__c, __lane)); ++ return __builtin_aarch64_xarqv2di_uuus (__a, __b,imm6); + } + +-__extension__ extern __inline float16x4_t ++__extension__ extern __inline uint8x16_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vfma_lane_f16 (float16x4_t __a, float16x4_t __b, +- float16x4_t __c, const int __lane) ++vbcaxq_u8 (uint8x16_t __a, uint8x16_t __b, uint8x16_t __c) + { +- return vfma_f16 (__a, __b, __aarch64_vdup_lane_f16 (__c, __lane)); ++ return __builtin_aarch64_bcaxqv16qi_uuuu (__a, __b, __c); + } + +-__extension__ extern __inline float16x8_t ++__extension__ extern __inline uint16x8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vfmaq_lane_f16 (float16x8_t __a, float16x8_t __b, +- float16x4_t __c, const int __lane) ++vbcaxq_u16 (uint16x8_t __a, uint16x8_t __b, uint16x8_t __c) + { +- return vfmaq_f16 (__a, __b, __aarch64_vdupq_lane_f16 (__c, __lane)); ++ return __builtin_aarch64_bcaxqv8hi_uuuu (__a, __b, __c); + } + +-__extension__ extern __inline float16x4_t ++__extension__ extern __inline uint32x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vfma_laneq_f16 (float16x4_t __a, float16x4_t __b, +- float16x8_t __c, const int __lane) ++vbcaxq_u32 (uint32x4_t __a, uint32x4_t __b, uint32x4_t __c) + { +- return vfma_f16 (__a, __b, __aarch64_vdup_laneq_f16 (__c, __lane)); ++ return __builtin_aarch64_bcaxqv4si_uuuu (__a, __b, __c); + } + +-__extension__ extern __inline float16x8_t ++__extension__ extern __inline uint64x2_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vfmaq_laneq_f16 (float16x8_t __a, float16x8_t __b, +- float16x8_t __c, const int __lane) ++vbcaxq_u64 (uint64x2_t __a, uint64x2_t __b, uint64x2_t __c) + { +- return vfmaq_f16 (__a, __b, __aarch64_vdupq_laneq_f16 (__c, __lane)); ++ return __builtin_aarch64_bcaxqv2di_uuuu (__a, __b, __c); + } + +-__extension__ extern __inline float16x4_t ++__extension__ extern __inline int8x16_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vfma_n_f16 (float16x4_t __a, float16x4_t __b, float16_t __c) ++vbcaxq_s8 (int8x16_t __a, int8x16_t __b, int8x16_t __c) + { +- return vfma_f16 (__a, __b, vdup_n_f16 (__c)); ++ return __builtin_aarch64_bcaxqv16qi (__a, __b, __c); + } + +-__extension__ extern __inline float16x8_t ++__extension__ extern __inline int16x8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vfmaq_n_f16 (float16x8_t __a, float16x8_t __b, float16_t __c) ++vbcaxq_s16 (int16x8_t __a, int16x8_t __b, int16x8_t __c) + { +- return vfmaq_f16 (__a, __b, vdupq_n_f16 (__c)); ++ return __builtin_aarch64_bcaxqv8hi (__a, __b, __c); + } + +-__extension__ extern __inline float16_t ++__extension__ extern __inline int32x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vfmsh_lane_f16 (float16_t __a, float16_t __b, +- float16x4_t __c, const int __lane) ++vbcaxq_s32 (int32x4_t __a, int32x4_t __b, int32x4_t __c) + { +- return vfmsh_f16 (__a, __b, __aarch64_vget_lane_any (__c, __lane)); ++ return __builtin_aarch64_bcaxqv4si (__a, __b, __c); + } + +-__extension__ extern __inline float16_t ++__extension__ extern __inline int64x2_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vfmsh_laneq_f16 (float16_t __a, float16_t __b, +- float16x8_t __c, const int __lane) ++vbcaxq_s64 (int64x2_t __a, int64x2_t __b, int64x2_t __c) + { +- return vfmsh_f16 (__a, __b, __aarch64_vget_lane_any (__c, __lane)); ++ return __builtin_aarch64_bcaxqv2di (__a, __b, __c); + } + ++#pragma GCC pop_options ++ ++/* AdvSIMD Complex numbers intrinsics. */ ++ ++#pragma GCC push_options ++#pragma GCC target(("arch=armv8.3-a")) ++ ++#pragma GCC push_options ++#pragma GCC target(("+fp16")) + __extension__ extern __inline float16x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vfms_lane_f16 (float16x4_t __a, float16x4_t __b, +- float16x4_t __c, const int __lane) ++vcadd_rot90_f16 (float16x4_t __a, float16x4_t __b) + { +- return vfms_f16 (__a, __b, __aarch64_vdup_lane_f16 (__c, __lane)); ++ return __builtin_aarch64_fcadd90v4hf (__a, __b); + } + + __extension__ extern __inline float16x8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vfmsq_lane_f16 (float16x8_t __a, float16x8_t __b, +- float16x4_t __c, const int __lane) ++vcaddq_rot90_f16 (float16x8_t __a, float16x8_t __b) + { +- return vfmsq_f16 (__a, __b, __aarch64_vdupq_lane_f16 (__c, __lane)); ++ return __builtin_aarch64_fcadd90v8hf (__a, __b); + } + + __extension__ extern __inline float16x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vfms_laneq_f16 (float16x4_t __a, float16x4_t __b, +- float16x8_t __c, const int __lane) ++vcadd_rot270_f16 (float16x4_t __a, float16x4_t __b) + { +- return vfms_f16 (__a, __b, __aarch64_vdup_laneq_f16 (__c, __lane)); ++ return __builtin_aarch64_fcadd270v4hf (__a, __b); + } + + __extension__ extern __inline float16x8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vfmsq_laneq_f16 (float16x8_t __a, float16x8_t __b, +- float16x8_t __c, const int __lane) ++vcaddq_rot270_f16 (float16x8_t __a, float16x8_t __b) + { +- return vfmsq_f16 (__a, __b, __aarch64_vdupq_laneq_f16 (__c, __lane)); ++ return __builtin_aarch64_fcadd270v8hf (__a, __b); + } + + __extension__ extern __inline float16x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vfms_n_f16 (float16x4_t __a, float16x4_t __b, float16_t __c) ++vcmla_f16 (float16x4_t __r, float16x4_t __a, float16x4_t __b) + { +- return vfms_f16 (__a, __b, vdup_n_f16 (__c)); ++ return __builtin_aarch64_fcmla0v4hf (__r, __a, __b); + } + + __extension__ extern __inline float16x8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vfmsq_n_f16 (float16x8_t __a, float16x8_t __b, float16_t __c) ++vcmlaq_f16 (float16x8_t __r, float16x8_t __a, float16x8_t __b) + { +- return vfmsq_f16 (__a, __b, vdupq_n_f16 (__c)); ++ return __builtin_aarch64_fcmla0v8hf (__r, __a, __b); + } + +-__extension__ extern __inline float16_t ++__extension__ extern __inline float16x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vmulh_lane_f16 (float16_t __a, float16x4_t __b, const int __lane) ++vcmla_lane_f16 (float16x4_t __r, float16x4_t __a, float16x4_t __b, ++ const int __index) ++{ ++ return __builtin_aarch64_fcmla_lane0v4hf (__r, __a, __b, __index); ++} ++ ++__extension__ extern __inline float16x4_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vcmla_laneq_f16 (float16x4_t __r, float16x4_t __a, float16x8_t __b, ++ const int __index) + { +- return __a * __aarch64_vget_lane_any (__b, __lane); ++ return __builtin_aarch64_fcmla_laneq0v4hf (__r, __a, __b, __index); + } + +-__extension__ extern __inline float16x4_t ++__extension__ extern __inline float16x8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vmul_lane_f16 (float16x4_t __a, float16x4_t __b, const int __lane) ++vcmlaq_lane_f16 (float16x8_t __r, float16x8_t __a, float16x4_t __b, ++ const int __index) + { +- return vmul_f16 (__a, vdup_n_f16 (__aarch64_vget_lane_any (__b, __lane))); ++ return __builtin_aarch64_fcmlaq_lane0v8hf (__r, __a, __b, __index); + } + + __extension__ extern __inline float16x8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vmulq_lane_f16 (float16x8_t __a, float16x4_t __b, const int __lane) ++vcmlaq_rot90_lane_f16 (float16x8_t __r, float16x8_t __a, float16x4_t __b, ++ const int __index) + { +- return vmulq_f16 (__a, vdupq_n_f16 (__aarch64_vget_lane_any (__b, __lane))); ++ return __builtin_aarch64_fcmlaq_lane90v8hf (__r, __a, __b, __index); + } + +-__extension__ extern __inline float16_t ++__extension__ extern __inline float16x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vmulh_laneq_f16 (float16_t __a, float16x8_t __b, const int __lane) ++vcmla_rot90_laneq_f16 (float16x4_t __r, float16x4_t __a, float16x8_t __b, ++ const int __index) + { +- return __a * __aarch64_vget_lane_any (__b, __lane); ++ return __builtin_aarch64_fcmla_laneq90v4hf (__r, __a, __b, __index); + } + + __extension__ extern __inline float16x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vmul_laneq_f16 (float16x4_t __a, float16x8_t __b, const int __lane) ++vcmla_rot90_lane_f16 (float16x4_t __r, float16x4_t __a, float16x4_t __b, ++ const int __index) + { +- return vmul_f16 (__a, vdup_n_f16 (__aarch64_vget_lane_any (__b, __lane))); ++ return __builtin_aarch64_fcmla_lane90v4hf (__r, __a, __b, __index); + } + + __extension__ extern __inline float16x8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vmulq_laneq_f16 (float16x8_t __a, float16x8_t __b, const int __lane) ++vcmlaq_rot90_f16 (float16x8_t __r, float16x8_t __a, float16x8_t __b) + { +- return vmulq_f16 (__a, vdupq_n_f16 (__aarch64_vget_lane_any (__b, __lane))); ++ return __builtin_aarch64_fcmla90v8hf (__r, __a, __b); + } + + __extension__ extern __inline float16x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vmul_n_f16 (float16x4_t __a, float16_t __b) ++vcmla_rot90_f16 (float16x4_t __r, float16x4_t __a, float16x4_t __b) + { +- return vmul_lane_f16 (__a, vdup_n_f16 (__b), 0); ++ return __builtin_aarch64_fcmla90v4hf (__r, __a, __b); + } + + __extension__ extern __inline float16x8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vmulq_n_f16 (float16x8_t __a, float16_t __b) ++vcmlaq_laneq_f16 (float16x8_t __r, float16x8_t __a, float16x8_t __b, ++ const int __index) + { +- return vmulq_laneq_f16 (__a, vdupq_n_f16 (__b), 0); ++ return __builtin_aarch64_fcmla_lane0v8hf (__r, __a, __b, __index); + } + +-__extension__ extern __inline float16_t ++__extension__ extern __inline float16x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vmulxh_lane_f16 (float16_t __a, float16x4_t __b, const int __lane) ++vcmla_rot180_laneq_f16 (float16x4_t __r, float16x4_t __a, float16x8_t __b, ++ const int __index) + { +- return vmulxh_f16 (__a, __aarch64_vget_lane_any (__b, __lane)); ++ return __builtin_aarch64_fcmla_laneq180v4hf (__r, __a, __b, __index); + } + + __extension__ extern __inline float16x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vmulx_lane_f16 (float16x4_t __a, float16x4_t __b, const int __lane) ++vcmla_rot180_lane_f16 (float16x4_t __r, float16x4_t __a, float16x4_t __b, ++ const int __index) + { +- return vmulx_f16 (__a, __aarch64_vdup_lane_f16 (__b, __lane)); ++ return __builtin_aarch64_fcmla_lane180v4hf (__r, __a, __b, __index); + } + + __extension__ extern __inline float16x8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vmulxq_lane_f16 (float16x8_t __a, float16x4_t __b, const int __lane) ++vcmlaq_rot180_f16 (float16x8_t __r, float16x8_t __a, float16x8_t __b) + { +- return vmulxq_f16 (__a, __aarch64_vdupq_lane_f16 (__b, __lane)); ++ return __builtin_aarch64_fcmla180v8hf (__r, __a, __b); + } + +-__extension__ extern __inline float16_t ++__extension__ extern __inline float16x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vmulxh_laneq_f16 (float16_t __a, float16x8_t __b, const int __lane) ++vcmla_rot180_f16 (float16x4_t __r, float16x4_t __a, float16x4_t __b) + { +- return vmulxh_f16 (__a, __aarch64_vget_lane_any (__b, __lane)); ++ return __builtin_aarch64_fcmla180v4hf (__r, __a, __b); + } + +-__extension__ extern __inline float16x4_t ++__extension__ extern __inline float16x8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vmulx_laneq_f16 (float16x4_t __a, float16x8_t __b, const int __lane) ++vcmlaq_rot90_laneq_f16 (float16x8_t __r, float16x8_t __a, float16x8_t __b, ++ const int __index) + { +- return vmulx_f16 (__a, __aarch64_vdup_laneq_f16 (__b, __lane)); ++ return __builtin_aarch64_fcmla_lane90v8hf (__r, __a, __b, __index); + } + + __extension__ extern __inline float16x8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vmulxq_laneq_f16 (float16x8_t __a, float16x8_t __b, const int __lane) ++vcmlaq_rot270_laneq_f16 (float16x8_t __r, float16x8_t __a, float16x8_t __b, ++ const int __index) + { +- return vmulxq_f16 (__a, __aarch64_vdupq_laneq_f16 (__b, __lane)); ++ return __builtin_aarch64_fcmla_lane270v8hf (__r, __a, __b, __index); ++} ++ ++__extension__ extern __inline float16x8_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vcmlaq_rot270_lane_f16 (float16x8_t __r, float16x8_t __a, float16x4_t __b, ++ const int __index) ++{ ++ return __builtin_aarch64_fcmlaq_lane270v8hf (__r, __a, __b, __index); + } + + __extension__ extern __inline float16x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vmulx_n_f16 (float16x4_t __a, float16_t __b) ++vcmla_rot270_laneq_f16 (float16x4_t __r, float16x4_t __a, float16x8_t __b, ++ const int __index) + { +- return vmulx_f16 (__a, vdup_n_f16 (__b)); ++ return __builtin_aarch64_fcmla_laneq270v4hf (__r, __a, __b, __index); + } + + __extension__ extern __inline float16x8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vmulxq_n_f16 (float16x8_t __a, float16_t __b) ++vcmlaq_rot270_f16 (float16x8_t __r, float16x8_t __a, float16x8_t __b) + { +- return vmulxq_f16 (__a, vdupq_n_f16 (__b)); ++ return __builtin_aarch64_fcmla270v8hf (__r, __a, __b); + } + +-/* ARMv8.2-A FP16 reduction vector intrinsics. */ +- +-__extension__ extern __inline float16_t ++__extension__ extern __inline float16x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vmaxv_f16 (float16x4_t __a) ++vcmla_rot270_f16 (float16x4_t __r, float16x4_t __a, float16x4_t __b) + { +- return __builtin_aarch64_reduc_smax_nan_scal_v4hf (__a); ++ return __builtin_aarch64_fcmla270v4hf (__r, __a, __b); + } + +-__extension__ extern __inline float16_t ++__extension__ extern __inline float16x8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vmaxvq_f16 (float16x8_t __a) ++vcmlaq_rot180_laneq_f16 (float16x8_t __r, float16x8_t __a, float16x8_t __b, ++ const int __index) + { +- return __builtin_aarch64_reduc_smax_nan_scal_v8hf (__a); ++ return __builtin_aarch64_fcmla_lane180v8hf (__r, __a, __b, __index); + } + +-__extension__ extern __inline float16_t ++__extension__ extern __inline float16x8_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vminv_f16 (float16x4_t __a) ++vcmlaq_rot180_lane_f16 (float16x8_t __r, float16x8_t __a, float16x4_t __b, ++ const int __index) + { +- return __builtin_aarch64_reduc_smin_nan_scal_v4hf (__a); ++ return __builtin_aarch64_fcmlaq_lane180v8hf (__r, __a, __b, __index); + } + +-__extension__ extern __inline float16_t ++__extension__ extern __inline float16x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vminvq_f16 (float16x8_t __a) ++vcmla_rot270_lane_f16 (float16x4_t __r, float16x4_t __a, float16x4_t __b, ++ const int __index) + { +- return __builtin_aarch64_reduc_smin_nan_scal_v8hf (__a); ++ return __builtin_aarch64_fcmla_lane270v4hf (__r, __a, __b, __index); + } ++#pragma GCC pop_options + +-__extension__ extern __inline float16_t ++__extension__ extern __inline float32x2_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vmaxnmv_f16 (float16x4_t __a) ++vcadd_rot90_f32 (float32x2_t __a, float32x2_t __b) + { +- return __builtin_aarch64_reduc_smax_scal_v4hf (__a); ++ return __builtin_aarch64_fcadd90v2sf (__a, __b); + } + +-__extension__ extern __inline float16_t ++__extension__ extern __inline float32x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vmaxnmvq_f16 (float16x8_t __a) ++vcaddq_rot90_f32 (float32x4_t __a, float32x4_t __b) + { +- return __builtin_aarch64_reduc_smax_scal_v8hf (__a); ++ return __builtin_aarch64_fcadd90v4sf (__a, __b); + } + +-__extension__ extern __inline float16_t ++__extension__ extern __inline float64x2_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vminnmv_f16 (float16x4_t __a) ++vcaddq_rot90_f64 (float64x2_t __a, float64x2_t __b) + { +- return __builtin_aarch64_reduc_smin_scal_v4hf (__a); ++ return __builtin_aarch64_fcadd90v2df (__a, __b); + } + +-__extension__ extern __inline float16_t ++__extension__ extern __inline float32x2_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vminnmvq_f16 (float16x8_t __a) ++vcadd_rot270_f32 (float32x2_t __a, float32x2_t __b) + { +- return __builtin_aarch64_reduc_smin_scal_v8hf (__a); ++ return __builtin_aarch64_fcadd270v2sf (__a, __b); + } + +-#pragma GCC pop_options +- +-/* AdvSIMD Dot Product intrinsics. */ +- +-#pragma GCC push_options +-#pragma GCC target ("arch=armv8.2-a+dotprod") +- +-__extension__ extern __inline uint32x2_t ++__extension__ extern __inline float32x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vdot_u32 (uint32x2_t __r, uint8x8_t __a, uint8x8_t __b) ++vcaddq_rot270_f32 (float32x4_t __a, float32x4_t __b) + { +- return __builtin_aarch64_udotv8qi_uuuu (__r, __a, __b); ++ return __builtin_aarch64_fcadd270v4sf (__a, __b); + } + +-__extension__ extern __inline uint32x4_t ++__extension__ extern __inline float64x2_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vdotq_u32 (uint32x4_t __r, uint8x16_t __a, uint8x16_t __b) ++vcaddq_rot270_f64 (float64x2_t __a, float64x2_t __b) + { +- return __builtin_aarch64_udotv16qi_uuuu (__r, __a, __b); ++ return __builtin_aarch64_fcadd270v2df (__a, __b); + } + +-__extension__ extern __inline int32x2_t ++__extension__ extern __inline float32x2_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vdot_s32 (int32x2_t __r, int8x8_t __a, int8x8_t __b) ++vcmla_f32 (float32x2_t __r, float32x2_t __a, float32x2_t __b) + { +- return __builtin_aarch64_sdotv8qi (__r, __a, __b); ++ return __builtin_aarch64_fcmla0v2sf (__r, __a, __b); + } + +-__extension__ extern __inline int32x4_t ++__extension__ extern __inline float32x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vdotq_s32 (int32x4_t __r, int8x16_t __a, int8x16_t __b) ++vcmlaq_f32 (float32x4_t __r, float32x4_t __a, float32x4_t __b) + { +- return __builtin_aarch64_sdotv16qi (__r, __a, __b); ++ return __builtin_aarch64_fcmla0v4sf (__r, __a, __b); + } + +-__extension__ extern __inline uint32x2_t ++__extension__ extern __inline float64x2_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vdot_lane_u32 (uint32x2_t __r, uint8x8_t __a, uint8x8_t __b, const int __index) ++vcmlaq_f64 (float64x2_t __r, float64x2_t __a, float64x2_t __b) + { +- return __builtin_aarch64_udot_lanev8qi_uuuus (__r, __a, __b, __index); ++ return __builtin_aarch64_fcmla0v2df (__r, __a, __b); + } + +-__extension__ extern __inline uint32x2_t ++__extension__ extern __inline float32x2_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vdot_laneq_u32 (uint32x2_t __r, uint8x8_t __a, uint8x16_t __b, ++vcmla_lane_f32 (float32x2_t __r, float32x2_t __a, float32x2_t __b, + const int __index) + { +- return __builtin_aarch64_udot_laneqv8qi_uuuus (__r, __a, __b, __index); ++ return __builtin_aarch64_fcmla_lane0v2sf (__r, __a, __b, __index); + } + +-__extension__ extern __inline uint32x4_t ++__extension__ extern __inline float32x2_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vdotq_lane_u32 (uint32x4_t __r, uint8x16_t __a, uint8x8_t __b, +- const int __index) ++vcmla_laneq_f32 (float32x2_t __r, float32x2_t __a, float32x4_t __b, ++ const int __index) + { +- return __builtin_aarch64_udot_lanev16qi_uuuus (__r, __a, __b, __index); ++ return __builtin_aarch64_fcmla_laneq0v2sf (__r, __a, __b, __index); + } + +-__extension__ extern __inline uint32x4_t ++__extension__ extern __inline float32x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vdotq_laneq_u32 (uint32x4_t __r, uint8x16_t __a, uint8x16_t __b, ++vcmlaq_lane_f32 (float32x4_t __r, float32x4_t __a, float32x2_t __b, + const int __index) + { +- return __builtin_aarch64_udot_laneqv16qi_uuuus (__r, __a, __b, __index); ++ return __builtin_aarch64_fcmlaq_lane0v4sf (__r, __a, __b, __index); + } + +-__extension__ extern __inline int32x2_t ++__extension__ extern __inline float32x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vdot_lane_s32 (int32x2_t __r, int8x8_t __a, int8x8_t __b, const int __index) ++vcmlaq_laneq_f32 (float32x4_t __r, float32x4_t __a, float32x4_t __b, ++ const int __index) + { +- return __builtin_aarch64_sdot_lanev8qi (__r, __a, __b, __index); ++ return __builtin_aarch64_fcmla_lane0v4sf (__r, __a, __b, __index); + } + +-__extension__ extern __inline int32x2_t ++__extension__ extern __inline float32x2_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vdot_laneq_s32 (int32x2_t __r, int8x8_t __a, int8x16_t __b, const int __index) ++vcmla_rot90_f32 (float32x2_t __r, float32x2_t __a, float32x2_t __b) + { +- return __builtin_aarch64_sdot_laneqv8qi (__r, __a, __b, __index); ++ return __builtin_aarch64_fcmla90v2sf (__r, __a, __b); + } + +-__extension__ extern __inline int32x4_t ++__extension__ extern __inline float32x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vdotq_lane_s32 (int32x4_t __r, int8x16_t __a, int8x8_t __b, const int __index) ++vcmlaq_rot90_f32 (float32x4_t __r, float32x4_t __a, float32x4_t __b) + { +- return __builtin_aarch64_sdot_lanev16qi (__r, __a, __b, __index); ++ return __builtin_aarch64_fcmla90v4sf (__r, __a, __b); + } + +-__extension__ extern __inline int32x4_t ++__extension__ extern __inline float64x2_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vdotq_laneq_s32 (int32x4_t __r, int8x16_t __a, int8x16_t __b, const int __index) ++vcmlaq_rot90_f64 (float64x2_t __r, float64x2_t __a, float64x2_t __b) + { +- return __builtin_aarch64_sdot_laneqv16qi (__r, __a, __b, __index); ++ return __builtin_aarch64_fcmla90v2df (__r, __a, __b); + } +-#pragma GCC pop_options +- +-#pragma GCC push_options +-#pragma GCC target ("arch=armv8.2-a+sm4") + +-__extension__ extern __inline uint32x4_t ++__extension__ extern __inline float32x2_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vsm3ss1q_u32 (uint32x4_t __a, uint32x4_t __b, uint32x4_t __c) ++vcmla_rot90_lane_f32 (float32x2_t __r, float32x2_t __a, float32x2_t __b, ++ const int __index) + { +- return __builtin_aarch64_sm3ss1qv4si_uuuu (__a, __b, __c); ++ return __builtin_aarch64_fcmla_lane90v2sf (__r, __a, __b, __index); + } + +-__extension__ extern __inline uint32x4_t ++__extension__ extern __inline float32x2_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vsm3tt1aq_u32 (uint32x4_t __a, uint32x4_t __b, uint32x4_t __c, const int __imm2) ++vcmla_rot90_laneq_f32 (float32x2_t __r, float32x2_t __a, float32x4_t __b, ++ const int __index) + { +- return __builtin_aarch64_sm3tt1aqv4si_uuuus (__a, __b, __c, __imm2); ++ return __builtin_aarch64_fcmla_laneq90v2sf (__r, __a, __b, __index); + } + +-__extension__ extern __inline uint32x4_t ++__extension__ extern __inline float32x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vsm3tt1bq_u32 (uint32x4_t __a, uint32x4_t __b, uint32x4_t __c, const int __imm2) ++vcmlaq_rot90_lane_f32 (float32x4_t __r, float32x4_t __a, float32x2_t __b, ++ const int __index) + { +- return __builtin_aarch64_sm3tt1bqv4si_uuuus (__a, __b, __c, __imm2); ++ return __builtin_aarch64_fcmlaq_lane90v4sf (__r, __a, __b, __index); + } + +-__extension__ extern __inline uint32x4_t ++__extension__ extern __inline float32x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vsm3tt2aq_u32 (uint32x4_t __a, uint32x4_t __b, uint32x4_t __c, const int __imm2) ++vcmlaq_rot90_laneq_f32 (float32x4_t __r, float32x4_t __a, float32x4_t __b, ++ const int __index) + { +- return __builtin_aarch64_sm3tt2aqv4si_uuuus (__a, __b, __c, __imm2); ++ return __builtin_aarch64_fcmla_lane90v4sf (__r, __a, __b, __index); + } + +-__extension__ extern __inline uint32x4_t ++__extension__ extern __inline float32x2_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vsm3tt2bq_u32 (uint32x4_t __a, uint32x4_t __b, uint32x4_t __c, const int __imm2) ++vcmla_rot180_f32 (float32x2_t __r, float32x2_t __a, float32x2_t __b) + { +- return __builtin_aarch64_sm3tt2bqv4si_uuuus (__a, __b, __c, __imm2); ++ return __builtin_aarch64_fcmla180v2sf (__r, __a, __b); + } + +-__extension__ extern __inline uint32x4_t ++__extension__ extern __inline float32x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vsm3partw1q_u32 (uint32x4_t __a, uint32x4_t __b, uint32x4_t __c) ++vcmlaq_rot180_f32 (float32x4_t __r, float32x4_t __a, float32x4_t __b) + { +- return __builtin_aarch64_sm3partw1qv4si_uuuu (__a, __b, __c); ++ return __builtin_aarch64_fcmla180v4sf (__r, __a, __b); + } +-__extension__ extern __inline uint32x4_t ++ ++__extension__ extern __inline float64x2_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vsm3partw2q_u32 (uint32x4_t __a, uint32x4_t __b, uint32x4_t __c) ++vcmlaq_rot180_f64 (float64x2_t __r, float64x2_t __a, float64x2_t __b) + { +- return __builtin_aarch64_sm3partw2qv4si_uuuu (__a, __b, __c); ++ return __builtin_aarch64_fcmla180v2df (__r, __a, __b); + } + +-__extension__ extern __inline uint32x4_t ++__extension__ extern __inline float32x2_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vsm4eq_u32 (uint32x4_t __a, uint32x4_t __b) ++vcmla_rot180_lane_f32 (float32x2_t __r, float32x2_t __a, float32x2_t __b, ++ const int __index) + { +- return __builtin_aarch64_sm4eqv4si_uuu (__a, __b); ++ return __builtin_aarch64_fcmla_lane180v2sf (__r, __a, __b, __index); + } + +-__extension__ extern __inline uint32x4_t ++__extension__ extern __inline float32x2_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vsm4ekeyq_u32 (uint32x4_t __a, uint32x4_t __b) ++vcmla_rot180_laneq_f32 (float32x2_t __r, float32x2_t __a, float32x4_t __b, ++ const int __index) + { +- return __builtin_aarch64_sm4ekeyqv4si_uuu (__a, __b); ++ return __builtin_aarch64_fcmla_laneq180v2sf (__r, __a, __b, __index); + } + +-#pragma GCC pop_options +- +-#pragma GCC push_options +-#pragma GCC target ("arch=armv8.2-a+sha3") ++__extension__ extern __inline float32x4_t ++__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) ++vcmlaq_rot180_lane_f32 (float32x4_t __r, float32x4_t __a, float32x2_t __b, ++ const int __index) ++{ ++ return __builtin_aarch64_fcmlaq_lane180v4sf (__r, __a, __b, __index); ++} + +-__extension__ extern __inline uint64x2_t ++__extension__ extern __inline float32x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vsha512hq_u64 (uint64x2_t __a, uint64x2_t __b, uint64x2_t __c) ++vcmlaq_rot180_laneq_f32 (float32x4_t __r, float32x4_t __a, float32x4_t __b, ++ const int __index) + { +- return __builtin_aarch64_crypto_sha512hqv2di_uuuu (__a, __b, __c); ++ return __builtin_aarch64_fcmla_lane180v4sf (__r, __a, __b, __index); + } + +-__extension__ extern __inline uint64x2_t ++__extension__ extern __inline float32x2_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vsha512h2q_u64 (uint64x2_t __a, uint64x2_t __b, uint64x2_t __c) ++vcmla_rot270_f32 (float32x2_t __r, float32x2_t __a, float32x2_t __b) + { +- return __builtin_aarch64_crypto_sha512h2qv2di_uuuu (__a, __b, __c); ++ return __builtin_aarch64_fcmla270v2sf (__r, __a, __b); + } + +-__extension__ extern __inline uint64x2_t ++__extension__ extern __inline float32x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vsha512su0q_u64 (uint64x2_t __a, uint64x2_t __b) ++vcmlaq_rot270_f32 (float32x4_t __r, float32x4_t __a, float32x4_t __b) + { +- return __builtin_aarch64_crypto_sha512su0qv2di_uuu (__a, __b); ++ return __builtin_aarch64_fcmla270v4sf (__r, __a, __b); + } + +-__extension__ extern __inline uint64x2_t ++__extension__ extern __inline float64x2_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vsha512su1q_u64 (uint64x2_t __a, uint64x2_t __b, uint64x2_t __c) ++vcmlaq_rot270_f64 (float64x2_t __r, float64x2_t __a, float64x2_t __b) + { +- return __builtin_aarch64_crypto_sha512su1qv2di_uuuu (__a, __b, __c); ++ return __builtin_aarch64_fcmla270v2df (__r, __a, __b); + } + +-__extension__ extern __inline uint16x8_t ++__extension__ extern __inline float32x2_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-veor3q_u16 (uint16x8_t __a, uint16x8_t __b, uint16x8_t __c) ++vcmla_rot270_lane_f32 (float32x2_t __r, float32x2_t __a, float32x2_t __b, ++ const int __index) + { +- return __builtin_aarch64_eor3qv8hi_uuuu (__a, __b, __c); ++ return __builtin_aarch64_fcmla_lane270v2sf (__r, __a, __b, __index); + } + +-__extension__ extern __inline uint64x2_t ++__extension__ extern __inline float32x2_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vrax1q_u64 (uint64x2_t __a, uint64x2_t __b) ++vcmla_rot270_laneq_f32 (float32x2_t __r, float32x2_t __a, float32x4_t __b, ++ const int __index) + { +- return __builtin_aarch64_rax1qv2di_uuu (__a, __b); ++ return __builtin_aarch64_fcmla_laneq270v2sf (__r, __a, __b, __index); + } + +-__extension__ extern __inline uint64x2_t ++__extension__ extern __inline float32x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vxarq_u64 (uint64x2_t __a, uint64x2_t __b, const int imm6) ++vcmlaq_rot270_lane_f32 (float32x4_t __r, float32x4_t __a, float32x2_t __b, ++ const int __index) + { +- return __builtin_aarch64_xarqv2di_uuus (__a, __b,imm6); ++ return __builtin_aarch64_fcmlaq_lane270v4sf (__r, __a, __b, __index); + } + +-__extension__ extern __inline uint16x8_t ++__extension__ extern __inline float32x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vbcaxq_u16 (uint16x8_t __a, uint16x8_t __b, uint16x8_t __c) ++vcmlaq_rot270_laneq_f32 (float32x4_t __r, float32x4_t __a, float32x4_t __b, ++ const int __index) + { +- return __builtin_aarch64_bcaxqv8hi_uuuu (__a, __b, __c); ++ return __builtin_aarch64_fcmla_lane270v4sf (__r, __a, __b, __index); + } ++ + #pragma GCC pop_options + + #pragma GCC push_options +@@ -32102,63 +34450,63 @@ vbcaxq_u16 (uint16x8_t __a, uint16x8_t __b, uint16x8_t __c) + + __extension__ extern __inline float32x2_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vfmlal_low_u32 (float32x2_t __r, float16x4_t __a, float16x4_t __b) ++vfmlal_low_f16 (float32x2_t __r, float16x4_t __a, float16x4_t __b) + { + return __builtin_aarch64_fmlal_lowv2sf (__r, __a, __b); + } + + __extension__ extern __inline float32x2_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vfmlsl_low_u32 (float32x2_t __r, float16x4_t __a, float16x4_t __b) ++vfmlsl_low_f16 (float32x2_t __r, float16x4_t __a, float16x4_t __b) + { + return __builtin_aarch64_fmlsl_lowv2sf (__r, __a, __b); + } + + __extension__ extern __inline float32x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vfmlalq_low_u32 (float32x4_t __r, float16x8_t __a, float16x8_t __b) ++vfmlalq_low_f16 (float32x4_t __r, float16x8_t __a, float16x8_t __b) + { + return __builtin_aarch64_fmlalq_lowv4sf (__r, __a, __b); + } + + __extension__ extern __inline float32x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vfmlslq_low_u32 (float32x4_t __r, float16x8_t __a, float16x8_t __b) ++vfmlslq_low_f16 (float32x4_t __r, float16x8_t __a, float16x8_t __b) + { + return __builtin_aarch64_fmlslq_lowv4sf (__r, __a, __b); + } + + __extension__ extern __inline float32x2_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vfmlal_high_u32 (float32x2_t __r, float16x4_t __a, float16x4_t __b) ++vfmlal_high_f16 (float32x2_t __r, float16x4_t __a, float16x4_t __b) + { + return __builtin_aarch64_fmlal_highv2sf (__r, __a, __b); + } + + __extension__ extern __inline float32x2_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vfmlsl_high_u32 (float32x2_t __r, float16x4_t __a, float16x4_t __b) ++vfmlsl_high_f16 (float32x2_t __r, float16x4_t __a, float16x4_t __b) + { + return __builtin_aarch64_fmlsl_highv2sf (__r, __a, __b); + } + + __extension__ extern __inline float32x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vfmlalq_high_u32 (float32x4_t __r, float16x8_t __a, float16x8_t __b) ++vfmlalq_high_f16 (float32x4_t __r, float16x8_t __a, float16x8_t __b) + { + return __builtin_aarch64_fmlalq_highv4sf (__r, __a, __b); + } + + __extension__ extern __inline float32x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vfmlslq_high_u32 (float32x4_t __r, float16x8_t __a, float16x8_t __b) ++vfmlslq_high_f16 (float32x4_t __r, float16x8_t __a, float16x8_t __b) + { + return __builtin_aarch64_fmlslq_highv4sf (__r, __a, __b); + } + + __extension__ extern __inline float32x2_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vfmlal_lane_low_u32 (float32x2_t __r, float16x4_t __a, float16x4_t __b, ++vfmlal_lane_low_f16 (float32x2_t __r, float16x4_t __a, float16x4_t __b, + const int __lane) + { + return __builtin_aarch64_fmlal_lane_lowv2sf (__r, __a, __b, __lane); +@@ -32166,7 +34514,7 @@ vfmlal_lane_low_u32 (float32x2_t __r, float16x4_t __a, float16x4_t __b, + + __extension__ extern __inline float32x2_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vfmlsl_lane_low_u32 (float32x2_t __r, float16x4_t __a, float16x4_t __b, ++vfmlsl_lane_low_f16 (float32x2_t __r, float16x4_t __a, float16x4_t __b, + const int __lane) + { + return __builtin_aarch64_fmlsl_lane_lowv2sf (__r, __a, __b, __lane); +@@ -32174,7 +34522,7 @@ vfmlsl_lane_low_u32 (float32x2_t __r, float16x4_t __a, float16x4_t __b, + + __extension__ extern __inline float32x2_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vfmlal_laneq_low_u32 (float32x2_t __r, float16x4_t __a, float16x8_t __b, ++vfmlal_laneq_low_f16 (float32x2_t __r, float16x4_t __a, float16x8_t __b, + const int __lane) + { + return __builtin_aarch64_fmlal_laneq_lowv2sf (__r, __a, __b, __lane); +@@ -32182,7 +34530,7 @@ vfmlal_laneq_low_u32 (float32x2_t __r, float16x4_t __a, float16x8_t __b, + + __extension__ extern __inline float32x2_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vfmlsl_laneq_low_u32 (float32x2_t __r, float16x4_t __a, float16x8_t __b, ++vfmlsl_laneq_low_f16 (float32x2_t __r, float16x4_t __a, float16x8_t __b, + const int __lane) + { + return __builtin_aarch64_fmlsl_laneq_lowv2sf (__r, __a, __b, __lane); +@@ -32190,7 +34538,7 @@ vfmlsl_laneq_low_u32 (float32x2_t __r, float16x4_t __a, float16x8_t __b, + + __extension__ extern __inline float32x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vfmlalq_lane_low_u32 (float32x4_t __r, float16x8_t __a, float16x4_t __b, ++vfmlalq_lane_low_f16 (float32x4_t __r, float16x8_t __a, float16x4_t __b, + const int __lane) + { + return __builtin_aarch64_fmlalq_lane_lowv4sf (__r, __a, __b, __lane); +@@ -32198,7 +34546,7 @@ vfmlalq_lane_low_u32 (float32x4_t __r, float16x8_t __a, float16x4_t __b, + + __extension__ extern __inline float32x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vfmlslq_lane_low_u32 (float32x4_t __r, float16x8_t __a, float16x4_t __b, ++vfmlslq_lane_low_f16 (float32x4_t __r, float16x8_t __a, float16x4_t __b, + const int __lane) + { + return __builtin_aarch64_fmlslq_lane_lowv4sf (__r, __a, __b, __lane); +@@ -32206,7 +34554,7 @@ vfmlslq_lane_low_u32 (float32x4_t __r, float16x8_t __a, float16x4_t __b, + + __extension__ extern __inline float32x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vfmlalq_laneq_low_u32 (float32x4_t __r, float16x8_t __a, float16x8_t __b, ++vfmlalq_laneq_low_f16 (float32x4_t __r, float16x8_t __a, float16x8_t __b, + const int __lane) + { + return __builtin_aarch64_fmlalq_laneq_lowv4sf (__r, __a, __b, __lane); +@@ -32214,7 +34562,7 @@ vfmlalq_laneq_low_u32 (float32x4_t __r, float16x8_t __a, float16x8_t __b, + + __extension__ extern __inline float32x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vfmlslq_laneq_low_u32 (float32x4_t __r, float16x8_t __a, float16x8_t __b, ++vfmlslq_laneq_low_f16 (float32x4_t __r, float16x8_t __a, float16x8_t __b, + const int __lane) + { + return __builtin_aarch64_fmlslq_laneq_lowv4sf (__r, __a, __b, __lane); +@@ -32222,7 +34570,7 @@ vfmlslq_laneq_low_u32 (float32x4_t __r, float16x8_t __a, float16x8_t __b, + + __extension__ extern __inline float32x2_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vfmlal_lane_high_u32 (float32x2_t __r, float16x4_t __a, float16x4_t __b, ++vfmlal_lane_high_f16 (float32x2_t __r, float16x4_t __a, float16x4_t __b, + const int __lane) + { + return __builtin_aarch64_fmlal_lane_highv2sf (__r, __a, __b, __lane); +@@ -32230,7 +34578,7 @@ vfmlal_lane_high_u32 (float32x2_t __r, float16x4_t __a, float16x4_t __b, + + __extension__ extern __inline float32x2_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vfmlsl_lane_high_u32 (float32x2_t __r, float16x4_t __a, float16x4_t __b, ++vfmlsl_lane_high_f16 (float32x2_t __r, float16x4_t __a, float16x4_t __b, + const int __lane) + { + return __builtin_aarch64_fmlsl_lane_highv2sf (__r, __a, __b, __lane); +@@ -32238,7 +34586,7 @@ vfmlsl_lane_high_u32 (float32x2_t __r, float16x4_t __a, float16x4_t __b, + + __extension__ extern __inline float32x2_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vfmlal_laneq_high_u32 (float32x2_t __r, float16x4_t __a, float16x8_t __b, ++vfmlal_laneq_high_f16 (float32x2_t __r, float16x4_t __a, float16x8_t __b, + const int __lane) + { + return __builtin_aarch64_fmlal_laneq_highv2sf (__r, __a, __b, __lane); +@@ -32246,7 +34594,7 @@ vfmlal_laneq_high_u32 (float32x2_t __r, float16x4_t __a, float16x8_t __b, + + __extension__ extern __inline float32x2_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vfmlsl_laneq_high_u32 (float32x2_t __r, float16x4_t __a, float16x8_t __b, ++vfmlsl_laneq_high_f16 (float32x2_t __r, float16x4_t __a, float16x8_t __b, + const int __lane) + { + return __builtin_aarch64_fmlsl_laneq_highv2sf (__r, __a, __b, __lane); +@@ -32254,7 +34602,7 @@ vfmlsl_laneq_high_u32 (float32x2_t __r, float16x4_t __a, float16x8_t __b, + + __extension__ extern __inline float32x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vfmlalq_lane_high_u32 (float32x4_t __r, float16x8_t __a, float16x4_t __b, ++vfmlalq_lane_high_f16 (float32x4_t __r, float16x8_t __a, float16x4_t __b, + const int __lane) + { + return __builtin_aarch64_fmlalq_lane_highv4sf (__r, __a, __b, __lane); +@@ -32262,7 +34610,7 @@ vfmlalq_lane_high_u32 (float32x4_t __r, float16x8_t __a, float16x4_t __b, + + __extension__ extern __inline float32x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vfmlslq_lane_high_u32 (float32x4_t __r, float16x8_t __a, float16x4_t __b, ++vfmlslq_lane_high_f16 (float32x4_t __r, float16x8_t __a, float16x4_t __b, + const int __lane) + { + return __builtin_aarch64_fmlslq_lane_highv4sf (__r, __a, __b, __lane); +@@ -32270,7 +34618,7 @@ vfmlslq_lane_high_u32 (float32x4_t __r, float16x8_t __a, float16x4_t __b, + + __extension__ extern __inline float32x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vfmlalq_laneq_high_u32 (float32x4_t __r, float16x8_t __a, float16x8_t __b, ++vfmlalq_laneq_high_f16 (float32x4_t __r, float16x8_t __a, float16x8_t __b, + const int __lane) + { + return __builtin_aarch64_fmlalq_laneq_highv4sf (__r, __a, __b, __lane); +@@ -32278,7 +34626,7 @@ vfmlalq_laneq_high_u32 (float32x4_t __r, float16x8_t __a, float16x8_t __b, + + __extension__ extern __inline float32x4_t + __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +-vfmlslq_laneq_high_u32 (float32x4_t __r, float16x8_t __a, float16x8_t __b, ++vfmlslq_laneq_high_f16 (float32x4_t __r, float16x8_t __a, float16x8_t __b, + const int __lane) + { + return __builtin_aarch64_fmlslq_laneq_highv4sf (__r, __a, __b, __lane); +@@ -32286,6 +34634,55 @@ vfmlslq_laneq_high_u32 (float32x4_t __r, float16x8_t __a, float16x8_t __b, + + #pragma GCC pop_options + ++__extension__ extern __inline poly8x8_t ++__attribute ((__always_inline__, __gnu_inline__, __artificial__)) ++vadd_p8 (poly8x8_t __a, poly8x8_t __b) ++{ ++ return __a ^ __b; ++} ++ ++__extension__ extern __inline poly16x4_t ++__attribute ((__always_inline__, __gnu_inline__, __artificial__)) ++vadd_p16 (poly16x4_t __a, poly16x4_t __b) ++{ ++ return __a ^ __b; ++} ++ ++__extension__ extern __inline poly64x1_t ++__attribute ((__always_inline__, __gnu_inline__, __artificial__)) ++vadd_p64 (poly64x1_t __a, poly64x1_t __b) ++{ ++ return __a ^ __b; ++} ++ ++__extension__ extern __inline poly8x16_t ++__attribute ((__always_inline__, __gnu_inline__, __artificial__)) ++vaddq_p8 (poly8x16_t __a, poly8x16_t __b) ++{ ++ return __a ^ __b; ++} ++ ++__extension__ extern __inline poly16x8_t ++__attribute ((__always_inline__, __gnu_inline__, __artificial__)) ++vaddq_p16 (poly16x8_t __a, poly16x8_t __b) ++{ ++ return __a ^__b; ++} ++ ++__extension__ extern __inline poly64x2_t ++__attribute ((__always_inline__, __gnu_inline__, __artificial__)) ++vaddq_p64 (poly64x2_t __a, poly64x2_t __b) ++{ ++ return __a ^ __b; ++} ++ ++__extension__ extern __inline poly128_t ++__attribute ((__always_inline__, __gnu_inline__, __artificial__)) ++vaddq_p128 (poly128_t __a, poly128_t __b) ++{ ++ return __a ^ __b; ++} ++ + #undef __aarch64_vget_lane_any + + #undef __aarch64_vdup_lane_any +--- a/src/gcc/config/aarch64/atomics.md ++++ b/src/gcc/config/aarch64/atomics.md +@@ -22,10 +22,10 @@ + + (define_expand "atomic_compare_and_swap" + [(match_operand:SI 0 "register_operand" "") ;; bool out +- (match_operand:ALLI 1 "register_operand" "") ;; val out +- (match_operand:ALLI 2 "aarch64_sync_memory_operand" "") ;; memory +- (match_operand:ALLI 3 "general_operand" "") ;; expected +- (match_operand:ALLI 4 "aarch64_reg_or_zero" "") ;; desired ++ (match_operand:ALLI_TI 1 "register_operand" "") ;; val out ++ (match_operand:ALLI_TI 2 "aarch64_sync_memory_operand" "") ;; memory ++ (match_operand:ALLI_TI 3 "nonmemory_operand" "") ;; expected ++ (match_operand:ALLI_TI 4 "aarch64_reg_or_zero" "") ;; desired + (match_operand:SI 5 "const_int_operand") ;; is_weak + (match_operand:SI 6 "const_int_operand") ;; mod_s + (match_operand:SI 7 "const_int_operand")] ;; mod_f +@@ -36,19 +36,25 @@ + } + ) + ++(define_mode_attr cas_short_expected_pred ++ [(QI "aarch64_reg_or_imm") (HI "aarch64_plushi_operand")]) ++(define_mode_attr cas_short_expected_imm ++ [(QI "n") (HI "Uph")]) ++ + (define_insn_and_split "aarch64_compare_and_swap" + [(set (reg:CC CC_REGNUM) ;; bool out + (unspec_volatile:CC [(const_int 0)] UNSPECV_ATOMIC_CMPSW)) +- (set (match_operand:SI 0 "register_operand" "=&r") ;; val out ++ (set (match_operand:SI 0 "register_operand" "=&r") ;; val out + (zero_extend:SI + (match_operand:SHORT 1 "aarch64_sync_memory_operand" "+Q"))) ;; memory + (set (match_dup 1) + (unspec_volatile:SHORT +- [(match_operand:SI 2 "aarch64_plus_operand" "rI") ;; expected ++ [(match_operand:SHORT 2 "" ++ "r") ;; expected + (match_operand:SHORT 3 "aarch64_reg_or_zero" "rZ") ;; desired +- (match_operand:SI 4 "const_int_operand") ;; is_weak +- (match_operand:SI 5 "const_int_operand") ;; mod_s +- (match_operand:SI 6 "const_int_operand")] ;; mod_f ++ (match_operand:SI 4 "const_int_operand") ;; is_weak ++ (match_operand:SI 5 "const_int_operand") ;; mod_s ++ (match_operand:SI 6 "const_int_operand")] ;; mod_f + UNSPECV_ATOMIC_CMPSW)) + (clobber (match_scratch:SI 7 "=&r"))] + "" +@@ -68,7 +74,7 @@ + (match_operand:GPI 1 "aarch64_sync_memory_operand" "+Q")) ;; memory + (set (match_dup 1) + (unspec_volatile:GPI +- [(match_operand:GPI 2 "aarch64_plus_operand" "rI") ;; expect ++ [(match_operand:GPI 2 "aarch64_plus_operand" "rn") ;; expect + (match_operand:GPI 3 "aarch64_reg_or_zero" "rZ") ;; desired + (match_operand:SI 4 "const_int_operand") ;; is_weak + (match_operand:SI 5 "const_int_operand") ;; mod_s +@@ -85,84 +91,135 @@ + } + ) + +-(define_insn_and_split "aarch64_compare_and_swap_lse" ++(define_insn_and_split "aarch64_compare_and_swapti" + [(set (reg:CC CC_REGNUM) ;; bool out + (unspec_volatile:CC [(const_int 0)] UNSPECV_ATOMIC_CMPSW)) +- (set (match_operand:SI 0 "register_operand" "=&r") ;; val out +- (zero_extend:SI +- (match_operand:SHORT 1 "aarch64_sync_memory_operand" "+Q"))) ;; memory ++ (set (match_operand:TI 0 "register_operand" "=&r") ;; val out ++ (match_operand:TI 1 "aarch64_sync_memory_operand" "+Q")) ;; memory + (set (match_dup 1) +- (unspec_volatile:SHORT +- [(match_operand:SI 2 "aarch64_plus_operand" "rI") ;; expected +- (match_operand:SHORT 3 "aarch64_reg_or_zero" "rZ") ;; desired +- (match_operand:SI 4 "const_int_operand") ;; is_weak +- (match_operand:SI 5 "const_int_operand") ;; mod_s +- (match_operand:SI 6 "const_int_operand")] ;; mod_f +- UNSPECV_ATOMIC_CMPSW))] +- "TARGET_LSE" ++ (unspec_volatile:TI ++ [(match_operand:TI 2 "aarch64_reg_or_zero" "rZ") ;; expect ++ (match_operand:TI 3 "aarch64_reg_or_zero" "rZ") ;; desired ++ (match_operand:SI 4 "const_int_operand") ;; is_weak ++ (match_operand:SI 5 "const_int_operand") ;; mod_s ++ (match_operand:SI 6 "const_int_operand")] ;; mod_f ++ UNSPECV_ATOMIC_CMPSW)) ++ (clobber (match_scratch:SI 7 "=&r"))] ++ "" + "#" +- "&& reload_completed" ++ "&& epilogue_completed" + [(const_int 0)] + { +- aarch64_gen_atomic_cas (operands[0], operands[1], +- operands[2], operands[3], +- operands[5]); ++ aarch64_split_compare_and_swap (operands); + DONE; + } + ) + +-(define_insn_and_split "aarch64_compare_and_swap_lse" +- [(set (reg:CC CC_REGNUM) ;; bool out +- (unspec_volatile:CC [(const_int 0)] UNSPECV_ATOMIC_CMPSW)) +- (set (match_operand:GPI 0 "register_operand" "=&r") ;; val out ++(define_insn "aarch64_compare_and_swap_lse" ++ [(set (match_operand:SI 0 "register_operand" "+r") ;; val out ++ (zero_extend:SI ++ (match_operand:SHORT 1 "aarch64_sync_memory_operand" "+Q"))) ;; memory ++ (set (match_dup 1) ++ (unspec_volatile:SHORT ++ [(match_dup 0) ;; expected ++ (match_operand:SHORT 2 "aarch64_reg_or_zero" "rZ") ;; desired ++ (match_operand:SI 3 "const_int_operand")] ;; mod_s ++ UNSPECV_ATOMIC_CMPSW))] ++ "TARGET_LSE" ++{ ++ enum memmodel model = memmodel_from_int (INTVAL (operands[3])); ++ if (is_mm_relaxed (model)) ++ return "cas\t%0, %2, %1"; ++ else if (is_mm_acquire (model) || is_mm_consume (model)) ++ return "casa\t%0, %2, %1"; ++ else if (is_mm_release (model)) ++ return "casl\t%0, %2, %1"; ++ else ++ return "casal\t%0, %2, %1"; ++}) ++ ++(define_insn "aarch64_compare_and_swap_lse" ++ [(set (match_operand:GPI 0 "register_operand" "+r") ;; val out + (match_operand:GPI 1 "aarch64_sync_memory_operand" "+Q")) ;; memory + (set (match_dup 1) + (unspec_volatile:GPI +- [(match_operand:GPI 2 "aarch64_plus_operand" "rI") ;; expect +- (match_operand:GPI 3 "aarch64_reg_or_zero" "rZ") ;; desired +- (match_operand:SI 4 "const_int_operand") ;; is_weak +- (match_operand:SI 5 "const_int_operand") ;; mod_s +- (match_operand:SI 6 "const_int_operand")] ;; mod_f ++ [(match_dup 0) ;; expected ++ (match_operand:GPI 2 "aarch64_reg_or_zero" "rZ") ;; desired ++ (match_operand:SI 3 "const_int_operand")] ;; mod_s + UNSPECV_ATOMIC_CMPSW))] + "TARGET_LSE" +- "#" +- "&& reload_completed" +- [(const_int 0)] +- { +- aarch64_gen_atomic_cas (operands[0], operands[1], +- operands[2], operands[3], +- operands[5]); +- DONE; +- } +-) ++{ ++ enum memmodel model = memmodel_from_int (INTVAL (operands[3])); ++ if (is_mm_relaxed (model)) ++ return "cas\t%0, %2, %1"; ++ else if (is_mm_acquire (model) || is_mm_consume (model)) ++ return "casa\t%0, %2, %1"; ++ else if (is_mm_release (model)) ++ return "casl\t%0, %2, %1"; ++ else ++ return "casal\t%0, %2, %1"; ++}) ++ ++(define_insn "aarch64_compare_and_swapti_lse" ++ [(set (match_operand:TI 0 "register_operand" "+r") ;; val out ++ (match_operand:TI 1 "aarch64_sync_memory_operand" "+Q")) ;; memory ++ (set (match_dup 1) ++ (unspec_volatile:TI ++ [(match_dup 0) ;; expect ++ (match_operand:TI 2 "register_operand" "r") ;; desired ++ (match_operand:SI 3 "const_int_operand")] ;; mod_s ++ UNSPECV_ATOMIC_CMPSW))] ++ "TARGET_LSE" ++{ ++ enum memmodel model = memmodel_from_int (INTVAL (operands[3])); ++ if (is_mm_relaxed (model)) ++ return "casp\t%0, %R0, %2, %R2, %1"; ++ else if (is_mm_acquire (model) || is_mm_consume (model)) ++ return "caspa\t%0, %R0, %2, %R2, %1"; ++ else if (is_mm_release (model)) ++ return "caspl\t%0, %R0, %2, %R2, %1"; ++ else ++ return "caspal\t%0, %R0, %2, %R2, %1"; ++}) + + (define_expand "atomic_exchange" + [(match_operand:ALLI 0 "register_operand" "") + (match_operand:ALLI 1 "aarch64_sync_memory_operand" "") +- (match_operand:ALLI 2 "register_operand" "") ++ (match_operand:ALLI 2 "aarch64_reg_or_zero" "") + (match_operand:SI 3 "const_int_operand" "")] + "" + { +- rtx (*gen) (rtx, rtx, rtx, rtx); +- + /* Use an atomic SWP when available. */ + if (TARGET_LSE) +- gen = gen_aarch64_atomic_exchange_lse; ++ { ++ emit_insn (gen_aarch64_atomic_exchange_lse ++ (operands[0], operands[1], operands[2], operands[3])); ++ } ++ else if (TARGET_OUTLINE_ATOMICS) ++ { ++ machine_mode mode = mode; ++ rtx func = aarch64_atomic_ool_func (mode, operands[3], ++ &aarch64_ool_swp_names); ++ rtx rval = emit_library_call_value (func, operands[0], LCT_NORMAL, ++ mode, operands[2], mode, ++ XEXP (operands[1], 0), Pmode); ++ emit_move_insn (operands[0], rval); ++ } + else +- gen = gen_aarch64_atomic_exchange; +- +- emit_insn (gen (operands[0], operands[1], operands[2], operands[3])); +- ++ { ++ emit_insn (gen_aarch64_atomic_exchange ++ (operands[0], operands[1], operands[2], operands[3])); ++ } + DONE; + } + ) + + (define_insn_and_split "aarch64_atomic_exchange" + [(set (match_operand:ALLI 0 "register_operand" "=&r") ;; output +- (match_operand:ALLI 1 "aarch64_sync_memory_operand" "+Q")) ;; memory ++ (match_operand:ALLI 1 "aarch64_sync_memory_operand" "+Q")) ;; memory + (set (match_dup 1) + (unspec_volatile:ALLI +- [(match_operand:ALLI 2 "register_operand" "r") ;; input ++ [(match_operand:ALLI 2 "aarch64_reg_or_zero" "rZ") ;; input + (match_operand:SI 3 "const_int_operand" "")] ;; model + UNSPECV_ATOMIC_EXCHG)) + (clobber (reg:CC CC_REGNUM)) +@@ -178,22 +235,25 @@ + } + ) + +-(define_insn_and_split "aarch64_atomic_exchange_lse" +- [(set (match_operand:ALLI 0 "register_operand" "=&r") ++(define_insn "aarch64_atomic_exchange_lse" ++ [(set (match_operand:ALLI 0 "register_operand" "=r") + (match_operand:ALLI 1 "aarch64_sync_memory_operand" "+Q")) + (set (match_dup 1) + (unspec_volatile:ALLI +- [(match_operand:ALLI 2 "register_operand" "r") ++ [(match_operand:ALLI 2 "aarch64_reg_or_zero" "rZ") + (match_operand:SI 3 "const_int_operand" "")] + UNSPECV_ATOMIC_EXCHG))] + "TARGET_LSE" +- "#" +- "&& reload_completed" +- [(const_int 0)] + { +- aarch64_gen_atomic_ldop (SET, operands[0], NULL, operands[1], +- operands[2], operands[3]); +- DONE; ++ enum memmodel model = memmodel_from_int (INTVAL (operands[3])); ++ if (is_mm_relaxed (model)) ++ return "swp\t%2, %0, %1"; ++ else if (is_mm_acquire (model) || is_mm_consume (model)) ++ return "swpa\t%2, %0, %1"; ++ else if (is_mm_release (model)) ++ return "swpl\t%2, %0, %1"; ++ else ++ return "swpal\t%2, %0, %1"; + } + ) + +@@ -207,13 +267,70 @@ + rtx (*gen) (rtx, rtx, rtx); + + /* Use an atomic load-operate instruction when possible. */ +- if (aarch64_atomic_ldop_supported_p ()) +- gen = gen_aarch64_atomic__lse; ++ if (TARGET_LSE) ++ { ++ switch () ++ { ++ case MINUS: ++ operands[1] = expand_simple_unop (mode, NEG, operands[1], ++ NULL, 1); ++ /* fallthru */ ++ case PLUS: ++ gen = gen_aarch64_atomic_add_lse; ++ break; ++ case IOR: ++ gen = gen_aarch64_atomic_ior_lse; ++ break; ++ case XOR: ++ gen = gen_aarch64_atomic_xor_lse; ++ break; ++ case AND: ++ operands[1] = expand_simple_unop (mode, NOT, operands[1], ++ NULL, 1); ++ gen = gen_aarch64_atomic_bic_lse; ++ break; ++ default: ++ gcc_unreachable (); ++ } ++ operands[1] = force_reg (mode, operands[1]); ++ } ++ else if (TARGET_OUTLINE_ATOMICS) ++ { ++ const atomic_ool_names *names; ++ switch () ++ { ++ case MINUS: ++ operands[1] = expand_simple_unop (mode, NEG, operands[1], ++ NULL, 1); ++ /* fallthru */ ++ case PLUS: ++ names = &aarch64_ool_ldadd_names; ++ break; ++ case IOR: ++ names = &aarch64_ool_ldset_names; ++ break; ++ case XOR: ++ names = &aarch64_ool_ldeor_names; ++ break; ++ case AND: ++ operands[1] = expand_simple_unop (mode, NOT, operands[1], ++ NULL, 1); ++ names = &aarch64_ool_ldclr_names; ++ break; ++ default: ++ gcc_unreachable (); ++ } ++ machine_mode mode = mode; ++ rtx func = aarch64_atomic_ool_func (mode, operands[2], names); ++ emit_library_call_value (func, NULL_RTX, LCT_NORMAL, mode, ++ operands[1], mode, ++ XEXP (operands[0], 0), Pmode); ++ DONE; ++ } + else + gen = gen_aarch64_atomic_; + + emit_insn (gen (operands[0], operands[1], operands[2])); +- + DONE; + } + ) +@@ -239,22 +356,37 @@ + } + ) + +-(define_insn_and_split "aarch64_atomic__lse" ++;; It is tempting to want to use ST for relaxed and release ++;; memory models here. However, that is incompatible with the ++;; C++ memory model for the following case: ++;; ++;; atomic_fetch_add(ptr, 1, memory_order_relaxed); ++;; atomic_thread_fence(memory_order_acquire); ++;; ++;; The problem is that the architecture says that ST (and LD ++;; insns where the destination is XZR) are not regarded as a read. ++;; However we also implement the acquire memory barrier with DMB LD, ++;; and so the ST is not blocked by the barrier. ++ ++(define_insn "aarch64_atomic__lse" + [(set (match_operand:ALLI 0 "aarch64_sync_memory_operand" "+Q") +- (unspec_volatile:ALLI +- [(atomic_op:ALLI (match_dup 0) +- (match_operand:ALLI 1 "" "r")) +- (match_operand:SI 2 "const_int_operand")] +- UNSPECV_ATOMIC_OP)) +- (clobber (match_scratch:ALLI 3 "=&r"))] ++ (unspec_volatile:ALLI ++ [(match_dup 0) ++ (match_operand:ALLI 1 "register_operand" "r") ++ (match_operand:SI 2 "const_int_operand")] ++ ATOMIC_LDOP)) ++ (clobber (match_scratch:ALLI 3 "=r"))] + "TARGET_LSE" +- "#" +- "&& reload_completed" +- [(const_int 0)] + { +- aarch64_gen_atomic_ldop (, operands[3], NULL, operands[0], +- operands[1], operands[2]); +- DONE; ++ enum memmodel model = memmodel_from_int (INTVAL (operands[2])); ++ if (is_mm_relaxed (model)) ++ return "ld\t%1, %3, %0"; ++ else if (is_mm_release (model)) ++ return "ldl\t%1, %3, %0"; ++ else if (is_mm_acquire (model) || is_mm_consume (model)) ++ return "lda\t%1, %3, %0"; ++ else ++ return "ldal\t%1, %3, %0"; + } + ) + +@@ -280,7 +412,7 @@ + } + ) + +-;; Load-operate-store, returning the updated memory data. ++;; Load-operate-store, returning the original memory data. + + (define_expand "atomic_fetch_" + [(match_operand:ALLI 0 "register_operand" "") +@@ -293,13 +425,71 @@ + rtx (*gen) (rtx, rtx, rtx, rtx); + + /* Use an atomic load-operate instruction when possible. */ +- if (aarch64_atomic_ldop_supported_p ()) +- gen = gen_aarch64_atomic_fetch__lse; ++ if (TARGET_LSE) ++ { ++ switch () ++ { ++ case MINUS: ++ operands[2] = expand_simple_unop (mode, NEG, operands[2], ++ NULL, 1); ++ /* fallthru */ ++ case PLUS: ++ gen = gen_aarch64_atomic_fetch_add_lse; ++ break; ++ case IOR: ++ gen = gen_aarch64_atomic_fetch_ior_lse; ++ break; ++ case XOR: ++ gen = gen_aarch64_atomic_fetch_xor_lse; ++ break; ++ case AND: ++ operands[2] = expand_simple_unop (mode, NOT, operands[2], ++ NULL, 1); ++ gen = gen_aarch64_atomic_fetch_bic_lse; ++ break; ++ default: ++ gcc_unreachable (); ++ } ++ operands[2] = force_reg (mode, operands[2]); ++ } ++ else if (TARGET_OUTLINE_ATOMICS) ++ { ++ const atomic_ool_names *names; ++ switch () ++ { ++ case MINUS: ++ operands[2] = expand_simple_unop (mode, NEG, operands[2], ++ NULL, 1); ++ /* fallthru */ ++ case PLUS: ++ names = &aarch64_ool_ldadd_names; ++ break; ++ case IOR: ++ names = &aarch64_ool_ldset_names; ++ break; ++ case XOR: ++ names = &aarch64_ool_ldeor_names; ++ break; ++ case AND: ++ operands[2] = expand_simple_unop (mode, NOT, operands[2], ++ NULL, 1); ++ names = &aarch64_ool_ldclr_names; ++ break; ++ default: ++ gcc_unreachable (); ++ } ++ machine_mode mode = mode; ++ rtx func = aarch64_atomic_ool_func (mode, operands[3], names); ++ rtx rval = emit_library_call_value (func, operands[0], LCT_NORMAL, mode, ++ operands[2], mode, ++ XEXP (operands[1], 0), Pmode); ++ emit_move_insn (operands[0], rval); ++ DONE; ++ } + else + gen = gen_aarch64_atomic_fetch_; + + emit_insn (gen (operands[0], operands[1], operands[2], operands[3])); +- + DONE; + }) + +@@ -326,23 +516,26 @@ + } + ) + +-(define_insn_and_split "aarch64_atomic_fetch__lse" +- [(set (match_operand:ALLI 0 "register_operand" "=&r") +- (match_operand:ALLI 1 "aarch64_sync_memory_operand" "+Q")) ++(define_insn "aarch64_atomic_fetch__lse" ++ [(set (match_operand:ALLI 0 "register_operand" "=r") ++ (match_operand:ALLI 1 "aarch64_sync_memory_operand" "+Q")) + (set (match_dup 1) +- (unspec_volatile:ALLI +- [(atomic_op:ALLI (match_dup 1) +- (match_operand:ALLI 2 "" "r")) +- (match_operand:SI 3 "const_int_operand")] +- UNSPECV_ATOMIC_LDOP))] ++ (unspec_volatile:ALLI ++ [(match_dup 1) ++ (match_operand:ALLI 2 "register_operand" "r") ++ (match_operand:SI 3 "const_int_operand")] ++ ATOMIC_LDOP))] + "TARGET_LSE" +- "#" +- "&& reload_completed" +- [(const_int 0)] + { +- aarch64_gen_atomic_ldop (, operands[0], NULL, operands[1], +- operands[2], operands[3]); +- DONE; ++ enum memmodel model = memmodel_from_int (INTVAL (operands[3])); ++ if (is_mm_relaxed (model)) ++ return "ld\t%2, %0, %1"; ++ else if (is_mm_acquire (model) || is_mm_consume (model)) ++ return "lda\t%2, %0, %1"; ++ else if (is_mm_release (model)) ++ return "ldl\t%2, %0, %1"; ++ else ++ return "ldal\t%2, %0, %1"; + } + ) + +@@ -370,7 +563,7 @@ + } + ) + +-;; Load-operate-store, returning the original memory data. ++;; Load-operate-store, returning the updated memory data. + + (define_expand "atomic__fetch" + [(match_operand:ALLI 0 "register_operand" "") +@@ -380,17 +573,23 @@ + (match_operand:SI 3 "const_int_operand")] + "" + { +- rtx (*gen) (rtx, rtx, rtx, rtx); +- rtx value = operands[2]; +- +- /* Use an atomic load-operate instruction when possible. */ +- if (aarch64_atomic_ldop_supported_p ()) +- gen = gen_aarch64_atomic__fetch_lse; ++ /* Use an atomic load-operate instruction when possible. In this case ++ we will re-compute the result from the original mem value. */ ++ if (TARGET_LSE || TARGET_OUTLINE_ATOMICS) ++ { ++ rtx tmp = gen_reg_rtx (mode); ++ operands[2] = force_reg (mode, operands[2]); ++ emit_insn (gen_atomic_fetch_ ++ (tmp, operands[1], operands[2], operands[3])); ++ tmp = expand_simple_binop (mode, , tmp, operands[2], ++ operands[0], 1, OPTAB_WIDEN); ++ emit_move_insn (operands[0], tmp); ++ } + else +- gen = gen_aarch64_atomic__fetch; +- +- emit_insn (gen (operands[0], operands[1], value, operands[3])); +- ++ { ++ emit_insn (gen_aarch64_atomic__fetch ++ (operands[0], operands[1], operands[2], operands[3])); ++ } + DONE; + }) + +@@ -417,29 +616,6 @@ + } + ) + +-(define_insn_and_split "aarch64_atomic__fetch_lse" +- [(set (match_operand:ALLI 0 "register_operand" "=&r") +- (atomic_op:ALLI +- (match_operand:ALLI 1 "aarch64_sync_memory_operand" "+Q") +- (match_operand:ALLI 2 "" "r"))) +- (set (match_dup 1) +- (unspec_volatile:ALLI +- [(match_dup 1) +- (match_dup 2) +- (match_operand:SI 3 "const_int_operand")] +- UNSPECV_ATOMIC_LDOP)) +- (clobber (match_scratch:ALLI 4 "=&r"))] +- "TARGET_LSE" +- "#" +- "&& reload_completed" +- [(const_int 0)] +- { +- aarch64_gen_atomic_ldop (, operands[4], operands[0], operands[1], +- operands[2], operands[3]); +- DONE; +- } +-) +- + (define_insn_and_split "atomic_nand_fetch" + [(set (match_operand:ALLI 0 "register_operand" "=&r") + (not:ALLI +@@ -529,8 +705,26 @@ + } + ) + ++(define_insn "aarch64_load_exclusive_pair" ++ [(set (match_operand:DI 0 "register_operand" "=r") ++ (unspec_volatile:DI ++ [(match_operand:TI 2 "aarch64_sync_memory_operand" "Q") ++ (match_operand:SI 3 "const_int_operand")] ++ UNSPECV_LX)) ++ (set (match_operand:DI 1 "register_operand" "=r") ++ (unspec_volatile:DI [(match_dup 2) (match_dup 3)] UNSPECV_LX))] ++ "" ++ { ++ enum memmodel model = memmodel_from_int (INTVAL (operands[3])); ++ if (is_mm_relaxed (model) || is_mm_consume (model) || is_mm_release (model)) ++ return "ldxp\t%0, %1, %2"; ++ else ++ return "ldaxp\t%0, %1, %2"; ++ } ++) ++ + (define_insn "aarch64_store_exclusive" +- [(set (match_operand:SI 0 "register_operand" "=r") ++ [(set (match_operand:SI 0 "register_operand" "=&r") + (unspec_volatile:SI [(const_int 0)] UNSPECV_SX)) + (set (match_operand:ALLI 1 "aarch64_sync_memory_operand" "=Q") + (unspec_volatile:ALLI +@@ -547,6 +741,25 @@ + } + ) + ++(define_insn "aarch64_store_exclusive_pair" ++ [(set (match_operand:SI 0 "register_operand" "=&r") ++ (unspec_volatile:SI [(const_int 0)] UNSPECV_SX)) ++ (set (match_operand:TI 1 "aarch64_sync_memory_operand" "=Q") ++ (unspec_volatile:TI ++ [(match_operand:DI 2 "aarch64_reg_or_zero" "rZ") ++ (match_operand:DI 3 "aarch64_reg_or_zero" "rZ") ++ (match_operand:SI 4 "const_int_operand")] ++ UNSPECV_SX))] ++ "" ++ { ++ enum memmodel model = memmodel_from_int (INTVAL (operands[4])); ++ if (is_mm_relaxed (model) || is_mm_consume (model) || is_mm_acquire (model)) ++ return "stxp\t%w0, %x2, %x3, %1"; ++ else ++ return "stlxp\t%w0, %x2, %x3, %1"; ++ } ++) ++ + (define_expand "mem_thread_fence" + [(match_operand:SI 0 "const_int_operand" "")] + "" +@@ -582,100 +795,3 @@ + return "dmb\\tish"; + } + ) +- +-;; ARMv8.1-A LSE instructions. +- +-;; Atomic swap with memory. +-(define_insn "aarch64_atomic_swp" +- [(set (match_operand:ALLI 0 "register_operand" "+&r") +- (match_operand:ALLI 1 "aarch64_sync_memory_operand" "+Q")) +- (set (match_dup 1) +- (unspec_volatile:ALLI +- [(match_operand:ALLI 2 "register_operand" "r") +- (match_operand:SI 3 "const_int_operand" "")] +- UNSPECV_ATOMIC_SWP))] +- "TARGET_LSE && reload_completed" +- { +- enum memmodel model = memmodel_from_int (INTVAL (operands[3])); +- if (is_mm_relaxed (model)) +- return "swp\t%2, %0, %1"; +- else if (is_mm_acquire (model) || is_mm_consume (model)) +- return "swpa\t%2, %0, %1"; +- else if (is_mm_release (model)) +- return "swpl\t%2, %0, %1"; +- else +- return "swpal\t%2, %0, %1"; +- }) +- +-;; Atomic compare-and-swap: HI and smaller modes. +- +-(define_insn "aarch64_atomic_cas" +- [(set (match_operand:SI 0 "register_operand" "+&r") ;; out +- (zero_extend:SI +- (match_operand:SHORT 1 "aarch64_sync_memory_operand" "+Q"))) ;; memory. +- (set (match_dup 1) +- (unspec_volatile:SHORT +- [(match_dup 0) +- (match_operand:SHORT 2 "aarch64_reg_or_zero" "rZ") ;; value. +- (match_operand:SI 3 "const_int_operand" "")] ;; model. +- UNSPECV_ATOMIC_CAS))] +- "TARGET_LSE && reload_completed" +-{ +- enum memmodel model = memmodel_from_int (INTVAL (operands[3])); +- if (is_mm_relaxed (model)) +- return "cas\t%0, %2, %1"; +- else if (is_mm_acquire (model) || is_mm_consume (model)) +- return "casa\t%0, %2, %1"; +- else if (is_mm_release (model)) +- return "casl\t%0, %2, %1"; +- else +- return "casal\t%0, %2, %1"; +-}) +- +-;; Atomic compare-and-swap: SI and larger modes. +- +-(define_insn "aarch64_atomic_cas" +- [(set (match_operand:GPI 0 "register_operand" "+&r") ;; out +- (match_operand:GPI 1 "aarch64_sync_memory_operand" "+Q")) ;; memory. +- (set (match_dup 1) +- (unspec_volatile:GPI +- [(match_dup 0) +- (match_operand:GPI 2 "aarch64_reg_or_zero" "rZ") ;; value. +- (match_operand:SI 3 "const_int_operand" "")] ;; model. +- UNSPECV_ATOMIC_CAS))] +- "TARGET_LSE && reload_completed" +-{ +- enum memmodel model = memmodel_from_int (INTVAL (operands[3])); +- if (is_mm_relaxed (model)) +- return "cas\t%0, %2, %1"; +- else if (is_mm_acquire (model) || is_mm_consume (model)) +- return "casa\t%0, %2, %1"; +- else if (is_mm_release (model)) +- return "casl\t%0, %2, %1"; +- else +- return "casal\t%0, %2, %1"; +-}) +- +-;; Atomic load-op: Load data, operate, store result, keep data. +- +-(define_insn "aarch64_atomic_load" +- [(set (match_operand:ALLI 0 "register_operand" "=r") +- (match_operand:ALLI 1 "aarch64_sync_memory_operand" "+Q")) +- (set (match_dup 1) +- (unspec_volatile:ALLI +- [(match_dup 1) +- (match_operand:ALLI 2 "register_operand") +- (match_operand:SI 3 "const_int_operand")] +- ATOMIC_LDOP))] +- "TARGET_LSE && reload_completed" +- { +- enum memmodel model = memmodel_from_int (INTVAL (operands[3])); +- if (is_mm_relaxed (model)) +- return "ld\t%2, %0, %1"; +- else if (is_mm_acquire (model) || is_mm_consume (model)) +- return "lda\t%2, %0, %1"; +- else if (is_mm_release (model)) +- return "ldl\t%2, %0, %1"; +- else +- return "ldal\t%2, %0, %1"; +- }) +--- a/src/gcc/config/aarch64/constraints.md ++++ b/src/gcc/config/aarch64/constraints.md +@@ -213,6 +213,13 @@ + (and (match_code "const_int") + (match_test "(unsigned) exact_log2 (ival) <= 4"))) + ++(define_constraint "Uph" ++ "@internal ++ A constraint that matches HImode integers zero extendable to ++ SImode plus_operand." ++ (and (match_code "const_int") ++ (match_test "aarch64_plushi_immediate (op, VOIDmode)"))) ++ + (define_memory_constraint "Q" + "A memory address which uses a single base register with no offset." + (and (match_code "mem") +--- a/src/gcc/config/aarch64/driver-aarch64.c ++++ b/src/gcc/config/aarch64/driver-aarch64.c +@@ -21,6 +21,7 @@ + + #include "config.h" + #define INCLUDE_STRING ++#define INCLUDE_SET + #include "system.h" + #include "coretypes.h" + #include "tm.h" +@@ -119,9 +120,15 @@ valid_bL_core_p (unsigned int *core, unsigned int bL_core) + /* Returns the hex integer that is after ':' for the FIELD. + Returns -1 is returned if there was problem parsing the integer. */ + static unsigned +-parse_field (const char *field) ++parse_field (const std::string &field) + { +- const char *rest = strchr (field, ':'); ++ const char *rest = strchr (field.c_str (), ':'); ++ ++ /* The line must be in the format of :, if it's not ++ then we have a weird format. */ ++ if (rest == NULL) ++ return -1; ++ + char *after; + unsigned fint = strtol (rest + 1, &after, 16); + if (after == rest + 1) +@@ -129,6 +136,82 @@ parse_field (const char *field) + return fint; + } + ++/* Returns the index of the ':' inside the FIELD which must be found ++ after the value of KEY. Returns string::npos if line does not contain ++ a field. */ ++ ++static size_t ++find_field (const std::string &field, const std::string &key) ++{ ++ size_t key_pos, sep_pos; ++ key_pos = field.find (key); ++ if (key_pos == std::string::npos) ++ return std::string::npos; ++ ++ sep_pos = field.find (":", key_pos + 1); ++ if (sep_pos == std::string::npos) ++ return std::string::npos; ++ ++ return sep_pos; ++} ++ ++/* Splits and returns a string based on whitespace and return it as ++ part of a set. Empty strings are ignored. */ ++ ++static void ++split_words (const std::string &val, std::set &result) ++{ ++ size_t cur, prev = 0; ++ std::string word; ++ while ((cur = val.find_first_of (" \n", prev)) != std::string::npos) ++ { ++ word = val.substr (prev, cur - prev); ++ /* Skip adding empty words. */ ++ if (!word.empty ()) ++ result.insert (word); ++ prev = cur + 1; ++ } ++ ++ if (prev != cur) ++ result.insert (val.substr (prev)); ++} ++ ++/* Read an entire line from F until '\n' or EOF. */ ++ ++static std::string ++readline (FILE *f) ++{ ++ char *buf = NULL; ++ int size = 0; ++ int last = 0; ++ const int buf_size = 128; ++ ++ if (feof (f)) ++ return std::string (); ++ ++ do ++ { ++ size += buf_size; ++ buf = (char*) xrealloc (buf, size); ++ gcc_assert (buf); ++ /* If fgets fails it returns NULL, but if it reaches EOF ++ with 0 characters read it also returns EOF. However ++ the condition on the loop would have broken out of the ++ loop in that case, and if we are in the first iteration ++ then the empty string is the correct thing to return. */ ++ if (!fgets (buf + last, buf_size, f)) ++ return std::string (); ++ /* If we're not at the end of the line then override the ++ \0 added by fgets. */ ++ last = strnlen (buf, size) - 1; ++ } ++ while (!feof (f) && buf[last] != '\n'); ++ ++ std::string result (buf); ++ free (buf); ++ return result; ++} ++ + /* Return true iff ARR contains CORE, in either of the two elements. */ + + static bool +@@ -167,7 +250,6 @@ host_detect_local_cpu (int argc, const char **argv) + { + const char *res = NULL; + static const int num_exts = ARRAY_SIZE (aarch64_extensions); +- char buf[128]; + FILE *f = NULL; + bool arch = false; + bool tune = false; +@@ -181,6 +263,9 @@ host_detect_local_cpu (int argc, const char **argv) + bool processed_exts = false; + unsigned long extension_flags = 0; + unsigned long default_flags = 0; ++ std::string buf; ++ size_t sep_pos = -1; ++ char *fcpu_info; + + gcc_assert (argc); + +@@ -198,16 +283,20 @@ host_detect_local_cpu (int argc, const char **argv) + if (!arch && !tune && !cpu) + goto not_found; + +- f = fopen ("/proc/cpuinfo", "r"); ++ fcpu_info = getenv ("GCC_CPUINFO"); ++ if (fcpu_info) ++ f = fopen (fcpu_info, "r"); ++ else ++ f = fopen ("/proc/cpuinfo", "r"); + + if (f == NULL) + goto not_found; + + /* Look through /proc/cpuinfo to determine the implementer + and then the part number that identifies a particular core. */ +- while (fgets (buf, sizeof (buf), f) != NULL) ++ while (!(buf = readline (f)).empty ()) + { +- if (strstr (buf, "implementer") != NULL) ++ if (find_field (buf, "implementer") != std::string::npos) + { + unsigned cimp = parse_field (buf); + if (cimp == INVALID_IMP) +@@ -219,8 +308,7 @@ host_detect_local_cpu (int argc, const char **argv) + else if (imp != cimp) + goto not_found; + } +- +- if (strstr (buf, "variant") != NULL) ++ else if (find_field (buf, "variant") != std::string::npos) + { + unsigned cvariant = parse_field (buf); + if (!contains_core_p (variants, cvariant)) +@@ -232,8 +320,7 @@ host_detect_local_cpu (int argc, const char **argv) + } + continue; + } +- +- if (strstr (buf, "part") != NULL) ++ else if (find_field (buf, "part") != std::string::npos) + { + unsigned ccore = parse_field (buf); + if (!contains_core_p (cores, ccore)) +@@ -245,39 +332,36 @@ host_detect_local_cpu (int argc, const char **argv) + } + continue; + } +- if (!tune && !processed_exts && strstr (buf, "Features") != NULL) ++ else if (!tune && !processed_exts ++ && (sep_pos = find_field (buf, "Features")) != std::string::npos) + { ++ /* First create the list of features in the buffer. */ ++ std::set features; ++ /* Drop everything till the :. */ ++ buf = buf.substr (sep_pos + 1); ++ split_words (buf, features); ++ + for (i = 0; i < num_exts; i++) + { +- const char *p = aarch64_extensions[i].feat_string; ++ const std::string val (aarch64_extensions[i].feat_string); + + /* If the feature contains no HWCAPS string then ignore it for the + auto detection. */ +- if (*p == '\0') ++ if (val.empty ()) + continue; + + bool enabled = true; + + /* This may be a multi-token feature string. We need + to match all parts, which could be in any order. */ +- size_t len = strlen (buf); +- do +- { +- 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. */ +- enabled = false; +- break; +- } +- if (*end == '\0') +- break; +- p = end + 1; +- } +- while (1); ++ std::set tokens; ++ split_words (val, tokens); ++ std::set::iterator it; ++ ++ /* Iterate till the first feature isn't found or all of them ++ are found. */ ++ for (it = tokens.begin (); enabled && it != tokens.end (); ++it) ++ enabled = enabled && features.count (*it); + + if (enabled) + extension_flags |= aarch64_extensions[i].flag; +--- a/src/gcc/config/aarch64/iterators.md ++++ b/src/gcc/config/aarch64/iterators.md +@@ -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]) + +@@ -78,6 +81,9 @@ + ;; Quad vector modes. + (define_mode_iterator VQ [V16QI V8HI V4SI V2DI V8HF V4SF V2DF]) + ++;; Quad integer vector modes. ++(define_mode_iterator VQ_I [V16QI V8HI V4SI V2DI]) ++ + ;; VQ without 2 element modes. + (define_mode_iterator VQ_NO2E [V16QI V8HI V4SI V8HF V4SF]) + +@@ -461,6 +467,12 @@ + UNSPEC_COND_HI ; Used in aarch64-sve.md. + UNSPEC_COND_UO ; Used in aarch64-sve.md. + UNSPEC_LASTB ; Used in aarch64-sve.md. ++ UNSPEC_FCADD90 ; Used in aarch64-simd.md. ++ UNSPEC_FCADD270 ; Used in aarch64-simd.md. ++ UNSPEC_FCMLA ; Used in aarch64-simd.md. ++ UNSPEC_FCMLA90 ; Used in aarch64-simd.md. ++ UNSPEC_FCMLA180 ; Used in aarch64-simd.md. ++ UNSPEC_FCMLA270 ; Used in aarch64-simd.md. + ]) + + ;; ------------------------------------------------------------------ +@@ -479,7 +491,6 @@ + UNSPECV_ATOMIC_CAS ; Represent an atomic CAS. + UNSPECV_ATOMIC_SWP ; Represent an atomic SWP. + UNSPECV_ATOMIC_OP ; Represent an atomic operation. +- UNSPECV_ATOMIC_LDOP ; Represent an atomic load-operation + UNSPECV_ATOMIC_LDOP_OR ; Represent an atomic load-or + UNSPECV_ATOMIC_LDOP_BIC ; Represent an atomic load-bic + UNSPECV_ATOMIC_LDOP_XOR ; Represent an atomic load-xor +@@ -1110,6 +1121,13 @@ + (VNx16SI "vnx4bi") (VNx16SF "vnx4bi") + (VNx8DI "vnx2bi") (VNx8DF "vnx2bi")]) + ++;; On AArch64 the By element instruction doesn't have a 2S variant. ++;; However because the instruction always selects a pair of values ++;; The normal 3SAME instruction can be used here instead. ++(define_mode_attr FCMLA_maybe_lane [(V2SF "") (V4SF "[%4]") ++ (V4HF "[%4]") (V8HF "[%4]") ++ ]) ++ + ;; ------------------------------------------------------------------- + ;; Code Iterators + ;; ------------------------------------------------------------------- +@@ -1494,6 +1512,14 @@ + UNSPEC_COND_EQ UNSPEC_COND_NE + UNSPEC_COND_GE UNSPEC_COND_GT]) + ++(define_int_iterator FCADD [UNSPEC_FCADD90 ++ UNSPEC_FCADD270]) ++ ++(define_int_iterator FCMLA [UNSPEC_FCMLA ++ UNSPEC_FCMLA90 ++ UNSPEC_FCMLA180 ++ UNSPEC_FCMLA270]) ++ + ;; Iterators for atomic operations. + + (define_int_iterator ATOMIC_LDOP +@@ -1504,6 +1530,10 @@ + [(UNSPECV_ATOMIC_LDOP_OR "set") (UNSPECV_ATOMIC_LDOP_BIC "clr") + (UNSPECV_ATOMIC_LDOP_XOR "eor") (UNSPECV_ATOMIC_LDOP_PLUS "add")]) + ++(define_int_attr atomic_ldoptab ++ [(UNSPECV_ATOMIC_LDOP_OR "ior") (UNSPECV_ATOMIC_LDOP_BIC "bic") ++ (UNSPECV_ATOMIC_LDOP_XOR "xor") (UNSPECV_ATOMIC_LDOP_PLUS "add")]) ++ + ;; ------------------------------------------------------------------- + ;; Int Iterators Attributes. + ;; ------------------------------------------------------------------- +@@ -1761,3 +1791,11 @@ + + (define_int_attr sve_fp_op [(UNSPEC_COND_ADD "fadd") + (UNSPEC_COND_SUB "fsub")]) ++ ++(define_int_attr rot [(UNSPEC_FCADD90 "90") ++ (UNSPEC_FCADD270 "270") ++ (UNSPEC_FCMLA "0") ++ (UNSPEC_FCMLA90 "90") ++ (UNSPEC_FCMLA180 "180") ++ (UNSPEC_FCMLA270 "270")]) ++ +--- a/src/gcc/config/aarch64/predicates.md ++++ b/src/gcc/config/aarch64/predicates.md +@@ -110,6 +110,18 @@ + (ior (match_operand 0 "register_operand") + (match_operand 0 "aarch64_plus_immediate"))) + ++(define_predicate "aarch64_plushi_immediate" ++ (match_code "const_int") ++{ ++ HOST_WIDE_INT val = INTVAL (op); ++ /* The HImode value must be zero-extendable to an SImode plus_operand. */ ++ return ((val & 0xfff) == val || sext_hwi (val & 0xf000, 16) == val); ++}) ++ ++(define_predicate "aarch64_plushi_operand" ++ (ior (match_operand 0 "register_operand") ++ (match_operand 0 "aarch64_plushi_immediate"))) ++ + (define_predicate "aarch64_pluslong_immediate" + (and (match_code "const_int") + (match_test "(INTVAL (op) < 0xffffff && INTVAL (op) > -0xffffff)"))) +--- a/src/gcc/config/alpha/alpha.c ++++ b/src/gcc/config/alpha/alpha.c +@@ -9903,8 +9903,8 @@ alpha_atomic_assign_expand_fenv (tree *hold, tree *clear, tree *update) + = build_fn_decl ("__ieee_set_fp_control", + build_function_type_list (void_type_node, NULL)); + mask = build_int_cst (long_unsigned_type_node, ~SWCR_STATUS_MASK); +- ld_fenv = build2 (MODIFY_EXPR, long_unsigned_type_node, +- fenv_var, build_call_expr (get_fpscr, 0)); ++ ld_fenv = build4 (TARGET_EXPR, long_unsigned_type_node, fenv_var, ++ build_call_expr (get_fpscr, 0), NULL_TREE, NULL_TREE); + masked_fenv = build2 (BIT_AND_EXPR, long_unsigned_type_node, fenv_var, mask); + hold_fnclex = build_call_expr (set_fpscr, 1, masked_fenv); + *hold = build2 (COMPOUND_EXPR, void_type_node, +@@ -9925,8 +9925,8 @@ alpha_atomic_assign_expand_fenv (tree *hold, tree *clear, tree *update) + __atomic_feraiseexcept (new_fenv_var); */ + + new_fenv_var = create_tmp_var_raw (long_unsigned_type_node); +- reload_fenv = build2 (MODIFY_EXPR, long_unsigned_type_node, new_fenv_var, +- build_call_expr (get_fpscr, 0)); ++ reload_fenv = build4 (TARGET_EXPR, long_unsigned_type_node, new_fenv_var, ++ build_call_expr (get_fpscr, 0), NULL_TREE, NULL_TREE); + restore_fnenv = build_call_expr (set_fpscr, 1, fenv_var); + atomic_feraiseexcept = builtin_decl_implicit (BUILT_IN_ATOMIC_FERAISEEXCEPT); + update_call +--- a/src/gcc/config/arm/arm-builtins.c ++++ b/src/gcc/config/arm/arm-builtins.c +@@ -3260,8 +3260,9 @@ arm_atomic_assign_expand_fenv (tree *hold, tree *clear, tree *update) + mask = build_int_cst (unsigned_type_node, + ~((ARM_FE_ALL_EXCEPT << ARM_FE_EXCEPT_SHIFT) + | ARM_FE_ALL_EXCEPT)); +- ld_fenv = build2 (MODIFY_EXPR, unsigned_type_node, +- fenv_var, build_call_expr (get_fpscr, 0)); ++ ld_fenv = build4 (TARGET_EXPR, unsigned_type_node, ++ fenv_var, build_call_expr (get_fpscr, 0), ++ NULL_TREE, NULL_TREE); + masked_fenv = build2 (BIT_AND_EXPR, unsigned_type_node, fenv_var, mask); + hold_fnclex = build_call_expr (set_fpscr, 1, masked_fenv); + *hold = build2 (COMPOUND_EXPR, void_type_node, +@@ -3282,8 +3283,8 @@ arm_atomic_assign_expand_fenv (tree *hold, tree *clear, tree *update) + __atomic_feraiseexcept (new_fenv_var); */ + + new_fenv_var = create_tmp_var_raw (unsigned_type_node); +- reload_fenv = build2 (MODIFY_EXPR, unsigned_type_node, new_fenv_var, +- build_call_expr (get_fpscr, 0)); ++ reload_fenv = build4 (TARGET_EXPR, unsigned_type_node, new_fenv_var, ++ build_call_expr (get_fpscr, 0), NULL_TREE, NULL_TREE); + restore_fnenv = build_call_expr (set_fpscr, 1, fenv_var); + atomic_feraiseexcept = builtin_decl_implicit (BUILT_IN_ATOMIC_FERAISEEXCEPT); + update_call = build_call_expr (atomic_feraiseexcept, 1, +--- a/src/gcc/config/arm/arm-cpus.in ++++ b/src/gcc/config/arm/arm-cpus.in +@@ -1576,6 +1576,29 @@ begin cpu cortex-a75.cortex-a55 + costs cortex_a73 + end cpu cortex-a75.cortex-a55 + ++ ++# Armv8.4 A-profile Architecture Processors ++begin cpu neoverse-v1 ++ cname neoversev1 ++ tune for cortex-a57 ++ tune flags LDSCHED ++ architecture armv8.4-a+fp16 ++ option crypto add FP_ARMv8 CRYPTO ++ costs cortex_a57 ++end cpu neoverse-v1 ++ ++ ++# Armv8.5 A-profile Architecture Processors ++begin cpu neoverse-n2 ++ cname neoversen2 ++ tune for cortex-a57 ++ tune flags LDSCHED ++ architecture armv8.4-a+fp16 ++ option crypto add FP_ARMv8 CRYPTO ++ costs cortex_a57 ++end cpu neoverse-n2 ++ ++ + # V8 M-profile implementations. + begin cpu cortex-m23 + cname cortexm23 +--- a/src/gcc/config/arm/arm-tables.opt ++++ b/src/gcc/config/arm/arm-tables.opt +@@ -351,6 +351,12 @@ Enum(processor_type) String(cortex-a75) Value( TARGET_CPU_cortexa75) + EnumValue + Enum(processor_type) String(cortex-a75.cortex-a55) Value( TARGET_CPU_cortexa75cortexa55) + ++EnumValue ++Enum(processor_type) String(neoverse-v1) Value( TARGET_CPU_neoversev1) ++ ++EnumValue ++Enum(processor_type) String(neoverse-n2) Value( TARGET_CPU_neoversen2) ++ + EnumValue + Enum(processor_type) String(cortex-m23) Value( TARGET_CPU_cortexm23) + +--- a/src/gcc/config/arm/arm-tune.md ++++ b/src/gcc/config/arm/arm-tune.md +@@ -57,6 +57,6 @@ + cortexa73,exynosm1,xgene1, + cortexa57cortexa53,cortexa72cortexa53,cortexa73cortexa35, + cortexa73cortexa53,cortexa55,cortexa75, +- cortexa75cortexa55,cortexm23,cortexm33, +- cortexr52" ++ cortexa75cortexa55,neoversev1,neoversen2, ++ cortexm23,cortexm33,cortexr52" + (const (symbol_ref "((enum attr_tune) arm_tune)"))) +--- a/src/gcc/config/arm/arm.c ++++ b/src/gcc/config/arm/arm.c +@@ -18211,6 +18211,7 @@ output_move_double (rtx *operands, bool emit, int *count) + if (code0 == REG) + { + unsigned int reg0 = REGNO (operands[0]); ++ const bool can_ldrd = TARGET_LDRD && (TARGET_THUMB2 || (reg0 % 2 == 0)); + + otherops[0] = gen_rtx_REG (SImode, 1 + reg0); + +@@ -18222,7 +18223,7 @@ output_move_double (rtx *operands, bool emit, int *count) + + if (emit) + { +- if (TARGET_LDRD ++ if (can_ldrd + && !(fix_cm3_ldrd && reg0 == REGNO(XEXP (operands[1], 0)))) + output_asm_insn ("ldrd%?\t%0, [%m1]", operands); + else +@@ -18231,7 +18232,7 @@ output_move_double (rtx *operands, bool emit, int *count) + break; + + case PRE_INC: +- gcc_assert (TARGET_LDRD); ++ gcc_assert (can_ldrd); + if (emit) + output_asm_insn ("ldrd%?\t%0, [%m1, #8]!", operands); + break; +@@ -18239,7 +18240,7 @@ output_move_double (rtx *operands, bool emit, int *count) + case PRE_DEC: + if (emit) + { +- if (TARGET_LDRD) ++ if (can_ldrd) + output_asm_insn ("ldrd%?\t%0, [%m1, #-8]!", operands); + else + output_asm_insn ("ldmdb%?\t%m1!, %M0", operands); +@@ -18249,7 +18250,7 @@ output_move_double (rtx *operands, bool emit, int *count) + case POST_INC: + if (emit) + { +- if (TARGET_LDRD) ++ if (can_ldrd) + output_asm_insn ("ldrd%?\t%0, [%m1], #8", operands); + else + output_asm_insn ("ldmia%?\t%m1!, %M0", operands); +@@ -18257,7 +18258,7 @@ output_move_double (rtx *operands, bool emit, int *count) + break; + + case POST_DEC: +- gcc_assert (TARGET_LDRD); ++ gcc_assert (can_ldrd); + if (emit) + output_asm_insn ("ldrd%?\t%0, [%m1], #-8", operands); + break; +@@ -18279,6 +18280,7 @@ output_move_double (rtx *operands, bool emit, int *count) + /* Registers overlap so split out the increment. */ + if (emit) + { ++ gcc_assert (can_ldrd); + output_asm_insn ("add%?\t%1, %1, %2", otherops); + output_asm_insn ("ldrd%?\t%0, [%1] @split", otherops); + } +@@ -18290,10 +18292,11 @@ output_move_double (rtx *operands, bool emit, int *count) + /* Use a single insn if we can. + FIXME: IWMMXT allows offsets larger than ldrd can + handle, fix these up with a pair of ldr. */ +- if (TARGET_THUMB2 ++ if (can_ldrd ++ && (TARGET_THUMB2 + || !CONST_INT_P (otherops[2]) + || (INTVAL (otherops[2]) > -256 +- && INTVAL (otherops[2]) < 256)) ++ && INTVAL (otherops[2]) < 256))) + { + if (emit) + output_asm_insn ("ldrd%?\t%0, [%1, %2]!", otherops); +@@ -18316,10 +18319,11 @@ output_move_double (rtx *operands, bool emit, int *count) + /* Use a single insn if we can. + FIXME: IWMMXT allows offsets larger than ldrd can handle, + fix these up with a pair of ldr. */ +- if (TARGET_THUMB2 ++ if (can_ldrd ++ && (TARGET_THUMB2 + || !CONST_INT_P (otherops[2]) + || (INTVAL (otherops[2]) > -256 +- && INTVAL (otherops[2]) < 256)) ++ && INTVAL (otherops[2]) < 256))) + { + if (emit) + output_asm_insn ("ldrd%?\t%0, [%1], %2", otherops); +@@ -18350,7 +18354,7 @@ output_move_double (rtx *operands, bool emit, int *count) + operands[1] = otherops[0]; + if (emit) + { +- if (TARGET_LDRD) ++ if (can_ldrd) + output_asm_insn ("ldrd%?\t%0, [%1]", operands); + else + output_asm_insn ("ldmia%?\t%1, %M0", operands); +@@ -18395,7 +18399,7 @@ output_move_double (rtx *operands, bool emit, int *count) + } + otherops[0] = gen_rtx_REG(SImode, REGNO(operands[0]) + 1); + operands[1] = otherops[0]; +- if (TARGET_LDRD ++ if (can_ldrd + && (REG_P (otherops[2]) + || TARGET_THUMB2 + || (CONST_INT_P (otherops[2]) +@@ -18456,7 +18460,7 @@ output_move_double (rtx *operands, bool emit, int *count) + if (count) + *count = 2; + +- if (TARGET_LDRD) ++ if (can_ldrd) + return "ldrd%?\t%0, [%1]"; + + return "ldmia%?\t%1, %M0"; +--- a/src/gcc/config/arm/arm.md ++++ b/src/gcc/config/arm/arm.md +@@ -6312,16 +6312,21 @@ + + (define_insn "*movsi_compare0" + [(set (reg:CC CC_REGNUM) +- (compare:CC (match_operand:SI 1 "s_register_operand" "0,r") ++ (compare:CC (match_operand:SI 1 "s_register_operand" "0,0,l,rk,rk") + (const_int 0))) +- (set (match_operand:SI 0 "s_register_operand" "=r,r") ++ (set (match_operand:SI 0 "s_register_operand" "=l,rk,l,r,rk") + (match_dup 1))] + "TARGET_32BIT" + "@ + cmp%?\\t%0, #0 ++ cmp%?\\t%0, #0 ++ subs%?\\t%0, %1, #0 ++ subs%?\\t%0, %1, #0 + subs%?\\t%0, %1, #0" + [(set_attr "conds" "set") +- (set_attr "type" "alus_imm,alus_imm")] ++ (set_attr "arch" "t2,*,t2,t2,a") ++ (set_attr "type" "alus_imm") ++ (set_attr "length" "2,4,2,4,4")] + ) + + ;; Subroutine to store a half word from a register into memory. +--- a/src/gcc/config/arm/driver-arm.c ++++ b/src/gcc/config/arm/driver-arm.c +@@ -56,6 +56,8 @@ static struct vendor_cpu arm_cpu_table[] = { + {"0xd09", "armv8-a+crc", "cortex-a73"}, + {"0xd05", "armv8.2-a+fp16+dotprod", "cortex-a55"}, + {"0xd0a", "armv8.2-a+fp16+dotprod", "cortex-a75"}, ++ {"0xd40", "armv8.4-a+fp16", "neoverse-v1"}, ++ {"0xd49", "armv8.4-a+fp16", "neoverse-n2"}, + {"0xc14", "armv7-r", "cortex-r4"}, + {"0xc15", "armv7-r", "cortex-r5"}, + {"0xc17", "armv7-r", "cortex-r7"}, +@@ -97,6 +99,7 @@ host_detect_local_cpu (int argc, const char **argv) + FILE *f = NULL; + bool arch; + const struct vendor_cpu *cpu_table = NULL; ++ char *fcpu_info = NULL; + + if (argc < 1) + goto not_found; +@@ -105,7 +108,12 @@ host_detect_local_cpu (int argc, const char **argv) + if (!arch && strcmp (argv[0], "cpu") != 0 && strcmp (argv[0], "tune")) + goto not_found; + +- f = fopen ("/proc/cpuinfo", "r"); ++ fcpu_info = getenv ("GCC_CPUINFO"); ++ if (fcpu_info) ++ f = fopen (fcpu_info, "r"); ++ else ++ f = fopen ("/proc/cpuinfo", "r"); ++ + if (f == NULL) + goto not_found; + +--- a/src/gcc/config/arm/types.md ++++ b/src/gcc/config/arm/types.md +@@ -763,6 +763,9 @@ + neon_sub_halve,\ + neon_sub_halve_q,\ + neon_sub_halve_narrow_q,\ ++\ ++ neon_fcadd,\ ++ neon_fcmla,\ + \ + neon_abs,\ + neon_abs_q,\ +--- a/src/gcc/config/i386/avx2intrin.h ++++ b/src/gcc/config/i386/avx2intrin.h +@@ -1670,234 +1670,246 @@ _mm256_mask_i64gather_epi32 (__m128i __src, int const *__base, + #else /* __OPTIMIZE__ */ + #define _mm_i32gather_pd(BASE, INDEX, SCALE) \ + (__m128d) __builtin_ia32_gathersiv2df ((__v2df) _mm_setzero_pd (), \ +- (double const *)BASE, \ +- (__v4si)(__m128i)INDEX, \ +- (__v2df)_mm_set1_pd( \ +- (double)(long long int) -1), \ +- (int)SCALE) +- +-#define _mm_mask_i32gather_pd(SRC, BASE, INDEX, MASK, SCALE) \ +- (__m128d) __builtin_ia32_gathersiv2df ((__v2df)(__m128d)SRC, \ +- (double const *)BASE, \ +- (__v4si)(__m128i)INDEX, \ +- (__v2df)(__m128d)MASK, \ +- (int)SCALE) ++ (double const *) (BASE), \ ++ (__v4si)(__m128i) (INDEX), \ ++ (__v2df) \ ++ _mm_cmpeq_pd (_mm_setzero_pd (),\ ++ _mm_setzero_pd ()),\ ++ (int) (SCALE)) ++ ++#define _mm_mask_i32gather_pd(SRC, BASE, INDEX, MASK, SCALE) \ ++ (__m128d) __builtin_ia32_gathersiv2df ((__v2df)(__m128d) (SRC), \ ++ (double const *) (BASE), \ ++ (__v4si)(__m128i) (INDEX), \ ++ (__v2df)(__m128d) (MASK), \ ++ (int) (SCALE)) + + #define _mm256_i32gather_pd(BASE, INDEX, SCALE) \ + (__m256d) __builtin_ia32_gathersiv4df ((__v4df) _mm256_setzero_pd (), \ +- (double const *)BASE, \ +- (__v4si)(__m128i)INDEX, \ +- (__v4df)_mm256_set1_pd( \ +- (double)(long long int) -1), \ +- (int)SCALE) +- +-#define _mm256_mask_i32gather_pd(SRC, BASE, INDEX, MASK, SCALE) \ +- (__m256d) __builtin_ia32_gathersiv4df ((__v4df)(__m256d)SRC, \ +- (double const *)BASE, \ +- (__v4si)(__m128i)INDEX, \ +- (__v4df)(__m256d)MASK, \ +- (int)SCALE) ++ (double const *) (BASE), \ ++ (__v4si)(__m128i) (INDEX), \ ++ (__v4df) \ ++ _mm256_cmp_pd (_mm256_setzero_pd (),\ ++ _mm256_setzero_pd (),\ ++ _CMP_EQ_OQ), \ ++ (int) (SCALE)) ++ ++#define _mm256_mask_i32gather_pd(SRC, BASE, INDEX, MASK, SCALE) \ ++ (__m256d) __builtin_ia32_gathersiv4df ((__v4df)(__m256d) (SRC), \ ++ (double const *) (BASE), \ ++ (__v4si)(__m128i) (INDEX), \ ++ (__v4df)(__m256d) (MASK), \ ++ (int) (SCALE)) + + #define _mm_i64gather_pd(BASE, INDEX, SCALE) \ + (__m128d) __builtin_ia32_gatherdiv2df ((__v2df) _mm_setzero_pd (), \ +- (double const *)BASE, \ +- (__v2di)(__m128i)INDEX, \ +- (__v2df)_mm_set1_pd( \ +- (double)(long long int) -1), \ +- (int)SCALE) +- +-#define _mm_mask_i64gather_pd(SRC, BASE, INDEX, MASK, SCALE) \ +- (__m128d) __builtin_ia32_gatherdiv2df ((__v2df)(__m128d)SRC, \ +- (double const *)BASE, \ +- (__v2di)(__m128i)INDEX, \ +- (__v2df)(__m128d)MASK, \ +- (int)SCALE) ++ (double const *) (BASE), \ ++ (__v2di)(__m128i) (INDEX), \ ++ (__v2df) \ ++ _mm_cmpeq_pd (_mm_setzero_pd (),\ ++ _mm_setzero_pd ()),\ ++ (int) (SCALE)) ++ ++#define _mm_mask_i64gather_pd(SRC, BASE, INDEX, MASK, SCALE) \ ++ (__m128d) __builtin_ia32_gatherdiv2df ((__v2df)(__m128d) (SRC), \ ++ (double const *) (BASE), \ ++ (__v2di)(__m128i) (INDEX), \ ++ (__v2df)(__m128d) (MASK), \ ++ (int) (SCALE)) + + #define _mm256_i64gather_pd(BASE, INDEX, SCALE) \ + (__m256d) __builtin_ia32_gatherdiv4df ((__v4df) _mm256_setzero_pd (), \ +- (double const *)BASE, \ +- (__v4di)(__m256i)INDEX, \ +- (__v4df)_mm256_set1_pd( \ +- (double)(long long int) -1), \ +- (int)SCALE) +- +-#define _mm256_mask_i64gather_pd(SRC, BASE, INDEX, MASK, SCALE) \ +- (__m256d) __builtin_ia32_gatherdiv4df ((__v4df)(__m256d)SRC, \ +- (double const *)BASE, \ +- (__v4di)(__m256i)INDEX, \ +- (__v4df)(__m256d)MASK, \ +- (int)SCALE) ++ (double const *) (BASE), \ ++ (__v4di)(__m256i) (INDEX), \ ++ (__v4df) \ ++ _mm256_cmp_pd (_mm256_setzero_pd (),\ ++ _mm256_setzero_pd (),\ ++ _CMP_EQ_OQ), \ ++ (int) (SCALE)) ++ ++#define _mm256_mask_i64gather_pd(SRC, BASE, INDEX, MASK, SCALE) \ ++ (__m256d) __builtin_ia32_gatherdiv4df ((__v4df)(__m256d) (SRC), \ ++ (double const *) (BASE), \ ++ (__v4di)(__m256i) (INDEX), \ ++ (__v4df)(__m256d) (MASK), \ ++ (int) (SCALE)) + + #define _mm_i32gather_ps(BASE, INDEX, SCALE) \ + (__m128) __builtin_ia32_gathersiv4sf ((__v4sf) _mm_setzero_ps (), \ +- (float const *)BASE, \ +- (__v4si)(__m128i)INDEX, \ +- _mm_set1_ps ((float)(int) -1), \ +- (int)SCALE) +- +-#define _mm_mask_i32gather_ps(SRC, BASE, INDEX, MASK, SCALE) \ +- (__m128) __builtin_ia32_gathersiv4sf ((__v4sf)(__m128d)SRC, \ +- (float const *)BASE, \ +- (__v4si)(__m128i)INDEX, \ +- (__v4sf)(__m128d)MASK, \ +- (int)SCALE) +- +-#define _mm256_i32gather_ps(BASE, INDEX, SCALE) \ +- (__m256) __builtin_ia32_gathersiv8sf ((__v8sf) _mm256_setzero_ps (), \ +- (float const *)BASE, \ +- (__v8si)(__m256i)INDEX, \ +- (__v8sf)_mm256_set1_ps ( \ +- (float)(int) -1), \ +- (int)SCALE) +- +-#define _mm256_mask_i32gather_ps(SRC, BASE, INDEX, MASK, SCALE) \ +- (__m256) __builtin_ia32_gathersiv8sf ((__v8sf)(__m256)SRC, \ +- (float const *)BASE, \ +- (__v8si)(__m256i)INDEX, \ +- (__v8sf)(__m256d)MASK, \ +- (int)SCALE) ++ (float const *) (BASE), \ ++ (__v4si)(__m128i) (INDEX), \ ++ (__v4sf) \ ++ _mm_cmpeq_ps (_mm_setzero_ps (),\ ++ _mm_setzero_ps ()),\ ++ (int) (SCALE)) ++ ++#define _mm_mask_i32gather_ps(SRC, BASE, INDEX, MASK, SCALE) \ ++ (__m128) __builtin_ia32_gathersiv4sf ((__v4sf)(__m128) (SRC), \ ++ (float const *) (BASE), \ ++ (__v4si)(__m128i) (INDEX), \ ++ (__v4sf)(__m128) (MASK), \ ++ (int) (SCALE)) ++ ++#define _mm256_i32gather_ps(BASE, INDEX, SCALE) \ ++ (__m256) __builtin_ia32_gathersiv8sf ((__v8sf) _mm256_setzero_ps (), \ ++ (float const *) (BASE), \ ++ (__v8si)(__m256i) (INDEX), \ ++ (__v8sf) \ ++ _mm256_cmp_ps (_mm256_setzero_ps (),\ ++ _mm256_setzero_ps (),\ ++ _CMP_EQ_OQ), \ ++ (int) (SCALE)) ++ ++#define _mm256_mask_i32gather_ps(SRC, BASE, INDEX, MASK, SCALE) \ ++ (__m256) __builtin_ia32_gathersiv8sf ((__v8sf)(__m256) (SRC), \ ++ (float const *) (BASE), \ ++ (__v8si)(__m256i) (INDEX), \ ++ (__v8sf)(__m256) (MASK), \ ++ (int) (SCALE)) + + #define _mm_i64gather_ps(BASE, INDEX, SCALE) \ + (__m128) __builtin_ia32_gatherdiv4sf ((__v4sf) _mm_setzero_pd (), \ +- (float const *)BASE, \ +- (__v2di)(__m128i)INDEX, \ +- (__v4sf)_mm_set1_ps ( \ +- (float)(int) -1), \ +- (int)SCALE) +- +-#define _mm_mask_i64gather_ps(SRC, BASE, INDEX, MASK, SCALE) \ +- (__m128) __builtin_ia32_gatherdiv4sf ((__v4sf)(__m128)SRC, \ +- (float const *)BASE, \ +- (__v2di)(__m128i)INDEX, \ +- (__v4sf)(__m128d)MASK, \ +- (int)SCALE) ++ (float const *) (BASE), \ ++ (__v2di)(__m128i) (INDEX), \ ++ (__v4sf) \ ++ _mm_cmpeq_ps (_mm_setzero_ps (),\ ++ _mm_setzero_ps ()),\ ++ (int) (SCALE)) ++ ++#define _mm_mask_i64gather_ps(SRC, BASE, INDEX, MASK, SCALE) \ ++ (__m128) __builtin_ia32_gatherdiv4sf ((__v4sf)(__m128) (SRC), \ ++ (float const *) (BASE), \ ++ (__v2di)(__m128i) (INDEX), \ ++ (__v4sf)(__m128) (MASK), \ ++ (int) (SCALE)) + + #define _mm256_i64gather_ps(BASE, INDEX, SCALE) \ + (__m128) __builtin_ia32_gatherdiv4sf256 ((__v4sf) _mm_setzero_ps (), \ +- (float const *)BASE, \ +- (__v4di)(__m256i)INDEX, \ +- (__v4sf)_mm_set1_ps( \ +- (float)(int) -1), \ +- (int)SCALE) +- +-#define _mm256_mask_i64gather_ps(SRC, BASE, INDEX, MASK, SCALE) \ +- (__m128) __builtin_ia32_gatherdiv4sf256 ((__v4sf)(__m128)SRC, \ +- (float const *)BASE, \ +- (__v4di)(__m256i)INDEX, \ +- (__v4sf)(__m128)MASK, \ +- (int)SCALE) ++ (float const *) (BASE), \ ++ (__v4di)(__m256i) (INDEX), \ ++ (__v4sf) \ ++ _mm_cmpeq_ps (_mm_setzero_ps (),\ ++ _mm_setzero_ps ()),\ ++ (int) (SCALE)) ++ ++#define _mm256_mask_i64gather_ps(SRC, BASE, INDEX, MASK, SCALE) \ ++ (__m128) __builtin_ia32_gatherdiv4sf256 ((__v4sf)(__m128) (SRC), \ ++ (float const *) (BASE), \ ++ (__v4di)(__m256i) (INDEX), \ ++ (__v4sf)(__m128) (MASK), \ ++ (int) (SCALE)) + + #define _mm_i32gather_epi64(BASE, INDEX, SCALE) \ + (__m128i) __builtin_ia32_gathersiv2di ((__v2di) _mm_setzero_si128 (), \ +- (long long const *)BASE, \ +- (__v4si)(__m128i)INDEX, \ ++ (long long const *) (BASE), \ ++ (__v4si)(__m128i) (INDEX), \ + (__v2di)_mm_set1_epi64x (-1), \ +- (int)SCALE) ++ (int) (SCALE)) + +-#define _mm_mask_i32gather_epi64(SRC, BASE, INDEX, MASK, SCALE) \ +- (__m128i) __builtin_ia32_gathersiv2di ((__v2di)(__m128i)SRC, \ +- (long long const *)BASE, \ +- (__v4si)(__m128i)INDEX, \ +- (__v2di)(__m128i)MASK, \ +- (int)SCALE) ++#define _mm_mask_i32gather_epi64(SRC, BASE, INDEX, MASK, SCALE) \ ++ (__m128i) __builtin_ia32_gathersiv2di ((__v2di)(__m128i) (SRC), \ ++ (long long const *) (BASE), \ ++ (__v4si)(__m128i) (INDEX), \ ++ (__v2di)(__m128i) (MASK), \ ++ (int) (SCALE)) + + #define _mm256_i32gather_epi64(BASE, INDEX, SCALE) \ + (__m256i) __builtin_ia32_gathersiv4di ((__v4di) _mm256_setzero_si256 (), \ +- (long long const *)BASE, \ +- (__v4si)(__m128i)INDEX, \ ++ (long long const *) (BASE), \ ++ (__v4si)(__m128i) (INDEX), \ + (__v4di)_mm256_set1_epi64x (-1), \ +- (int)SCALE) ++ (int) (SCALE)) + +-#define _mm256_mask_i32gather_epi64(SRC, BASE, INDEX, MASK, SCALE) \ +- (__m256i) __builtin_ia32_gathersiv4di ((__v4di)(__m256i)SRC, \ +- (long long const *)BASE, \ +- (__v4si)(__m128i)INDEX, \ +- (__v4di)(__m256i)MASK, \ +- (int)SCALE) ++#define _mm256_mask_i32gather_epi64(SRC, BASE, INDEX, MASK, SCALE) \ ++ (__m256i) __builtin_ia32_gathersiv4di ((__v4di)(__m256i) (SRC), \ ++ (long long const *) (BASE), \ ++ (__v4si)(__m128i) (INDEX), \ ++ (__v4di)(__m256i) (MASK), \ ++ (int) (SCALE)) + + #define _mm_i64gather_epi64(BASE, INDEX, SCALE) \ + (__m128i) __builtin_ia32_gatherdiv2di ((__v2di) _mm_setzero_si128 (), \ +- (long long const *)BASE, \ +- (__v2di)(__m128i)INDEX, \ ++ (long long const *) (BASE), \ ++ (__v2di)(__m128i) (INDEX), \ + (__v2di)_mm_set1_epi64x (-1), \ +- (int)SCALE) ++ (int) (SCALE)) + +-#define _mm_mask_i64gather_epi64(SRC, BASE, INDEX, MASK, SCALE) \ +- (__m128i) __builtin_ia32_gatherdiv2di ((__v2di)(__m128i)SRC, \ +- (long long const *)BASE, \ +- (__v2di)(__m128i)INDEX, \ +- (__v2di)(__m128i)MASK, \ +- (int)SCALE) ++#define _mm_mask_i64gather_epi64(SRC, BASE, INDEX, MASK, SCALE) \ ++ (__m128i) __builtin_ia32_gatherdiv2di ((__v2di)(__m128i) (SRC), \ ++ (long long const *) (BASE), \ ++ (__v2di)(__m128i) (INDEX), \ ++ (__v2di)(__m128i) (MASK), \ ++ (int) (SCALE)) + + #define _mm256_i64gather_epi64(BASE, INDEX, SCALE) \ + (__m256i) __builtin_ia32_gatherdiv4di ((__v4di) _mm256_setzero_si256 (), \ +- (long long const *)BASE, \ +- (__v4di)(__m256i)INDEX, \ ++ (long long const *) (BASE), \ ++ (__v4di)(__m256i) (INDEX), \ + (__v4di)_mm256_set1_epi64x (-1), \ +- (int)SCALE) ++ (int) (SCALE)) + +-#define _mm256_mask_i64gather_epi64(SRC, BASE, INDEX, MASK, SCALE) \ +- (__m256i) __builtin_ia32_gatherdiv4di ((__v4di)(__m256i)SRC, \ +- (long long const *)BASE, \ +- (__v4di)(__m256i)INDEX, \ +- (__v4di)(__m256i)MASK, \ +- (int)SCALE) ++#define _mm256_mask_i64gather_epi64(SRC, BASE, INDEX, MASK, SCALE) \ ++ (__m256i) __builtin_ia32_gatherdiv4di ((__v4di)(__m256i) (SRC), \ ++ (long long const *) (BASE), \ ++ (__v4di)(__m256i) (INDEX), \ ++ (__v4di)(__m256i) (MASK), \ ++ (int) (SCALE)) + + #define _mm_i32gather_epi32(BASE, INDEX, SCALE) \ + (__m128i) __builtin_ia32_gathersiv4si ((__v4si) _mm_setzero_si128 (), \ +- (int const *)BASE, \ +- (__v4si)(__m128i)INDEX, \ ++ (int const *) (BASE), \ ++ (__v4si)(__m128i) (INDEX), \ + (__v4si)_mm_set1_epi32 (-1), \ +- (int)SCALE) ++ (int) (SCALE)) + +-#define _mm_mask_i32gather_epi32(SRC, BASE, INDEX, MASK, SCALE) \ +- (__m128i) __builtin_ia32_gathersiv4si ((__v4si)(__m128i)SRC, \ +- (int const *)BASE, \ +- (__v4si)(__m128i)INDEX, \ +- (__v4si)(__m128i)MASK, \ +- (int)SCALE) ++#define _mm_mask_i32gather_epi32(SRC, BASE, INDEX, MASK, SCALE) \ ++ (__m128i) __builtin_ia32_gathersiv4si ((__v4si)(__m128i) (SRC), \ ++ (int const *) (BASE), \ ++ (__v4si)(__m128i) (INDEX), \ ++ (__v4si)(__m128i) (MASK), \ ++ (int) (SCALE)) + + #define _mm256_i32gather_epi32(BASE, INDEX, SCALE) \ + (__m256i) __builtin_ia32_gathersiv8si ((__v8si) _mm256_setzero_si256 (), \ +- (int const *)BASE, \ +- (__v8si)(__m256i)INDEX, \ ++ (int const *) (BASE), \ ++ (__v8si)(__m256i) (INDEX), \ + (__v8si)_mm256_set1_epi32 (-1), \ +- (int)SCALE) ++ (int) (SCALE)) + +-#define _mm256_mask_i32gather_epi32(SRC, BASE, INDEX, MASK, SCALE) \ +- (__m256i) __builtin_ia32_gathersiv8si ((__v8si)(__m256i)SRC, \ +- (int const *)BASE, \ +- (__v8si)(__m256i)INDEX, \ +- (__v8si)(__m256i)MASK, \ +- (int)SCALE) ++#define _mm256_mask_i32gather_epi32(SRC, BASE, INDEX, MASK, SCALE) \ ++ (__m256i) __builtin_ia32_gathersiv8si ((__v8si)(__m256i) (SRC), \ ++ (int const *) (BASE), \ ++ (__v8si)(__m256i) (INDEX), \ ++ (__v8si)(__m256i) (MASK), \ ++ (int) (SCALE)) + + #define _mm_i64gather_epi32(BASE, INDEX, SCALE) \ + (__m128i) __builtin_ia32_gatherdiv4si ((__v4si) _mm_setzero_si128 (), \ +- (int const *)BASE, \ +- (__v2di)(__m128i)INDEX, \ ++ (int const *) (BASE), \ ++ (__v2di)(__m128i) (INDEX), \ + (__v4si)_mm_set1_epi32 (-1), \ +- (int)SCALE) ++ (int) (SCALE)) + +-#define _mm_mask_i64gather_epi32(SRC, BASE, INDEX, MASK, SCALE) \ +- (__m128i) __builtin_ia32_gatherdiv4si ((__v4si)(__m128i)SRC, \ +- (int const *)BASE, \ +- (__v2di)(__m128i)INDEX, \ +- (__v4si)(__m128i)MASK, \ +- (int)SCALE) ++#define _mm_mask_i64gather_epi32(SRC, BASE, INDEX, MASK, SCALE) \ ++ (__m128i) __builtin_ia32_gatherdiv4si ((__v4si)(__m128i) (SRC), \ ++ (int const *) (BASE), \ ++ (__v2di)(__m128i) (INDEX), \ ++ (__v4si)(__m128i) (MASK), \ ++ (int) (SCALE)) + + #define _mm256_i64gather_epi32(BASE, INDEX, SCALE) \ + (__m128i) __builtin_ia32_gatherdiv4si256 ((__v4si) _mm_setzero_si128 (), \ +- (int const *)BASE, \ +- (__v4di)(__m256i)INDEX, \ ++ (int const *) (BASE), \ ++ (__v4di)(__m256i) (INDEX), \ + (__v4si)_mm_set1_epi32(-1), \ +- (int)SCALE) +- +-#define _mm256_mask_i64gather_epi32(SRC, BASE, INDEX, MASK, SCALE) \ +- (__m128i) __builtin_ia32_gatherdiv4si256 ((__v4si)(__m128i)SRC, \ +- (int const *)BASE, \ +- (__v4di)(__m256i)INDEX, \ +- (__v4si)(__m128i)MASK, \ +- (int)SCALE) ++ (int) (SCALE)) ++ ++#define _mm256_mask_i64gather_epi32(SRC, BASE, INDEX, MASK, SCALE) \ ++ (__m128i) __builtin_ia32_gatherdiv4si256 ((__v4si)(__m128i) (SRC), \ ++ (int const *) (BASE), \ ++ (__v4di)(__m256i) (INDEX), \ ++ (__v4si)(__m128i) (MASK), \ ++ (int) (SCALE)) + #endif /* __OPTIMIZE__ */ + + #ifdef __DISABLE_AVX2__ +--- a/src/gcc/config/i386/avx512bwintrin.h ++++ b/src/gcc/config/i386/avx512bwintrin.h +@@ -3128,16 +3128,16 @@ _mm512_bsrli_epi128 (__m512i __A, const int __N) + #define _mm512_alignr_epi8(X, Y, N) \ + ((__m512i) __builtin_ia32_palignr512 ((__v8di)(__m512i)(X), \ + (__v8di)(__m512i)(Y), \ +- (int)(N * 8))) ++ (int)((N) * 8))) + + #define _mm512_mask_alignr_epi8(W, U, X, Y, N) \ + ((__m512i) __builtin_ia32_palignr512_mask ((__v8di)(__m512i)(X), \ +- (__v8di)(__m512i)(Y), (int)(N * 8), \ ++ (__v8di)(__m512i)(Y), (int)((N) * 8), \ + (__v8di)(__m512i)(W), (__mmask64)(U))) + + #define _mm512_maskz_alignr_epi8(U, X, Y, N) \ + ((__m512i) __builtin_ia32_palignr512_mask ((__v8di)(__m512i)(X), \ +- (__v8di)(__m512i)(Y), (int)(N * 8), \ ++ (__v8di)(__m512i)(Y), (int)((N) * 8), \ + (__v8di)(__m512i) \ + _mm512_setzero_si512 (), \ + (__mmask64)(U))) +--- a/src/gcc/config/i386/avx512fintrin.h ++++ b/src/gcc/config/i386/avx512fintrin.h +@@ -8394,22 +8394,22 @@ _mm512_maskz_cvtps_ph (__mmask16 __W, __m512 __A, const int __I) + (__m512)__builtin_ia32_vcvtph2ps512_mask((__v16hi)(A), (__v16sf)_mm512_setzero_ps(), U, B) + + #define _mm512_cvt_roundps_ph(A, I) \ +- ((__m256i) __builtin_ia32_vcvtps2ph512_mask ((__v16sf)(__m512) A, (int) (I),\ ++ ((__m256i) __builtin_ia32_vcvtps2ph512_mask ((__v16sf)(__m512) (A), (int) (I),\ + (__v16hi)_mm256_undefined_si256 (), -1)) + #define _mm512_cvtps_ph(A, I) \ +- ((__m256i) __builtin_ia32_vcvtps2ph512_mask ((__v16sf)(__m512) A, (int) (I),\ ++ ((__m256i) __builtin_ia32_vcvtps2ph512_mask ((__v16sf)(__m512) (A), (int) (I),\ + (__v16hi)_mm256_undefined_si256 (), -1)) + #define _mm512_mask_cvt_roundps_ph(U, W, A, I) \ +- ((__m256i) __builtin_ia32_vcvtps2ph512_mask ((__v16sf)(__m512) A, (int) (I),\ ++ ((__m256i) __builtin_ia32_vcvtps2ph512_mask ((__v16sf)(__m512) (A), (int) (I),\ + (__v16hi)(__m256i)(U), (__mmask16) (W))) + #define _mm512_mask_cvtps_ph(U, W, A, I) \ +- ((__m256i) __builtin_ia32_vcvtps2ph512_mask ((__v16sf)(__m512) A, (int) (I),\ ++ ((__m256i) __builtin_ia32_vcvtps2ph512_mask ((__v16sf)(__m512) (A), (int) (I),\ + (__v16hi)(__m256i)(U), (__mmask16) (W))) + #define _mm512_maskz_cvt_roundps_ph(W, A, I) \ +- ((__m256i) __builtin_ia32_vcvtps2ph512_mask ((__v16sf)(__m512) A, (int) (I),\ ++ ((__m256i) __builtin_ia32_vcvtps2ph512_mask ((__v16sf)(__m512) (A), (int) (I),\ + (__v16hi)_mm256_setzero_si256 (), (__mmask16) (W))) + #define _mm512_maskz_cvtps_ph(W, A, I) \ +- ((__m256i) __builtin_ia32_vcvtps2ph512_mask ((__v16sf)(__m512) A, (int) (I),\ ++ ((__m256i) __builtin_ia32_vcvtps2ph512_mask ((__v16sf)(__m512) (A), (int) (I),\ + (__v16hi)_mm256_setzero_si256 (), (__mmask16) (W))) + #endif + +@@ -9798,32 +9798,32 @@ _mm_mask_cmp_round_ss_mask (__mmask8 __M, __m128 __X, __m128 __Y, + #define _mm512_mask_cmp_epi64_mask(M, X, Y, P) \ + ((__mmask8) __builtin_ia32_cmpq512_mask ((__v8di)(__m512i)(X), \ + (__v8di)(__m512i)(Y), (int)(P),\ +- (__mmask8)M)) ++ (__mmask8)(M))) + + #define _mm512_mask_cmp_epi32_mask(M, X, Y, P) \ + ((__mmask16) __builtin_ia32_cmpd512_mask ((__v16si)(__m512i)(X), \ + (__v16si)(__m512i)(Y), (int)(P), \ +- (__mmask16)M)) ++ (__mmask16)(M))) + + #define _mm512_mask_cmp_epu64_mask(M, X, Y, P) \ + ((__mmask8) __builtin_ia32_ucmpq512_mask ((__v8di)(__m512i)(X), \ + (__v8di)(__m512i)(Y), (int)(P),\ +- (__mmask8)M)) ++ (__mmask8)(M))) + + #define _mm512_mask_cmp_epu32_mask(M, X, Y, P) \ + ((__mmask16) __builtin_ia32_ucmpd512_mask ((__v16si)(__m512i)(X), \ + (__v16si)(__m512i)(Y), (int)(P), \ +- (__mmask16)M)) ++ (__mmask16)(M))) + + #define _mm512_mask_cmp_round_pd_mask(M, X, Y, P, R) \ + ((__mmask8) __builtin_ia32_cmppd512_mask ((__v8df)(__m512d)(X), \ + (__v8df)(__m512d)(Y), (int)(P),\ +- (__mmask8)M, R)) ++ (__mmask8)(M), R)) + + #define _mm512_mask_cmp_round_ps_mask(M, X, Y, P, R) \ + ((__mmask16) __builtin_ia32_cmpps512_mask ((__v16sf)(__m512)(X), \ + (__v16sf)(__m512)(Y), (int)(P),\ +- (__mmask16)M, R)) ++ (__mmask16)(M), R)) + + #define _mm_cmp_round_sd_mask(X, Y, P, R) \ + ((__mmask8) __builtin_ia32_cmpsd_mask ((__v2df)(__m128d)(X), \ +@@ -10185,179 +10185,189 @@ _mm512_mask_i64scatter_epi64 (void *__addr, __mmask8 __mask, + #else + #define _mm512_i32gather_ps(INDEX, ADDR, SCALE) \ + (__m512) __builtin_ia32_gathersiv16sf ((__v16sf)_mm512_undefined_ps(),\ +- (void const *)ADDR, \ +- (__v16si)(__m512i)INDEX, \ +- (__mmask16)0xFFFF, (int)SCALE) ++ (void const *) (ADDR), \ ++ (__v16si)(__m512i) (INDEX), \ ++ (__mmask16)0xFFFF, \ ++ (int) (SCALE)) + + #define _mm512_mask_i32gather_ps(V1OLD, MASK, INDEX, ADDR, SCALE) \ +- (__m512) __builtin_ia32_gathersiv16sf ((__v16sf)(__m512)V1OLD, \ +- (void const *)ADDR, \ +- (__v16si)(__m512i)INDEX, \ +- (__mmask16)MASK, (int)SCALE) ++ (__m512) __builtin_ia32_gathersiv16sf ((__v16sf)(__m512) (V1OLD), \ ++ (void const *) (ADDR), \ ++ (__v16si)(__m512i) (INDEX), \ ++ (__mmask16) (MASK), \ ++ (int) (SCALE)) + + #define _mm512_i32gather_pd(INDEX, ADDR, SCALE) \ + (__m512d) __builtin_ia32_gathersiv8df ((__v8df)_mm512_undefined_pd(), \ +- (void const *)ADDR, \ +- (__v8si)(__m256i)INDEX, \ +- (__mmask8)0xFF, (int)SCALE) ++ (void const *) (ADDR), \ ++ (__v8si)(__m256i) (INDEX), \ ++ (__mmask8)0xFF, (int) (SCALE)) + + #define _mm512_mask_i32gather_pd(V1OLD, MASK, INDEX, ADDR, SCALE) \ +- (__m512d) __builtin_ia32_gathersiv8df ((__v8df)(__m512d)V1OLD, \ +- (void const *)ADDR, \ +- (__v8si)(__m256i)INDEX, \ +- (__mmask8)MASK, (int)SCALE) ++ (__m512d) __builtin_ia32_gathersiv8df ((__v8df)(__m512d) (V1OLD), \ ++ (void const *) (ADDR), \ ++ (__v8si)(__m256i) (INDEX), \ ++ (__mmask8) (MASK), \ ++ (int) (SCALE)) + + #define _mm512_i64gather_ps(INDEX, ADDR, SCALE) \ + (__m256) __builtin_ia32_gatherdiv16sf ((__v8sf)_mm256_undefined_ps(), \ +- (void const *)ADDR, \ +- (__v8di)(__m512i)INDEX, \ +- (__mmask8)0xFF, (int)SCALE) ++ (void const *) (ADDR), \ ++ (__v8di)(__m512i) (INDEX), \ ++ (__mmask8)0xFF, (int) (SCALE)) + + #define _mm512_mask_i64gather_ps(V1OLD, MASK, INDEX, ADDR, SCALE) \ +- (__m256) __builtin_ia32_gatherdiv16sf ((__v8sf)(__m256)V1OLD, \ +- (void const *)ADDR, \ +- (__v8di)(__m512i)INDEX, \ +- (__mmask8)MASK, (int)SCALE) ++ (__m256) __builtin_ia32_gatherdiv16sf ((__v8sf)(__m256) (V1OLD), \ ++ (void const *) (ADDR), \ ++ (__v8di)(__m512i) (INDEX), \ ++ (__mmask8) (MASK), \ ++ (int) (SCALE)) + + #define _mm512_i64gather_pd(INDEX, ADDR, SCALE) \ + (__m512d) __builtin_ia32_gatherdiv8df ((__v8df)_mm512_undefined_pd(), \ +- (void const *)ADDR, \ +- (__v8di)(__m512i)INDEX, \ +- (__mmask8)0xFF, (int)SCALE) ++ (void const *) (ADDR), \ ++ (__v8di)(__m512i) (INDEX), \ ++ (__mmask8)0xFF, (int) (SCALE)) + + #define _mm512_mask_i64gather_pd(V1OLD, MASK, INDEX, ADDR, SCALE) \ +- (__m512d) __builtin_ia32_gatherdiv8df ((__v8df)(__m512d)V1OLD, \ +- (void const *)ADDR, \ +- (__v8di)(__m512i)INDEX, \ +- (__mmask8)MASK, (int)SCALE) ++ (__m512d) __builtin_ia32_gatherdiv8df ((__v8df)(__m512d) (V1OLD), \ ++ (void const *) (ADDR), \ ++ (__v8di)(__m512i) (INDEX), \ ++ (__mmask8) (MASK), \ ++ (int) (SCALE)) + + #define _mm512_i32gather_epi32(INDEX, ADDR, SCALE) \ +- (__m512i) __builtin_ia32_gathersiv16si ((__v16si)_mm512_undefined_epi32 (), \ +- (void const *)ADDR, \ +- (__v16si)(__m512i)INDEX, \ +- (__mmask16)0xFFFF, (int)SCALE) ++ (__m512i) __builtin_ia32_gathersiv16si ((__v16si)_mm512_undefined_epi32 (),\ ++ (void const *) (ADDR), \ ++ (__v16si)(__m512i) (INDEX), \ ++ (__mmask16)0xFFFF, \ ++ (int) (SCALE)) + + #define _mm512_mask_i32gather_epi32(V1OLD, MASK, INDEX, ADDR, SCALE) \ +- (__m512i) __builtin_ia32_gathersiv16si ((__v16si)(__m512i)V1OLD, \ +- (void const *)ADDR, \ +- (__v16si)(__m512i)INDEX, \ +- (__mmask16)MASK, (int)SCALE) ++ (__m512i) __builtin_ia32_gathersiv16si ((__v16si)(__m512i) (V1OLD), \ ++ (void const *) (ADDR), \ ++ (__v16si)(__m512i) (INDEX), \ ++ (__mmask16) (MASK), \ ++ (int) (SCALE)) + + #define _mm512_i32gather_epi64(INDEX, ADDR, SCALE) \ +- (__m512i) __builtin_ia32_gathersiv8di ((__v8di)_mm512_undefined_epi32 (), \ +- (void const *)ADDR, \ +- (__v8si)(__m256i)INDEX, \ +- (__mmask8)0xFF, (int)SCALE) ++ (__m512i) __builtin_ia32_gathersiv8di ((__v8di)_mm512_undefined_epi32 (),\ ++ (void const *) (ADDR), \ ++ (__v8si)(__m256i) (INDEX), \ ++ (__mmask8)0xFF, (int) (SCALE)) + + #define _mm512_mask_i32gather_epi64(V1OLD, MASK, INDEX, ADDR, SCALE) \ +- (__m512i) __builtin_ia32_gathersiv8di ((__v8di)(__m512i)V1OLD, \ +- (void const *)ADDR, \ +- (__v8si)(__m256i)INDEX, \ +- (__mmask8)MASK, (int)SCALE) +- +-#define _mm512_i64gather_epi32(INDEX, ADDR, SCALE) \ +- (__m256i) __builtin_ia32_gatherdiv16si ((__v8si)_mm256_undefined_si256(), \ +- (void const *)ADDR, \ +- (__v8di)(__m512i)INDEX, \ +- (__mmask8)0xFF, (int)SCALE) ++ (__m512i) __builtin_ia32_gathersiv8di ((__v8di)(__m512i) (V1OLD), \ ++ (void const *) (ADDR), \ ++ (__v8si)(__m256i) (INDEX), \ ++ (__mmask8) (MASK), \ ++ (int) (SCALE)) ++ ++#define _mm512_i64gather_epi32(INDEX, ADDR, SCALE) \ ++ (__m256i) __builtin_ia32_gatherdiv16si ((__v8si)_mm256_undefined_si256(),\ ++ (void const *) (ADDR), \ ++ (__v8di)(__m512i) (INDEX), \ ++ (__mmask8)0xFF, (int) (SCALE)) + + #define _mm512_mask_i64gather_epi32(V1OLD, MASK, INDEX, ADDR, SCALE) \ +- (__m256i) __builtin_ia32_gatherdiv16si ((__v8si)(__m256i)V1OLD, \ +- (void const *)ADDR, \ +- (__v8di)(__m512i)INDEX, \ +- (__mmask8)MASK, (int)SCALE) ++ (__m256i) __builtin_ia32_gatherdiv16si ((__v8si)(__m256i) (V1OLD), \ ++ (void const *) (ADDR), \ ++ (__v8di)(__m512i) (INDEX), \ ++ (__mmask8) (MASK), \ ++ (int) (SCALE)) + + #define _mm512_i64gather_epi64(INDEX, ADDR, SCALE) \ +- (__m512i) __builtin_ia32_gatherdiv8di ((__v8di)_mm512_undefined_epi32 (), \ +- (void const *)ADDR, \ +- (__v8di)(__m512i)INDEX, \ +- (__mmask8)0xFF, (int)SCALE) ++ (__m512i) __builtin_ia32_gatherdiv8di ((__v8di)_mm512_undefined_epi32 (),\ ++ (void const *) (ADDR), \ ++ (__v8di)(__m512i) (INDEX), \ ++ (__mmask8)0xFF, (int) (SCALE)) + + #define _mm512_mask_i64gather_epi64(V1OLD, MASK, INDEX, ADDR, SCALE) \ +- (__m512i) __builtin_ia32_gatherdiv8di ((__v8di)(__m512i)V1OLD, \ +- (void const *)ADDR, \ +- (__v8di)(__m512i)INDEX, \ +- (__mmask8)MASK, (int)SCALE) ++ (__m512i) __builtin_ia32_gatherdiv8di ((__v8di)(__m512i) (V1OLD), \ ++ (void const *) (ADDR), \ ++ (__v8di)(__m512i) (INDEX), \ ++ (__mmask8) (MASK), \ ++ (int) (SCALE)) + + #define _mm512_i32scatter_ps(ADDR, INDEX, V1, SCALE) \ +- __builtin_ia32_scattersiv16sf ((void *)ADDR, (__mmask16)0xFFFF, \ +- (__v16si)(__m512i)INDEX, \ +- (__v16sf)(__m512)V1, (int)SCALE) ++ __builtin_ia32_scattersiv16sf ((void *) (ADDR), (__mmask16)0xFFFF, \ ++ (__v16si)(__m512i) (INDEX), \ ++ (__v16sf)(__m512) (V1), (int) (SCALE)) + + #define _mm512_mask_i32scatter_ps(ADDR, MASK, INDEX, V1, SCALE) \ +- __builtin_ia32_scattersiv16sf ((void *)ADDR, (__mmask16)MASK, \ +- (__v16si)(__m512i)INDEX, \ +- (__v16sf)(__m512)V1, (int)SCALE) ++ __builtin_ia32_scattersiv16sf ((void *) (ADDR), (__mmask16) (MASK), \ ++ (__v16si)(__m512i) (INDEX), \ ++ (__v16sf)(__m512) (V1), (int) (SCALE)) + + #define _mm512_i32scatter_pd(ADDR, INDEX, V1, SCALE) \ +- __builtin_ia32_scattersiv8df ((void *)ADDR, (__mmask8)0xFF, \ +- (__v8si)(__m256i)INDEX, \ +- (__v8df)(__m512d)V1, (int)SCALE) ++ __builtin_ia32_scattersiv8df ((void *) (ADDR), (__mmask8)0xFF, \ ++ (__v8si)(__m256i) (INDEX), \ ++ (__v8df)(__m512d) (V1), (int) (SCALE)) + + #define _mm512_mask_i32scatter_pd(ADDR, MASK, INDEX, V1, SCALE) \ +- __builtin_ia32_scattersiv8df ((void *)ADDR, (__mmask8)MASK, \ +- (__v8si)(__m256i)INDEX, \ +- (__v8df)(__m512d)V1, (int)SCALE) ++ __builtin_ia32_scattersiv8df ((void *) (ADDR), (__mmask8) (MASK), \ ++ (__v8si)(__m256i) (INDEX), \ ++ (__v8df)(__m512d) (V1), (int) (SCALE)) + + #define _mm512_i64scatter_ps(ADDR, INDEX, V1, SCALE) \ +- __builtin_ia32_scatterdiv16sf ((void *)ADDR, (__mmask8)0xFF, \ +- (__v8di)(__m512i)INDEX, \ +- (__v8sf)(__m256)V1, (int)SCALE) ++ __builtin_ia32_scatterdiv16sf ((void *) (ADDR), (__mmask8)0xFF, \ ++ (__v8di)(__m512i) (INDEX), \ ++ (__v8sf)(__m256) (V1), (int) (SCALE)) + + #define _mm512_mask_i64scatter_ps(ADDR, MASK, INDEX, V1, SCALE) \ +- __builtin_ia32_scatterdiv16sf ((void *)ADDR, (__mmask16)MASK, \ +- (__v8di)(__m512i)INDEX, \ +- (__v8sf)(__m256)V1, (int)SCALE) ++ __builtin_ia32_scatterdiv16sf ((void *) (ADDR), (__mmask16) (MASK), \ ++ (__v8di)(__m512i) (INDEX), \ ++ (__v8sf)(__m256) (V1), (int) (SCALE)) + + #define _mm512_i64scatter_pd(ADDR, INDEX, V1, SCALE) \ +- __builtin_ia32_scatterdiv8df ((void *)ADDR, (__mmask8)0xFF, \ +- (__v8di)(__m512i)INDEX, \ +- (__v8df)(__m512d)V1, (int)SCALE) ++ __builtin_ia32_scatterdiv8df ((void *) (ADDR), (__mmask8)0xFF, \ ++ (__v8di)(__m512i) (INDEX), \ ++ (__v8df)(__m512d) (V1), (int) (SCALE)) + + #define _mm512_mask_i64scatter_pd(ADDR, MASK, INDEX, V1, SCALE) \ +- __builtin_ia32_scatterdiv8df ((void *)ADDR, (__mmask8)MASK, \ +- (__v8di)(__m512i)INDEX, \ +- (__v8df)(__m512d)V1, (int)SCALE) ++ __builtin_ia32_scatterdiv8df ((void *) (ADDR), (__mmask8) (MASK), \ ++ (__v8di)(__m512i) (INDEX), \ ++ (__v8df)(__m512d) (V1), (int) (SCALE)) + + #define _mm512_i32scatter_epi32(ADDR, INDEX, V1, SCALE) \ +- __builtin_ia32_scattersiv16si ((void *)ADDR, (__mmask16)0xFFFF, \ +- (__v16si)(__m512i)INDEX, \ +- (__v16si)(__m512i)V1, (int)SCALE) ++ __builtin_ia32_scattersiv16si ((void *) (ADDR), (__mmask16)0xFFFF, \ ++ (__v16si)(__m512i) (INDEX), \ ++ (__v16si)(__m512i) (V1), (int) (SCALE)) + + #define _mm512_mask_i32scatter_epi32(ADDR, MASK, INDEX, V1, SCALE) \ +- __builtin_ia32_scattersiv16si ((void *)ADDR, (__mmask16)MASK, \ +- (__v16si)(__m512i)INDEX, \ +- (__v16si)(__m512i)V1, (int)SCALE) ++ __builtin_ia32_scattersiv16si ((void *) (ADDR), (__mmask16) (MASK), \ ++ (__v16si)(__m512i) (INDEX), \ ++ (__v16si)(__m512i) (V1), (int) (SCALE)) + + #define _mm512_i32scatter_epi64(ADDR, INDEX, V1, SCALE) \ +- __builtin_ia32_scattersiv8di ((void *)ADDR, (__mmask8)0xFF, \ +- (__v8si)(__m256i)INDEX, \ +- (__v8di)(__m512i)V1, (int)SCALE) ++ __builtin_ia32_scattersiv8di ((void *) (ADDR), (__mmask8)0xFF, \ ++ (__v8si)(__m256i) (INDEX), \ ++ (__v8di)(__m512i) (V1), (int) (SCALE)) + + #define _mm512_mask_i32scatter_epi64(ADDR, MASK, INDEX, V1, SCALE) \ +- __builtin_ia32_scattersiv8di ((void *)ADDR, (__mmask8)MASK, \ +- (__v8si)(__m256i)INDEX, \ +- (__v8di)(__m512i)V1, (int)SCALE) ++ __builtin_ia32_scattersiv8di ((void *) (ADDR), (__mmask8) (MASK), \ ++ (__v8si)(__m256i) (INDEX), \ ++ (__v8di)(__m512i) (V1), (int) (SCALE)) + + #define _mm512_i64scatter_epi32(ADDR, INDEX, V1, SCALE) \ +- __builtin_ia32_scatterdiv16si ((void *)ADDR, (__mmask8)0xFF, \ +- (__v8di)(__m512i)INDEX, \ +- (__v8si)(__m256i)V1, (int)SCALE) ++ __builtin_ia32_scatterdiv16si ((void *) (ADDR), (__mmask8)0xFF, \ ++ (__v8di)(__m512i) (INDEX), \ ++ (__v8si)(__m256i) (V1), (int) (SCALE)) + + #define _mm512_mask_i64scatter_epi32(ADDR, MASK, INDEX, V1, SCALE) \ +- __builtin_ia32_scatterdiv16si ((void *)ADDR, (__mmask8)MASK, \ +- (__v8di)(__m512i)INDEX, \ +- (__v8si)(__m256i)V1, (int)SCALE) ++ __builtin_ia32_scatterdiv16si ((void *) (ADDR), (__mmask8) (MASK), \ ++ (__v8di)(__m512i) (INDEX), \ ++ (__v8si)(__m256i) (V1), (int) (SCALE)) + + #define _mm512_i64scatter_epi64(ADDR, INDEX, V1, SCALE) \ +- __builtin_ia32_scatterdiv8di ((void *)ADDR, (__mmask8)0xFF, \ +- (__v8di)(__m512i)INDEX, \ +- (__v8di)(__m512i)V1, (int)SCALE) ++ __builtin_ia32_scatterdiv8di ((void *) (ADDR), (__mmask8)0xFF, \ ++ (__v8di)(__m512i) (INDEX), \ ++ (__v8di)(__m512i) (V1), (int) (SCALE)) + + #define _mm512_mask_i64scatter_epi64(ADDR, MASK, INDEX, V1, SCALE) \ +- __builtin_ia32_scatterdiv8di ((void *)ADDR, (__mmask8)MASK, \ +- (__v8di)(__m512i)INDEX, \ +- (__v8di)(__m512i)V1, (int)SCALE) ++ __builtin_ia32_scatterdiv8di ((void *) (ADDR), (__mmask8) (MASK), \ ++ (__v8di)(__m512i) (INDEX), \ ++ (__v8di)(__m512i) (V1), (int) (SCALE)) + #endif + + extern __inline __m512d +@@ -14124,6 +14134,88 @@ _mm512_mask_cmp_pd_mask (__mmask8 __U, __m512d __X, __m512d __Y, const int __P) + _MM_FROUND_CUR_DIRECTION); + } + ++extern __inline __mmask8 ++__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) ++_mm_cmp_sd_mask (__m128d __X, __m128d __Y, const int __P) ++{ ++ return (__mmask8) __builtin_ia32_cmpsd_mask ((__v2df) __X, ++ (__v2df) __Y, __P, ++ (__mmask8) -1, ++ _MM_FROUND_CUR_DIRECTION); ++} ++ ++extern __inline __mmask8 ++__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) ++_mm_mask_cmp_sd_mask (__mmask8 __M, __m128d __X, __m128d __Y, const int __P) ++{ ++ return (__mmask8) __builtin_ia32_cmpsd_mask ((__v2df) __X, ++ (__v2df) __Y, __P, ++ (__mmask8) __M, ++ _MM_FROUND_CUR_DIRECTION); ++} ++ ++extern __inline __mmask8 ++__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) ++_mm_cmp_ss_mask (__m128 __X, __m128 __Y, const int __P) ++{ ++ return (__mmask8) __builtin_ia32_cmpss_mask ((__v4sf) __X, ++ (__v4sf) __Y, __P, ++ (__mmask8) -1, ++ _MM_FROUND_CUR_DIRECTION); ++} ++ ++extern __inline __mmask8 ++__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) ++_mm_mask_cmp_ss_mask (__mmask8 __M, __m128 __X, __m128 __Y, const int __P) ++{ ++ return (__mmask8) __builtin_ia32_cmpss_mask ((__v4sf) __X, ++ (__v4sf) __Y, __P, ++ (__mmask8) __M, ++ _MM_FROUND_CUR_DIRECTION); ++} ++ ++#else ++#define _mm512_cmp_pd_mask(X, Y, P) \ ++ ((__mmask8) __builtin_ia32_cmppd512_mask ((__v8df)(__m512d)(X), \ ++ (__v8df)(__m512d)(Y), (int)(P),\ ++ (__mmask8)-1,_MM_FROUND_CUR_DIRECTION)) ++ ++#define _mm512_cmp_ps_mask(X, Y, P) \ ++ ((__mmask16) __builtin_ia32_cmpps512_mask ((__v16sf)(__m512)(X), \ ++ (__v16sf)(__m512)(Y), (int)(P),\ ++ (__mmask16)-1,_MM_FROUND_CUR_DIRECTION)) ++ ++#define _mm512_mask_cmp_pd_mask(M, X, Y, P) \ ++ ((__mmask8) __builtin_ia32_cmppd512_mask ((__v8df)(__m512d)(X), \ ++ (__v8df)(__m512d)(Y), (int)(P),\ ++ (__mmask8)(M), _MM_FROUND_CUR_DIRECTION)) ++ ++#define _mm512_mask_cmp_ps_mask(M, X, Y, P) \ ++ ((__mmask16) __builtin_ia32_cmpps512_mask ((__v16sf)(__m512)(X), \ ++ (__v16sf)(__m512)(Y), (int)(P),\ ++ (__mmask16)(M),_MM_FROUND_CUR_DIRECTION)) ++ ++#define _mm_cmp_sd_mask(X, Y, P) \ ++ ((__mmask8) __builtin_ia32_cmpsd_mask ((__v2df)(__m128d)(X), \ ++ (__v2df)(__m128d)(Y), (int)(P),\ ++ (__mmask8)-1,_MM_FROUND_CUR_DIRECTION)) ++ ++#define _mm_mask_cmp_sd_mask(M, X, Y, P) \ ++ ((__mmask8) __builtin_ia32_cmpsd_mask ((__v2df)(__m128d)(X), \ ++ (__v2df)(__m128d)(Y), (int)(P),\ ++ M,_MM_FROUND_CUR_DIRECTION)) ++ ++#define _mm_cmp_ss_mask(X, Y, P) \ ++ ((__mmask8) __builtin_ia32_cmpss_mask ((__v4sf)(__m128)(X), \ ++ (__v4sf)(__m128)(Y), (int)(P), \ ++ (__mmask8)-1,_MM_FROUND_CUR_DIRECTION)) ++ ++#define _mm_mask_cmp_ss_mask(M, X, Y, P) \ ++ ((__mmask8) __builtin_ia32_cmpss_mask ((__v4sf)(__m128)(X), \ ++ (__v4sf)(__m128)(Y), (int)(P), \ ++ M,_MM_FROUND_CUR_DIRECTION)) ++#endif ++ + extern __inline __mmask8 + __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) + _mm512_cmpeq_pd_mask (__m512d __X, __m512d __Y) +@@ -14444,88 +14536,6 @@ _mm512_mask_cmpord_ps_mask (__mmask16 __U, __m512 __X, __m512 __Y) + _MM_FROUND_CUR_DIRECTION); + } + +-extern __inline __mmask8 +-__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +-_mm_cmp_sd_mask (__m128d __X, __m128d __Y, const int __P) +-{ +- return (__mmask8) __builtin_ia32_cmpsd_mask ((__v2df) __X, +- (__v2df) __Y, __P, +- (__mmask8) -1, +- _MM_FROUND_CUR_DIRECTION); +-} +- +-extern __inline __mmask8 +-__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +-_mm_mask_cmp_sd_mask (__mmask8 __M, __m128d __X, __m128d __Y, const int __P) +-{ +- return (__mmask8) __builtin_ia32_cmpsd_mask ((__v2df) __X, +- (__v2df) __Y, __P, +- (__mmask8) __M, +- _MM_FROUND_CUR_DIRECTION); +-} +- +-extern __inline __mmask8 +-__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +-_mm_cmp_ss_mask (__m128 __X, __m128 __Y, const int __P) +-{ +- return (__mmask8) __builtin_ia32_cmpss_mask ((__v4sf) __X, +- (__v4sf) __Y, __P, +- (__mmask8) -1, +- _MM_FROUND_CUR_DIRECTION); +-} +- +-extern __inline __mmask8 +-__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) +-_mm_mask_cmp_ss_mask (__mmask8 __M, __m128 __X, __m128 __Y, const int __P) +-{ +- return (__mmask8) __builtin_ia32_cmpss_mask ((__v4sf) __X, +- (__v4sf) __Y, __P, +- (__mmask8) __M, +- _MM_FROUND_CUR_DIRECTION); +-} +- +-#else +-#define _mm512_cmp_pd_mask(X, Y, P) \ +- ((__mmask8) __builtin_ia32_cmppd512_mask ((__v8df)(__m512d)(X), \ +- (__v8df)(__m512d)(Y), (int)(P),\ +- (__mmask8)-1,_MM_FROUND_CUR_DIRECTION)) +- +-#define _mm512_cmp_ps_mask(X, Y, P) \ +- ((__mmask16) __builtin_ia32_cmpps512_mask ((__v16sf)(__m512)(X), \ +- (__v16sf)(__m512)(Y), (int)(P),\ +- (__mmask16)-1,_MM_FROUND_CUR_DIRECTION)) +- +-#define _mm512_mask_cmp_pd_mask(M, X, Y, P) \ +- ((__mmask8) __builtin_ia32_cmppd512_mask ((__v8df)(__m512d)(X), \ +- (__v8df)(__m512d)(Y), (int)(P),\ +- (__mmask8)M, _MM_FROUND_CUR_DIRECTION)) +- +-#define _mm512_mask_cmp_ps_mask(M, X, Y, P) \ +- ((__mmask16) __builtin_ia32_cmpps512_mask ((__v16sf)(__m512)(X), \ +- (__v16sf)(__m512)(Y), (int)(P),\ +- (__mmask16)M,_MM_FROUND_CUR_DIRECTION)) +- +-#define _mm_cmp_sd_mask(X, Y, P) \ +- ((__mmask8) __builtin_ia32_cmpsd_mask ((__v2df)(__m128d)(X), \ +- (__v2df)(__m128d)(Y), (int)(P),\ +- (__mmask8)-1,_MM_FROUND_CUR_DIRECTION)) +- +-#define _mm_mask_cmp_sd_mask(M, X, Y, P) \ +- ((__mmask8) __builtin_ia32_cmpsd_mask ((__v2df)(__m128d)(X), \ +- (__v2df)(__m128d)(Y), (int)(P),\ +- M,_MM_FROUND_CUR_DIRECTION)) +- +-#define _mm_cmp_ss_mask(X, Y, P) \ +- ((__mmask8) __builtin_ia32_cmpss_mask ((__v4sf)(__m128)(X), \ +- (__v4sf)(__m128)(Y), (int)(P), \ +- (__mmask8)-1,_MM_FROUND_CUR_DIRECTION)) +- +-#define _mm_mask_cmp_ss_mask(M, X, Y, P) \ +- ((__mmask8) __builtin_ia32_cmpss_mask ((__v4sf)(__m128)(X), \ +- (__v4sf)(__m128)(Y), (int)(P), \ +- M,_MM_FROUND_CUR_DIRECTION)) +-#endif +- + extern __inline __mmask16 + __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) + _mm512_kmov (__mmask16 __A) +--- a/src/gcc/config/i386/avx512pfintrin.h ++++ b/src/gcc/config/i386/avx512pfintrin.h +@@ -192,68 +192,73 @@ _mm512_mask_prefetch_i64scatter_ps (void *__addr, __mmask16 __mask, + + #else + #define _mm512_prefetch_i32gather_pd(INDEX, ADDR, SCALE, HINT) \ +- __builtin_ia32_gatherpfdpd ((__mmask8)0xFF, (__v8si)(__m256i)INDEX, \ +- (void const *)ADDR, (int)SCALE, (int)HINT) ++ __builtin_ia32_gatherpfdpd ((__mmask8)0xFF, (__v8si)(__m256i) (INDEX), \ ++ (void const *) (ADDR), (int) (SCALE), \ ++ (int) (HINT)) + + #define _mm512_prefetch_i32gather_ps(INDEX, ADDR, SCALE, HINT) \ +- __builtin_ia32_gatherpfdps ((__mmask16)0xFFFF, (__v16si)(__m512i)INDEX, \ +- (void const *)ADDR, (int)SCALE, (int)HINT) ++ __builtin_ia32_gatherpfdps ((__mmask16)0xFFFF, (__v16si)(__m512i) (INDEX), \ ++ (void const *) (ADDR), (int) (SCALE), \ ++ (int) (HINT)) + + #define _mm512_mask_prefetch_i32gather_pd(INDEX, MASK, ADDR, SCALE, HINT) \ +- __builtin_ia32_gatherpfdpd ((__mmask8)MASK, (__v8si)(__m256i)INDEX, \ +- (void const *)ADDR, (int)SCALE, (int)HINT) ++ __builtin_ia32_gatherpfdpd ((__mmask8) (MASK), (__v8si)(__m256i) (INDEX), \ ++ (void const *) (ADDR), (int) (SCALE), \ ++ (int) (HINT)) + + #define _mm512_mask_prefetch_i32gather_ps(INDEX, MASK, ADDR, SCALE, HINT) \ +- __builtin_ia32_gatherpfdps ((__mmask16)MASK, (__v16si)(__m512i)INDEX, \ +- (void const *)ADDR, (int)SCALE, (int)HINT) ++ __builtin_ia32_gatherpfdps ((__mmask16) (MASK), (__v16si)(__m512i) (INDEX),\ ++ (void const *) (ADDR), (int) (SCALE), \ ++ (int) (HINT)) + + #define _mm512_prefetch_i64gather_pd(INDEX, ADDR, SCALE, HINT) \ +- __builtin_ia32_gatherpfqpd ((__mmask8)0xFF, (__v8di)(__m512i)INDEX, \ +- (void *)ADDR, (int)SCALE, (int)HINT) ++ __builtin_ia32_gatherpfqpd ((__mmask8)0xFF, (__v8di)(__m512i) (INDEX), \ ++ (void *) (ADDR), (int) (SCALE), (int) (HINT)) + + #define _mm512_prefetch_i64gather_ps(INDEX, ADDR, SCALE, HINT) \ +- __builtin_ia32_gatherpfqps ((__mmask8)0xFF, (__v8di)(__m512i)INDEX, \ +- (void *)ADDR, (int)SCALE, (int)HINT) ++ __builtin_ia32_gatherpfqps ((__mmask8)0xFF, (__v8di)(__m512i) (INDEX), \ ++ (void *) (ADDR), (int) (SCALE), (int) (HINT)) + + #define _mm512_mask_prefetch_i64gather_pd(INDEX, MASK, ADDR, SCALE, HINT) \ +- __builtin_ia32_gatherpfqpd ((__mmask8)MASK, (__v8di)(__m512i)INDEX, \ +- (void *)ADDR, (int)SCALE, (int)HINT) ++ __builtin_ia32_gatherpfqpd ((__mmask8) (MASK), (__v8di)(__m512i) (INDEX), \ ++ (void *) (ADDR), (int) (SCALE), (int) (HINT)) + + #define _mm512_mask_prefetch_i64gather_ps(INDEX, MASK, ADDR, SCALE, HINT) \ +- __builtin_ia32_gatherpfqps ((__mmask8)MASK, (__v8di)(__m512i)INDEX, \ +- (void *)ADDR, (int)SCALE, (int)HINT) ++ __builtin_ia32_gatherpfqps ((__mmask8) (MASK), (__v8di)(__m512i) (INDEX), \ ++ (void *) (ADDR), (int) (SCALE), (int) (HINT)) + + #define _mm512_prefetch_i32scatter_pd(ADDR, INDEX, SCALE, HINT) \ +- __builtin_ia32_scatterpfdpd ((__mmask8)0xFF, (__v8si)(__m256i)INDEX, \ +- (void *)ADDR, (int)SCALE, (int)HINT) ++ __builtin_ia32_scatterpfdpd ((__mmask8)0xFF, (__v8si)(__m256i) (INDEX), \ ++ (void *) (ADDR), (int) (SCALE), (int) (HINT)) + + #define _mm512_prefetch_i32scatter_ps(ADDR, INDEX, SCALE, HINT) \ +- __builtin_ia32_scatterpfdps ((__mmask16)0xFFFF, (__v16si)(__m512i)INDEX, \ +- (void *)ADDR, (int)SCALE, (int)HINT) ++ __builtin_ia32_scatterpfdps ((__mmask16)0xFFFF, (__v16si)(__m512i) (INDEX),\ ++ (void *) (ADDR), (int) (SCALE), (int) (HINT)) + + #define _mm512_mask_prefetch_i32scatter_pd(ADDR, MASK, INDEX, SCALE, HINT) \ +- __builtin_ia32_scatterpfdpd ((__mmask8)MASK, (__v8si)(__m256i)INDEX, \ +- (void *)ADDR, (int)SCALE, (int)HINT) ++ __builtin_ia32_scatterpfdpd ((__mmask8) (MASK), (__v8si)(__m256i) (INDEX), \ ++ (void *) (ADDR), (int) (SCALE), (int) (HINT)) + + #define _mm512_mask_prefetch_i32scatter_ps(ADDR, MASK, INDEX, SCALE, HINT) \ +- __builtin_ia32_scatterpfdps ((__mmask16)MASK, (__v16si)(__m512i)INDEX, \ +- (void *)ADDR, (int)SCALE, (int)HINT) ++ __builtin_ia32_scatterpfdps ((__mmask16) (MASK), \ ++ (__v16si)(__m512i) (INDEX), \ ++ (void *) (ADDR), (int) (SCALE), (int) (HINT)) + + #define _mm512_prefetch_i64scatter_pd(ADDR, INDEX, SCALE, HINT) \ +- __builtin_ia32_scatterpfqpd ((__mmask8)0xFF, (__v8di)(__m512i)INDEX, \ +- (void *)ADDR, (int)SCALE, (int)HINT) ++ __builtin_ia32_scatterpfqpd ((__mmask8)0xFF, (__v8di)(__m512i) (INDEX), \ ++ (void *) (ADDR), (int) (SCALE), (int) (HINT)) + + #define _mm512_prefetch_i64scatter_ps(ADDR, INDEX, SCALE, HINT) \ +- __builtin_ia32_scatterpfqps ((__mmask8)0xFF, (__v8di)(__m512i)INDEX, \ +- (void *)ADDR, (int)SCALE, (int)HINT) ++ __builtin_ia32_scatterpfqps ((__mmask8)0xFF, (__v8di)(__m512i) (INDEX), \ ++ (void *) (ADDR), (int) (SCALE), (int) (HINT)) + + #define _mm512_mask_prefetch_i64scatter_pd(ADDR, MASK, INDEX, SCALE, HINT) \ +- __builtin_ia32_scatterpfqpd ((__mmask8)MASK, (__v8di)(__m512i)INDEX, \ +- (void *)ADDR, (int)SCALE, (int)HINT) ++ __builtin_ia32_scatterpfqpd ((__mmask8) (MASK), (__v8di)(__m512i) (INDEX), \ ++ (void *) (ADDR), (int) (SCALE), (int) (HINT)) + + #define _mm512_mask_prefetch_i64scatter_ps(ADDR, MASK, INDEX, SCALE, HINT) \ +- __builtin_ia32_scatterpfqps ((__mmask8)MASK, (__v8di)(__m512i)INDEX, \ +- (void *)ADDR, (int)SCALE, (int)HINT) ++ __builtin_ia32_scatterpfqps ((__mmask8) (MASK), (__v8di)(__m512i) (INDEX), \ ++ (void *) (ADDR), (int) (SCALE), (int) (HINT)) + #endif + + #ifdef __DISABLE_AVX512PF__ +--- a/src/gcc/config/i386/avx512vlbwintrin.h ++++ b/src/gcc/config/i386/avx512vlbwintrin.h +@@ -1787,7 +1787,7 @@ _mm_maskz_slli_epi16 (__mmask8 __U, __m128i __A, int __B) + #else + #define _mm256_mask_alignr_epi8(W, U, X, Y, N) \ + ((__m256i) __builtin_ia32_palignr256_mask ((__v4di)(__m256i)(X), \ +- (__v4di)(__m256i)(Y), (int)(N * 8), \ ++ (__v4di)(__m256i)(Y), (int)((N) * 8), \ + (__v4di)(__m256i)(X), (__mmask32)(U))) + + #define _mm256_mask_srli_epi16(W, U, A, B) \ +@@ -1864,18 +1864,18 @@ _mm_maskz_slli_epi16 (__mmask8 __U, __m128i __A, int __B) + + #define _mm256_maskz_alignr_epi8(U, X, Y, N) \ + ((__m256i) __builtin_ia32_palignr256_mask ((__v4di)(__m256i)(X), \ +- (__v4di)(__m256i)(Y), (int)(N * 8), \ ++ (__v4di)(__m256i)(Y), (int)((N) * 8), \ + (__v4di)(__m256i)_mm256_setzero_si256 (), \ + (__mmask32)(U))) + + #define _mm_mask_alignr_epi8(W, U, X, Y, N) \ + ((__m128i) __builtin_ia32_palignr128_mask ((__v2di)(__m128i)(X), \ +- (__v2di)(__m128i)(Y), (int)(N * 8), \ ++ (__v2di)(__m128i)(Y), (int)((N) * 8), \ + (__v2di)(__m128i)(X), (__mmask16)(U))) + + #define _mm_maskz_alignr_epi8(U, X, Y, N) \ + ((__m128i) __builtin_ia32_palignr128_mask ((__v2di)(__m128i)(X), \ +- (__v2di)(__m128i)(Y), (int)(N * 8), \ ++ (__v2di)(__m128i)(Y), (int)((N) * 8), \ + (__v2di)(__m128i)_mm_setzero_si128 (), \ + (__mmask16)(U))) + +@@ -2033,7 +2033,7 @@ _mm_maskz_slli_epi16 (__mmask8 __U, __m128i __A, int __B) + #define _mm256_mask_cmp_epu8_mask(M, X, Y, P) \ + ((__mmask32) __builtin_ia32_ucmpb256_mask ((__v32qi)(__m256i)(X), \ + (__v32qi)(__m256i)(Y), (int)(P),\ +- (__mmask32)M)) ++ (__mmask32)(M))) + #endif + + extern __inline __mmask32 +--- a/src/gcc/config/i386/avx512vlintrin.h ++++ b/src/gcc/config/i386/avx512vlintrin.h +@@ -12924,260 +12924,276 @@ _mm256_permutex_pd (__m256d __X, const int __M) + (__mmask8)(U))) + + #define _mm256_mmask_i32gather_ps(V1OLD, MASK, INDEX, ADDR, SCALE) \ +- (__m256) __builtin_ia32_gather3siv8sf ((__v8sf)(__m256)V1OLD, \ +- (void const *)ADDR, \ +- (__v8si)(__m256i)INDEX, \ +- (__mmask8)MASK, (int)SCALE) ++ (__m256) __builtin_ia32_gather3siv8sf ((__v8sf)(__m256) (V1OLD), \ ++ (void const *) (ADDR), \ ++ (__v8si)(__m256i) (INDEX), \ ++ (__mmask8) (MASK), \ ++ (int) (SCALE)) + + #define _mm_mmask_i32gather_ps(V1OLD, MASK, INDEX, ADDR, SCALE) \ +- (__m128) __builtin_ia32_gather3siv4sf ((__v4sf)(__m128)V1OLD, \ +- (void const *)ADDR, \ +- (__v4si)(__m128i)INDEX, \ +- (__mmask8)MASK, (int)SCALE) ++ (__m128) __builtin_ia32_gather3siv4sf ((__v4sf)(__m128) (V1OLD), \ ++ (void const *) (ADDR), \ ++ (__v4si)(__m128i) (INDEX), \ ++ (__mmask8) (MASK), \ ++ (int) (SCALE)) + + #define _mm256_mmask_i32gather_pd(V1OLD, MASK, INDEX, ADDR, SCALE) \ +- (__m256d) __builtin_ia32_gather3siv4df ((__v4df)(__m256d)V1OLD, \ +- (void const *)ADDR, \ +- (__v4si)(__m128i)INDEX, \ +- (__mmask8)MASK, (int)SCALE) ++ (__m256d) __builtin_ia32_gather3siv4df ((__v4df)(__m256d) (V1OLD), \ ++ (void const *) (ADDR), \ ++ (__v4si)(__m128i) (INDEX), \ ++ (__mmask8) (MASK), \ ++ (int) (SCALE)) + + #define _mm_mmask_i32gather_pd(V1OLD, MASK, INDEX, ADDR, SCALE) \ +- (__m128d) __builtin_ia32_gather3siv2df ((__v2df)(__m128d)V1OLD, \ +- (void const *)ADDR, \ +- (__v4si)(__m128i)INDEX, \ +- (__mmask8)MASK, (int)SCALE) ++ (__m128d) __builtin_ia32_gather3siv2df ((__v2df)(__m128d) (V1OLD), \ ++ (void const *) (ADDR), \ ++ (__v4si)(__m128i) (INDEX), \ ++ (__mmask8) (MASK), \ ++ (int) (SCALE)) + + #define _mm256_mmask_i64gather_ps(V1OLD, MASK, INDEX, ADDR, SCALE) \ +- (__m128) __builtin_ia32_gather3div8sf ((__v4sf)(__m128)V1OLD, \ +- (void const *)ADDR, \ +- (__v4di)(__m256i)INDEX, \ +- (__mmask8)MASK, (int)SCALE) ++ (__m128) __builtin_ia32_gather3div8sf ((__v4sf)(__m128) (V1OLD), \ ++ (void const *) (ADDR), \ ++ (__v4di)(__m256i) (INDEX), \ ++ (__mmask8) (MASK), \ ++ (int) (SCALE)) + + #define _mm_mmask_i64gather_ps(V1OLD, MASK, INDEX, ADDR, SCALE) \ +- (__m128) __builtin_ia32_gather3div4sf ((__v4sf)(__m128)V1OLD, \ +- (void const *)ADDR, \ +- (__v2di)(__m128i)INDEX, \ +- (__mmask8)MASK, (int)SCALE) ++ (__m128) __builtin_ia32_gather3div4sf ((__v4sf)(__m128) (V1OLD), \ ++ (void const *) (ADDR), \ ++ (__v2di)(__m128i) (INDEX), \ ++ (__mmask8) (MASK), \ ++ (int) (SCALE)) + + #define _mm256_mmask_i64gather_pd(V1OLD, MASK, INDEX, ADDR, SCALE) \ +- (__m256d) __builtin_ia32_gather3div4df ((__v4df)(__m256d)V1OLD, \ +- (void const *)ADDR, \ +- (__v4di)(__m256i)INDEX, \ +- (__mmask8)MASK, (int)SCALE) ++ (__m256d) __builtin_ia32_gather3div4df ((__v4df)(__m256d) (V1OLD), \ ++ (void const *) (ADDR), \ ++ (__v4di)(__m256i) (INDEX), \ ++ (__mmask8) (MASK), \ ++ (int) (SCALE)) + + #define _mm_mmask_i64gather_pd(V1OLD, MASK, INDEX, ADDR, SCALE) \ +- (__m128d) __builtin_ia32_gather3div2df ((__v2df)(__m128d)V1OLD, \ +- (void const *)ADDR, \ +- (__v2di)(__m128i)INDEX, \ +- (__mmask8)MASK, (int)SCALE) ++ (__m128d) __builtin_ia32_gather3div2df ((__v2df)(__m128d) (V1OLD), \ ++ (void const *) (ADDR), \ ++ (__v2di)(__m128i) (INDEX), \ ++ (__mmask8) (MASK), \ ++ (int) (SCALE)) + + #define _mm256_mmask_i32gather_epi32(V1OLD, MASK, INDEX, ADDR, SCALE) \ +- (__m256i) __builtin_ia32_gather3siv8si ((__v8si)(__m256i)V1OLD, \ +- (void const *)ADDR, \ +- (__v8si)(__m256i)INDEX, \ +- (__mmask8)MASK, (int)SCALE) ++ (__m256i) __builtin_ia32_gather3siv8si ((__v8si)(__m256i) (V1OLD), \ ++ (void const *) (ADDR), \ ++ (__v8si)(__m256i) (INDEX), \ ++ (__mmask8) (MASK), \ ++ (int) (SCALE)) + + #define _mm_mmask_i32gather_epi32(V1OLD, MASK, INDEX, ADDR, SCALE) \ +- (__m128i) __builtin_ia32_gather3siv4si ((__v4si)(__m128i)V1OLD, \ +- (void const *)ADDR, \ +- (__v4si)(__m128i)INDEX, \ +- (__mmask8)MASK, (int)SCALE) ++ (__m128i) __builtin_ia32_gather3siv4si ((__v4si)(__m128i) (V1OLD), \ ++ (void const *) (ADDR), \ ++ (__v4si)(__m128i) (INDEX), \ ++ (__mmask8) (MASK), \ ++ (int) (SCALE)) + + #define _mm256_mmask_i32gather_epi64(V1OLD, MASK, INDEX, ADDR, SCALE) \ +- (__m256i) __builtin_ia32_gather3siv4di ((__v4di)(__m256i)V1OLD, \ +- (void const *)ADDR, \ +- (__v4si)(__m128i)INDEX, \ +- (__mmask8)MASK, (int)SCALE) ++ (__m256i) __builtin_ia32_gather3siv4di ((__v4di)(__m256i) (V1OLD), \ ++ (void const *) (ADDR), \ ++ (__v4si)(__m128i) (INDEX), \ ++ (__mmask8) (MASK), \ ++ (int) (SCALE)) + + #define _mm_mmask_i32gather_epi64(V1OLD, MASK, INDEX, ADDR, SCALE) \ +- (__m128i) __builtin_ia32_gather3siv2di ((__v2di)(__m128i)V1OLD, \ +- (void const *)ADDR, \ +- (__v4si)(__m128i)INDEX, \ +- (__mmask8)MASK, (int)SCALE) ++ (__m128i) __builtin_ia32_gather3siv2di ((__v2di)(__m128i) (V1OLD), \ ++ (void const *) (ADDR), \ ++ (__v4si)(__m128i) (INDEX), \ ++ (__mmask8) (MASK), \ ++ (int) (SCALE)) + + #define _mm256_mmask_i64gather_epi32(V1OLD, MASK, INDEX, ADDR, SCALE) \ +- (__m128i) __builtin_ia32_gather3div8si ((__v4si)(__m128i)V1OLD, \ +- (void const *)ADDR, \ +- (__v4di)(__m256i)INDEX, \ +- (__mmask8)MASK, (int)SCALE) ++ (__m128i) __builtin_ia32_gather3div8si ((__v4si)(__m128i) (V1OLD), \ ++ (void const *) (ADDR), \ ++ (__v4di)(__m256i) (INDEX), \ ++ (__mmask8) (MASK), \ ++ (int) (SCALE)) + + #define _mm_mmask_i64gather_epi32(V1OLD, MASK, INDEX, ADDR, SCALE) \ +- (__m128i) __builtin_ia32_gather3div4si ((__v4si)(__m128i)V1OLD, \ +- (void const *)ADDR, \ +- (__v2di)(__m128i)INDEX, \ +- (__mmask8)MASK, (int)SCALE) ++ (__m128i) __builtin_ia32_gather3div4si ((__v4si)(__m128i) (V1OLD), \ ++ (void const *) (ADDR), \ ++ (__v2di)(__m128i) (INDEX), \ ++ (__mmask8) (MASK), \ ++ (int) (SCALE)) + + #define _mm256_mmask_i64gather_epi64(V1OLD, MASK, INDEX, ADDR, SCALE) \ +- (__m256i) __builtin_ia32_gather3div4di ((__v4di)(__m256i)V1OLD, \ +- (void const *)ADDR, \ +- (__v4di)(__m256i)INDEX, \ +- (__mmask8)MASK, (int)SCALE) ++ (__m256i) __builtin_ia32_gather3div4di ((__v4di)(__m256i) (V1OLD), \ ++ (void const *) (ADDR), \ ++ (__v4di)(__m256i) (INDEX), \ ++ (__mmask8) (MASK), \ ++ (int) (SCALE)) + + #define _mm_mmask_i64gather_epi64(V1OLD, MASK, INDEX, ADDR, SCALE) \ +- (__m128i) __builtin_ia32_gather3div2di ((__v2di)(__m128i)V1OLD, \ +- (void const *)ADDR, \ +- (__v2di)(__m128i)INDEX, \ +- (__mmask8)MASK, (int)SCALE) ++ (__m128i) __builtin_ia32_gather3div2di ((__v2di)(__m128i) (V1OLD), \ ++ (void const *) (ADDR), \ ++ (__v2di)(__m128i) (INDEX), \ ++ (__mmask8) (MASK), \ ++ (int) (SCALE)) + + #define _mm256_i32scatter_ps(ADDR, INDEX, V1, SCALE) \ +- __builtin_ia32_scattersiv8sf ((void *)ADDR, (__mmask8)0xFF, \ +- (__v8si)(__m256i)INDEX, \ +- (__v8sf)(__m256)V1, (int)SCALE) ++ __builtin_ia32_scattersiv8sf ((void *) (ADDR), (__mmask8)0xFF, \ ++ (__v8si)(__m256i) (INDEX), \ ++ (__v8sf)(__m256) (V1), (int) (SCALE)) + + #define _mm256_mask_i32scatter_ps(ADDR, MASK, INDEX, V1, SCALE) \ +- __builtin_ia32_scattersiv8sf ((void *)ADDR, (__mmask8)MASK, \ +- (__v8si)(__m256i)INDEX, \ +- (__v8sf)(__m256)V1, (int)SCALE) ++ __builtin_ia32_scattersiv8sf ((void *) (ADDR), (__mmask8) (MASK), \ ++ (__v8si)(__m256i) (INDEX), \ ++ (__v8sf)(__m256) (V1), (int) (SCALE)) + + #define _mm_i32scatter_ps(ADDR, INDEX, V1, SCALE) \ +- __builtin_ia32_scattersiv4sf ((void *)ADDR, (__mmask8)0xFF, \ +- (__v4si)(__m128i)INDEX, \ +- (__v4sf)(__m128)V1, (int)SCALE) ++ __builtin_ia32_scattersiv4sf ((void *) (ADDR), (__mmask8)0xFF, \ ++ (__v4si)(__m128i) (INDEX), \ ++ (__v4sf)(__m128) (V1), (int) (SCALE)) + + #define _mm_mask_i32scatter_ps(ADDR, MASK, INDEX, V1, SCALE) \ +- __builtin_ia32_scattersiv4sf ((void *)ADDR, (__mmask8)MASK, \ +- (__v4si)(__m128i)INDEX, \ +- (__v4sf)(__m128)V1, (int)SCALE) ++ __builtin_ia32_scattersiv4sf ((void *) (ADDR), (__mmask8) (MASK), \ ++ (__v4si)(__m128i) (INDEX), \ ++ (__v4sf)(__m128) (V1), (int) (SCALE)) + + #define _mm256_i32scatter_pd(ADDR, INDEX, V1, SCALE) \ +- __builtin_ia32_scattersiv4df ((void *)ADDR, (__mmask8)0xFF, \ +- (__v4si)(__m128i)INDEX, \ +- (__v4df)(__m256d)V1, (int)SCALE) ++ __builtin_ia32_scattersiv4df ((void *) (ADDR), (__mmask8)0xFF, \ ++ (__v4si)(__m128i) (INDEX), \ ++ (__v4df)(__m256d) (V1), (int) (SCALE)) + + #define _mm256_mask_i32scatter_pd(ADDR, MASK, INDEX, V1, SCALE) \ +- __builtin_ia32_scattersiv4df ((void *)ADDR, (__mmask8)MASK, \ +- (__v4si)(__m128i)INDEX, \ +- (__v4df)(__m256d)V1, (int)SCALE) ++ __builtin_ia32_scattersiv4df ((void *) (ADDR), (__mmask8) (MASK), \ ++ (__v4si)(__m128i) (INDEX), \ ++ (__v4df)(__m256d) (V1), (int) (SCALE)) + + #define _mm_i32scatter_pd(ADDR, INDEX, V1, SCALE) \ +- __builtin_ia32_scattersiv2df ((void *)ADDR, (__mmask8)0xFF, \ +- (__v4si)(__m128i)INDEX, \ +- (__v2df)(__m128d)V1, (int)SCALE) ++ __builtin_ia32_scattersiv2df ((void *) (ADDR), (__mmask8)0xFF, \ ++ (__v4si)(__m128i) (INDEX), \ ++ (__v2df)(__m128d) (V1), (int) (SCALE)) + + #define _mm_mask_i32scatter_pd(ADDR, MASK, INDEX, V1, SCALE) \ +- __builtin_ia32_scattersiv2df ((void *)ADDR, (__mmask8)MASK, \ +- (__v4si)(__m128i)INDEX, \ +- (__v2df)(__m128d)V1, (int)SCALE) ++ __builtin_ia32_scattersiv2df ((void *) (ADDR), (__mmask8) (MASK), \ ++ (__v4si)(__m128i) (INDEX), \ ++ (__v2df)(__m128d) (V1), (int) (SCALE)) + + #define _mm256_i64scatter_ps(ADDR, INDEX, V1, SCALE) \ +- __builtin_ia32_scatterdiv8sf ((void *)ADDR, (__mmask8)0xFF, \ +- (__v4di)(__m256i)INDEX, \ +- (__v4sf)(__m128)V1, (int)SCALE) ++ __builtin_ia32_scatterdiv8sf ((void *) (ADDR), (__mmask8)0xFF, \ ++ (__v4di)(__m256i) (INDEX), \ ++ (__v4sf)(__m128) (V1), (int) (SCALE)) + + #define _mm256_mask_i64scatter_ps(ADDR, MASK, INDEX, V1, SCALE) \ +- __builtin_ia32_scatterdiv8sf ((void *)ADDR, (__mmask8)MASK, \ +- (__v4di)(__m256i)INDEX, \ +- (__v4sf)(__m128)V1, (int)SCALE) ++ __builtin_ia32_scatterdiv8sf ((void *) (ADDR), (__mmask8) (MASK), \ ++ (__v4di)(__m256i) (INDEX), \ ++ (__v4sf)(__m128) (V1), (int) (SCALE)) + + #define _mm_i64scatter_ps(ADDR, INDEX, V1, SCALE) \ +- __builtin_ia32_scatterdiv4sf ((void *)ADDR, (__mmask8)0xFF, \ +- (__v2di)(__m128i)INDEX, \ +- (__v4sf)(__m128)V1, (int)SCALE) ++ __builtin_ia32_scatterdiv4sf ((void *) (ADDR), (__mmask8)0xFF, \ ++ (__v2di)(__m128i) (INDEX), \ ++ (__v4sf)(__m128) (V1), (int) (SCALE)) + + #define _mm_mask_i64scatter_ps(ADDR, MASK, INDEX, V1, SCALE) \ +- __builtin_ia32_scatterdiv4sf ((void *)ADDR, (__mmask8)MASK, \ +- (__v2di)(__m128i)INDEX, \ +- (__v4sf)(__m128)V1, (int)SCALE) ++ __builtin_ia32_scatterdiv4sf ((void *) (ADDR), (__mmask8) (MASK), \ ++ (__v2di)(__m128i) (INDEX), \ ++ (__v4sf)(__m128) (V1), (int) (SCALE)) + + #define _mm256_i64scatter_pd(ADDR, INDEX, V1, SCALE) \ +- __builtin_ia32_scatterdiv4df ((void *)ADDR, (__mmask8)0xFF, \ +- (__v4di)(__m256i)INDEX, \ +- (__v4df)(__m256d)V1, (int)SCALE) ++ __builtin_ia32_scatterdiv4df ((void *) (ADDR), (__mmask8)0xFF, \ ++ (__v4di)(__m256i) (INDEX), \ ++ (__v4df)(__m256d) (V1), (int) (SCALE)) + + #define _mm256_mask_i64scatter_pd(ADDR, MASK, INDEX, V1, SCALE) \ +- __builtin_ia32_scatterdiv4df ((void *)ADDR, (__mmask8)MASK, \ +- (__v4di)(__m256i)INDEX, \ +- (__v4df)(__m256d)V1, (int)SCALE) ++ __builtin_ia32_scatterdiv4df ((void *) (ADDR), (__mmask8) (MASK), \ ++ (__v4di)(__m256i) (INDEX), \ ++ (__v4df)(__m256d) (V1), (int) (SCALE)) + + #define _mm_i64scatter_pd(ADDR, INDEX, V1, SCALE) \ +- __builtin_ia32_scatterdiv2df ((void *)ADDR, (__mmask8)0xFF, \ +- (__v2di)(__m128i)INDEX, \ +- (__v2df)(__m128d)V1, (int)SCALE) ++ __builtin_ia32_scatterdiv2df ((void *) (ADDR), (__mmask8)0xFF, \ ++ (__v2di)(__m128i) (INDEX), \ ++ (__v2df)(__m128d) (V1), (int) (SCALE)) + + #define _mm_mask_i64scatter_pd(ADDR, MASK, INDEX, V1, SCALE) \ +- __builtin_ia32_scatterdiv2df ((void *)ADDR, (__mmask8)MASK, \ +- (__v2di)(__m128i)INDEX, \ +- (__v2df)(__m128d)V1, (int)SCALE) ++ __builtin_ia32_scatterdiv2df ((void *) (ADDR), (__mmask8) (MASK), \ ++ (__v2di)(__m128i) (INDEX), \ ++ (__v2df)(__m128d) (V1), (int) (SCALE)) + + #define _mm256_i32scatter_epi32(ADDR, INDEX, V1, SCALE) \ +- __builtin_ia32_scattersiv8si ((void *)ADDR, (__mmask8)0xFF, \ +- (__v8si)(__m256i)INDEX, \ +- (__v8si)(__m256i)V1, (int)SCALE) ++ __builtin_ia32_scattersiv8si ((void *) (ADDR), (__mmask8)0xFF, \ ++ (__v8si)(__m256i) (INDEX), \ ++ (__v8si)(__m256i) (V1), (int) (SCALE)) + + #define _mm256_mask_i32scatter_epi32(ADDR, MASK, INDEX, V1, SCALE) \ +- __builtin_ia32_scattersiv8si ((void *)ADDR, (__mmask8)MASK, \ +- (__v8si)(__m256i)INDEX, \ +- (__v8si)(__m256i)V1, (int)SCALE) ++ __builtin_ia32_scattersiv8si ((void *) (ADDR), (__mmask8) (MASK), \ ++ (__v8si)(__m256i) (INDEX), \ ++ (__v8si)(__m256i) (V1), (int) (SCALE)) + + #define _mm_i32scatter_epi32(ADDR, INDEX, V1, SCALE) \ +- __builtin_ia32_scattersiv4si ((void *)ADDR, (__mmask8)0xFF, \ +- (__v4si)(__m128i)INDEX, \ +- (__v4si)(__m128i)V1, (int)SCALE) ++ __builtin_ia32_scattersiv4si ((void *) (ADDR), (__mmask8)0xFF, \ ++ (__v4si)(__m128i) (INDEX), \ ++ (__v4si)(__m128i) (V1), (int) (SCALE)) + + #define _mm_mask_i32scatter_epi32(ADDR, MASK, INDEX, V1, SCALE) \ +- __builtin_ia32_scattersiv4si ((void *)ADDR, (__mmask8)MASK, \ +- (__v4si)(__m128i)INDEX, \ +- (__v4si)(__m128i)V1, (int)SCALE) ++ __builtin_ia32_scattersiv4si ((void *) (ADDR), (__mmask8) (MASK), \ ++ (__v4si)(__m128i) (INDEX), \ ++ (__v4si)(__m128i) (V1), (int) (SCALE)) + + #define _mm256_i32scatter_epi64(ADDR, INDEX, V1, SCALE) \ +- __builtin_ia32_scattersiv4di ((void *)ADDR, (__mmask8)0xFF, \ +- (__v4si)(__m128i)INDEX, \ +- (__v4di)(__m256i)V1, (int)SCALE) ++ __builtin_ia32_scattersiv4di ((void *) (ADDR), (__mmask8)0xFF, \ ++ (__v4si)(__m128i) (INDEX), \ ++ (__v4di)(__m256i) (V1), (int) (SCALE)) + + #define _mm256_mask_i32scatter_epi64(ADDR, MASK, INDEX, V1, SCALE) \ +- __builtin_ia32_scattersiv4di ((void *)ADDR, (__mmask8)MASK, \ +- (__v4si)(__m128i)INDEX, \ +- (__v4di)(__m256i)V1, (int)SCALE) ++ __builtin_ia32_scattersiv4di ((void *) (ADDR), (__mmask8) (MASK), \ ++ (__v4si)(__m128i) (INDEX), \ ++ (__v4di)(__m256i) (V1), (int) (SCALE)) + + #define _mm_i32scatter_epi64(ADDR, INDEX, V1, SCALE) \ +- __builtin_ia32_scattersiv2di ((void *)ADDR, (__mmask8)0xFF, \ +- (__v4si)(__m128i)INDEX, \ +- (__v2di)(__m128i)V1, (int)SCALE) ++ __builtin_ia32_scattersiv2di ((void *) (ADDR), (__mmask8)0xFF, \ ++ (__v4si)(__m128i) (INDEX), \ ++ (__v2di)(__m128i) (V1), (int) (SCALE)) + + #define _mm_mask_i32scatter_epi64(ADDR, MASK, INDEX, V1, SCALE) \ +- __builtin_ia32_scattersiv2di ((void *)ADDR, (__mmask8)MASK, \ +- (__v4si)(__m128i)INDEX, \ +- (__v2di)(__m128i)V1, (int)SCALE) ++ __builtin_ia32_scattersiv2di ((void *) (ADDR), (__mmask8) (MASK), \ ++ (__v4si)(__m128i) (INDEX), \ ++ (__v2di)(__m128i) (V1), (int) (SCALE)) + + #define _mm256_i64scatter_epi32(ADDR, INDEX, V1, SCALE) \ +- __builtin_ia32_scatterdiv8si ((void *)ADDR, (__mmask8)0xFF, \ +- (__v4di)(__m256i)INDEX, \ +- (__v4si)(__m128i)V1, (int)SCALE) ++ __builtin_ia32_scatterdiv8si ((void *) (ADDR), (__mmask8)0xFF, \ ++ (__v4di)(__m256i) (INDEX), \ ++ (__v4si)(__m128i) (V1), (int) (SCALE)) + + #define _mm256_mask_i64scatter_epi32(ADDR, MASK, INDEX, V1, SCALE) \ +- __builtin_ia32_scatterdiv8si ((void *)ADDR, (__mmask8)MASK, \ +- (__v4di)(__m256i)INDEX, \ +- (__v4si)(__m128i)V1, (int)SCALE) ++ __builtin_ia32_scatterdiv8si ((void *) (ADDR), (__mmask8) (MASK), \ ++ (__v4di)(__m256i) (INDEX), \ ++ (__v4si)(__m128i) (V1), (int) (SCALE)) + + #define _mm_i64scatter_epi32(ADDR, INDEX, V1, SCALE) \ +- __builtin_ia32_scatterdiv4si ((void *)ADDR, (__mmask8)0xFF, \ +- (__v2di)(__m128i)INDEX, \ +- (__v4si)(__m128i)V1, (int)SCALE) ++ __builtin_ia32_scatterdiv4si ((void *) (ADDR), (__mmask8)0xFF, \ ++ (__v2di)(__m128i) (INDEX), \ ++ (__v4si)(__m128i) (V1), (int) (SCALE)) + + #define _mm_mask_i64scatter_epi32(ADDR, MASK, INDEX, V1, SCALE) \ +- __builtin_ia32_scatterdiv4si ((void *)ADDR, (__mmask8)MASK, \ +- (__v2di)(__m128i)INDEX, \ +- (__v4si)(__m128i)V1, (int)SCALE) ++ __builtin_ia32_scatterdiv4si ((void *) (ADDR), (__mmask8) (MASK), \ ++ (__v2di)(__m128i) (INDEX), \ ++ (__v4si)(__m128i) (V1), (int) (SCALE)) + + #define _mm256_i64scatter_epi64(ADDR, INDEX, V1, SCALE) \ +- __builtin_ia32_scatterdiv4di ((void *)ADDR, (__mmask8)0xFF, \ +- (__v4di)(__m256i)INDEX, \ +- (__v4di)(__m256i)V1, (int)SCALE) ++ __builtin_ia32_scatterdiv4di ((void *) (ADDR), (__mmask8)0xFF, \ ++ (__v4di)(__m256i) (INDEX), \ ++ (__v4di)(__m256i) (V1), (int) (SCALE)) + + #define _mm256_mask_i64scatter_epi64(ADDR, MASK, INDEX, V1, SCALE) \ +- __builtin_ia32_scatterdiv4di ((void *)ADDR, (__mmask8)MASK, \ +- (__v4di)(__m256i)INDEX, \ +- (__v4di)(__m256i)V1, (int)SCALE) ++ __builtin_ia32_scatterdiv4di ((void *) (ADDR), (__mmask8) (MASK), \ ++ (__v4di)(__m256i) (INDEX), \ ++ (__v4di)(__m256i) (V1), (int) (SCALE)) + + #define _mm_i64scatter_epi64(ADDR, INDEX, V1, SCALE) \ +- __builtin_ia32_scatterdiv2di ((void *)ADDR, (__mmask8)0xFF, \ +- (__v2di)(__m128i)INDEX, \ +- (__v2di)(__m128i)V1, (int)SCALE) ++ __builtin_ia32_scatterdiv2di ((void *) (ADDR), (__mmask8)0xFF, \ ++ (__v2di)(__m128i) (INDEX), \ ++ (__v2di)(__m128i) (V1), (int) (SCALE)) + + #define _mm_mask_i64scatter_epi64(ADDR, MASK, INDEX, V1, SCALE) \ +- __builtin_ia32_scatterdiv2di ((void *)ADDR, (__mmask8)MASK, \ +- (__v2di)(__m128i)INDEX, \ +- (__v2di)(__m128i)V1, (int)SCALE) ++ __builtin_ia32_scatterdiv2di ((void *) (ADDR), (__mmask8) (MASK), \ ++ (__v2di)(__m128i) (INDEX), \ ++ (__v2di)(__m128i) (V1), (int) (SCALE)) + + #define _mm256_mask_shuffle_epi32(W, U, X, C) \ + ((__m256i) __builtin_ia32_pshufd256_mask ((__v8si)(__m256i)(X), (int)(C), \ +@@ -13374,19 +13390,19 @@ _mm256_permutex_pd (__m256d __X, const int __M) + (__mmask8)(U))) + + #define _mm_mask_cvtps_ph(W, U, A, I) \ +- ((__m128i) __builtin_ia32_vcvtps2ph_mask ((__v4sf)(__m128) A, (int) (I), \ ++ ((__m128i) __builtin_ia32_vcvtps2ph_mask ((__v4sf)(__m128) (A), (int) (I), \ + (__v8hi)(__m128i) (W), (__mmask8) (U))) + + #define _mm_maskz_cvtps_ph(U, A, I) \ +- ((__m128i) __builtin_ia32_vcvtps2ph_mask ((__v4sf)(__m128) A, (int) (I), \ ++ ((__m128i) __builtin_ia32_vcvtps2ph_mask ((__v4sf)(__m128) (A), (int) (I), \ + (__v8hi)(__m128i) _mm_setzero_si128 (), (__mmask8) (U))) + + #define _mm256_mask_cvtps_ph(W, U, A, I) \ +- ((__m128i) __builtin_ia32_vcvtps2ph256_mask ((__v8sf)(__m256) A, (int) (I), \ ++ ((__m128i) __builtin_ia32_vcvtps2ph256_mask ((__v8sf)(__m256) (A), (int) (I), \ + (__v8hi)(__m128i) (W), (__mmask8) (U))) + + #define _mm256_maskz_cvtps_ph(U, A, I) \ +- ((__m128i) __builtin_ia32_vcvtps2ph256_mask ((__v8sf)(__m256) A, (int) (I), \ ++ ((__m128i) __builtin_ia32_vcvtps2ph256_mask ((__v8sf)(__m256) (A), (int) (I), \ + (__v8hi)(__m128i) _mm_setzero_si128 (), (__mmask8) (U))) + + #define _mm256_mask_srai_epi32(W, U, A, B) \ +--- a/src/gcc/config/i386/darwin.h ++++ b/src/gcc/config/i386/darwin.h +@@ -236,6 +236,16 @@ along with GCC; see the file COPYING3. If not see + #undef TARGET_ASM_OUTPUT_IDENT + #define TARGET_ASM_OUTPUT_IDENT default_asm_output_ident_directive + ++/* We always want jump tables in the text section: ++ * for PIC code, we need the subtracted symbol to be defined at ++ assembly-time. ++ * for mdynamic-no-pic, we cannot support jump tables in the .const ++ section for weak functions, this looks to ld64 like direct access ++ to the weak symbol from an anonymous atom. */ ++ ++#undef JUMP_TABLES_IN_TEXT_SECTION ++#define JUMP_TABLES_IN_TEXT_SECTION 1 ++ + /* Darwin profiling -- call mcount. */ + #undef FUNCTION_PROFILER + #define FUNCTION_PROFILER(FILE, LABELNO) \ +--- a/src/gcc/config/i386/driver-i386.c ++++ b/src/gcc/config/i386/driver-i386.c +@@ -420,6 +420,7 @@ const char *host_detect_local_cpu (int argc, const char **argv) + unsigned int has_avx5124fmaps = 0, has_avx5124vnniw = 0; + unsigned int has_gfni = 0, has_avx512vbmi2 = 0; + unsigned int has_avx512bitalg = 0; ++ unsigned int has_avx512vpopcntdq = 0; + unsigned int has_shstk = 0; + unsigned int has_avx512vnni = 0, has_vaes = 0; + unsigned int has_vpclmulqdq = 0; +@@ -519,6 +520,7 @@ const char *host_detect_local_cpu (int argc, const char **argv) + has_vaes = ecx & bit_VAES; + has_vpclmulqdq = ecx & bit_VPCLMULQDQ; + has_avx512bitalg = ecx & bit_AVX512BITALG; ++ has_avx512vpopcntdq = ecx & bit_AVX512VPOPCNTDQ; + has_movdiri = ecx & bit_MOVDIRI; + has_movdir64b = ecx & bit_MOVDIR64B; + +@@ -750,9 +752,12 @@ const char *host_detect_local_cpu (int argc, const char **argv) + case 0x37: + case 0x4a: + case 0x4d: +- case 0x5a: + case 0x5d: + /* Silvermont. */ ++ case 0x4c: ++ case 0x5a: ++ case 0x75: ++ /* Airmont. */ + cpu = "silvermont"; + break; + case 0x0f: +@@ -805,12 +810,26 @@ const char *host_detect_local_cpu (int argc, const char **argv) + case 0x8e: + case 0x9e: + /* Kaby Lake. */ ++ case 0xa5: ++ case 0xa6: ++ /* Comet Lake. */ + cpu = "skylake"; + break; + case 0x55: + /* Skylake with AVX-512. */ + cpu = "skylake-avx512"; + break; ++ case 0x6a: ++ case 0x6c: ++ /* Ice Lake server. */ ++ cpu = "icelake-server"; ++ break; ++ case 0x7e: ++ case 0x7d: ++ case 0x9d: ++ /* Ice Lake client. */ ++ cpu = "icelake-client"; ++ break; + case 0x57: + /* Knights Landing. */ + cpu = "knl"; +@@ -1098,6 +1117,7 @@ const char *host_detect_local_cpu (int argc, const char **argv) + const char *vaes = has_vaes ? " -mvaes" : " -mno-vaes"; + const char *vpclmulqdq = has_vpclmulqdq ? " -mvpclmulqdq" : " -mno-vpclmulqdq"; + const char *avx512bitalg = has_avx512bitalg ? " -mavx512bitalg" : " -mno-avx512bitalg"; ++ const char *avx512vpopcntdq = has_avx512vpopcntdq ? " -mavx512vpopcntdq" : " -mno-avx512vpopcntdq"; + const char *movdiri = has_movdiri ? " -mmovdiri" : " -mno-movdiri"; + const char *movdir64b = has_movdir64b ? " -mmovdir64b" : " -mno-movdir64b"; + options = concat (options, mmx, mmx3dnow, sse, sse2, sse3, ssse3, +@@ -1112,7 +1132,8 @@ const char *host_detect_local_cpu (int argc, const char **argv) + avx512ifma, avx512vbmi, avx5124fmaps, avx5124vnniw, + clwb, mwaitx, clzero, pku, rdpid, gfni, shstk, + avx512vbmi2, avx512vnni, vaes, vpclmulqdq, +- avx512bitalg, movdiri, movdir64b, NULL); ++ avx512bitalg, avx512vpopcntdq, movdiri, movdir64b, ++ NULL); + } + + done: +--- a/src/gcc/config/i386/f16cintrin.h ++++ b/src/gcc/config/i386/f16cintrin.h +@@ -84,10 +84,10 @@ _mm256_cvtps_ph (__m256 __A, const int __I) + })) + + #define _mm_cvtps_ph(A, I) \ +- ((__m128i) __builtin_ia32_vcvtps2ph ((__v4sf)(__m128) A, (int) (I))) ++ ((__m128i) __builtin_ia32_vcvtps2ph ((__v4sf)(__m128) (A), (int) (I))) + + #define _mm256_cvtps_ph(A, I) \ +- ((__m128i) __builtin_ia32_vcvtps2ph256 ((__v8sf)(__m256) A, (int) (I))) ++ ((__m128i) __builtin_ia32_vcvtps2ph256 ((__v8sf)(__m256) (A), (int) (I))) + #endif /* __OPTIMIZE */ + + #ifdef __DISABLE_F16C__ +--- a/src/gcc/config/i386/i386-builtin.def ++++ b/src/gcc/config/i386/i386-builtin.def +@@ -787,7 +787,7 @@ BDESC (OPTION_MASK_ISA_SSE2, CODE_FOR_sse2_pshufhw, "__builtin_ia32_pshufhw", IX + + BDESC (OPTION_MASK_ISA_SSE2, CODE_FOR_sse2_vmsqrtv2df2, "__builtin_ia32_sqrtsd", IX86_BUILTIN_SQRTSD, UNKNOWN, (int) V2DF_FTYPE_V2DF_VEC_MERGE) + +-BDESC (OPTION_MASK_ISA_SSE, CODE_FOR_sse2_movq128, "__builtin_ia32_movq128", IX86_BUILTIN_MOVQ128, UNKNOWN, (int) V2DI_FTYPE_V2DI) ++BDESC (OPTION_MASK_ISA_SSE2, CODE_FOR_sse2_movq128, "__builtin_ia32_movq128", IX86_BUILTIN_MOVQ128, UNKNOWN, (int) V2DI_FTYPE_V2DI) + + /* SSE2 MMX */ + BDESC (OPTION_MASK_ISA_SSE2 | OPTION_MASK_ISA_MMX, CODE_FOR_mmx_addv1di3, "__builtin_ia32_paddq", IX86_BUILTIN_PADDQ, UNKNOWN, (int) V1DI_FTYPE_V1DI_V1DI) +--- a/src/gcc/config/i386/i386.c ++++ b/src/gcc/config/i386/i386.c +@@ -2498,7 +2498,12 @@ rest_of_insert_endbranch (void) + + if (!lookup_attribute ("nocf_check", + TYPE_ATTRIBUTES (TREE_TYPE (cfun->decl))) +- && !cgraph_node::get (cfun->decl)->only_called_directly_p ()) ++ && (!cgraph_node::get (cfun->decl)->only_called_directly_p () ++ || ix86_cmodel == CM_LARGE ++ || ix86_cmodel == CM_LARGE_PIC ++ || flag_force_indirect_call ++ || (TARGET_DLLIMPORT_DECL_ATTRIBUTES ++ && DECL_DLLIMPORT_P (cfun->decl)))) + { + /* Queue ENDBR insertion to x86_function_profiler. */ + if (crtl->profile && flag_fentry) +@@ -3380,9 +3385,9 @@ ix86_option_override_internal (bool main_args_p, + | 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_AVX512VPOPCNTDQ; ++ | PTA_RDPID | PTA_AVX512VPOPCNTDQ; + const wide_int_bitmask PTA_ICELAKE_SERVER = PTA_ICELAKE_CLIENT | PTA_PCONFIG +- | PTA_WBNOINVD; ++ | PTA_WBNOINVD | PTA_CLWB; + const wide_int_bitmask PTA_KNL = PTA_BROADWELL | PTA_AVX512PF | PTA_AVX512ER + | PTA_AVX512F | PTA_AVX512CD; + const wide_int_bitmask PTA_BONNELL = PTA_CORE2 | PTA_MOVBE; +@@ -12523,10 +12528,12 @@ ix86_update_stack_boundary (void) + static rtx + ix86_get_drap_rtx (void) + { +- /* We must use DRAP if there are outgoing arguments on stack and ++ /* We must use DRAP if there are outgoing arguments on stack or ++ the stack pointer register is clobbered by asm statment and + ACCUMULATE_OUTGOING_ARGS is false. */ + if (ix86_force_drap +- || (cfun->machine->outgoing_args_on_stack ++ || ((cfun->machine->outgoing_args_on_stack ++ || crtl->sp_is_clobbered_by_asm) + && !ACCUMULATE_OUTGOING_ARGS)) + crtl->need_drap = true; + +@@ -14596,8 +14603,13 @@ ix86_expand_epilogue (int style) + t = plus_constant (Pmode, t, m->fs.fp_offset - UNITS_PER_WORD); + emit_insn (gen_rtx_SET (sa, t)); + +- t = gen_frame_mem (Pmode, hard_frame_pointer_rtx); +- insn = emit_move_insn (hard_frame_pointer_rtx, t); ++ /* NB: eh_return epilogues must restore the frame pointer ++ in word_mode since the upper 32 bits of RBP register ++ can have any values. */ ++ t = gen_frame_mem (word_mode, hard_frame_pointer_rtx); ++ rtx frame_reg = gen_rtx_REG (word_mode, ++ HARD_FRAME_POINTER_REGNUM); ++ insn = emit_move_insn (frame_reg, t); + + /* Note that we use SA as a temporary CFA, as the return + address is at the proper place relative to it. We +@@ -14612,7 +14624,7 @@ ix86_expand_epilogue (int style) + add_reg_note (insn, REG_CFA_DEF_CFA, + plus_constant (Pmode, sa, UNITS_PER_WORD)); + ix86_add_queued_cfa_restore_notes (insn); +- add_reg_note (insn, REG_CFA_RESTORE, hard_frame_pointer_rtx); ++ add_reg_note (insn, REG_CFA_RESTORE, frame_reg); + RTX_FRAME_RELATED_P (insn) = 1; + + m->fs.cfa_reg = sa; +@@ -19922,8 +19934,6 @@ ix86_output_addr_diff_elt (FILE *file, int value, int rel) + if (TARGET_64BIT || TARGET_VXWORKS_RTP) + fprintf (file, "%s%s%d-%s%d\n", + directive, LPREFIX, value, LPREFIX, rel); +- else if (HAVE_AS_GOTOFF_IN_DATA) +- fprintf (file, ASM_LONG "%s%d@GOTOFF\n", LPREFIX, value); + #if TARGET_MACHO + else if (TARGET_MACHO) + { +@@ -19932,6 +19942,8 @@ ix86_output_addr_diff_elt (FILE *file, int value, int rel) + putc ('\n', file); + } + #endif ++ else if (HAVE_AS_GOTOFF_IN_DATA) ++ fprintf (file, ASM_LONG "%s%d@GOTOFF\n", LPREFIX, value); + else + asm_fprintf (file, ASM_LONG "%U%s+[.-%s%d]\n", + GOT_SYMBOL_NAME, LPREFIX, value); +@@ -44528,43 +44540,51 @@ emit_reduc_half (rtx dest, rtx src, int i) + break; + case E_V64QImode: + case E_V32HImode: ++ if (i < 64) ++ { ++ d = gen_reg_rtx (V4TImode); ++ tem = gen_avx512bw_lshrv4ti3 (d, gen_lowpart (V4TImode, src), ++ GEN_INT (i / 2)); ++ break; ++ } ++ /* FALLTHRU */ + case E_V16SImode: + case E_V16SFmode: + case E_V8DImode: + case E_V8DFmode: + if (i > 128) + tem = gen_avx512f_shuf_i32x4_1 (gen_lowpart (V16SImode, dest), +- gen_lowpart (V16SImode, src), +- gen_lowpart (V16SImode, src), +- GEN_INT (0x4 + (i == 512 ? 4 : 0)), +- GEN_INT (0x5 + (i == 512 ? 4 : 0)), +- GEN_INT (0x6 + (i == 512 ? 4 : 0)), +- GEN_INT (0x7 + (i == 512 ? 4 : 0)), +- GEN_INT (0xC), GEN_INT (0xD), +- GEN_INT (0xE), GEN_INT (0xF), +- GEN_INT (0x10), GEN_INT (0x11), +- GEN_INT (0x12), GEN_INT (0x13), +- GEN_INT (0x14), GEN_INT (0x15), +- GEN_INT (0x16), GEN_INT (0x17)); ++ gen_lowpart (V16SImode, src), ++ gen_lowpart (V16SImode, src), ++ GEN_INT (0x4 + (i == 512 ? 4 : 0)), ++ GEN_INT (0x5 + (i == 512 ? 4 : 0)), ++ GEN_INT (0x6 + (i == 512 ? 4 : 0)), ++ GEN_INT (0x7 + (i == 512 ? 4 : 0)), ++ GEN_INT (0xC), GEN_INT (0xD), ++ GEN_INT (0xE), GEN_INT (0xF), ++ GEN_INT (0x10), GEN_INT (0x11), ++ GEN_INT (0x12), GEN_INT (0x13), ++ GEN_INT (0x14), GEN_INT (0x15), ++ GEN_INT (0x16), GEN_INT (0x17)); + else + tem = gen_avx512f_pshufd_1 (gen_lowpart (V16SImode, dest), +- gen_lowpart (V16SImode, src), +- GEN_INT (i == 128 ? 0x2 : 0x1), +- GEN_INT (0x3), +- GEN_INT (0x3), +- GEN_INT (0x3), +- GEN_INT (i == 128 ? 0x6 : 0x5), +- GEN_INT (0x7), +- GEN_INT (0x7), +- GEN_INT (0x7), +- GEN_INT (i == 128 ? 0xA : 0x9), +- GEN_INT (0xB), +- GEN_INT (0xB), +- GEN_INT (0xB), +- GEN_INT (i == 128 ? 0xE : 0xD), +- GEN_INT (0xF), +- GEN_INT (0xF), +- GEN_INT (0xF)); ++ gen_lowpart (V16SImode, src), ++ GEN_INT (i == 128 ? 0x2 : 0x1), ++ GEN_INT (0x3), ++ GEN_INT (0x3), ++ GEN_INT (0x3), ++ GEN_INT (i == 128 ? 0x6 : 0x5), ++ GEN_INT (0x7), ++ GEN_INT (0x7), ++ GEN_INT (0x7), ++ GEN_INT (i == 128 ? 0xA : 0x9), ++ GEN_INT (0xB), ++ GEN_INT (0xB), ++ GEN_INT (0xB), ++ GEN_INT (i == 128 ? 0xE : 0xD), ++ GEN_INT (0xF), ++ GEN_INT (0xF), ++ GEN_INT (0xF)); + break; + default: + gcc_unreachable (); +@@ -46753,7 +46773,7 @@ expand_vec_perm_pshufb (struct expand_vec_perm_d *d) + /* vpshufb only works intra lanes, it is not + possible to shuffle bytes in between the lanes. */ + for (i = 0; i < nelt; ++i) +- if ((d->perm[i] ^ i) & (nelt / 4)) ++ if ((d->perm[i] ^ i) & (3 * nelt / 4)) + return false; + } + } +@@ -50337,7 +50357,9 @@ ix86_get_mask_mode (poly_uint64 nunits, poly_uint64 vector_size) + if ((TARGET_AVX512F && vector_size == 64) + || (TARGET_AVX512VL && (vector_size == 32 || vector_size == 16))) + { +- if (elem_size == 4 || elem_size == 8 || TARGET_AVX512BW) ++ if (elem_size == 4 ++ || elem_size == 8 ++ || (TARGET_AVX512BW && (elem_size == 1 || elem_size == 2))) + return smallest_int_mode_for_size (nunits); + } + +@@ -50970,11 +50992,12 @@ ix86_atomic_assign_expand_fenv (tree *hold, tree *clear, tree *update) + *clear = build_call_expr (fnclex, 0); + tree sw_var = create_tmp_var_raw (short_unsigned_type_node); + tree fnstsw_call = build_call_expr (fnstsw, 0); +- tree sw_mod = build2 (MODIFY_EXPR, short_unsigned_type_node, +- sw_var, fnstsw_call); ++ tree sw_mod = build4 (TARGET_EXPR, short_unsigned_type_node, sw_var, ++ fnstsw_call, NULL_TREE, NULL_TREE); + tree exceptions_x87 = fold_convert (integer_type_node, sw_var); +- tree update_mod = build2 (MODIFY_EXPR, integer_type_node, +- exceptions_var, exceptions_x87); ++ tree update_mod = build4 (TARGET_EXPR, integer_type_node, ++ exceptions_var, exceptions_x87, ++ NULL_TREE, NULL_TREE); + *update = build2 (COMPOUND_EXPR, integer_type_node, + sw_mod, update_mod); + tree update_fldenv = build_call_expr (fldenv, 1, fenv_addr); +@@ -50987,15 +51010,17 @@ ix86_atomic_assign_expand_fenv (tree *hold, tree *clear, tree *update) + tree stmxcsr = ix86_builtins[IX86_BUILTIN_STMXCSR]; + tree ldmxcsr = ix86_builtins[IX86_BUILTIN_LDMXCSR]; + tree stmxcsr_hold_call = build_call_expr (stmxcsr, 0); +- tree hold_assign_orig = build2 (MODIFY_EXPR, unsigned_type_node, +- mxcsr_orig_var, stmxcsr_hold_call); ++ tree hold_assign_orig = build4 (TARGET_EXPR, unsigned_type_node, ++ mxcsr_orig_var, stmxcsr_hold_call, ++ NULL_TREE, NULL_TREE); + tree hold_mod_val = build2 (BIT_IOR_EXPR, unsigned_type_node, + mxcsr_orig_var, + build_int_cst (unsigned_type_node, 0x1f80)); + hold_mod_val = build2 (BIT_AND_EXPR, unsigned_type_node, hold_mod_val, + build_int_cst (unsigned_type_node, 0xffffffc0)); +- tree hold_assign_mod = build2 (MODIFY_EXPR, unsigned_type_node, +- mxcsr_mod_var, hold_mod_val); ++ tree hold_assign_mod = build4 (TARGET_EXPR, unsigned_type_node, ++ mxcsr_mod_var, hold_mod_val, ++ NULL_TREE, NULL_TREE); + tree ldmxcsr_hold_call = build_call_expr (ldmxcsr, 1, mxcsr_mod_var); + tree hold_all = build2 (COMPOUND_EXPR, unsigned_type_node, + hold_assign_orig, hold_assign_mod); +@@ -51024,8 +51049,8 @@ ix86_atomic_assign_expand_fenv (tree *hold, tree *clear, tree *update) + exceptions_assign); + } + else +- *update = build2 (MODIFY_EXPR, integer_type_node, +- exceptions_var, exceptions_sse); ++ *update = build4 (TARGET_EXPR, integer_type_node, exceptions_var, ++ exceptions_sse, NULL_TREE, NULL_TREE); + tree ldmxcsr_update_call = build_call_expr (ldmxcsr, 1, mxcsr_orig_var); + *update = build2 (COMPOUND_EXPR, void_type_node, *update, + ldmxcsr_update_call); +--- a/src/gcc/config/i386/i386.h ++++ b/src/gcc/config/i386/i386.h +@@ -2254,11 +2254,10 @@ extern int const svr4_dbx_register_map[FIRST_PSEUDO_REGISTER]; + + /* Under some conditions we need jump tables in the text section, + because the assembler cannot handle label differences between +- sections. This is the case for x86_64 on Mach-O for example. */ ++ sections. */ + + #define JUMP_TABLES_IN_TEXT_SECTION \ +- (flag_pic && ((TARGET_MACHO && TARGET_64BIT) \ +- || (!TARGET_64BIT && !HAVE_AS_GOTOFF_IN_DATA))) ++ (flag_pic && !(TARGET_64BIT || HAVE_AS_GOTOFF_IN_DATA)) + + /* Switch to init or fini section via SECTION_OP, emit a call to FUNC, + and switch back. For x86 we do this only to save a few bytes that +--- a/src/gcc/config/i386/i386.md ++++ b/src/gcc/config/i386/i386.md +@@ -196,6 +196,10 @@ + + ;; IRET support + UNSPEC_INTERRUPT_RETURN ++ ++ ;; For MOVDIRI and MOVDIR64B support ++ UNSPEC_MOVDIRI ++ UNSPEC_MOVDIR64B + ]) + + (define_c_enum "unspecv" [ +@@ -289,8 +293,6 @@ + UNSPECV_WRUSS + UNSPECV_SETSSBSY + UNSPECV_CLRSSBSY +- UNSPECV_MOVDIRI +- UNSPECV_MOVDIR64B + ]) + + ;; Constants to represent rounding modes in the ROUND instruction +@@ -18596,8 +18598,11 @@ + emit_insn (tmp); + + /* Compare and jump over adjustment code. */ +- noadj_label = gen_label_rtx (); ++ tmp = gen_rtx_COMPARE (CCZmode, reg_ssp, const0_rtx); + flags = gen_rtx_REG (CCZmode, FLAGS_REG); ++ emit_insn (gen_rtx_SET (flags, tmp)); ++ ++ noadj_label = gen_label_rtx (); + tmp = gen_rtx_EQ (VOIDmode, flags, const0_rtx); + tmp = gen_rtx_IF_THEN_ELSE (VOIDmode, tmp, + gen_rtx_LABEL_REF (VOIDmode, noadj_label), +@@ -20779,17 +20784,17 @@ + [(set_attr "type" "other")]) + + (define_insn "movdiri" +- [(unspec_volatile:SWI48[(match_operand:SWI48 0 "memory_operand" "m") +- (match_operand:SWI48 1 "register_operand" "r")] +- UNSPECV_MOVDIRI)] ++ [(set (match_operand:SWI48 0 "memory_operand" "=m") ++ (unspec:SWI48 [(match_operand:SWI48 1 "register_operand" "r")] ++ UNSPEC_MOVDIRI))] + "TARGET_MOVDIRI" + "movdiri\t{%1, %0|%0, %1}" + [(set_attr "type" "other")]) + + (define_insn "movdir64b_" +- [(unspec_volatile:XI[(match_operand:P 0 "register_operand" "r") +- (match_operand:XI 1 "memory_operand")] +- UNSPECV_MOVDIR64B)] ++ [(set (mem:XI (match_operand:P 0 "register_operand" "r")) ++ (unspec:XI [(match_operand:XI 1 "memory_operand" "m")] ++ UNSPEC_MOVDIR64B))] + "TARGET_MOVDIR64B" + "movdir64b\t{%1, %0|%0, %1}" + [(set_attr "type" "other")]) +--- a/src/gcc/config/i386/pconfigintrin.h ++++ b/src/gcc/config/i386/pconfigintrin.h +@@ -1,3 +1,26 @@ ++/* Copyright (C) 2018-2020 Free Software Foundation, Inc. ++ ++ This file is part of GCC. ++ ++ GCC is free software; you can redistribute it and/or modify ++ it under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3, or (at your option) ++ any later version. ++ ++ GCC is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ GNU General Public License for more details. ++ ++ Under Section 7 of GPL version 3, you are granted additional ++ permissions described in the GCC Runtime Library Exception, version ++ 3.1, as published by the Free Software Foundation. ++ ++ You should have received a copy of the GNU General Public License and ++ a copy of the GCC Runtime Library Exception along with this program; ++ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see ++ . */ ++ + #ifndef _X86INTRIN_H_INCLUDED + #error "Never use directly; include instead." + #endif +--- a/src/gcc/config/i386/shaintrin.h ++++ b/src/gcc/config/i386/shaintrin.h +@@ -64,8 +64,8 @@ _mm_sha1rnds4_epu32 (__m128i __A, __m128i __B, const int __I) + } + #else + #define _mm_sha1rnds4_epu32(A, B, I) \ +- ((__m128i) __builtin_ia32_sha1rnds4 ((__v4si)(__m128i)A, \ +- (__v4si)(__m128i)B, (int)I)) ++ ((__m128i) __builtin_ia32_sha1rnds4 ((__v4si)(__m128i)(A), \ ++ (__v4si)(__m128i)(B), (int)(I))) + #endif + + extern __inline __m128i +--- a/src/gcc/config/i386/sse.md ++++ b/src/gcc/config/i386/sse.md +@@ -7673,7 +7673,8 @@ + }) + + (define_insn "vec_extract_lo_" +- [(set (match_operand: 0 "nonimmediate_operand" "=v,v,m") ++ [(set (match_operand: 0 "" ++ "=v,v,") + (vec_select: + (match_operand:V16FI 1 "" + "v,,v") +@@ -7730,7 +7731,8 @@ + }) + + (define_insn "vec_extract_lo_" +- [(set (match_operand: 0 "" "=v,v,m") ++ [(set (match_operand: 0 "" ++ "=v,v,") + (vec_select: + (match_operand:VI8F_256 1 "" + "v,,v") +@@ -7740,7 +7742,7 @@ + && ( || !(MEM_P (operands[0]) && MEM_P (operands[1])))" + { + if () +- return "vextract64x2\t{$0x0, %1, %0%{%3%}|%0%{%3%}, %1, 0x0}"; ++ return "vextract64x2\t{$0x0, %1, %0|%0, %1, 0x0}"; + else + return "#"; + } +@@ -14491,22 +14493,6 @@ + (ssse3_plusminus:HI + (vec_select:HI (match_dup 1) (parallel [(const_int 6)])) + (vec_select:HI (match_dup 1) (parallel [(const_int 7)]))))) +- (vec_concat:V4HI +- (vec_concat:V2HI +- (ssse3_plusminus:HI +- (vec_select:HI (match_dup 1) (parallel [(const_int 8)])) +- (vec_select:HI (match_dup 1) (parallel [(const_int 9)]))) +- (ssse3_plusminus:HI +- (vec_select:HI (match_dup 1) (parallel [(const_int 10)])) +- (vec_select:HI (match_dup 1) (parallel [(const_int 11)])))) +- (vec_concat:V2HI +- (ssse3_plusminus:HI +- (vec_select:HI (match_dup 1) (parallel [(const_int 12)])) +- (vec_select:HI (match_dup 1) (parallel [(const_int 13)]))) +- (ssse3_plusminus:HI +- (vec_select:HI (match_dup 1) (parallel [(const_int 14)])) +- (vec_select:HI (match_dup 1) (parallel [(const_int 15)])))))) +- (vec_concat:V8HI + (vec_concat:V4HI + (vec_concat:V2HI + (ssse3_plusminus:HI +@@ -14523,7 +14509,23 @@ + (vec_select:HI (match_dup 2) (parallel [(const_int 5)]))) + (ssse3_plusminus:HI + (vec_select:HI (match_dup 2) (parallel [(const_int 6)])) +- (vec_select:HI (match_dup 2) (parallel [(const_int 7)]))))) ++ (vec_select:HI (match_dup 2) (parallel [(const_int 7)])))))) ++ (vec_concat:V8HI ++ (vec_concat:V4HI ++ (vec_concat:V2HI ++ (ssse3_plusminus:HI ++ (vec_select:HI (match_dup 1) (parallel [(const_int 8)])) ++ (vec_select:HI (match_dup 1) (parallel [(const_int 9)]))) ++ (ssse3_plusminus:HI ++ (vec_select:HI (match_dup 1) (parallel [(const_int 10)])) ++ (vec_select:HI (match_dup 1) (parallel [(const_int 11)])))) ++ (vec_concat:V2HI ++ (ssse3_plusminus:HI ++ (vec_select:HI (match_dup 1) (parallel [(const_int 12)])) ++ (vec_select:HI (match_dup 1) (parallel [(const_int 13)]))) ++ (ssse3_plusminus:HI ++ (vec_select:HI (match_dup 1) (parallel [(const_int 14)])) ++ (vec_select:HI (match_dup 1) (parallel [(const_int 15)]))))) + (vec_concat:V4HI + (vec_concat:V2HI + (ssse3_plusminus:HI +@@ -14637,14 +14639,6 @@ + (plusminus:SI + (vec_select:SI (match_dup 1) (parallel [(const_int 2)])) + (vec_select:SI (match_dup 1) (parallel [(const_int 3)])))) +- (vec_concat:V2SI +- (plusminus:SI +- (vec_select:SI (match_dup 1) (parallel [(const_int 4)])) +- (vec_select:SI (match_dup 1) (parallel [(const_int 5)]))) +- (plusminus:SI +- (vec_select:SI (match_dup 1) (parallel [(const_int 6)])) +- (vec_select:SI (match_dup 1) (parallel [(const_int 7)]))))) +- (vec_concat:V4SI + (vec_concat:V2SI + (plusminus:SI + (vec_select:SI +@@ -14653,7 +14647,15 @@ + (vec_select:SI (match_dup 2) (parallel [(const_int 1)]))) + (plusminus:SI + (vec_select:SI (match_dup 2) (parallel [(const_int 2)])) +- (vec_select:SI (match_dup 2) (parallel [(const_int 3)])))) ++ (vec_select:SI (match_dup 2) (parallel [(const_int 3)]))))) ++ (vec_concat:V4SI ++ (vec_concat:V2SI ++ (plusminus:SI ++ (vec_select:SI (match_dup 1) (parallel [(const_int 4)])) ++ (vec_select:SI (match_dup 1) (parallel [(const_int 5)]))) ++ (plusminus:SI ++ (vec_select:SI (match_dup 1) (parallel [(const_int 6)])) ++ (vec_select:SI (match_dup 1) (parallel [(const_int 7)])))) + (vec_concat:V2SI + (plusminus:SI + (vec_select:SI (match_dup 2) (parallel [(const_int 4)])) +--- a/src/gcc/config/i386/wbnoinvdintrin.h ++++ b/src/gcc/config/i386/wbnoinvdintrin.h +@@ -1,3 +1,26 @@ ++/* Copyright (C) 2018-2020 Free Software Foundation, Inc. ++ ++ This file is part of GCC. ++ ++ GCC is free software; you can redistribute it and/or modify ++ it under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3, or (at your option) ++ any later version. ++ ++ GCC is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ GNU General Public License for more details. ++ ++ Under Section 7 of GPL version 3, you are granted additional ++ permissions described in the GCC Runtime Library Exception, version ++ 3.1, as published by the Free Software Foundation. ++ ++ You should have received a copy of the GNU General Public License and ++ a copy of the GCC Runtime Library Exception along with this program; ++ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see ++ . */ ++ + #ifndef _X86INTRIN_H_INCLUDED + #error "Never use directly; include instead." + #endif +--- a/src/gcc/config/i386/xopintrin.h ++++ b/src/gcc/config/i386/xopintrin.h +@@ -814,25 +814,25 @@ _mm256_permute2_ps (__m256 __X, __m256 __Y, __m256i __C, const int __I) + #define _mm_permute2_pd(X, Y, C, I) \ + ((__m128d) __builtin_ia32_vpermil2pd ((__v2df)(__m128d)(X), \ + (__v2df)(__m128d)(Y), \ +- (__v2di)(__m128d)(C), \ ++ (__v2di)(__m128i)(C), \ + (int)(I))) + + #define _mm256_permute2_pd(X, Y, C, I) \ + ((__m256d) __builtin_ia32_vpermil2pd256 ((__v4df)(__m256d)(X), \ + (__v4df)(__m256d)(Y), \ +- (__v4di)(__m256d)(C), \ ++ (__v4di)(__m256i)(C), \ + (int)(I))) + + #define _mm_permute2_ps(X, Y, C, I) \ + ((__m128) __builtin_ia32_vpermil2ps ((__v4sf)(__m128)(X), \ + (__v4sf)(__m128)(Y), \ +- (__v4si)(__m128)(C), \ ++ (__v4si)(__m128i)(C), \ + (int)(I))) + + #define _mm256_permute2_ps(X, Y, C, I) \ + ((__m256) __builtin_ia32_vpermil2ps256 ((__v8sf)(__m256)(X), \ + (__v8sf)(__m256)(Y), \ +- (__v8si)(__m256)(C), \ ++ (__v8si)(__m256i)(C), \ + (int)(I))) + #endif /* __OPTIMIZE__ */ + +--- a/src/gcc/config/pa/pa.h ++++ b/src/gcc/config/pa/pa.h +@@ -171,6 +171,7 @@ do { \ + builtin_assert("machine=hppa"); \ + builtin_define("__hppa"); \ + builtin_define("__hppa__"); \ ++ builtin_define("__BIG_ENDIAN__"); \ + if (TARGET_PA_20) \ + builtin_define("_PA_RISC2_0"); \ + else if (TARGET_PA_11) \ +--- a/src/gcc/config/pdp11/pdp11.c ++++ b/src/gcc/config/pdp11/pdp11.c +@@ -720,14 +720,15 @@ void + pdp11_asm_output_var (FILE *file, const char *name, int size, + int align, bool global) + { ++ switch_to_section (data_section); + if (align > 8) + fprintf (file, "\n\t.even\n"); + if (global) + { + fprintf (file, ".globl "); + assemble_name (file, name); ++ fprintf (file, "\n"); + } +- fprintf (file, "\n"); + assemble_name (file, name); + fprintf (file, ": .=.+ %#ho\n", (unsigned short)size); + } +--- a/src/gcc/config/riscv/riscv-builtins.c ++++ b/src/gcc/config/riscv/riscv-builtins.c +@@ -283,8 +283,8 @@ riscv_atomic_assign_expand_fenv (tree *hold, tree *clear, tree *update) + tree fsflags = GET_BUILTIN_DECL (CODE_FOR_riscv_fsflags); + tree old_flags = create_tmp_var_raw (RISCV_ATYPE_USI); + +- *hold = build2 (MODIFY_EXPR, RISCV_ATYPE_USI, old_flags, +- build_call_expr (frflags, 0)); ++ *hold = build4 (TARGET_EXPR, RISCV_ATYPE_USI, old_flags, ++ build_call_expr (frflags, 0), NULL_TREE, NULL_TREE); + *clear = build_call_expr (fsflags, 1, old_flags); + *update = NULL_TREE; + } +--- a/src/gcc/config/rs6000/altivec.h ++++ b/src/gcc/config/rs6000/altivec.h +@@ -159,6 +159,7 @@ + #define vec_vmsumubm __builtin_vec_vmsumubm + #define vec_vmsumshs __builtin_vec_vmsumshs + #define vec_vmsumuhs __builtin_vec_vmsumuhs ++#define vec_vmsumudm __builtin_vec_vmsumudm + #define vec_vmulesb __builtin_vec_vmulesb + #define vec_vmulesh __builtin_vec_vmulesh + #define vec_vmuleuh __builtin_vec_vmuleuh +@@ -180,7 +181,7 @@ + #define vec_recipdiv __builtin_vec_recipdiv + #define vec_rlmi __builtin_vec_rlmi + #define vec_vrlnm __builtin_vec_rlnm +-#define vec_rlnm(a,b,c) (__builtin_vec_rlnm((a),((b)<<8)|(c))) ++#define vec_rlnm(a,b,c) (__builtin_vec_rlnm((a),((c)<<8)|(b))) + #define vec_rsqrt __builtin_vec_rsqrt + #define vec_rsqrte __builtin_vec_rsqrte + #define vec_signed __builtin_vec_vsigned +@@ -431,7 +432,7 @@ + #define vec_first_match_or_eos_index __builtin_vec_first_match_or_eos_index + #define vec_first_mismatch_index __builtin_vec_first_mismatch_index + #define vec_first_mismatch_or_eos_index __builtin_vec_first_mismatch_or_eos_index +-#define vec_pack_to_short_fp32 __builtin_vec_convert_4f32_8i16 ++#define vec_pack_to_short_fp32 __builtin_vec_convert_4f32_8f16 + #define vec_parity_lsbb __builtin_vec_vparity_lsbb + #define vec_vctz __builtin_vec_vctz + #define vec_cnttz __builtin_vec_vctz +--- a/src/gcc/config/rs6000/altivec.md ++++ b/src/gcc/config/rs6000/altivec.md +@@ -21,6 +21,7 @@ + (define_c_enum "unspec" + [UNSPEC_VCMPBFP + UNSPEC_VMSUMU ++ UNSPEC_VMSUMUDM + UNSPEC_VMSUMM + UNSPEC_VMSUMSHM + UNSPEC_VMSUMUHS +@@ -80,6 +81,7 @@ + UNSPEC_VUPKHPX + UNSPEC_VUPKLPX + UNSPEC_CONVERT_4F32_8I16 ++ UNSPEC_CONVERT_4F32_8F16 + UNSPEC_DST + UNSPEC_DSTT + UNSPEC_DSTST +@@ -810,6 +812,16 @@ + "vmsumum %0,%1,%2,%3" + [(set_attr "type" "veccomplex")]) + ++(define_insn "altivec_vmsumudm" ++ [(set (match_operand:V1TI 0 "register_operand" "=v") ++ (unspec:V1TI [(match_operand:V2DI 1 "register_operand" "v") ++ (match_operand:V2DI 2 "register_operand" "v") ++ (match_operand:V1TI 3 "register_operand" "v")] ++ UNSPEC_VMSUMUDM))] ++ "TARGET_P8_VECTOR" ++ "vmsumudm %0,%1,%2,%3" ++ [(set_attr "type" "veccomplex")]) ++ + (define_insn "altivec_vmsummm" + [(set (match_operand:V4SI 0 "register_operand" "=v") + (unspec:V4SI [(match_operand:VIshort 1 "register_operand" "v") +@@ -3240,6 +3252,37 @@ + DONE; + }) + ++;; Convert two vector F32 to packed vector F16. ++;; This builtin packs 32-bit floating-point values into a packed ++;; 16-bit floating point values (stored in 16bit integer type). ++;; (vector unsigned short r = vec_pack_to_short_fp32 (a, b); ++;; The expected codegen for this builtin is ++;; xvcvsphp t, a ++;; xvcvsphp u, b ++;; if (little endian) ++;; vpkuwum r, t, u ++;; else ++;; vpkuwum r, u, t ++ ++(define_expand "convert_4f32_8f16" ++ [(set (match_operand:V8HI 0 "register_operand" "=v") ++ (unspec:V8HI [(match_operand:V4SF 1 "register_operand" "v") ++ (match_operand:V4SF 2 "register_operand" "v")] ++ UNSPEC_CONVERT_4F32_8F16))] ++ "TARGET_P9_VECTOR" ++{ ++ rtx rtx_tmp_hi = gen_reg_rtx (V4SImode); ++ rtx rtx_tmp_lo = gen_reg_rtx (V4SImode); ++ ++ emit_insn (gen_vsx_xvcvsphp (rtx_tmp_hi, operands[1])); ++ emit_insn (gen_vsx_xvcvsphp (rtx_tmp_lo, operands[2])); ++ if (!BYTES_BIG_ENDIAN) ++ emit_insn (gen_altivec_vpkuwum (operands[0], rtx_tmp_hi, rtx_tmp_lo)); ++ else ++ emit_insn (gen_altivec_vpkuwum (operands[0], rtx_tmp_lo, rtx_tmp_hi)); ++ DONE; ++}) ++ + ;; Generate + ;; xxlxor/vxor SCRATCH0,SCRATCH0,SCRATCH0 + ;; vsubu?m SCRATCH2,SCRATCH1,%1 +--- a/src/gcc/config/rs6000/rs6000-builtin.def ++++ b/src/gcc/config/rs6000/rs6000-builtin.def +@@ -993,6 +993,7 @@ BU_ALTIVEC_3 (VMLADDUHM, "vmladduhm", CONST, fmav8hi4) + BU_ALTIVEC_3 (VMSUMUBM, "vmsumubm", CONST, altivec_vmsumubm) + BU_ALTIVEC_3 (VMSUMMBM, "vmsummbm", CONST, altivec_vmsummbm) + BU_ALTIVEC_3 (VMSUMUHM, "vmsumuhm", CONST, altivec_vmsumuhm) ++BU_ALTIVEC_3 (VMSUMUDM, "vmsumudm", CONST, altivec_vmsumudm) + BU_ALTIVEC_3 (VMSUMSHM, "vmsumshm", CONST, altivec_vmsumshm) + BU_ALTIVEC_3 (VMSUMUHS, "vmsumuhs", SAT, altivec_vmsumuhs) + BU_ALTIVEC_3 (VMSUMSHS, "vmsumshs", SAT, altivec_vmsumshs) +@@ -1303,6 +1304,7 @@ BU_ALTIVEC_OVERLOAD_3 (VMSUMSHM, "vmsumshm") + BU_ALTIVEC_OVERLOAD_3 (VMSUMSHS, "vmsumshs") + BU_ALTIVEC_OVERLOAD_3 (VMSUMUBM, "vmsumubm") + BU_ALTIVEC_OVERLOAD_3 (VMSUMUHM, "vmsumuhm") ++BU_ALTIVEC_OVERLOAD_3 (VMSUMUDM, "vmsumudm") + BU_ALTIVEC_OVERLOAD_3 (VMSUMUHS, "vmsumuhs") + + /* Altivec DST overloaded builtins. */ +@@ -2069,6 +2071,7 @@ BU_P8V_OVERLOAD_3 (VPERMXOR, "vpermxor") + BU_P9V_AV_2 (VSLV, "vslv", CONST, vslv) + BU_P9V_AV_2 (VSRV, "vsrv", CONST, vsrv) + BU_P9V_AV_2 (CONVERT_4F32_8I16, "convert_4f32_8i16", CONST, convert_4f32_8i16) ++BU_P9V_AV_2 (CONVERT_4F32_8F16, "convert_4f32_8f16", CONST, convert_4f32_8f16) + + BU_P9V_AV_2 (VFIRSTMATCHINDEX_V16QI, "first_match_index_v16qi", + CONST, first_match_index_v16qi) +@@ -2099,6 +2102,7 @@ BU_P9V_AV_2 (VFIRSTMISMATCHOREOSINDEX_V4SI, "first_mismatch_or_eos_index_v4si", + BU_P9V_OVERLOAD_2 (VSLV, "vslv") + BU_P9V_OVERLOAD_2 (VSRV, "vsrv") + BU_P9V_OVERLOAD_2 (CONVERT_4F32_8I16, "convert_4f32_8i16") ++BU_P9V_OVERLOAD_2 (CONVERT_4F32_8F16, "convert_4f32_8f16") + + /* 2 argument vector functions added in ISA 3.0 (power9). */ + BU_P9V_AV_2 (VADUB, "vadub", CONST, vaduv16qi3) +--- a/src/gcc/config/rs6000/rs6000-c.c ++++ b/src/gcc/config/rs6000/rs6000-c.c +@@ -2491,6 +2491,8 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = { + + { P9V_BUILTIN_VEC_CONVERT_4F32_8I16, P9V_BUILTIN_CONVERT_4F32_8I16, + RS6000_BTI_unsigned_V8HI, RS6000_BTI_V4SF, RS6000_BTI_V4SF, 0 }, ++ { P9V_BUILTIN_VEC_CONVERT_4F32_8F16, P9V_BUILTIN_CONVERT_4F32_8F16, ++ RS6000_BTI_unsigned_V8HI, RS6000_BTI_V4SF, RS6000_BTI_V4SF, 0 }, + + { P9V_BUILTIN_VEC_VFIRSTMATCHINDEX, P9V_BUILTIN_VFIRSTMATCHINDEX_V16QI, + RS6000_BTI_UINTSI, RS6000_BTI_V16QI, RS6000_BTI_V16QI, 0 }, +@@ -3586,6 +3588,12 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = { + RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V8HI, RS6000_BTI_unsigned_V4SI }, + { ALTIVEC_BUILTIN_VEC_MSUM, ALTIVEC_BUILTIN_VMSUMSHM, + RS6000_BTI_V4SI, RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_V4SI }, ++ ++ { ALTIVEC_BUILTIN_VEC_MSUM, ALTIVEC_BUILTIN_VMSUMUDM, ++ RS6000_BTI_V1TI, RS6000_BTI_V2DI, RS6000_BTI_V2DI, RS6000_BTI_V1TI }, ++ { ALTIVEC_BUILTIN_VEC_MSUM, ALTIVEC_BUILTIN_VMSUMUDM, ++ RS6000_BTI_unsigned_V1TI, RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V1TI }, ++ + { ALTIVEC_BUILTIN_VEC_VMSUMSHM, ALTIVEC_BUILTIN_VMSUMSHM, + RS6000_BTI_V4SI, RS6000_BTI_V8HI, RS6000_BTI_V8HI, RS6000_BTI_V4SI }, + { ALTIVEC_BUILTIN_VEC_VMSUMUHM, ALTIVEC_BUILTIN_VMSUMUHM, +--- a/src/gcc/config/rs6000/rs6000.c ++++ b/src/gcc/config/rs6000/rs6000.c +@@ -4401,6 +4401,14 @@ rs6000_option_override_internal (bool global_init_p) + rs6000_isa_flags &= ~OPTION_MASK_CRYPTO; + } + ++ if (!TARGET_FPRND && TARGET_VSX) ++ { ++ if (rs6000_isa_flags_explicit & OPTION_MASK_FPRND) ++ /* TARGET_VSX = 1 implies Power 7 and newer */ ++ error ("%qs requires %qs", "-mvsx", "-mfprnd"); ++ rs6000_isa_flags &= ~OPTION_MASK_FPRND; ++ } ++ + if (TARGET_DIRECT_MOVE && !TARGET_VSX) + { + if (rs6000_isa_flags_explicit & OPTION_MASK_DIRECT_MOVE) +@@ -8959,7 +8967,7 @@ rs6000_legitimize_address (rtx x, rtx oldx ATTRIBUTE_UNUSED, + low_int = 0; + high_int = INTVAL (XEXP (x, 1)) - low_int; + sum = force_operand (gen_rtx_PLUS (Pmode, XEXP (x, 0), +- GEN_INT (high_int)), 0); ++ gen_int_mode (high_int, Pmode)), 0); + return plus_constant (Pmode, sum, low_int); + } + else if (GET_CODE (x) == PLUS +@@ -17267,7 +17275,7 @@ rs6000_init_builtins (void) + V2SF_type_node = build_vector_type (float_type_node, 2); + V2DI_type_node = rs6000_vector_type (TARGET_POWERPC64 ? "__vector long" + : "__vector long long", +- intDI_type_node, 2); ++ long_long_integer_type_node, 2); + V2DF_type_node = rs6000_vector_type ("__vector double", double_type_node, 2); + V4SI_type_node = rs6000_vector_type ("__vector signed int", + intSI_type_node, 4); +@@ -17286,7 +17294,7 @@ rs6000_init_builtins (void) + unsigned_V2DI_type_node = rs6000_vector_type (TARGET_POWERPC64 + ? "__vector unsigned long" + : "__vector unsigned long long", +- unsigned_intDI_type_node, 2); ++ long_long_unsigned_type_node, 2); + + opaque_V2SF_type_node = build_opaque_vector_type (float_type_node, 2); + opaque_V2SI_type_node = build_opaque_vector_type (intSI_type_node, 2); +@@ -17505,10 +17513,28 @@ rs6000_init_builtins (void) + def_builtin ("__builtin_cpu_is", ftype, RS6000_BUILTIN_CPU_IS); + def_builtin ("__builtin_cpu_supports", ftype, RS6000_BUILTIN_CPU_SUPPORTS); + +- /* AIX libm provides clog as __clog. */ +- if (TARGET_XCOFF && +- (tdecl = builtin_decl_explicit (BUILT_IN_CLOG)) != NULL_TREE) +- set_user_assembler_name (tdecl, "__clog"); ++ if (TARGET_XCOFF) ++ { ++ /* AIX libm provides clog as __clog. */ ++ if ((tdecl = builtin_decl_explicit (BUILT_IN_CLOG)) != NULL_TREE) ++ set_user_assembler_name (tdecl, "__clog"); ++ ++ /* When long double is 64 bit, some long double builtins of libc ++ functions (like __builtin_frexpl) must call the double version ++ (frexp) not the long double version (frexpl) that expects a 128 bit ++ argument. */ ++ if (! TARGET_LONG_DOUBLE_128) ++ { ++ if ((tdecl = builtin_decl_explicit (BUILT_IN_FMODL)) != NULL_TREE) ++ set_user_assembler_name (tdecl, "fmod"); ++ if ((tdecl = builtin_decl_explicit (BUILT_IN_FREXPL)) != NULL_TREE) ++ set_user_assembler_name (tdecl, "frexp"); ++ if ((tdecl = builtin_decl_explicit (BUILT_IN_LDEXPL)) != NULL_TREE) ++ set_user_assembler_name (tdecl, "ldexp"); ++ if ((tdecl = builtin_decl_explicit (BUILT_IN_MODFL)) != NULL_TREE) ++ set_user_assembler_name (tdecl, "modf"); ++ } ++ } + + #ifdef SUBTARGET_INIT_BUILTINS + SUBTARGET_INIT_BUILTINS; +@@ -17614,7 +17640,6 @@ altivec_init_builtins (void) + size_t i; + tree ftype; + tree decl; +- HOST_WIDE_INT builtin_mask = rs6000_builtin_mask; + + tree pvoid_type_node = build_pointer_type (void_type_node); + +@@ -17976,17 +18001,8 @@ altivec_init_builtins (void) + d = bdesc_dst; + for (i = 0; i < ARRAY_SIZE (bdesc_dst); i++, d++) + { +- HOST_WIDE_INT mask = d->mask; +- + /* It is expected that these dst built-in functions may have + d->icode equal to CODE_FOR_nothing. */ +- if ((mask & builtin_mask) != mask) +- { +- if (TARGET_DEBUG_BUILTIN) +- fprintf (stderr, "altivec_init_builtins, skip dst %s\n", +- d->name); +- continue; +- } + def_builtin (d->name, void_ftype_pcvoid_int_int, d->code); + } + +@@ -17996,20 +18012,27 @@ altivec_init_builtins (void) + { + machine_mode mode1; + tree type; +- HOST_WIDE_INT mask = d->mask; +- +- if ((mask & builtin_mask) != mask) +- { +- if (TARGET_DEBUG_BUILTIN) +- fprintf (stderr, "altivec_init_builtins, skip predicate %s\n", +- d->name); +- continue; +- } + + if (rs6000_overloaded_builtin_p (d->code)) + mode1 = VOIDmode; + else + { ++ /* PR95952: Gracefully skip builtins that do not have the icode properly ++ set, but do have the builtin mask set. This has occurred in older gcc ++ builds with older binutils support when binutils refuses code generation ++ for instructions that it does not support. This was exposed by changes ++ allowing all builtins being initialized for better #pragma support. */ ++ if (d->icode == CODE_FOR_nothing && d->mask) ++ { ++ HOST_WIDE_INT builtin_mask = rs6000_builtin_mask; ++ if (TARGET_DEBUG_BUILTIN) ++ { ++ fprintf (stderr, "altivec predicate builtin %s skipped", d->name); ++ fprintf (stderr, " (icode:%d, mask:%lx, builtin_mask:0x%lx\n", ++ d->icode, d->mask, builtin_mask); ++ } ++ continue; ++ } + /* Cannot define builtin if the instruction is disabled. */ + gcc_assert (d->icode != CODE_FOR_nothing); + mode1 = insn_data[d->icode].operand[1].mode; +@@ -18051,15 +18074,6 @@ altivec_init_builtins (void) + { + machine_mode mode0; + tree type; +- HOST_WIDE_INT mask = d->mask; +- +- if ((mask & builtin_mask) != mask) +- { +- if (TARGET_DEBUG_BUILTIN) +- fprintf (stderr, "altivec_init_builtins, skip abs %s\n", +- d->name); +- continue; +- } + + /* Cannot define builtin if the instruction is disabled. */ + gcc_assert (d->icode != CODE_FOR_nothing); +@@ -39696,7 +39710,9 @@ rs6000_atomic_assign_expand_fenv (tree *hold, tree *clear, tree *update) + + tree fenv_var = create_tmp_var_raw (double_type_node); + TREE_ADDRESSABLE (fenv_var) = 1; +- tree fenv_addr = build1 (ADDR_EXPR, double_ptr_type_node, fenv_var); ++ tree fenv_addr = build1 (ADDR_EXPR, double_ptr_type_node, ++ build4 (TARGET_EXPR, double_type_node, fenv_var, ++ void_node, NULL_TREE, NULL_TREE)); + + *hold = build_call_expr (atomic_hold_decl, 1, fenv_addr); + *clear = build_call_expr (atomic_clear_decl, 0); +@@ -39719,12 +39735,13 @@ rs6000_atomic_assign_expand_fenv (tree *hold, tree *clear, tree *update) + + /* Mask to clear everything except for the rounding modes and non-IEEE + arithmetic flag. */ +- const unsigned HOST_WIDE_INT hold_exception_mask = +- HOST_WIDE_INT_C (0xffffffff00000007); ++ const unsigned HOST_WIDE_INT hold_exception_mask ++ = HOST_WIDE_INT_C (0xffffffff00000007); + + tree fenv_var = create_tmp_var_raw (double_type_node); + +- tree hold_mffs = build2 (MODIFY_EXPR, void_type_node, fenv_var, call_mffs); ++ tree hold_mffs = build4 (TARGET_EXPR, double_type_node, fenv_var, call_mffs, ++ NULL_TREE, NULL_TREE); + + tree fenv_llu = build1 (VIEW_CONVERT_EXPR, uint64_type_node, fenv_var); + tree fenv_llu_and = build2 (BIT_AND_EXPR, uint64_type_node, fenv_llu, +@@ -39748,12 +39765,13 @@ rs6000_atomic_assign_expand_fenv (tree *hold, tree *clear, tree *update) + + /* Mask to clear everything except for the rounding modes and non-IEEE + arithmetic flag. */ +- const unsigned HOST_WIDE_INT clear_exception_mask = +- HOST_WIDE_INT_C (0xffffffff00000000); ++ const unsigned HOST_WIDE_INT clear_exception_mask ++ = HOST_WIDE_INT_C (0xffffffff00000000); + + tree fenv_clear = create_tmp_var_raw (double_type_node); + +- tree clear_mffs = build2 (MODIFY_EXPR, void_type_node, fenv_clear, call_mffs); ++ tree clear_mffs = build4 (TARGET_EXPR, double_type_node, fenv_clear, ++ call_mffs, NULL_TREE, NULL_TREE); + + tree fenv_clean_llu = build1 (VIEW_CONVERT_EXPR, uint64_type_node, fenv_clear); + tree fenv_clear_llu_and = build2 (BIT_AND_EXPR, uint64_type_node, +@@ -39778,13 +39796,14 @@ rs6000_atomic_assign_expand_fenv (tree *hold, tree *clear, tree *update) + (*(uint64_t*)fenv_var 0x1ff80fff); + __builtin_mtfsf (0xff, fenv_update); */ + +- const unsigned HOST_WIDE_INT update_exception_mask = +- HOST_WIDE_INT_C (0xffffffff1fffff00); +- const unsigned HOST_WIDE_INT new_exception_mask = +- HOST_WIDE_INT_C (0x1ff80fff); ++ const unsigned HOST_WIDE_INT update_exception_mask ++ = HOST_WIDE_INT_C (0xffffffff1fffff00); ++ const unsigned HOST_WIDE_INT new_exception_mask ++ = HOST_WIDE_INT_C (0x1ff80fff); + + tree old_fenv = create_tmp_var_raw (double_type_node); +- tree update_mffs = build2 (MODIFY_EXPR, void_type_node, old_fenv, call_mffs); ++ tree update_mffs = build4 (TARGET_EXPR, double_type_node, old_fenv, ++ call_mffs, NULL_TREE, NULL_TREE); + + tree old_llu = build1 (VIEW_CONVERT_EXPR, uint64_type_node, old_fenv); + tree old_llu_and = build2 (BIT_AND_EXPR, uint64_type_node, old_llu, +--- a/src/gcc/config/rs6000/vector.md ++++ b/src/gcc/config/rs6000/vector.md +@@ -1227,7 +1227,8 @@ + emit_move_insn (zero_reg, CONST0_RTX (mode)); + if (!BYTES_BIG_ENDIAN) + { +- byteshift_val = 16 - byteshift_val; ++ /* Note, byteshift_val can be 0! */ ++ byteshift_val = -byteshift_val & 15; + op1 = zero_reg; + op2 = operands[1]; + } +--- a/src/gcc/config/rs6000/vsx.md ++++ b/src/gcc/config/rs6000/vsx.md +@@ -390,6 +390,7 @@ + UNSPEC_VSX_SIGN_EXTEND + UNSPEC_VSX_XVCVSPSXWS + UNSPEC_VSX_XVCVSPSXDS ++ UNSPEC_VSX_XVCVSPHP + UNSPEC_VSX_VSLO + UNSPEC_VSX_EXTRACT + UNSPEC_VSX_SXEXPDP +@@ -2256,6 +2257,15 @@ + "xvcvhpsp %x0,%x1" + [(set_attr "type" "vecfloat")]) + ++;; Generate xvcvsphp ++(define_insn "vsx_xvcvsphp" ++ [(set (match_operand:V4SI 0 "register_operand" "=wa") ++ (unspec:V4SI [(match_operand:V4SF 1 "vsx_register_operand" "wa")] ++ UNSPEC_VSX_XVCVSPHP))] ++ "TARGET_P9_VECTOR" ++ "xvcvsphp %x0,%x1" ++[(set_attr "type" "vecfloat")]) ++ + ;; xscvdpsp used for splat'ing a scalar to V4SF, knowing that the internal SF + ;; format of scalars is actually DF. + (define_insn "vsx_xscvdpsp_scalar" +@@ -4809,8 +4819,8 @@ + rtx cmp_result = gen_reg_rtx (mode); + rtx not_result = gen_reg_rtx (mode); + +- emit_insn (gen_vcmpnez (cmp_result, operands[1], +- operands[2])); ++ emit_insn (gen_vcmpne (cmp_result, operands[1], ++ operands[2])); + emit_insn (gen_one_cmpl2 (not_result, cmp_result)); + + sh = GET_MODE_SIZE (GET_MODE_INNER (mode)) / 2; +--- a/src/gcc/config/s390/s390-builtin-types.def ++++ b/src/gcc/config/s390/s390-builtin-types.def +@@ -293,6 +293,7 @@ DEF_FN_TYPE_3 (BT_FN_UV16QI_UV2DI_UV2DI_UV16QI, BT_UV16QI, BT_UV2DI, BT_UV2DI, B + DEF_FN_TYPE_3 (BT_FN_UV16QI_UV8HI_UV8HI_INTPTR, BT_UV16QI, BT_UV8HI, BT_UV8HI, BT_INTPTR) + DEF_FN_TYPE_3 (BT_FN_UV2DI_UV2DI_ULONGLONG_INT, BT_UV2DI, BT_UV2DI, BT_ULONGLONG, BT_INT) + DEF_FN_TYPE_3 (BT_FN_UV2DI_UV2DI_UV2DI_INT, BT_UV2DI, BT_UV2DI, BT_UV2DI, BT_INT) ++DEF_FN_TYPE_3 (BT_FN_UV2DI_UV2DI_UV2DI_UV2DI, BT_UV2DI, BT_UV2DI, BT_UV2DI, BT_UV2DI) + DEF_FN_TYPE_3 (BT_FN_UV2DI_UV4SI_UV4SI_UV2DI, BT_UV2DI, BT_UV4SI, BT_UV4SI, BT_UV2DI) + DEF_FN_TYPE_3 (BT_FN_UV2DI_V2DF_INT_INT, BT_UV2DI, BT_V2DF, BT_INT, BT_INT) + DEF_FN_TYPE_3 (BT_FN_UV4SI_UV2DI_UV2DI_INTPTR, BT_UV4SI, BT_UV2DI, BT_UV2DI, BT_INTPTR) +@@ -316,6 +317,7 @@ DEF_FN_TYPE_3 (BT_FN_V2DF_V2DF_DBL_INT, BT_V2DF, BT_V2DF, BT_DBL, BT_INT) + DEF_FN_TYPE_3 (BT_FN_V2DF_V2DF_UCHAR_UCHAR, BT_V2DF, BT_V2DF, BT_UCHAR, BT_UCHAR) + DEF_FN_TYPE_3 (BT_FN_V2DF_V2DF_UINT_UINT, BT_V2DF, BT_V2DF, BT_UINT, BT_UINT) + DEF_FN_TYPE_3 (BT_FN_V2DF_V2DF_V2DF_INT, BT_V2DF, BT_V2DF, BT_V2DF, BT_INT) ++DEF_FN_TYPE_3 (BT_FN_V2DF_V2DF_V2DF_UV2DI, BT_V2DF, BT_V2DF, BT_V2DF, BT_UV2DI) + DEF_FN_TYPE_3 (BT_FN_V2DF_V2DF_V2DF_V2DF, BT_V2DF, BT_V2DF, BT_V2DF, BT_V2DF) + DEF_FN_TYPE_3 (BT_FN_V2DF_V2DI_INT_INT, BT_V2DF, BT_V2DI, BT_INT, BT_INT) + DEF_FN_TYPE_3 (BT_FN_V2DI_UV2DI_UV2DI_INTPTR, BT_V2DI, BT_UV2DI, BT_UV2DI, BT_INTPTR) +@@ -328,6 +330,7 @@ DEF_FN_TYPE_3 (BT_FN_V4SF_V2DF_INT_INT, BT_V4SF, BT_V2DF, BT_INT, BT_INT) + DEF_FN_TYPE_3 (BT_FN_V4SF_V4SF_FLT_INT, BT_V4SF, BT_V4SF, BT_FLT, BT_INT) + DEF_FN_TYPE_3 (BT_FN_V4SF_V4SF_UCHAR_UCHAR, BT_V4SF, BT_V4SF, BT_UCHAR, BT_UCHAR) + DEF_FN_TYPE_3 (BT_FN_V4SF_V4SF_V4SF_INT, BT_V4SF, BT_V4SF, BT_V4SF, BT_INT) ++DEF_FN_TYPE_3 (BT_FN_V4SF_V4SF_V4SF_UV4SI, BT_V4SF, BT_V4SF, BT_V4SF, BT_UV4SI) + DEF_FN_TYPE_3 (BT_FN_V4SF_V4SF_V4SF_V4SF, BT_V4SF, BT_V4SF, BT_V4SF, BT_V4SF) + DEF_FN_TYPE_3 (BT_FN_V4SI_UV4SI_UV4SI_INTPTR, BT_V4SI, BT_UV4SI, BT_UV4SI, BT_INTPTR) + DEF_FN_TYPE_3 (BT_FN_V4SI_V2DI_V2DI_INTPTR, BT_V4SI, BT_V2DI, BT_V2DI, BT_INTPTR) +--- a/src/gcc/config/s390/s390-builtins.def ++++ b/src/gcc/config/s390/s390-builtins.def +@@ -685,36 +685,41 @@ B_DEF (s390_vsceg, vec_scatter_elementv2di,0, + + /* First two operands are swapped in s390-c.c */ + OB_DEF (s390_vec_sel, s390_vec_sel_b8_a, s390_vec_sel_dbl_b, B_VX, BT_FN_OV4SI_OV4SI_OV4SI_OV4SI) +-OB_DEF_VAR (s390_vec_sel_b8_a, s390_vsel, 0, 0, BT_OV_BV16QI_BV16QI_BV16QI_UV16QI) +-OB_DEF_VAR (s390_vec_sel_b8_b, s390_vsel, 0, 0, BT_OV_BV16QI_BV16QI_BV16QI_BV16QI) +-OB_DEF_VAR (s390_vec_sel_s8_a, s390_vsel, 0, 0, BT_OV_V16QI_V16QI_V16QI_UV16QI) +-OB_DEF_VAR (s390_vec_sel_s8_b, s390_vsel, 0, 0, BT_OV_V16QI_V16QI_V16QI_BV16QI) +-OB_DEF_VAR (s390_vec_sel_u8_a, s390_vsel, 0, 0, BT_OV_UV16QI_UV16QI_UV16QI_UV16QI) +-OB_DEF_VAR (s390_vec_sel_u8_b, s390_vsel, 0, 0, BT_OV_UV16QI_UV16QI_UV16QI_BV16QI) +-OB_DEF_VAR (s390_vec_sel_b16_a, s390_vsel, 0, 0, BT_OV_BV8HI_BV8HI_BV8HI_UV8HI) +-OB_DEF_VAR (s390_vec_sel_b16_b, s390_vsel, 0, 0, BT_OV_BV8HI_BV8HI_BV8HI_BV8HI) +-OB_DEF_VAR (s390_vec_sel_s16_a, s390_vsel, 0, 0, BT_OV_V8HI_V8HI_V8HI_UV8HI) +-OB_DEF_VAR (s390_vec_sel_s16_b, s390_vsel, 0, 0, BT_OV_V8HI_V8HI_V8HI_BV8HI) +-OB_DEF_VAR (s390_vec_sel_u16_a, s390_vsel, 0, 0, BT_OV_UV8HI_UV8HI_UV8HI_UV8HI) +-OB_DEF_VAR (s390_vec_sel_u16_b, s390_vsel, 0, 0, BT_OV_UV8HI_UV8HI_UV8HI_BV8HI) +-OB_DEF_VAR (s390_vec_sel_b32_a, s390_vsel, 0, 0, BT_OV_BV4SI_BV4SI_BV4SI_UV4SI) +-OB_DEF_VAR (s390_vec_sel_b32_b, s390_vsel, 0, 0, BT_OV_BV4SI_BV4SI_BV4SI_BV4SI) +-OB_DEF_VAR (s390_vec_sel_s32_a, s390_vsel, 0, 0, BT_OV_V4SI_V4SI_V4SI_UV4SI) +-OB_DEF_VAR (s390_vec_sel_s32_b, s390_vsel, 0, 0, BT_OV_V4SI_V4SI_V4SI_BV4SI) +-OB_DEF_VAR (s390_vec_sel_u32_a, s390_vsel, 0, 0, BT_OV_UV4SI_UV4SI_UV4SI_UV4SI) +-OB_DEF_VAR (s390_vec_sel_u32_b, s390_vsel, 0, 0, BT_OV_UV4SI_UV4SI_UV4SI_BV4SI) +-OB_DEF_VAR (s390_vec_sel_b64_a, s390_vsel, 0, 0, BT_OV_BV2DI_BV2DI_BV2DI_UV2DI) +-OB_DEF_VAR (s390_vec_sel_b64_b, s390_vsel, 0, 0, BT_OV_BV2DI_BV2DI_BV2DI_BV2DI) +-OB_DEF_VAR (s390_vec_sel_s64_a, s390_vsel, 0, 0, BT_OV_V2DI_V2DI_V2DI_UV2DI) +-OB_DEF_VAR (s390_vec_sel_s64_b, s390_vsel, 0, 0, BT_OV_V2DI_V2DI_V2DI_BV2DI) +-OB_DEF_VAR (s390_vec_sel_u64_a, s390_vsel, 0, 0, BT_OV_UV2DI_UV2DI_UV2DI_UV2DI) +-OB_DEF_VAR (s390_vec_sel_u64_b, s390_vsel, 0, 0, BT_OV_UV2DI_UV2DI_UV2DI_BV2DI) +-OB_DEF_VAR (s390_vec_sel_flt_a, s390_vsel, B_VXE, 0, BT_OV_V4SF_V4SF_V4SF_UV4SI) +-OB_DEF_VAR (s390_vec_sel_flt_b, s390_vsel, B_VXE, 0, BT_OV_V4SF_V4SF_V4SF_BV4SI) +-OB_DEF_VAR (s390_vec_sel_dbl_a, s390_vsel, 0, 0, BT_OV_V2DF_V2DF_V2DF_UV2DI) +-OB_DEF_VAR (s390_vec_sel_dbl_b, s390_vsel, 0, 0, BT_OV_V2DF_V2DF_V2DF_BV2DI) +- +-B_DEF (s390_vsel, vec_selv16qi, 0, B_VX, 0, BT_FN_UV16QI_UV16QI_UV16QI_UV16QI) ++OB_DEF_VAR (s390_vec_sel_b8_a, s390_vselb, 0, 0, BT_OV_BV16QI_BV16QI_BV16QI_UV16QI) ++OB_DEF_VAR (s390_vec_sel_b8_b, s390_vselb, 0, 0, BT_OV_BV16QI_BV16QI_BV16QI_BV16QI) ++OB_DEF_VAR (s390_vec_sel_s8_a, s390_vselb, 0, 0, BT_OV_V16QI_V16QI_V16QI_UV16QI) ++OB_DEF_VAR (s390_vec_sel_s8_b, s390_vselb, 0, 0, BT_OV_V16QI_V16QI_V16QI_BV16QI) ++OB_DEF_VAR (s390_vec_sel_u8_a, s390_vselb, 0, 0, BT_OV_UV16QI_UV16QI_UV16QI_UV16QI) ++OB_DEF_VAR (s390_vec_sel_u8_b, s390_vselb, 0, 0, BT_OV_UV16QI_UV16QI_UV16QI_BV16QI) ++OB_DEF_VAR (s390_vec_sel_b16_a, s390_vselh, 0, 0, BT_OV_BV8HI_BV8HI_BV8HI_UV8HI) ++OB_DEF_VAR (s390_vec_sel_b16_b, s390_vselh, 0, 0, BT_OV_BV8HI_BV8HI_BV8HI_BV8HI) ++OB_DEF_VAR (s390_vec_sel_s16_a, s390_vselh, 0, 0, BT_OV_V8HI_V8HI_V8HI_UV8HI) ++OB_DEF_VAR (s390_vec_sel_s16_b, s390_vselh, 0, 0, BT_OV_V8HI_V8HI_V8HI_BV8HI) ++OB_DEF_VAR (s390_vec_sel_u16_a, s390_vselh, 0, 0, BT_OV_UV8HI_UV8HI_UV8HI_UV8HI) ++OB_DEF_VAR (s390_vec_sel_u16_b, s390_vselh, 0, 0, BT_OV_UV8HI_UV8HI_UV8HI_BV8HI) ++OB_DEF_VAR (s390_vec_sel_b32_a, s390_vself, 0, 0, BT_OV_BV4SI_BV4SI_BV4SI_UV4SI) ++OB_DEF_VAR (s390_vec_sel_b32_b, s390_vself, 0, 0, BT_OV_BV4SI_BV4SI_BV4SI_BV4SI) ++OB_DEF_VAR (s390_vec_sel_s32_a, s390_vself, 0, 0, BT_OV_V4SI_V4SI_V4SI_UV4SI) ++OB_DEF_VAR (s390_vec_sel_s32_b, s390_vself, 0, 0, BT_OV_V4SI_V4SI_V4SI_BV4SI) ++OB_DEF_VAR (s390_vec_sel_u32_a, s390_vself, 0, 0, BT_OV_UV4SI_UV4SI_UV4SI_UV4SI) ++OB_DEF_VAR (s390_vec_sel_u32_b, s390_vself, 0, 0, BT_OV_UV4SI_UV4SI_UV4SI_BV4SI) ++OB_DEF_VAR (s390_vec_sel_b64_a, s390_vselg, 0, 0, BT_OV_BV2DI_BV2DI_BV2DI_UV2DI) ++OB_DEF_VAR (s390_vec_sel_b64_b, s390_vselg, 0, 0, BT_OV_BV2DI_BV2DI_BV2DI_BV2DI) ++OB_DEF_VAR (s390_vec_sel_s64_a, s390_vselg, 0, 0, BT_OV_V2DI_V2DI_V2DI_UV2DI) ++OB_DEF_VAR (s390_vec_sel_s64_b, s390_vselg, 0, 0, BT_OV_V2DI_V2DI_V2DI_BV2DI) ++OB_DEF_VAR (s390_vec_sel_u64_a, s390_vselg, 0, 0, BT_OV_UV2DI_UV2DI_UV2DI_UV2DI) ++OB_DEF_VAR (s390_vec_sel_u64_b, s390_vselg, 0, 0, BT_OV_UV2DI_UV2DI_UV2DI_BV2DI) ++OB_DEF_VAR (s390_vec_sel_flt_a, s390_vself_flt, B_VXE, 0, BT_OV_V4SF_V4SF_V4SF_UV4SI) ++OB_DEF_VAR (s390_vec_sel_flt_b, s390_vself_flt, B_VXE, 0, BT_OV_V4SF_V4SF_V4SF_BV4SI) ++OB_DEF_VAR (s390_vec_sel_dbl_a, s390_vselg_dbl, 0, 0, BT_OV_V2DF_V2DF_V2DF_UV2DI) ++OB_DEF_VAR (s390_vec_sel_dbl_b, s390_vselg_dbl, 0, 0, BT_OV_V2DF_V2DF_V2DF_BV2DI) ++ ++B_DEF (s390_vselb, vselv16qi, 0, B_VX, 0, BT_FN_UV16QI_UV16QI_UV16QI_UV16QI) ++B_DEF (s390_vselh, vselv8hi, 0, B_VX, 0, BT_FN_UV8HI_UV8HI_UV8HI_UV8HI) ++B_DEF (s390_vself, vselv4si, 0, B_VX, 0, BT_FN_UV4SI_UV4SI_UV4SI_UV4SI) ++B_DEF (s390_vselg, vselv2di, 0, B_VX, 0, BT_FN_UV2DI_UV2DI_UV2DI_UV2DI) ++B_DEF (s390_vself_flt, vselv4sf, 0, B_VXE, 0, BT_FN_V4SF_V4SF_V4SF_UV4SI) ++B_DEF (s390_vselg_dbl, vselv2df, 0, B_VX, 0, BT_FN_V2DF_V2DF_V2DF_UV2DI) + + OB_DEF (s390_vec_extend_s64, s390_vec_extend_s64_s8,s390_vec_extend_s64_s32,B_VX, BT_FN_OV4SI_OV4SI) + OB_DEF_VAR (s390_vec_extend_s64_s8, s390_vsegb, 0, 0, BT_OV_V2DI_V16QI) +--- a/src/gcc/config/s390/s390.c ++++ b/src/gcc/config/s390/s390.c +@@ -7697,6 +7697,8 @@ print_operand_address (FILE *file, rtx addr) + CODE specified the format flag. The following format flags + are recognized: + ++ 'A': On z14 or higher: If operand is a mem print the alignment ++ hint usable with vl/vst prefixed by a comma. + 'C': print opcode suffix for branch condition. + 'D': print opcode suffix for inverse branch condition. + 'E': print opcode suffix for branch on index instruction. +@@ -7734,6 +7736,15 @@ print_operand (FILE *file, rtx x, int code) + + switch (code) + { ++ case 'A': ++ if (TARGET_VECTOR_LOADSTORE_ALIGNMENT_HINTS && MEM_P (x)) ++ { ++ if (MEM_ALIGN (x) >= 128) ++ fprintf (file, ",4"); ++ else if (MEM_ALIGN (x) == 64) ++ fprintf (file, ",3"); ++ } ++ return; + case 'C': + fprintf (file, s390_branch_condition_mnemonic (x, FALSE)); + return; +@@ -16214,12 +16225,13 @@ s390_atomic_assign_expand_fenv (tree *hold, tree *clear, tree *update) + + fenv_var = __builtin_s390_efpc (); + __builtin_s390_sfpc (fenv_var & mask) */ +- tree old_fpc = build2 (MODIFY_EXPR, unsigned_type_node, fenv_var, call_efpc); +- tree new_fpc = +- build2 (BIT_AND_EXPR, unsigned_type_node, fenv_var, +- build_int_cst (unsigned_type_node, +- ~(FPC_DXC_MASK | FPC_FLAGS_MASK | +- FPC_EXCEPTION_MASK))); ++ tree old_fpc = build4 (TARGET_EXPR, unsigned_type_node, fenv_var, call_efpc, ++ NULL_TREE, NULL_TREE); ++ tree new_fpc ++ = build2 (BIT_AND_EXPR, unsigned_type_node, fenv_var, ++ build_int_cst (unsigned_type_node, ++ ~(FPC_DXC_MASK | FPC_FLAGS_MASK ++ | FPC_EXCEPTION_MASK))); + tree set_new_fpc = build_call_expr (sfpc, 1, new_fpc); + *hold = build2 (COMPOUND_EXPR, void_type_node, old_fpc, set_new_fpc); + +@@ -16238,8 +16250,8 @@ s390_atomic_assign_expand_fenv (tree *hold, tree *clear, tree *update) + __atomic_feraiseexcept ((old_fpc & FPC_FLAGS_MASK) >> FPC_FLAGS_SHIFT); */ + + old_fpc = create_tmp_var_raw (unsigned_type_node); +- tree store_old_fpc = build2 (MODIFY_EXPR, void_type_node, +- old_fpc, call_efpc); ++ tree store_old_fpc = build4 (TARGET_EXPR, void_type_node, old_fpc, call_efpc, ++ NULL_TREE, NULL_TREE); + + set_new_fpc = build_call_expr (sfpc, 1, fenv_var); + +--- a/src/gcc/config/s390/s390.h ++++ b/src/gcc/config/s390/s390.h +@@ -154,6 +154,13 @@ enum processor_flags + (TARGET_VX && TARGET_CPU_VXE) + #define TARGET_VXE_P(opts) \ + (TARGET_VX_P (opts) && TARGET_CPU_VXE_P (opts)) ++#if defined(HAVE_AS_VECTOR_LOADSTORE_ALIGNMENT_HINTS_ON_Z13) ++#define TARGET_VECTOR_LOADSTORE_ALIGNMENT_HINTS TARGET_Z13 ++#elif defined(HAVE_AS_VECTOR_LOADSTORE_ALIGNMENT_HINTS) ++#define TARGET_VECTOR_LOADSTORE_ALIGNMENT_HINTS TARGET_ARCH12 ++#else ++#define TARGET_VECTOR_LOADSTORE_ALIGNMENT_HINTS 0 ++#endif + + #ifdef HAVE_AS_MACHINE_MACHINEMODE + #define S390_USE_TARGET_ATTRIBUTE 1 +--- a/src/gcc/config/s390/s390.md ++++ b/src/gcc/config/s390/s390.md +@@ -1516,8 +1516,8 @@ + vone\t%v0 + vlvgp\t%v0,%1,%N1 + # +- vl\t%v0,%1 +- vst\t%v1,%0 ++ vl\t%v0,%1%A1 ++ vst\t%v1,%0%A0 + # + #" + [(set_attr "op_type" "RSY,RSY,VRR,VRI,VRI,VRR,*,VRX,VRX,*,*") +--- a/src/gcc/config/s390/vector.md ++++ b/src/gcc/config/s390/vector.md +@@ -198,8 +198,8 @@ + "" + "@ + vlr\t%v0,%v1 +- vl\t%v0,%1 +- vst\t%v1,%0 ++ vl\t%v0,%1%A1 ++ vst\t%v1,%0%A0 + vzero\t%v0 + vone\t%v0 + vgbm\t%v0,%t1 +@@ -549,8 +549,8 @@ + "TARGET_VX" + "@ + vmrhg\t%v0,%1,%N1 +- vl\t%v0,%1 +- vst\t%v1,%0 ++ vl\t%v0,%1%A1 ++ vst\t%v1,%0%A0 + vzero\t%v0 + vlvgp\t%v0,%1,%N1" + [(set_attr "op_type" "VRR,VRX,VRX,VRI,VRR")]) +@@ -561,8 +561,8 @@ + "TARGET_VX" + "@ + vlr\t%v0,%v1 +- vl\t%v0,%1 +- vst\t%v1,%0 ++ vl\t%v0,%1%A1 ++ vst\t%v1,%0%A0 + vzero\t%v0 + vone\t%v0 + vlvgp\t%v0,%1,%N1" +@@ -818,7 +818,7 @@ + + (define_expand "popcountv8hi2_vx" + [(set (match_dup 2) +- (unspec:V16QI [(subreg:V16QI (match_operand:V8HI 1 "register_operand" "v") 0)] ++ (unspec:V16QI [(match_operand:V8HI 1 "register_operand" "v")] + UNSPEC_POPCNT)) + ; Make a copy of the result + (set (match_dup 3) (match_dup 2)) +@@ -850,6 +850,8 @@ + ] + "TARGET_VX && !TARGET_VXE" + { ++ operands[1] = simplify_gen_subreg (V16QImode, operands[1], ++ V8HImode, 0); + operands[2] = gen_reg_rtx (V16QImode); + operands[3] = gen_reg_rtx (V16QImode); + operands[4] = gen_reg_rtx (V16QImode); +@@ -858,20 +860,21 @@ + + (define_expand "popcountv4si2_vx" + [(set (match_dup 2) +- (unspec:V16QI [(subreg:V16QI (match_operand:V4SI 1 "register_operand" "v") 0)] ++ (unspec:V16QI [(match_operand:V4SI 1 "register_operand" "v")] + UNSPEC_POPCNT)) + (set (match_operand:V4SI 0 "register_operand" "=v") + (unspec:V4SI [(match_dup 2) (match_dup 3)] + UNSPEC_VEC_VSUM))] + "TARGET_VX && !TARGET_VXE" + { ++ operands[1] = simplify_gen_subreg (V16QImode, operands[1], V4SImode, 0); + operands[2] = gen_reg_rtx (V16QImode); + operands[3] = force_reg (V16QImode, CONST0_RTX (V16QImode)); + }) + + (define_expand "popcountv2di2_vx" + [(set (match_dup 2) +- (unspec:V16QI [(subreg:V16QI (match_operand:V2DI 1 "register_operand" "v") 0)] ++ (unspec:V16QI [(match_operand:V2DI 1 "register_operand" "v")] + UNSPEC_POPCNT)) + (set (match_dup 3) + (unspec:V4SI [(match_dup 2) (match_dup 4)] +@@ -881,6 +884,7 @@ + UNSPEC_VEC_VSUMG))] + "TARGET_VX && !TARGET_VXE" + { ++ operands[1] = simplify_gen_subreg (V16QImode, operands[1], V2DImode, 0); + operands[2] = gen_reg_rtx (V16QImode); + operands[3] = gen_reg_rtx (V4SImode); + operands[4] = force_reg (V16QImode, CONST0_RTX (V16QImode)); +--- a/src/gcc/config/s390/vx-builtins.md ++++ b/src/gcc/config/s390/vx-builtins.md +@@ -487,23 +487,22 @@ + + ; Vector select + +-; Operand 3 selects bits from either OP1 (0) or OP2 (1) ++; for all b in bits op0[b] = op3[b] == 0 ? op2[b] : op1[b] ++; implemented as: op0 = (op1 & op3) | (op2 & ~op3) + +-; Comparison operator should not matter as long as we always use the same ?! ++; Used to expand the vec_sel builtin. Operands op1 and op2 already got ++; swapped in s390-c.c when we get here. + +-; Operands 1 and 2 are swapped in order to match the altivec builtin. +-; If operand 3 is a const_int bitmask this would be vec_merge +-(define_expand "vec_sel" +- [(set (match_operand:V_HW 0 "register_operand" "") +- (if_then_else:V_HW +- (eq (match_operand: 3 "register_operand" "") +- (match_dup 4)) +- (match_operand:V_HW 2 "register_operand" "") +- (match_operand:V_HW 1 "register_operand" "")))] ++(define_insn "vsel" ++ [(set (match_operand:V_HW 0 "register_operand" "=v") ++ (ior:V_HW ++ (and:V_HW (match_operand:V_HW 1 "register_operand" "v") ++ (match_operand:V_HW 3 "register_operand" "v")) ++ (and:V_HW (not:V_HW (match_dup 3)) ++ (match_operand:V_HW 2 "register_operand" "v"))))] + "TARGET_VX" +-{ +- operands[4] = CONST0_RTX (mode); +-}) ++ "vsel\t%v0,%1,%2,%3" ++ [(set_attr "op_type" "VRR")]) + + + ; Vector sign extend to doubleword +--- a/src/gcc/config/tilegx/tilegx.md ++++ b/src/gcc/config/tilegx/tilegx.md +@@ -4110,7 +4110,7 @@ + operands[1] = simplify_gen_subreg (mode, operands[1], + DImode, + BYTES_BIG_ENDIAN +- ? UNITS_PER_WORD - : 0); ++ ? UNITS_PER_WORD - : 0); + }) + + (define_insn "*insn_stnt_add" +--- a/src/gcc/config/xtensa/xtensa.c ++++ b/src/gcc/config/xtensa/xtensa.c +@@ -4232,7 +4232,9 @@ hwloop_optimize (hwloop_info loop) + + seq = get_insns (); + +- if (!single_succ_p (entry_bb) || vec_safe_length (loop->incoming) > 1) ++ entry_after = BB_END (entry_bb); ++ if (!single_succ_p (entry_bb) || vec_safe_length (loop->incoming) > 1 ++ || !entry_after) + { + basic_block new_bb; + edge e; +@@ -4253,7 +4255,6 @@ hwloop_optimize (hwloop_info loop) + } + else + { +- entry_after = BB_END (entry_bb); + while (DEBUG_INSN_P (entry_after) + || (NOTE_P (entry_after) + && NOTE_KIND (entry_after) != NOTE_INSN_BASIC_BLOCK)) +--- a/src/gcc/config/xtensa/xtensa.md ++++ b/src/gcc/config/xtensa/xtensa.md +@@ -538,7 +538,7 @@ + "" + "@ + extui\t%0, %1, 0, 16 +- l16ui\t%0, %1" ++ %v1l16ui\t%0, %1" + [(set_attr "type" "arith,load") + (set_attr "mode" "SI") + (set_attr "length" "3,3")]) +@@ -549,7 +549,7 @@ + "" + "@ + extui\t%0, %1, 0, 8 +- l8ui\t%0, %1" ++ %v1l8ui\t%0, %1" + [(set_attr "type" "arith,load") + (set_attr "mode" "SI") + (set_attr "length" "3,3")]) +@@ -575,7 +575,7 @@ + "" + "@ + sext\t%0, %1, 15 +- l16si\t%0, %1" ++ %v1l16si\t%0, %1" + [(set_attr "type" "arith,load") + (set_attr "mode" "SI") + (set_attr "length" "3,3")]) +--- a/src/gcc/configure ++++ b/src/gcc/configure +@@ -27753,6 +27753,73 @@ $as_echo "#define HAVE_AS_ARCHITECTURE_MODIFIERS 1" >>confdefs.h + + fi + ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler for vector load/store alignment hints" >&5 ++$as_echo_n "checking assembler for vector load/store alignment hints... " >&6; } ++if ${gcc_cv_as_s390_vector_loadstore_alignment_hints+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ gcc_cv_as_s390_vector_loadstore_alignment_hints=no ++ if test $in_tree_gas = yes; then ++ if test $gcc_cv_gas_vers -ge `expr \( \( 2 \* 1000 \) + 31 \) \* 1000 + 0` ++ then gcc_cv_as_s390_vector_loadstore_alignment_hints=yes ++fi ++ elif test x$gcc_cv_as != x; then ++ $as_echo ' vl %v24,0(%r15),3 ' > conftest.s ++ if { ac_try='$gcc_cv_as $gcc_cv_as_flags -o conftest.o conftest.s >&5' ++ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 ++ (eval $ac_try) 2>&5 ++ ac_status=$? ++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ test $ac_status = 0; }; } ++ then ++ gcc_cv_as_s390_vector_loadstore_alignment_hints=yes ++ else ++ echo "configure: failed program was" >&5 ++ cat conftest.s >&5 ++ fi ++ rm -f conftest.o conftest.s ++ fi ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_as_s390_vector_loadstore_alignment_hints" >&5 ++$as_echo "$gcc_cv_as_s390_vector_loadstore_alignment_hints" >&6; } ++if test $gcc_cv_as_s390_vector_loadstore_alignment_hints = yes; then ++ ++$as_echo "#define HAVE_AS_VECTOR_LOADSTORE_ALIGNMENT_HINTS 1" >>confdefs.h ++ ++fi ++ ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler for vector load/store alignment hints on z13" >&5 ++$as_echo_n "checking assembler for vector load/store alignment hints on z13... " >&6; } ++if ${gcc_cv_as_s390_vector_loadstore_alignment_hints_on_z13+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ gcc_cv_as_s390_vector_loadstore_alignment_hints_on_z13=no ++ if test x$gcc_cv_as != x; then ++ $as_echo ' vl %v24,0(%r15),3 ' > conftest.s ++ if { ac_try='$gcc_cv_as $gcc_cv_as_flags -mzarch -march=z13 -o conftest.o conftest.s >&5' ++ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 ++ (eval $ac_try) 2>&5 ++ ac_status=$? ++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ test $ac_status = 0; }; } ++ then ++ gcc_cv_as_s390_vector_loadstore_alignment_hints_on_z13=yes ++ else ++ echo "configure: failed program was" >&5 ++ cat conftest.s >&5 ++ fi ++ rm -f conftest.o conftest.s ++ fi ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_as_s390_vector_loadstore_alignment_hints_on_z13" >&5 ++$as_echo "$gcc_cv_as_s390_vector_loadstore_alignment_hints_on_z13" >&6; } ++if test $gcc_cv_as_s390_vector_loadstore_alignment_hints_on_z13 = yes; then ++ ++$as_echo "#define HAVE_AS_VECTOR_LOADSTORE_ALIGNMENT_HINTS_ON_Z13 1" >>confdefs.h ++ ++fi ++ ++ + ;; + esac + +--- a/src/gcc/configure.ac ++++ b/src/gcc/configure.ac +@@ -4878,6 +4878,17 @@ pointers into PC-relative form.]) + [ .machine z13+vx ],, + [AC_DEFINE(HAVE_AS_ARCHITECTURE_MODIFIERS, 1, + [Define if your assembler supports architecture modifiers.])]) ++ gcc_GAS_CHECK_FEATURE([vector load/store alignment hints], ++ gcc_cv_as_s390_vector_loadstore_alignment_hints, [2,31,0],, ++ [ vl %v24,0(%r15),3 ],, ++ [AC_DEFINE(HAVE_AS_VECTOR_LOADSTORE_ALIGNMENT_HINTS, 1, ++ [Define if your assembler supports vl/vst/vlm/vstm with an optional alignment hint argument.])]) ++ gcc_GAS_CHECK_FEATURE([vector load/store alignment hints on z13], ++ gcc_cv_as_s390_vector_loadstore_alignment_hints_on_z13,, [-mzarch -march=z13], ++ [ vl %v24,0(%r15),3 ],, ++ [AC_DEFINE(HAVE_AS_VECTOR_LOADSTORE_ALIGNMENT_HINTS_ON_Z13, 1, ++ [Define if your assembler supports vl/vst/vlm/vstm with an optional alignment hint argument on z13.])]) ++ + ;; + esac + +--- a/src/gcc/cp/ChangeLog ++++ b/src/gcc/cp/ChangeLog +@@ -1,3 +1,143 @@ ++2020-11-24 Jason Merrill ++ ++ PR c++/95158 ++ * class.c (lookup_vfn_in_binfo): New. ++ * call.c (build_over_call): Use it. ++ (build_new_method_call_1): Don't set LOOKUP_NONVIRTUAL. ++ * cp-tree.h (resolves_to_fixed_type_p): Add default argument. ++ (lookup_vfn_in_binfo): Declare. ++ ++2020-09-17 Jakub Jelinek ++ ++ Backported from master: ++ 2020-05-28 Jakub Jelinek ++ ++ PR c++/95328 ++ * decl.c (cp_finish_decomp): Call complete_type before checking ++ COMPLETE_TYPE_P. ++ ++2020-09-17 Jakub Jelinek ++ ++ Backported from master: ++ 2020-05-07 Jakub Jelinek ++ ++ PR c++/94951 ++ * typeck.c (cp_strict_aliasing_warning): New function. ++ (cp_build_indirect_ref_1, build_reinterpret_cast_1): Use ++ it instead of strict_aliasing_warning. ++ ++2020-09-17 Jakub Jelinek ++ ++ Backported from master: ++ 2020-04-24 Jakub Jelinek ++ ++ PR c++/94742 ++ * semantics.c (finish_call_expr): When looking if all overloads ++ are noreturn, use STRIP_TEMPLATE to look through TEMPLATE_DECLs. ++ ++2020-09-17 Jakub Jelinek ++ ++ Backported from master: ++ 2020-04-16 Jakub Jelinek ++ ++ PR c++/94571 ++ * parser.c (cp_parser_simple_declaration): Fix up a pasto in ++ diagnostics. ++ ++2020-09-17 Jakub Jelinek ++ ++ Backported from master: ++ 2020-04-08 Jakub Jelinek ++ ++ PR c++/94325 ++ * decl.c (begin_destructor_body): For CLASSTYPE_VBASECLASSES class ++ dtors, if CLASSTYPE_PRIMARY_BINFO is non-NULL, but not BINFO_VIRTUAL_P, ++ look at CLASSTYPE_PRIMARY_BINFO of its BINFO_TYPE if it is not ++ BINFO_VIRTUAL_P, and so on. ++ ++2020-09-17 Jakub Jelinek ++ ++ Backported from master: ++ 2020-04-07 Jakub Jelinek ++ ++ PR c++/93931 ++ * parser.c (cp_parser_omp_var_list_no_open): Call process_outer_var_ref ++ on outer_automatic_var_p decls. ++ * cp-gimplify.c (cxx_omp_disregard_value_expr): Return true also for ++ capture proxy decls. ++ ++2020-09-17 Jakub Jelinek ++ ++ Backported from master: ++ 2020-04-07 Jakub Jelinek ++ ++ PR c++/90995 ++ * parser.c (cp_parser_enum_specifier): Use temp_override for ++ parser->colon_corrects_to_scope_p, replace goto out with return. ++ If scoped enum or enum with underlying type is not followed by ++ { or ;, call cp_parser_commit_to_tentative_parse before calling ++ cp_parser_error and make sure to return error_mark_node instead of ++ NULL_TREE. Formatting fixes. ++ ++2020-05-25 Jason Merrill ++ ++ PR c++/90749 ++ * init.c (get_nsdmi): Don't push_to_top_level for a local class. ++ ++2020-05-25 Jason Merrill ++ ++ PR c++/91529 ++ * decl.c (cp_finish_decl): Also clear TREE_READONLY if ++ -fmerge-all-constants. ++ ++2020-05-25 Jason Merrill ++ ++ PR c++/93822 ++ * pt.c (tsubst_decl): Make sure DECL_VALUE_EXPR continues to have ++ the same type as the variable. ++ ++2020-05-04 Marek Polacek ++ ++ Backported from mainline ++ 2019-06-12 Marek Polacek ++ ++ PR c++/90736 - bogus error with alignof. ++ * constexpr.c (adjust_temp_type): Use cv_unqualified type. ++ ++2020-04-04 Jason Merrill ++ ++ PR c++/91377 ++ * mangle.c (write_expression): Skip IMPLICIT_CONV_EXPR. ++ ++2020-04-03 Jason Merrill ++ ++ PR c++/91966 ++ * pt.c (complex_pack_expansion_r): New. ++ (complex_alias_template_p): Use it. ++ ++2020-03-27 Nathan Sidwell ++ ++ PR c++/84733 ++ * name-lookup.c (do_pushdecl): Look through cleanp levels. ++ ++2020-03-14 Jason Merrill ++ ++ PR c++/92909 ++ * pt.c (find_parameter_packs_r): [DECL_EXPR]: Walk ++ DECL_ORIGINAL_TYPE of a typedef. ++ ++2020-03-14 Jason Merrill ++ ++ PR c++/92068 ++ * pt.c (process_partial_specialization): Error rather than crash on ++ extra pack expansion. ++ ++2020-03-14 Jason Merrill ++ ++ PR c++/93248 ++ * pt.c (build_deduction_guide): Clear cp_unevaluated_operand for ++ substituting DECL_ARGUMENTS. ++ + 2020-03-04 Release Manager + + * GCC 8.4.0 released. +--- a/src/gcc/cp/call.c ++++ b/src/gcc/cp/call.c +@@ -7905,6 +7905,15 @@ build_over_call (struct z_candidate *cand, int flags, tsubst_flags_t complain) + || CLASSTYPE_FINAL (TYPE_METHOD_BASETYPE (TREE_TYPE (fn)))) + flags |= LOOKUP_NONVIRTUAL; + ++ /* If we know the dynamic type of the object, look up the final overrider ++ in the BINFO. */ ++ if (DECL_VINDEX (fn) && (flags & LOOKUP_NONVIRTUAL) == 0 ++ && resolves_to_fixed_type_p (arg)) ++ { ++ fn = lookup_vfn_in_binfo (DECL_VINDEX (fn), cand->conversion_path); ++ flags |= LOOKUP_NONVIRTUAL; ++ } ++ + /* [class.mfct.nonstatic]: If a nonstatic member function of a class + X is called for an object that is not of type X, or of a type + derived from X, the behavior is undefined. +@@ -9387,17 +9396,6 @@ build_new_method_call_1 (tree instance, tree fns, vec **args, + + if (call != error_mark_node) + { +- /* Optimize away vtable lookup if we know that this +- function can't be overridden. We need to check if +- the context and the type where we found fn are the same, +- actually FN might be defined in a different class +- type because of a using-declaration. In this case, we +- do not want to perform a non-virtual call. */ +- if (DECL_VINDEX (fn) && ! (flags & LOOKUP_NONVIRTUAL) +- && same_type_ignoring_top_level_qualifiers_p +- (DECL_CONTEXT (fn), BINFO_TYPE (binfo)) +- && resolves_to_fixed_type_p (instance, 0)) +- flags |= LOOKUP_NONVIRTUAL; + if (explicit_targs) + flags |= LOOKUP_EXPLICIT_TMPL_ARGS; + /* Now we know what function is being called. */ +--- a/src/gcc/cp/class.c ++++ b/src/gcc/cp/class.c +@@ -2395,6 +2395,20 @@ get_vcall_index (tree fn, tree type) + gcc_unreachable (); + } + ++/* Given a DECL_VINDEX of a virtual function found in BINFO, return the final ++ overrider at that index in the vtable. This should only be used when we ++ know that BINFO is correct for the dynamic type of the object. */ ++ ++tree ++lookup_vfn_in_binfo (tree idx, tree binfo) ++{ ++ int ix = tree_to_shwi (idx); ++ if (TARGET_VTABLE_USES_DESCRIPTORS) ++ ix /= MAX (TARGET_VTABLE_USES_DESCRIPTORS, 1); ++ tree virtuals = BINFO_VIRTUALS (binfo); ++ return TREE_VALUE (chain_index (ix, virtuals)); ++} ++ + /* Update an entry in the vtable for BINFO, which is in the hierarchy + dominated by T. FN is the old function; VIRTUALS points to the + corresponding position in the new BINFO_VIRTUALS list. IX is the index +--- a/src/gcc/cp/constexpr.c ++++ b/src/gcc/cp/constexpr.c +@@ -1255,7 +1255,9 @@ adjust_temp_type (tree type, tree temp) + if (TREE_CODE (temp) == EMPTY_CLASS_EXPR) + return build0 (EMPTY_CLASS_EXPR, type); + gcc_assert (scalarish_type_p (type)); +- return cp_fold_convert (type, temp); ++ /* Now we know we're dealing with a scalar, and a prvalue of non-class ++ type is cv-unqualified. */ ++ return cp_fold_convert (cv_unqualified (type), temp); + } + + /* Callback for walk_tree used by unshare_constructor. */ +--- a/src/gcc/cp/cp-gimplify.c ++++ b/src/gcc/cp/cp-gimplify.c +@@ -2101,12 +2101,17 @@ cxx_omp_finish_clause (tree c, gimple_seq *) + bool + cxx_omp_disregard_value_expr (tree decl, bool shared) + { +- return !shared +- && VAR_P (decl) +- && DECL_HAS_VALUE_EXPR_P (decl) +- && DECL_ARTIFICIAL (decl) +- && DECL_LANG_SPECIFIC (decl) +- && DECL_OMP_PRIVATIZED_MEMBER (decl); ++ if (shared) ++ return false; ++ if (VAR_P (decl) ++ && DECL_HAS_VALUE_EXPR_P (decl) ++ && DECL_ARTIFICIAL (decl) ++ && DECL_LANG_SPECIFIC (decl) ++ && DECL_OMP_PRIVATIZED_MEMBER (decl)) ++ return true; ++ if (VAR_P (decl) && DECL_CONTEXT (decl) && is_capture_proxy (decl)) ++ return true; ++ return false; + } + + /* Fold expression X which is used as an rvalue if RVAL is true. */ +--- a/src/gcc/cp/cp-tree.h ++++ b/src/gcc/cp/cp-tree.h +@@ -6144,7 +6144,7 @@ extern tree outermost_open_class (void); + extern tree current_nonlambda_class_type (void); + extern tree finish_struct (tree, tree); + extern void finish_struct_1 (tree); +-extern int resolves_to_fixed_type_p (tree, int *); ++extern int resolves_to_fixed_type_p (tree, int * = NULL); + extern void init_class_processing (void); + extern int is_empty_class (tree); + extern bool is_really_empty_class (tree); +@@ -6158,6 +6158,7 @@ extern void pop_lang_context (void); + extern tree instantiate_type (tree, tree, tsubst_flags_t); + extern void build_self_reference (void); + extern int same_signature_p (const_tree, const_tree); ++extern tree lookup_vfn_in_binfo (tree, tree); + extern void maybe_add_class_template_decl_list (tree, tree, int); + extern void unreverse_member_declarations (tree); + extern void invalidate_class_lookup_cache (void); +--- a/src/gcc/cp/decl.c ++++ b/src/gcc/cp/decl.c +@@ -7250,7 +7250,10 @@ cp_finish_decl (tree decl, tree init, bool init_const_expr_p, + /* This needs to happen after the linkage is set. */ + determine_visibility (decl); + +- if (var_definition_p && TREE_STATIC (decl)) ++ if (var_definition_p ++ /* With -fmerge-all-constants, gimplify_init_constructor ++ might add TREE_STATIC to the variable. */ ++ && (TREE_STATIC (decl) || flag_merge_constants >= 2)) + { + /* If a TREE_READONLY variable needs initialization + at runtime, it is no longer readonly and we need to +@@ -7810,6 +7813,8 @@ cp_finish_decomp (tree decl, tree first, unsigned int count) + error_at (loc, "cannot decompose lambda closure type %qT", type); + goto error_out; + } ++ else if (processing_template_decl && complete_type (type) == error_mark_node) ++ goto error_out; + else if (processing_template_decl && !COMPLETE_TYPE_P (type)) + pedwarn (loc, 0, "structured binding refers to incomplete class type %qT", + type); +@@ -15589,14 +15594,20 @@ begin_destructor_body (void) + /* If the vptr is shared with some virtual nearly empty base, + don't clear it if not in charge, the dtor of the virtual + nearly empty base will do that later. */ +- if (CLASSTYPE_VBASECLASSES (current_class_type) +- && CLASSTYPE_PRIMARY_BINFO (current_class_type) +- && BINFO_VIRTUAL_P +- (CLASSTYPE_PRIMARY_BINFO (current_class_type))) ++ if (CLASSTYPE_VBASECLASSES (current_class_type)) + { +- stmt = convert_to_void (stmt, ICV_STATEMENT, +- tf_warning_or_error); +- stmt = build_if_in_charge (stmt); ++ tree c = current_class_type; ++ while (CLASSTYPE_PRIMARY_BINFO (c)) ++ { ++ if (BINFO_VIRTUAL_P (CLASSTYPE_PRIMARY_BINFO (c))) ++ { ++ stmt = convert_to_void (stmt, ICV_STATEMENT, ++ tf_warning_or_error); ++ stmt = build_if_in_charge (stmt); ++ break; ++ } ++ c = BINFO_TYPE (CLASSTYPE_PRIMARY_BINFO (c)); ++ } + } + finish_decl_cleanup (NULL_TREE, stmt); + } +--- a/src/gcc/cp/init.c ++++ b/src/gcc/cp/init.c +@@ -587,16 +587,18 @@ get_nsdmi (tree member, bool in_ctor, tsubst_flags_t complain) + DECL_INSTANTIATING_NSDMI_P (member) = 1; + + bool pushed = false; +- if (!currently_open_class (DECL_CONTEXT (member))) ++ tree ctx = DECL_CONTEXT (member); ++ if (!currently_open_class (ctx) ++ && !LOCAL_CLASS_P (ctx)) + { + push_to_top_level (); +- push_nested_class (DECL_CONTEXT (member)); ++ push_nested_class (ctx); + pushed = true; + } + + gcc_checking_assert (!processing_template_decl); + +- inject_this_parameter (DECL_CONTEXT (member), TYPE_UNQUALIFIED); ++ inject_this_parameter (ctx, TYPE_UNQUALIFIED); + + start_lambda_scope (member); + +--- a/src/gcc/cp/mangle.c ++++ b/src/gcc/cp/mangle.c +@@ -2902,6 +2902,7 @@ write_expression (tree expr) + /* Skip NOP_EXPR and CONVERT_EXPR. They can occur when (say) a pointer + argument is converted (via qualification conversions) to another type. */ + while (CONVERT_EXPR_CODE_P (code) ++ || code == IMPLICIT_CONV_EXPR + || location_wrapper_p (expr) + /* Parentheses aren't mangled. */ + || code == PAREN_EXPR +--- a/src/gcc/cp/name-lookup.c ++++ b/src/gcc/cp/name-lookup.c +@@ -2971,7 +2971,8 @@ do_pushdecl (tree decl, bool is_friend) + /* The binding level we will be pushing into. During local class + pushing, we want to push to the containing scope. */ + cp_binding_level *level = current_binding_level; +- while (level->kind == sk_class) ++ while (level->kind == sk_class ++ || level->kind == sk_cleanup) + level = level->level_chain; + + /* An anonymous namespace has a NULL DECL_NAME, but we still want to +--- a/src/gcc/cp/parser.c ++++ b/src/gcc/cp/parser.c +@@ -13045,7 +13045,7 @@ cp_parser_simple_declaration (cp_parser* parser, + if ((decl != error_mark_node + && DECL_INITIAL (decl) != error_mark_node) + || cp_parser_uncommitted_to_tentative_parse_p (parser)) +- cp_parser_error (parser, "expected %<,%> or %<;%>"); ++ cp_parser_error (parser, "expected %<;%>"); + /* Skip tokens until we reach the end of the statement. */ + cp_parser_skip_to_end_of_statement (parser); + /* If the next token is now a `;', consume it. */ +@@ -18090,9 +18090,7 @@ cp_parser_enum_specifier (cp_parser* parser) + bool is_unnamed = false; + tree underlying_type = NULL_TREE; + cp_token *type_start_token = NULL; +- bool saved_colon_corrects_to_scope_p = parser->colon_corrects_to_scope_p; +- +- parser->colon_corrects_to_scope_p = false; ++ temp_override cleanup (parser->colon_corrects_to_scope_p, false); + + /* Parse tentatively so that we can back up if we don't find a + enum-specifier. */ +@@ -18132,24 +18130,24 @@ cp_parser_enum_specifier (cp_parser* parser) + + push_deferring_access_checks (dk_no_check); + nested_name_specifier +- = cp_parser_nested_name_specifier_opt (parser, +- /*typename_keyword_p=*/true, +- /*check_dependency_p=*/false, +- /*type_p=*/false, +- /*is_declaration=*/false); ++ = cp_parser_nested_name_specifier_opt (parser, ++ /*typename_keyword_p=*/true, ++ /*check_dependency_p=*/false, ++ /*type_p=*/false, ++ /*is_declaration=*/false); + + if (nested_name_specifier) + { + tree name; + + identifier = cp_parser_identifier (parser); +- name = cp_parser_lookup_name (parser, identifier, +- enum_type, +- /*is_template=*/false, +- /*is_namespace=*/false, +- /*check_dependency=*/true, +- /*ambiguous_decls=*/NULL, +- input_location); ++ name = cp_parser_lookup_name (parser, identifier, ++ enum_type, ++ /*is_template=*/false, ++ /*is_namespace=*/false, ++ /*check_dependency=*/true, ++ /*ambiguous_decls=*/NULL, ++ input_location); + if (name && name != error_mark_node) + { + type = TREE_TYPE (name); +@@ -18228,23 +18226,21 @@ cp_parser_enum_specifier (cp_parser* parser) + { + if (cxx_dialect < cxx11 || (!scoped_enum_p && !underlying_type)) + { ++ if (has_underlying_type) ++ cp_parser_commit_to_tentative_parse (parser); + cp_parser_error (parser, "expected %<{%>"); + if (has_underlying_type) +- { +- type = NULL_TREE; +- goto out; +- } ++ return error_mark_node; + } + /* An opaque-enum-specifier must have a ';' here. */ + if ((scoped_enum_p || underlying_type) + && cp_lexer_next_token_is_not (parser->lexer, CPP_SEMICOLON)) + { ++ if (has_underlying_type) ++ cp_parser_commit_to_tentative_parse (parser); + cp_parser_error (parser, "expected %<;%> or %<{%>"); + if (has_underlying_type) +- { +- type = NULL_TREE; +- goto out; +- } ++ return error_mark_node; + } + } + +@@ -18260,9 +18256,7 @@ cp_parser_enum_specifier (cp_parser* parser) + push_scope (nested_name_specifier); + } + else if (TREE_CODE (nested_name_specifier) == NAMESPACE_DECL) +- { +- push_nested_namespace (nested_name_specifier); +- } ++ push_nested_namespace (nested_name_specifier); + } + + /* Issue an error message if type-definitions are forbidden here. */ +@@ -18422,12 +18416,8 @@ cp_parser_enum_specifier (cp_parser* parser) + pop_scope (nested_name_specifier); + } + else if (TREE_CODE (nested_name_specifier) == NAMESPACE_DECL) +- { +- pop_nested_namespace (nested_name_specifier); +- } ++ pop_nested_namespace (nested_name_specifier); + } +- out: +- parser->colon_corrects_to_scope_p = saved_colon_corrects_to_scope_p; + return type; + } + +@@ -31694,6 +31684,8 @@ cp_parser_omp_var_list_no_open (cp_parser *parser, enum omp_clause_code kind, + cp_parser_name_lookup_error (parser, name, decl, NLE_NULL, + token->location); + } ++ if (outer_automatic_var_p (decl)) ++ decl = process_outer_var_ref (decl, tf_warning_or_error); + if (decl == error_mark_node) + ; + else if (kind != 0) +--- a/src/gcc/cp/pt.c ++++ b/src/gcc/cp/pt.c +@@ -3814,10 +3814,18 @@ find_parameter_packs_r (tree *tp, int *walk_subtrees, void* data) + return NULL_TREE; + + case DECL_EXPR: +- /* Ignore the declaration of a capture proxy for a parameter pack. */ +- if (is_capture_proxy (DECL_EXPR_DECL (t))) +- *walk_subtrees = 0; +- return NULL_TREE; ++ { ++ tree decl = DECL_EXPR_DECL (t); ++ /* Ignore the declaration of a capture proxy for a parameter pack. */ ++ if (is_capture_proxy (decl)) ++ *walk_subtrees = 0; ++ if (is_typedef_decl (decl) && TYPE_ALIAS_P (TREE_TYPE (decl))) ++ /* Since we stop at aliases above, we need to look through them at ++ the point of the DECL_EXPR. */ ++ cp_walk_tree (&DECL_ORIGINAL_TYPE (decl), ++ &find_parameter_packs_r, ppd, ppd->visited); ++ return NULL_TREE; ++ } + + case RECORD_TYPE: + if (TYPE_PTRMEMFUNC_P (t)) +@@ -4919,6 +4927,14 @@ process_partial_specialization (tree decl) + return decl; + } + ++ else if (nargs > DECL_NTPARMS (maintmpl)) ++ { ++ error ("too many arguments for partial specialization %qT", type); ++ inform (DECL_SOURCE_LOCATION (maintmpl), "primary template here"); ++ /* Avoid crash below. */ ++ return decl; ++ } ++ + /* If we aren't in a dependent class, we can actually try deduction. */ + else if (tpd.level == 1 + /* FIXME we should be able to handle a partial specialization of a +@@ -4944,7 +4960,6 @@ process_partial_specialization (tree decl) + + Also, we verify that pack expansions only occur at the + end of the argument list. */ +- gcc_assert (nargs == DECL_NTPARMS (maintmpl)); + tpd2.parms = 0; + for (i = 0; i < nargs; ++i) + { +@@ -6171,6 +6186,33 @@ uses_all_template_parms_r (tree t, void *data_) + return 0; + } + ++/* for_each_template_parm any_fn callback for complex_alias_template_p. */ ++ ++static int ++complex_pack_expansion_r (tree t, void *data_) ++{ ++ /* An alias template with a pack expansion that expands a pack from the ++ enclosing class needs to be considered complex, to avoid confusion with ++ the same pack being used as an argument to the alias's own template ++ parameter (91966). */ ++ if (!PACK_EXPANSION_P (t)) ++ return 0; ++ struct uses_all_template_parms_data &data ++ = *(struct uses_all_template_parms_data*)data_; ++ for (tree pack = PACK_EXPANSION_PARAMETER_PACKS (t); pack; ++ pack = TREE_CHAIN (pack)) ++ { ++ tree parm_pack = TREE_VALUE (pack); ++ if (!TEMPLATE_PARM_P (parm_pack)) ++ continue; ++ int idx, level; ++ template_parm_level_and_index (parm_pack, &level, &idx); ++ if (level < data.level) ++ return 1; ++ } ++ return 0; ++} ++ + static bool + complex_alias_template_p (const_tree tmpl) + { +@@ -6183,7 +6225,9 @@ complex_alias_template_p (const_tree tmpl) + for (int i = 0; i < len; ++i) + data.seen[i] = false; + +- for_each_template_parm (pat, uses_all_template_parms_r, &data, NULL, true); ++ if (for_each_template_parm (pat, uses_all_template_parms_r, &data, ++ NULL, true, complex_pack_expansion_r)) ++ return true; + for (int i = 0; i < len; ++i) + if (!data.seen[i]) + return true; +@@ -13773,6 +13817,11 @@ tsubst_decl (tree t, tree args, tsubst_flags_t complain) + if (DECL_HAS_VALUE_EXPR_P (t)) + { + tree ve = DECL_VALUE_EXPR (t); ++ /* If the DECL_VALUE_EXPR is converted to the declared type, ++ preserve the identity so that gimplify_type_sizes works. */ ++ bool nop = (TREE_CODE (ve) == NOP_EXPR); ++ if (nop) ++ ve = TREE_OPERAND (ve, 0); + ve = tsubst_expr (ve, args, complain, in_decl, + /*constant_expression_p=*/false); + if (REFERENCE_REF_P (ve)) +@@ -13780,6 +13829,10 @@ tsubst_decl (tree t, tree args, tsubst_flags_t complain) + gcc_assert (TREE_CODE (type) == REFERENCE_TYPE); + ve = TREE_OPERAND (ve, 0); + } ++ if (nop) ++ ve = build_nop (type, ve); ++ else ++ gcc_checking_assert (TREE_TYPE (ve) == type); + SET_DECL_VALUE_EXPR (r, ve); + } + if (CP_DECL_THREAD_LOCAL_P (r) +@@ -26520,10 +26573,13 @@ build_deduction_guide (tree ctor, tree outer_args, tsubst_flags_t complain) + complain, ctor); + if (fparms == error_mark_node) + ok = false; +- fargs = tsubst (fargs, tsubst_args, complain, ctor); + if (ci) + ci = tsubst_constraint_info (ci, tsubst_args, complain, ctor); + ++ /* Parms are to have DECL_CHAIN tsubsted, which would be skipped if ++ cp_unevaluated_operand. */ ++ temp_override ev (cp_unevaluated_operand, 0); ++ fargs = tsubst (fargs, tsubst_args, complain, ctor); + current_template_parms = save_parms; + } + +--- a/src/gcc/cp/semantics.c ++++ b/src/gcc/cp/semantics.c +@@ -2417,7 +2417,7 @@ finish_call_expr (tree fn, vec **args, bool disallow_virtual, + bool abnormal = true; + for (lkp_iterator iter (fn); abnormal && iter; ++iter) + { +- tree fndecl = *iter; ++ tree fndecl = STRIP_TEMPLATE (*iter); + if (TREE_CODE (fndecl) != FUNCTION_DECL + || !TREE_THIS_VOLATILE (fndecl)) + abnormal = false; +--- a/src/gcc/cp/typeck.c ++++ b/src/gcc/cp/typeck.c +@@ -3134,6 +3134,22 @@ build_x_indirect_ref (location_t loc, tree expr, ref_operator errorstring, + return rval; + } + ++/* Like c-family strict_aliasing_warning, but don't warn for dependent ++ types or expressions. */ ++ ++static bool ++cp_strict_aliasing_warning (location_t loc, tree type, tree expr) ++{ ++ if (processing_template_decl) ++ { ++ tree e = expr; ++ STRIP_NOPS (e); ++ if (dependent_type_p (type) || type_dependent_expression_p (e)) ++ return false; ++ } ++ return strict_aliasing_warning (loc, type, expr); ++} ++ + /* The implementation of the above, and of indirection implied by other + constructs. If DO_FOLD is true, fold away INDIRECT_REF of ADDR_EXPR. */ + +@@ -3176,10 +3192,10 @@ cp_build_indirect_ref_1 (tree ptr, ref_operator errorstring, + /* If a warning is issued, mark it to avoid duplicates from + the backend. This only needs to be done at + warn_strict_aliasing > 2. */ +- if (warn_strict_aliasing > 2) +- if (strict_aliasing_warning (EXPR_LOCATION (ptr), +- type, TREE_OPERAND (ptr, 0))) +- TREE_NO_WARNING (ptr) = 1; ++ if (warn_strict_aliasing > 2 ++ && cp_strict_aliasing_warning (EXPR_LOCATION (ptr), ++ type, TREE_OPERAND (ptr, 0))) ++ TREE_NO_WARNING (ptr) = 1; + } + + if (VOID_TYPE_P (t)) +@@ -7384,7 +7400,7 @@ build_reinterpret_cast_1 (tree type, tree expr, bool c_cast_p, + expr = cp_build_addr_expr (expr, complain); + + if (warn_strict_aliasing > 2) +- strict_aliasing_warning (EXPR_LOCATION (expr), type, expr); ++ cp_strict_aliasing_warning (EXPR_LOCATION (expr), type, expr); + + if (expr != error_mark_node) + expr = build_reinterpret_cast_1 +@@ -7497,7 +7513,7 @@ build_reinterpret_cast_1 (tree type, tree expr, bool c_cast_p, + + if (warn_strict_aliasing <= 2) + /* strict_aliasing_warning STRIP_NOPs its expr. */ +- strict_aliasing_warning (EXPR_LOCATION (expr), type, expr); ++ cp_strict_aliasing_warning (EXPR_LOCATION (expr), type, expr); + + return build_nop_reinterpret (type, expr); + } +--- a/src/gcc/dfp.c ++++ b/src/gcc/dfp.c +@@ -342,9 +342,13 @@ decimal_to_binary (REAL_VALUE_TYPE *to, const REAL_VALUE_TYPE *from, + const real_format *fmt) + { + char string[256]; +- const decimal128 *const d128 = (const decimal128 *) from->sig; +- +- decimal128ToString (d128, string); ++ if (from->cl == rvc_normal) ++ { ++ const decimal128 *const d128 = (const decimal128 *) from->sig; ++ decimal128ToString (d128, string); ++ } ++ else ++ real_to_decimal (string, from, sizeof (string), 0, 1); + real_from_string3 (to, string, fmt); + } + +@@ -736,4 +740,6 @@ decimal_real_maxval (REAL_VALUE_TYPE *r, int sign, machine_mode mode) + decimal_real_from_string (r, max); + if (sign) + decimal128SetSign ((decimal128 *) r->sig, 1); ++ ++ r->sign = sign; + } +--- a/src/gcc/dwarf2cfi.c ++++ b/src/gcc/dwarf2cfi.c +@@ -68,6 +68,9 @@ struct GTY(()) dw_cfi_row + + /* The expressions for any register column that is saved. */ + cfi_vec reg_save; ++ ++ /* True if the return address is in a mangled state. */ ++ bool ra_mangled; + }; + + /* The caller's ORIG_REG is saved in SAVED_IN_REG. */ +@@ -763,6 +766,9 @@ cfi_row_equal_p (dw_cfi_row *a, dw_cfi_row *b) + return false; + } + ++ if (a->ra_mangled != b->ra_mangled) ++ return false; ++ + return true; + } + +@@ -1370,6 +1376,21 @@ dwarf2out_frame_debug_cfa_window_save (void) + add_cfi (cfi); + } + ++/* A subroutine of dwarf2out_frame_debug, process a REG_CFA_TOGGLE_RA_MANGLE. ++ Note: DW_CFA_GNU_window_save dwarf opcode is reused for toggling RA mangle ++ state, this is a target specific operation on AArch64 and can only be used ++ on other targets if they don't use the window save operation otherwise. */ ++ ++static void ++dwarf2out_frame_debug_cfa_toggle_ra_mangle (void) ++{ ++ dw_cfi_ref cfi = new_cfi (); ++ ++ cfi->dw_cfi_opc = DW_CFA_GNU_window_save; ++ add_cfi (cfi); ++ cur_row->ra_mangled = !cur_row->ra_mangled; ++} ++ + /* Record call frame debugging information for an expression EXPR, + which either sets SP or FP (adjusting how we calculate the frame + address) or saves a register to the stack or another register. +@@ -2127,8 +2148,11 @@ dwarf2out_frame_debug (rtx_insn *insn) + break; + + case REG_CFA_TOGGLE_RA_MANGLE: ++ dwarf2out_frame_debug_cfa_toggle_ra_mangle (); ++ handled_one = true; ++ break; ++ + case REG_CFA_WINDOW_SAVE: +- /* We overload both of these operations onto the same DWARF opcode. */ + dwarf2out_frame_debug_cfa_window_save (); + handled_one = true; + break; +@@ -2193,6 +2217,15 @@ change_cfi_row (dw_cfi_row *old_row, dw_cfi_row *new_row) + else if (!cfi_equal_p (r_old, r_new)) + add_cfi (r_new); + } ++ ++ if (old_row->ra_mangled != new_row->ra_mangled) ++ { ++ dw_cfi_ref cfi = new_cfi (); ++ ++ /* DW_CFA_GNU_window_save is reused for toggling RA mangle state. */ ++ cfi->dw_cfi_opc = DW_CFA_GNU_window_save; ++ add_cfi (cfi); ++ } + } + + /* Examine CFI and return true if a cfi label and set_loc is needed +--- a/src/gcc/dwarf2out.c ++++ b/src/gcc/dwarf2out.c +@@ -22937,11 +22937,22 @@ gen_subprogram_die (tree decl, dw_die_ref context_die) + != (unsigned) s.column)) + add_AT_unsigned (subr_die, DW_AT_decl_column, s.column); + +- /* If the prototype had an 'auto' or 'decltype(auto)' return type, +- emit the real type on the definition die. */ ++ /* If the prototype had an 'auto' or 'decltype(auto)' in ++ the return type, emit the real type on the definition die. */ + if (is_cxx () && debug_info_level > DINFO_LEVEL_TERSE) + { + dw_die_ref die = get_AT_ref (old_die, DW_AT_type); ++ while (die ++ && (die->die_tag == DW_TAG_reference_type ++ || die->die_tag == DW_TAG_rvalue_reference_type ++ || die->die_tag == DW_TAG_pointer_type ++ || die->die_tag == DW_TAG_const_type ++ || die->die_tag == DW_TAG_volatile_type ++ || die->die_tag == DW_TAG_restrict_type ++ || die->die_tag == DW_TAG_array_type ++ || die->die_tag == DW_TAG_ptr_to_member_type ++ || die->die_tag == DW_TAG_subroutine_type)) ++ die = get_AT_ref (die, DW_AT_type); + if (die == auto_die || die == decltype_auto_die) + add_type_attribute (subr_die, TREE_TYPE (TREE_TYPE (decl)), + TYPE_UNQUALIFIED, false, context_die); +@@ -27193,7 +27204,7 @@ static bool maybe_at_text_label_p = true; + /* One above highest N where .LVLN label might be equal to .Ltext0 label. */ + static unsigned int first_loclabel_num_not_at_text_label; + +-/* Look ahead for a real insn, or for a begin stmt marker. */ ++/* Look ahead for a real insn. */ + + static rtx_insn * + dwarf2out_next_real_insn (rtx_insn *loc_note) +@@ -27218,7 +27229,7 @@ dwarf2out_var_location (rtx_insn *loc_note) + { + char loclabel[MAX_ARTIFICIAL_LABEL_BYTES + 2]; + struct var_loc_node *newloc; +- rtx_insn *next_real, *next_note; ++ rtx_insn *next_real; + rtx_insn *call_insn = NULL; + static const char *last_label; + static const char *last_postcall_label; +@@ -27243,7 +27254,6 @@ dwarf2out_var_location (rtx_insn *loc_note) + var_loc_p = false; + + next_real = dwarf2out_next_real_insn (call_insn); +- next_note = NULL; + cached_next_real_insn = NULL; + goto create_label; + } +@@ -27271,7 +27281,6 @@ dwarf2out_var_location (rtx_insn *loc_note) + var_loc_p = false; + + next_real = dwarf2out_next_real_insn (call_insn); +- next_note = NULL; + cached_next_real_insn = NULL; + goto create_label; + } +@@ -27300,22 +27309,28 @@ dwarf2out_var_location (rtx_insn *loc_note) + next_real = NULL; + } + +- next_note = NEXT_INSN (loc_note); +- if (! next_note +- || next_note->deleted () +- || ! NOTE_P (next_note) +- || (NOTE_KIND (next_note) != NOTE_INSN_VAR_LOCATION +- && NOTE_KIND (next_note) != NOTE_INSN_BEGIN_STMT +- && NOTE_KIND (next_note) != NOTE_INSN_INLINE_ENTRY)) +- next_note = NULL; +- + if (! next_real) + next_real = dwarf2out_next_real_insn (loc_note); + +- if (next_note) ++ if (next_real) + { +- expected_next_loc_note = next_note; +- cached_next_real_insn = next_real; ++ rtx_insn *next_note = NEXT_INSN (loc_note); ++ while (next_note != next_real) ++ { ++ if (! next_note->deleted () ++ && NOTE_P (next_note) ++ && NOTE_KIND (next_note) == NOTE_INSN_VAR_LOCATION) ++ break; ++ next_note = NEXT_INSN (next_note); ++ } ++ ++ if (next_note == next_real) ++ cached_next_real_insn = NULL; ++ else ++ { ++ expected_next_loc_note = next_note; ++ cached_next_real_insn = next_real; ++ } + } + else + cached_next_real_insn = NULL; +@@ -31913,13 +31928,13 @@ dwarf2out_early_finish (const char *filename) + emit full debugging info for them. */ + retry_incomplete_types (); + ++ gen_scheduled_generic_parms_dies (); ++ gen_remaining_tmpl_value_param_die_attribute (); ++ + /* The point here is to flush out the limbo list so that it is empty + and we don't need to stream it for LTO. */ + flush_limbo_die_list (); + +- gen_scheduled_generic_parms_dies (); +- gen_remaining_tmpl_value_param_die_attribute (); +- + /* Add DW_AT_linkage_name for all deferred DIEs. */ + for (limbo_die_node *node = deferred_asm_name; node; node = node->next) + { +--- a/src/gcc/emit-rtl.h ++++ b/src/gcc/emit-rtl.h +@@ -265,6 +265,9 @@ struct GTY(()) rtl_data { + pass_stack_ptr_mod has run. */ + bool sp_is_unchanging; + ++ /* True if the stack pointer is clobbered by asm statement. */ ++ bool sp_is_clobbered_by_asm; ++ + /* Nonzero if function being compiled doesn't contain any calls + (ignoring the prologue and epilogue). This is set prior to + register allocation in IRA and is valid for the remaining +--- a/src/gcc/explow.c ++++ b/src/gcc/explow.c +@@ -129,6 +129,9 @@ plus_constant (machine_mode mode, rtx x, poly_int64 c, bool inplace) + cst = gen_lowpart (mode, cst); + gcc_assert (cst); + } ++ else if (GET_MODE (cst) == VOIDmode ++ && get_pool_mode (XEXP (x, 0)) != mode) ++ break; + if (GET_MODE (cst) == VOIDmode || GET_MODE (cst) == mode) + { + tem = plus_constant (mode, cst, c); +--- a/src/gcc/fold-const.c ++++ b/src/gcc/fold-const.c +@@ -10416,11 +10416,11 @@ fold_binary_loc (location_t loc, enum tree_code code, tree type, + + /* Convert -A / -B to A / B when the type is signed and overflow is + undefined. */ +- if ((!INTEGRAL_TYPE_P (type) || TYPE_OVERFLOW_UNDEFINED (type)) ++ if ((!ANY_INTEGRAL_TYPE_P (type) || TYPE_OVERFLOW_UNDEFINED (type)) + && TREE_CODE (op0) == NEGATE_EXPR + && negate_expr_p (op1)) + { +- if (INTEGRAL_TYPE_P (type)) ++ if (ANY_INTEGRAL_TYPE_P (type)) + fold_overflow_warning (("assuming signed overflow does not occur " + "when distributing negation across " + "division"), +@@ -10430,11 +10430,11 @@ fold_binary_loc (location_t loc, enum tree_code code, tree type, + TREE_OPERAND (arg0, 0)), + negate_expr (op1)); + } +- if ((!INTEGRAL_TYPE_P (type) || TYPE_OVERFLOW_UNDEFINED (type)) ++ if ((!ANY_INTEGRAL_TYPE_P (type) || TYPE_OVERFLOW_UNDEFINED (type)) + && TREE_CODE (arg1) == NEGATE_EXPR + && negate_expr_p (op0)) + { +- if (INTEGRAL_TYPE_P (type)) ++ if (ANY_INTEGRAL_TYPE_P (type)) + fold_overflow_warning (("assuming signed overflow does not occur " + "when distributing negation across " + "division"), +--- a/src/gcc/fortran/ChangeLog ++++ b/src/gcc/fortran/ChangeLog +@@ -1,3 +1,236 @@ ++2020-09-28 Mark Eggleston ++ ++ Revert: ++ 2020-09-27 Steven G. Kargl ++ Mark Eggleston ++ ++ PR fortran/95614 ++ * decl.c (gfc_get_common): Use gfc_match_common_name instead ++ of match_common_name. ++ * decl.c (gfc_bind_idents): Use gfc_match_common_name instead ++ of match_common_name. ++ * match.c : Rename match_common_name to gfc_match_common_name. ++ * match.c (gfc_match_common): Use gfc_match_common_name instead ++ of match_common_name. ++ * match.h : Rename match_common_name to gfc_match_common_name. ++ * resolve.c (resolve_common_vars): Check each symbol in a ++ common block has a global symbol. If there is a global symbol ++ issue an error if the symbol type is known as is not a common ++ block name. ++ ++2020-09-27 Mark Eggleston ++ ++ Backported from master: ++ 2020-09-27 Steven G. Kargl ++ Mark Eggleston ++ ++ PR fortran/95614 ++ * decl.c (gfc_get_common): Use gfc_match_common_name instead ++ of match_common_name. ++ * decl.c (gfc_bind_idents): Use gfc_match_common_name instead ++ of match_common_name. ++ * match.c : Rename match_common_name to gfc_match_common_name. ++ * match.c (gfc_match_common): Use gfc_match_common_name instead ++ of match_common_name. ++ * match.h : Rename match_common_name to gfc_match_common_name. ++ * resolve.c (resolve_common_vars): Check each symbol in a ++ common block has a global symbol. If there is a global symbol ++ issue an error if the symbol type is known as is not a common ++ block name. ++ ++2020-09-19 Tobias Burnus ++ ++ Backported from master: ++ 2020-09-17 Tobias Burnus ++ ++ PR fortran/96041 ++ PR fortran/93423 ++ * decl.c (gfc_match_submod_proc): Avoid later double-free ++ in the error case. ++ ++2020-09-19 Harald Anlauf ++ ++ Backported from master: ++ 2020-07-02 Harald Anlauf ++ ++ PR fortran/93423 ++ * resolve.c (resolve_symbol): Avoid NULL pointer dereference. ++ ++2020-07-23 Harald Anlauf ++ ++ Backported from master: ++ 2020-07-21 Harald Anlauf ++ ++ PR fortran/89574 ++ * trans-decl.c (gfc_get_extern_function_decl): Check whether a ++ symbol belongs to a different module. ++ ++2020-07-05 Harald Anlauf ++ ++ Backported from master: ++ 2020-06-30 Harald Anlauf ++ ++ PR fortran/88379 ++ * resolve.c (resolve_assoc_var): Avoid NULL pointer dereference. ++ ++2020-07-02 Harald Anlauf ++ ++ Backported from master: ++ 2020-06-29 Harald Anlauf ++ ++ PR fortran/71706 ++ * trans-stmt.c (gfc_trans_sync): Do proper kind conversion in ++ bounds-checking code. ++ ++2020-07-01 Mark Eggleston ++ ++ Backported from master: ++ 2020-07-01 Steven G. Kargl ++ Mark Eggleston ++ ++ PR fortran/95829 ++ * decl.c (gfc_match_decl_type_spec): Compare with "* ) " instead ++ of "*)". ++ ++2020-06-24 Harald Anlauf ++ ++ PR fortran/95689 ++ * interface.c (check_sym_interfaces): Enlarge temporary buffer, ++ and add check on length on mangled name to prevent overflow. ++ ++2020-06-23 Harald Anlauf ++ ++ Backported from master: ++ 2020-06-20 Harald Anlauf ++ ++ PR fortran/95689 ++ * interface.c (check_sym_interfaces): Enlarge temporary buffer, ++ and add check on length on mangled name to prevent overflow. ++ ++2020-06-14 Thomas Koenig ++ ++ PR fortran/94109 ++ * class.c (finalize_component): Return early if finalization has ++ already happened for expression and component within namespace. ++ * gfortran.h (gfc_was_finalized): New type. ++ (gfc_namespace): Add member was_finalzed. ++ (gfc_expr): Remove finalized. ++ * symbol.c (gfc_free_namespace): Free was_finalized. ++ ++2020-06-01 Thomas Koenig ++ ++ PR fortran/94361 ++ * class.c (finalize_component): Use expr->finalized instead of ++ comp->finalized. ++ * gfortran.h (gfc_component): Remove finalized member. ++ (gfc_expr): Add it here instead. ++ ++2020-05-28 Tobias Burnus ++ Mark Eggleston ++ ++ PR fortran/50392 ++ * trans-decl.c (gfc_get_symbol_decl): Remove unnecessary block ++ delimiters. Add auxiliary variables if a label is assigned to ++ a return variable. (gfc_gat_fake_result): If the symbol has an ++ assign attribute set declaration from the symbol's backend ++ declaration. ++ ++2020-05-20 Mark Eggleston ++ ++ Backport from master ++ 2020-05-20 Mark Eggleston ++ ++ PR fortran/39695 ++ * resolve.c (resolve_fl_procedure): Set name depending on ++ whether the result attribute is set. For PROCEDURE/RESULT ++ conflict use the name in sym->ns->proc_name->name. ++ * symbol.c (gfc_add_type): Add check for function and result ++ attributes use sym->ns->proc_name->name if both are set. ++ Where the symbol cannot have a type use the name in ++ sym->ns->proc_name->name. ++ ++2020-05-11 Mark Eggleston ++ ++ Backported from mainline ++ 2020-05-11 Janus Weil ++ Dominique d'Humieres ++ ++ PR fortran/59107 ++ * gfortran.h: Rename field resolved as resolve_symbol_called ++ and assign two 2 bits instead of 1. ++ * interface.c (gfc_find_typebound_dtio_proc): Use new field name. ++ * resolve.c (gfc_resolve_intrinsic): Replace check of the formal ++ field with resolve_symbol_called is at least 2, if it is not ++ set the field to 2. (resolve_symbol): Use new field name and ++ check whether it is at least 1, if it is not set the field to 1. ++ ++2020-04-27 Thomas Koenig ++ ++ PR fortran/93956 ++ PR fortran/94788 ++ * expr.c (gfc_check_pointer_assign): Revert patch for PR 93956. ++ * interface.c: Likewise. ++ ++2020-04-24 Thomas Koenig ++ ++ Backport from trunk. ++ PR fortran/93956 ++ * expr.c (gfc_check_pointer_assign): Also set subref_array_pointer ++ when a function returns a pointer. ++ * interface.c (gfc_set_subref_array_pointer_arg): New function. ++ (gfc_procedure_use): Call it. ++ ++2020-04-14 Thomas Koenig ++ ++ Backport from trunk. ++ PR fortran/94270 ++ * trans-decl.c (generate_local_decl): Do not warn if the ++ symbol is artifical. ++ ++2020-04-02 Mark Eggleston ++ ++ Backport from master ++ 2020-04-02 Mark Eggleston ++ Steven G. Kargl ++ ++ PR fortran/94030 ++ * gfortran.dg/pr94030_1.f90: New test. ++ * gfortran.dg/pr94030_2.f90: New test. ++ ++2020-03-30 Jakub Jelinek ++ ++ Backported from mainline ++ 2019-12-06 Jakub Jelinek ++ ++ PR fortran/92775 ++ * trans.h (struct lang_type, struct lang_decl): Remove span member. ++ (GFC_DECL_SPAN, GFC_TYPE_ARRAY_SPAN): Remove macros. ++ * trans-array.h (gfc_get_descriptor_offsets_for_info): Add another ++ argument. ++ * trans-array.c (gfc_get_descriptor_offsets_for_info): Add SPAN_OFF ++ argument and initialize *SPAN_OFF to the offset of span field. ++ * trans-types.c (gfc_get_array_descr_info): Adjust ++ gfc_get_descriptor_offsets_for_info caller. Compute elem_size ++ as base->span instead of TYPE_SIZE_UNIT (etype) constant. ++ ++2020-03-25 Mark Eggleston ++ ++ Backport from master ++ 2020-03-25 Mark Eggleston ++ ++ PR fortran/93484 ++ * match.c (gfc_match_type_spec): Replace gfc_match_init_expr with ++ gfc_match_expr. Return m if m is MATCH_NO or MATCH_ERROR. ++ ++2020-02-04 Tobias Burnus ++ ++ Backported from mainline ++ 2020-01-31 Tobias Burnus ++ ++ PR fortran/93462 ++ * frontend-passes.c (gfc_code_walker): For EXEC_OACC_ATOMIC, set ++ in_omp_atomic to true prevent front-end optimization. ++ + 2020-03-04 Release Manager + + * GCC 8.4.0 released. +--- a/src/gcc/fortran/class.c ++++ b/src/gcc/fortran/class.c +@@ -903,12 +903,18 @@ finalize_component (gfc_expr *expr, gfc_symbol *derived, gfc_component *comp, + { + gfc_expr *e; + gfc_ref *ref; ++ gfc_was_finalized *f; + + if (!comp_is_finalizable (comp)) + return; + +- if (comp->finalized) +- return; ++ /* If this expression with this component has been finalized ++ already in this namespace, there is nothing to do. */ ++ for (f = sub_ns->was_finalized; f; f = f->next) ++ { ++ if (f->e == expr && f->c == comp) ++ return; ++ } + + e = gfc_copy_expr (expr); + if (!e->ref) +@@ -998,6 +1004,7 @@ finalize_component (gfc_expr *expr, gfc_symbol *derived, gfc_component *comp, + } + else + (*code) = cond; ++ + } + else if (comp->ts.type == BT_DERIVED + && comp->ts.u.derived->f2k_derived +@@ -1037,7 +1044,13 @@ finalize_component (gfc_expr *expr, gfc_symbol *derived, gfc_component *comp, + sub_ns); + gfc_free_expr (e); + } +- comp->finalized = true; ++ ++ /* Record that this was finalized already in this namespace. */ ++ f = sub_ns->was_finalized; ++ sub_ns->was_finalized = XCNEW (gfc_was_finalized); ++ sub_ns->was_finalized->e = expr; ++ sub_ns->was_finalized->c = comp; ++ sub_ns->was_finalized->next = f; + } + + +--- a/src/gcc/fortran/decl.c ++++ b/src/gcc/fortran/decl.c +@@ -3928,7 +3928,7 @@ gfc_match_decl_type_spec (gfc_typespec *ts, int implicit_flag) + gfc_gobble_whitespace (); + if (gfc_peek_ascii_char () == '*') + { +- if ((m = gfc_match ("*)")) != MATCH_YES) ++ if ((m = gfc_match ("* ) ")) != MATCH_YES) + return m; + if (gfc_comp_struct (gfc_current_state ())) + { +@@ -5236,15 +5236,19 @@ match_attr_spec (void) + if (d == DECL_STATIC && seen[DECL_SAVE]) + continue; + +- if (gfc_current_state () == COMP_DERIVED ++ if (gfc_comp_struct (gfc_current_state ()) + && d != DECL_DIMENSION && d != DECL_CODIMENSION + && d != DECL_POINTER && d != DECL_PRIVATE + && d != DECL_PUBLIC && d != DECL_CONTIGUOUS && d != DECL_NONE) + { ++ bool is_derived = gfc_current_state () == COMP_DERIVED; + if (d == DECL_ALLOCATABLE) + { +- if (!gfc_notify_std (GFC_STD_F2003, "ALLOCATABLE " +- "attribute at %C in a TYPE definition")) ++ if (!gfc_notify_std (GFC_STD_F2003, is_derived ++ ? G_("ALLOCATABLE attribute at %C in a " ++ "TYPE definition") ++ : G_("ALLOCATABLE attribute at %C in a " ++ "STRUCTURE definition"))) + { + m = MATCH_ERROR; + goto cleanup; +@@ -5252,8 +5256,11 @@ match_attr_spec (void) + } + else if (d == DECL_KIND) + { +- if (!gfc_notify_std (GFC_STD_F2003, "KIND " +- "attribute at %C in a TYPE definition")) ++ if (!gfc_notify_std (GFC_STD_F2003, is_derived ++ ? G_("KIND attribute at %C in a " ++ "TYPE definition") ++ : G_("KIND attribute at %C in a " ++ "STRUCTURE definition"))) + { + m = MATCH_ERROR; + goto cleanup; +@@ -5276,8 +5283,11 @@ match_attr_spec (void) + } + else if (d == DECL_LEN) + { +- if (!gfc_notify_std (GFC_STD_F2003, "LEN " +- "attribute at %C in a TYPE definition")) ++ if (!gfc_notify_std (GFC_STD_F2003, is_derived ++ ? G_("LEN attribute at %C in a " ++ "TYPE definition") ++ : G_("LEN attribute at %C in a " ++ "STRUCTURE definition"))) + { + m = MATCH_ERROR; + goto cleanup; +@@ -5300,8 +5310,10 @@ match_attr_spec (void) + } + else + { +- gfc_error ("Attribute at %L is not allowed in a TYPE definition", +- &seen_at[d]); ++ gfc_error (is_derived ? G_("Attribute at %L is not allowed in a " ++ "TYPE definition") ++ : G_("Attribute at %L is not allowed in a " ++ "STRUCTURE definition"), &seen_at[d]); + m = MATCH_ERROR; + goto cleanup; + } +@@ -9448,6 +9460,15 @@ gfc_match_submod_proc (void) + + if (gfc_match_eos () != MATCH_YES) + { ++ /* Unset st->n.sym. Note: in reject_statement (), the symbol changes are ++ undone, such that the st->n.sym->formal points to the original symbol; ++ if now this namespace is finalized, the formal namespace is freed, ++ but it might be still needed in the parent namespace. */ ++ gfc_symtree *st = gfc_find_symtree (gfc_current_ns->sym_root, sym->name); ++ st->n.sym = NULL; ++ gfc_free_symbol (sym->tlink); ++ sym->tlink = NULL; ++ sym->refs--; + gfc_syntax_error (ST_MODULE_PROC); + return MATCH_ERROR; + } +--- a/src/gcc/fortran/frontend-passes.c ++++ b/src/gcc/fortran/frontend-passes.c +@@ -4766,6 +4766,7 @@ gfc_code_walker (gfc_code **c, walk_code_fn_t codefn, walk_expr_fn_t exprfn, + WALK_SUBEXPR (co->ext.dt->extra_comma); + break; + ++ case EXEC_OACC_ATOMIC: + case EXEC_OMP_ATOMIC: + in_omp_atomic = true; + break; +--- a/src/gcc/fortran/gfortran.h ++++ b/src/gcc/fortran/gfortran.h +@@ -1080,7 +1080,6 @@ typedef struct gfc_component + struct gfc_typebound_proc *tb; + /* When allocatable/pointer and in a coarray the associated token. */ + tree caf_token; +- bool finalized; + } + gfc_component; + +@@ -1587,7 +1586,10 @@ typedef struct gfc_symbol + /* Set if the symbol is used in a function result specification . */ + unsigned fn_result_spec:1; + /* Used to avoid multiple resolutions of a single symbol. */ +- unsigned resolved:1; ++ /* = 2 if this has already been resolved as an intrinsic, ++ in gfc_resolve_intrinsic, ++ = 1 if it has been resolved in resolve_symbol. */ ++ unsigned resolve_symbol_called:2; + /* Set if this is a module function or subroutine with the + abreviated declaration in a submodule. */ + unsigned abr_modproc_decl:1; +@@ -1737,6 +1739,16 @@ gfc_oacc_routine_name; + + #define gfc_get_oacc_routine_name() XCNEW (gfc_oacc_routine_name) + ++/* Node in linked list to see what has already been finalized ++ earlier. */ ++ ++typedef struct gfc_was_finalized { ++ gfc_expr *e; ++ gfc_component *c; ++ struct gfc_was_finalized *next; ++} ++gfc_was_finalized; ++ + /* A namespace describes the contents of procedure, module, interface block + or BLOCK construct. */ + /* ??? Anything else use these? */ +@@ -1829,6 +1841,11 @@ typedef struct gfc_namespace + /* Linked list of !$omp declare simd constructs. */ + struct gfc_omp_declare_simd *omp_declare_simd; + ++ /* A hash set for the the gfc expressions that have already ++ been finalized in this namespace. */ ++ ++ gfc_was_finalized *was_finalized; ++ + /* Set to 1 if namespace is a BLOCK DATA program unit. */ + unsigned is_block_data:1; + +@@ -2152,6 +2169,7 @@ typedef struct gfc_expr + /* Set this if no warning should be given somewhere in a lower level. */ + + unsigned int do_not_warn : 1; ++ + /* If an expression comes from a Hollerith constant or compile-time + evaluation of a transfer statement, it may have a prescribed target- + memory representation, and these cannot always be backformed from +--- a/src/gcc/fortran/interface.c ++++ b/src/gcc/fortran/interface.c +@@ -4940,7 +4940,8 @@ gfc_find_typebound_dtio_proc (gfc_symbol *derived, bool write, bool formatted) + gfc_symtree *tb_io_st = NULL; + bool t = false; + +- if (!derived || !derived->resolved || derived->attr.flavor != FL_DERIVED) ++ if (!derived || !derived->resolve_symbol_called ++ || derived->attr.flavor != FL_DERIVED) + return NULL; + + /* Try to find a typebound DTIO binding. */ +--- a/src/gcc/fortran/match.c ++++ b/src/gcc/fortran/match.c +@@ -2183,9 +2183,9 @@ gfc_match_type_spec (gfc_typespec *ts) + + found: + +- m = gfc_match_init_expr (&e); ++ m = gfc_match_expr (&e); + if (m == MATCH_NO || m == MATCH_ERROR) +- return MATCH_NO; ++ return m; + + /* If a comma appears, it is an intrinsic subprogram. */ + gfc_gobble_whitespace (); +--- a/src/gcc/fortran/resolve.c ++++ b/src/gcc/fortran/resolve.c +@@ -1746,9 +1746,11 @@ gfc_resolve_intrinsic (gfc_symbol *sym, locus *loc) + gfc_intrinsic_sym* isym = NULL; + const char* symstd; + +- if (sym->formal) ++ if (sym->resolve_symbol_called >= 2) + return true; + ++ sym->resolve_symbol_called = 2; ++ + /* Already resolved. */ + if (sym->from_intmod && sym->ts.type != BT_UNKNOWN) + return true; +@@ -8729,7 +8731,7 @@ resolve_assoc_var (gfc_symbol* sym, bool resolve_target) + as = NULL; + sym->ts = *ts; + sym->ts.type = BT_CLASS; +- attr = CLASS_DATA (sym)->attr; ++ attr = CLASS_DATA (sym) ? CLASS_DATA (sym)->attr : sym->attr; + attr.class_ok = 0; + attr.associate_var = 1; + attr.dimension = attr.codimension = 0; +@@ -12590,8 +12592,10 @@ resolve_fl_procedure (gfc_symbol *sym, int mp_flag) + { + if (sym->attr.proc_pointer) + { ++ const char* name = (sym->attr.result ? sym->ns->proc_name->name ++ : sym->name); + gfc_error ("Procedure pointer %qs at %L shall not be elemental", +- sym->name, &sym->declared_at); ++ name, &sym->declared_at); + return false; + } + if (sym->attr.dummy) +@@ -12678,7 +12682,7 @@ resolve_fl_procedure (gfc_symbol *sym, int mp_flag) + if (sym->attr.subroutine && sym->attr.result) + { + gfc_error ("PROCEDURE attribute conflicts with RESULT attribute " +- "in %qs at %L", sym->name, &sym->declared_at); ++ "in %qs at %L", sym->ns->proc_name->name, &sym->declared_at); + return false; + } + if (sym->attr.external && sym->attr.function && !sym->attr.module_procedure +@@ -14601,9 +14605,9 @@ resolve_symbol (gfc_symbol *sym) + gfc_array_spec *as; + bool saved_specification_expr; + +- if (sym->resolved) ++ if (sym->resolve_symbol_called >= 1) + return; +- sym->resolved = 1; ++ sym->resolve_symbol_called = 1; + + /* No symbol will ever have union type; only components can be unions. + Union type declaration symbols have type BT_UNKNOWN but flavor FL_UNION +@@ -15344,7 +15348,7 @@ resolve_symbol (gfc_symbol *sym) + if (formal) + { + sym->formal_ns = formal->sym->ns; +- if (sym->ns != formal->sym->ns) ++ if (sym->formal_ns && sym->ns != formal->sym->ns) + sym->formal_ns->refs++; + } + } +@@ -16311,7 +16315,8 @@ resolve_equivalence (gfc_equiv *eq) + && !gfc_notify_std (GFC_STD_GNU, msg, sym->name, &e->where)) + continue; + +- identical_types: ++identical_types: ++ + last_ts =&sym->ts; + last_where = &e->where; + +@@ -16319,8 +16324,7 @@ resolve_equivalence (gfc_equiv *eq) + continue; + + /* Shall not be an automatic array. */ +- if (e->ref->type == REF_ARRAY +- && !gfc_resolve_array_spec (e->ref->u.ar.as, 1)) ++ if (e->ref->type == REF_ARRAY && is_non_constant_shape_array (sym)) + { + gfc_error ("Array %qs at %L with non-constant bounds cannot be " + "an EQUIVALENCE object", sym->name, &e->where); +--- a/src/gcc/fortran/symbol.c ++++ b/src/gcc/fortran/symbol.c +@@ -2000,9 +2000,12 @@ gfc_add_type (gfc_symbol *sym, gfc_typespec *ts, locus *where) + gfc_error ("Symbol %qs at %L conflicts with symbol from module %qs, " + "use-associated at %L", sym->name, where, sym->module, + &sym->declared_at); ++ else if (sym->attr.function && sym->attr.result) ++ gfc_error ("Symbol %qs at %L already has basic type of %s", ++ sym->ns->proc_name->name, where, gfc_basic_typename (type)); + else + gfc_error ("Symbol %qs at %L already has basic type of %s", sym->name, +- where, gfc_basic_typename (type)); ++ where, gfc_basic_typename (type)); + return false; + } + +@@ -2020,7 +2023,7 @@ gfc_add_type (gfc_symbol *sym, gfc_typespec *ts, locus *where) + || (flavor == FL_PROCEDURE && sym->attr.subroutine) + || flavor == FL_DERIVED || flavor == FL_NAMELIST) + { +- gfc_error ("Symbol %qs at %L cannot have a type", sym->name, where); ++ gfc_error ("Symbol %qs at %L cannot have a type", sym->ns->proc_name->name, where); + return false; + } + +@@ -4056,6 +4059,7 @@ gfc_free_namespace (gfc_namespace *ns) + { + gfc_namespace *p, *q; + int i; ++ gfc_was_finalized *f; + + if (ns == NULL) + return; +@@ -4088,6 +4092,17 @@ gfc_free_namespace (gfc_namespace *ns) + gfc_free_interface (ns->op[i]); + + gfc_free_data (ns->data); ++ ++ /* Free all the expr + component combinations that have been ++ finalized. */ ++ f = ns->was_finalized; ++ while (f) ++ { ++ gfc_was_finalized* current = f; ++ f = f->next; ++ free (current); ++ } ++ + p = ns->contained; + free (ns); + +--- a/src/gcc/fortran/trans-array.c ++++ b/src/gcc/fortran/trans-array.c +@@ -503,9 +503,10 @@ gfc_conv_shift_descriptor_lbound (stmtblock_t* block, tree desc, + + void + gfc_get_descriptor_offsets_for_info (const_tree desc_type, tree *data_off, +- tree *dtype_off, tree *dim_off, +- tree *dim_size, tree *stride_suboff, +- tree *lower_suboff, tree *upper_suboff) ++ tree *dtype_off, tree *span_off, ++ tree *dim_off, tree *dim_size, ++ tree *stride_suboff, tree *lower_suboff, ++ tree *upper_suboff) + { + tree field; + tree type; +@@ -515,6 +516,8 @@ gfc_get_descriptor_offsets_for_info (const_tree desc_type, tree *data_off, + *data_off = byte_position (field); + field = gfc_advance_chain (TYPE_FIELDS (type), DTYPE_FIELD); + *dtype_off = byte_position (field); ++ field = gfc_advance_chain (TYPE_FIELDS (type), SPAN_FIELD); ++ *span_off = byte_position (field); + field = gfc_advance_chain (TYPE_FIELDS (type), DIMENSION_FIELD); + *dim_off = byte_position (field); + type = TREE_TYPE (TREE_TYPE (field)); +--- a/src/gcc/fortran/trans-array.h ++++ b/src/gcc/fortran/trans-array.h +@@ -159,7 +159,7 @@ void gfc_trans_array_cobounds (tree, stmtblock_t *, const gfc_symbol *); + + /* Build expressions for accessing components of an array descriptor. */ + void gfc_get_descriptor_offsets_for_info (const_tree, tree *, tree *, tree *, tree *, +- tree *, tree *, tree *); ++ tree *, tree *, tree *, tree *); + + tree gfc_conv_descriptor_data_get (tree); + tree gfc_conv_descriptor_data_addr (tree); +--- a/src/gcc/fortran/trans-decl.c ++++ b/src/gcc/fortran/trans-decl.c +@@ -1673,9 +1673,7 @@ gfc_get_symbol_decl (gfc_symbol * sym) + + TREE_USED (sym->backend_decl) = 1; + if (sym->attr.assign && GFC_DECL_ASSIGN (sym->backend_decl) == 0) +- { +- gfc_add_assign_aux_vars (sym); +- } ++ gfc_add_assign_aux_vars (sym); + + if ((sym->attr.dimension || IS_CLASS_ARRAY (sym)) + && DECL_LANG_SPECIFIC (sym->backend_decl) +@@ -1689,6 +1687,10 @@ gfc_get_symbol_decl (gfc_symbol * sym) + return sym->backend_decl; + } + ++ if (sym->result == sym && sym->attr.assign ++ && GFC_DECL_ASSIGN (sym->backend_decl) == 0) ++ gfc_add_assign_aux_vars (sym); ++ + if (sym->backend_decl) + return sym->backend_decl; + +@@ -2062,12 +2064,17 @@ gfc_get_extern_function_decl (gfc_symbol * sym, gfc_actual_arglist *actual_args) + if (gsym && !gsym->bind_c) + gsym = NULL; + } +- else ++ else if (sym->module == NULL) + { + gsym = gfc_find_gsymbol (gfc_gsym_root, sym->name); + if (gsym && gsym->bind_c) + gsym = NULL; + } ++ else ++ { ++ /* Procedure from a different module. */ ++ gsym = NULL; ++ } + + if (gsym && !gsym->defined) + gsym = NULL; +@@ -3142,6 +3149,9 @@ gfc_get_fake_result_decl (gfc_symbol * sym, int parent_flag) + else + current_fake_result_decl = build_tree_list (NULL, decl); + ++ if (sym->attr.assign) ++ DECL_LANG_SPECIFIC (decl) = DECL_LANG_SPECIFIC (sym->backend_decl); ++ + return decl; + } + +@@ -5873,7 +5883,7 @@ generate_local_decl (gfc_symbol * sym) + /* Unused procedure passed as dummy argument. */ + if (sym->attr.flavor == FL_PROCEDURE) + { +- if (!sym->attr.referenced) ++ if (!sym->attr.referenced && !sym->attr.artificial) + { + if (warn_unused_dummy_argument) + gfc_warning (OPT_Wunused_dummy_argument, +--- a/src/gcc/fortran/trans-stmt.c ++++ b/src/gcc/fortran/trans-stmt.c +@@ -1213,6 +1213,7 @@ gfc_trans_sync (gfc_code *code, gfc_exec_op type) + if (code->expr1 && (gfc_option.rtcheck & GFC_RTCHECK_BOUNDS) + && code->expr1->rank == 0) + { ++ tree images2 = fold_convert (integer_type_node, images); + tree cond; + if (flag_coarray != GFC_FCOARRAY_LIB) + cond = fold_build2_loc (input_location, NE_EXPR, logical_type_node, +@@ -1224,7 +1225,7 @@ gfc_trans_sync (gfc_code *code, gfc_exec_op type) + 2, integer_zero_node, + build_int_cst (integer_type_node, -1)); + cond = fold_build2_loc (input_location, GT_EXPR, logical_type_node, +- images, tmp); ++ images2, tmp); + cond2 = fold_build2_loc (input_location, LT_EXPR, logical_type_node, + images, + build_int_cst (TREE_TYPE (images), 1)); +@@ -1233,8 +1234,7 @@ gfc_trans_sync (gfc_code *code, gfc_exec_op type) + } + gfc_trans_runtime_check (true, false, cond, &se.pre, + &code->expr1->where, "Invalid image number " +- "%d in SYNC IMAGES", +- fold_convert (integer_type_node, images)); ++ "%d in SYNC IMAGES", images2); + } + + /* Per F2008, 8.5.1, a SYNC MEMORY is implied by calling the +--- a/src/gcc/fortran/trans-types.c ++++ b/src/gcc/fortran/trans-types.c +@@ -3344,7 +3344,7 @@ gfc_get_array_descr_info (const_tree type, struct array_descr_info *info) + int rank, dim; + bool indirect = false; + tree etype, ptype, t, base_decl; +- tree data_off, dim_off, dtype_off, dim_size, elem_size; ++ tree data_off, span_off, dim_off, dtype_off, dim_size, elem_size; + tree lower_suboff, upper_suboff, stride_suboff; + tree dtype, field, rank_off; + +@@ -3401,12 +3401,13 @@ gfc_get_array_descr_info (const_tree type, struct array_descr_info *info) + if (indirect) + base_decl = build1 (INDIRECT_REF, ptype, base_decl); + +- elem_size = fold_convert (gfc_array_index_type, TYPE_SIZE_UNIT (etype)); +- +- gfc_get_descriptor_offsets_for_info (type, &data_off, &dtype_off, &dim_off, +- &dim_size, &stride_suboff, ++ gfc_get_descriptor_offsets_for_info (type, &data_off, &dtype_off, &span_off, ++ &dim_off, &dim_size, &stride_suboff, + &lower_suboff, &upper_suboff); + ++ t = fold_build_pointer_plus (base_decl, span_off); ++ elem_size = build1 (INDIRECT_REF, gfc_array_index_type, t); ++ + t = base_decl; + if (!integer_zerop (data_off)) + t = fold_build_pointer_plus (t, data_off); +--- a/src/gcc/fortran/trans.h ++++ b/src/gcc/fortran/trans.h +@@ -953,7 +953,6 @@ struct GTY(()) lang_type { + tree offset; + tree dtype; + tree dataptr_type; +- tree span; + tree base_decl[2]; + tree nonrestricted_type; + tree caf_token; +@@ -969,7 +968,6 @@ struct GTY(()) lang_decl { + address of target label. */ + tree stringlen; + tree addr; +- tree span; + /* For assumed-shape coarrays. */ + tree token, caf_offset; + unsigned int scalar_allocatable : 1; +@@ -979,7 +977,6 @@ struct GTY(()) lang_decl { + + #define GFC_DECL_ASSIGN_ADDR(node) DECL_LANG_SPECIFIC(node)->addr + #define GFC_DECL_STRING_LEN(node) DECL_LANG_SPECIFIC(node)->stringlen +-#define GFC_DECL_SPAN(node) DECL_LANG_SPECIFIC(node)->span + #define GFC_DECL_TOKEN(node) DECL_LANG_SPECIFIC(node)->token + #define GFC_DECL_CAF_OFFSET(node) DECL_LANG_SPECIFIC(node)->caf_offset + #define GFC_DECL_SAVED_DESCRIPTOR(node) \ +@@ -1028,7 +1025,6 @@ struct GTY(()) lang_decl { + #define GFC_TYPE_ARRAY_DTYPE(node) (TYPE_LANG_SPECIFIC(node)->dtype) + #define GFC_TYPE_ARRAY_DATAPTR_TYPE(node) \ + (TYPE_LANG_SPECIFIC(node)->dataptr_type) +-#define GFC_TYPE_ARRAY_SPAN(node) (TYPE_LANG_SPECIFIC(node)->span) + #define GFC_TYPE_ARRAY_BASE_DECL(node, internal) \ + (TYPE_LANG_SPECIFIC(node)->base_decl[(internal)]) + +--- a/src/gcc/gcov-io.c ++++ b/src/gcc/gcov-io.c +@@ -48,6 +48,7 @@ struct gcov_var + unsigned overread; /* Number of words overread. */ + int error; /* < 0 overflow, > 0 disk error. */ + int mode; /* < 0 writing, > 0 reading */ ++ int endian; /* Swap endianness. */ + #if IN_LIBGCOV + /* Holds one block plus 4 bytes, thus all coverage reads & writes + fit within this buffer and we always can transfer GCOV_BLOCK_SIZE +@@ -55,7 +56,6 @@ struct gcov_var + or 8 byte objects. */ + gcov_unsigned_t buffer[GCOV_BLOCK_SIZE + 1]; + #else +- int endian; /* Swap endianness. */ + /* Holds a variable length block, as the compiler can write + strings and needs to backtrack. */ + size_t alloc; +@@ -100,7 +100,7 @@ gcov_rewrite (void) + + static inline gcov_unsigned_t from_file (gcov_unsigned_t value) + { +-#if !IN_LIBGCOV ++#if !IN_LIBGCOV || defined (IN_GCOV_TOOL) + if (gcov_var.endian) + { + value = (value >> 16) | (value << 16); +@@ -222,7 +222,7 @@ gcov_close (void) + return gcov_var.error; + } + +-#if !IN_LIBGCOV ++#if !IN_LIBGCOV || defined (IN_GCOV_TOOL) + /* Check if MAGIC is EXPECTED. Use it to determine endianness of the + file. Returns +1 for same endian, -1 for other endian and zero for + not EXPECTED. */ +--- a/src/gcc/gcov-io.h ++++ b/src/gcc/gcov-io.h +@@ -370,6 +370,9 @@ struct gcov_summary + + #if !IN_LIBGCOV + GCOV_LINKAGE int gcov_open (const char */*name*/, int /*direction*/); ++#endif ++ ++#if !IN_LIBGCOV || defined (IN_GCOV_TOOL) + GCOV_LINKAGE int gcov_magic (gcov_unsigned_t, gcov_unsigned_t); + #endif + +--- a/src/gcc/gcov.c ++++ b/src/gcc/gcov.c +@@ -653,10 +653,10 @@ unblock (const block_info *u, block_vector_t &blocked, + /* Return true when PATH contains a zero cycle arc count. */ + + static bool +-path_contains_zero_cycle_arc (arc_vector_t &path) ++path_contains_zero_or_negative_cycle_arc (arc_vector_t &path) + { + for (unsigned i = 0; i < path.size (); i++) +- if (path[i]->cs_count == 0) ++ if (path[i]->cs_count <= 0) + return true; + return false; + } +@@ -682,7 +682,7 @@ circuit (block_info *v, arc_vector_t &path, block_info *start, + { + block_info *w = arc->dst; + if (w < start +- || arc->cs_count == 0 ++ || arc->cs_count <= 0 + || !linfo.has_block (w)) + continue; + +@@ -693,7 +693,7 @@ circuit (block_info *v, arc_vector_t &path, block_info *start, + handle_cycle (path, count); + loop_found = true; + } +- else if (!path_contains_zero_cycle_arc (path) ++ else if (!path_contains_zero_or_negative_cycle_arc (path) + && find (blocked.begin (), blocked.end (), w) == blocked.end ()) + loop_found |= circuit (w, path, start, blocked, block_lists, linfo, + count); +@@ -708,7 +708,7 @@ circuit (block_info *v, arc_vector_t &path, block_info *start, + { + block_info *w = arc->dst; + if (w < start +- || arc->cs_count == 0 ++ || arc->cs_count <= 0 + || !linfo.has_block (w)) + continue; + +--- a/src/gcc/gimple-ssa-store-merging.c ++++ b/src/gcc/gimple-ssa-store-merging.c +@@ -2014,7 +2014,8 @@ struct imm_store_chain_info + } + } + bool terminate_and_process_chain (); +- bool try_coalesce_bswap (merged_store_group *, unsigned int, unsigned int); ++ bool try_coalesce_bswap (merged_store_group *, unsigned int, unsigned int, ++ unsigned int); + bool coalesce_immediate_stores (); + bool output_merged_store (merged_store_group *); + bool output_merged_stores (); +@@ -2335,14 +2336,39 @@ gather_bswap_load_refs (vec *refs, tree val) + into the group. That way it will be its own store group and will + not be touched. If ALL_INTEGER_CST_P and there are overlapping + INTEGER_CST stores, those are mergeable using merge_overlapping, +- so don't return false for those. */ ++ so don't return false for those. ++ ++ Similarly, check stores from FIRST_EARLIER (inclusive) to END_EARLIER ++ (exclusive), whether they don't overlap the bitrange START to END ++ and have order in between FIRST_ORDER and LAST_ORDER. This is to ++ prevent merging in cases like: ++ MEM [&b + 8B] = {}; ++ MEM[(short *) &b] = 5; ++ _5 = *x_4(D); ++ MEM [&b + 2B] = _5; ++ MEM[(char *)&b + 16B] = 88; ++ MEM[(int *)&b + 20B] = 1; ++ The = {} store comes in sort_by_bitpos before the = 88 store, and can't ++ be merged with it, because the = _5 store overlaps these and is in between ++ them in sort_by_order ordering. If it was merged, the merged store would ++ go after the = _5 store and thus change behavior. */ + + static bool + check_no_overlap (vec m_store_info, unsigned int i, +- bool all_integer_cst_p, unsigned int last_order, +- unsigned HOST_WIDE_INT end) ++ bool all_integer_cst_p, unsigned int first_order, ++ unsigned int last_order, unsigned HOST_WIDE_INT start, ++ unsigned HOST_WIDE_INT end, unsigned int first_earlier, ++ unsigned end_earlier) + { + unsigned int len = m_store_info.length (); ++ for (unsigned int j = first_earlier; j < end_earlier; j++) ++ { ++ store_immediate_info *info = m_store_info[j]; ++ if (info->order > first_order ++ && info->order < last_order ++ && info->bitpos + info->bitsize > start) ++ return false; ++ } + for (++i; i < len; ++i) + { + store_immediate_info *info = m_store_info[i]; +@@ -2363,7 +2389,8 @@ check_no_overlap (vec m_store_info, unsigned int i, + bool + imm_store_chain_info::try_coalesce_bswap (merged_store_group *merged_store, + unsigned int first, +- unsigned int try_size) ++ unsigned int try_size, ++ unsigned int first_earlier) + { + unsigned int len = m_store_info.length (), last = first; + unsigned HOST_WIDE_INT width = m_store_info[first]->bitsize; +@@ -2502,7 +2529,8 @@ imm_store_chain_info::try_coalesce_bswap (merged_store_group *merged_store, + if (n.base_addr == NULL_TREE && !is_gimple_val (n.src)) + return false; + +- if (!check_no_overlap (m_store_info, last, false, last_order, end)) ++ if (!check_no_overlap (m_store_info, last, false, first_order, last_order, ++ merged_store->start, end, first_earlier, first)) + return false; + + /* Don't handle memory copy this way if normal non-bswap processing +@@ -2594,6 +2622,8 @@ imm_store_chain_info::coalesce_immediate_stores () + + store_immediate_info *info; + unsigned int i, ignore = 0; ++ unsigned int first_earlier = 0; ++ unsigned int end_earlier = 0; + + /* Order the stores by the bitposition they write to. */ + m_store_info.qsort (sort_by_bitpos); +@@ -2615,6 +2645,12 @@ imm_store_chain_info::coalesce_immediate_stores () + if (i <= ignore) + continue; + ++ while (first_earlier < end_earlier ++ && (m_store_info[first_earlier]->bitpos ++ + m_store_info[first_earlier]->bitsize ++ <= merged_store->start)) ++ first_earlier++; ++ + /* First try to handle group of stores like: + p[0] = data >> 24; + p[1] = data >> 16; +@@ -2628,7 +2664,8 @@ imm_store_chain_info::coalesce_immediate_stores () + { + unsigned int try_size; + for (try_size = 64; try_size >= 16; try_size >>= 1) +- if (try_coalesce_bswap (merged_store, i - 1, try_size)) ++ if (try_coalesce_bswap (merged_store, i - 1, try_size, ++ first_earlier)) + break; + + if (try_size >= 16) +@@ -2636,7 +2673,10 @@ imm_store_chain_info::coalesce_immediate_stores () + ignore = i + merged_store->stores.length () - 1; + m_merged_store_groups.safe_push (merged_store); + if (ignore < m_store_info.length ()) +- merged_store = new merged_store_group (m_store_info[ignore]); ++ { ++ merged_store = new merged_store_group (m_store_info[ignore]); ++ end_earlier = ignore; ++ } + else + merged_store = NULL; + continue; +@@ -2662,12 +2702,16 @@ imm_store_chain_info::coalesce_immediate_stores () + if (info->rhs_code == INTEGER_CST + && merged_store->stores[0]->rhs_code == INTEGER_CST) + { ++ unsigned int first_order ++ = MIN (merged_store->first_order, info->order); + unsigned int last_order + = MAX (merged_store->last_order, info->order); + unsigned HOST_WIDE_INT end + = MAX (merged_store->start + merged_store->width, + info->bitpos + info->bitsize); +- if (check_no_overlap (m_store_info, i, true, last_order, end)) ++ if (check_no_overlap (m_store_info, i, true, first_order, ++ last_order, merged_store->start, end, ++ first_earlier, end_earlier)) + { + /* check_no_overlap call above made sure there are no + overlapping stores with non-INTEGER_CST rhs_code +@@ -2696,6 +2740,7 @@ imm_store_chain_info::coalesce_immediate_stores () + do + { + unsigned int max_order = 0; ++ unsigned int min_order = first_order; + unsigned first_nonmergeable_int_order = ~0U; + unsigned HOST_WIDE_INT this_end = end; + k = i; +@@ -2721,6 +2766,7 @@ imm_store_chain_info::coalesce_immediate_stores () + break; + } + k = j; ++ min_order = MIN (min_order, info2->order); + this_end = MAX (this_end, + info2->bitpos + info2->bitsize); + } +@@ -2736,6 +2782,12 @@ imm_store_chain_info::coalesce_immediate_stores () + first_nonmergeable_order + = MIN (first_nonmergeable_order, info2->order); + } ++ if (k > i ++ && !check_no_overlap (m_store_info, len - 1, true, ++ min_order, try_order, ++ merged_store->start, this_end, ++ first_earlier, end_earlier)) ++ k = 0; + if (k == 0) + { + if (last_order == try_order) +@@ -2828,11 +2880,14 @@ imm_store_chain_info::coalesce_immediate_stores () + ? compatible_load_p (merged_store, info, base_addr, 1) + : !info->ops[1].base_addr) + && check_no_overlap (m_store_info, i, false, +- MAX (merged_store->last_order, ++ MIN (merged_store->first_order, + info->order), ++ MAX (merged_store->last_order, ++ info->order), merged_store->start, + MAX (merged_store->start + + merged_store->width, +- info->bitpos + info->bitsize))) ++ info->bitpos + info->bitsize), ++ first_earlier, end_earlier)) + { + merged_store->merge_into (info); + continue; +@@ -2851,6 +2906,7 @@ imm_store_chain_info::coalesce_immediate_stores () + m_merged_store_groups.safe_push (merged_store); + + merged_store = new merged_store_group (info); ++ end_earlier = i; + } + + /* Record or discard the last store group. */ +--- a/src/gcc/gimple.c ++++ b/src/gcc/gimple.c +@@ -2782,8 +2782,8 @@ check_loadstore (gimple *, tree op, tree, void *data) + bool + infer_nonnull_range (gimple *stmt, tree op) + { +- return infer_nonnull_range_by_dereference (stmt, op) +- || infer_nonnull_range_by_attribute (stmt, op); ++ return (infer_nonnull_range_by_dereference (stmt, op) ++ || infer_nonnull_range_by_attribute (stmt, op)); + } + + /* Return true if OP can be inferred to be non-NULL after STMT +@@ -2795,7 +2795,8 @@ infer_nonnull_range_by_dereference (gimple *stmt, tree op) + non-NULL if -fdelete-null-pointer-checks is enabled. */ + if (!flag_delete_null_pointer_checks + || !POINTER_TYPE_P (TREE_TYPE (op)) +- || gimple_code (stmt) == GIMPLE_ASM) ++ || gimple_code (stmt) == GIMPLE_ASM ++ || gimple_clobber_p (stmt)) + return false; + + if (walk_stmt_load_store_ops (stmt, (void *)op, +--- a/src/gcc/gimplify.c ++++ b/src/gcc/gimplify.c +@@ -4814,6 +4814,7 @@ gimplify_init_constructor (tree *expr_p, gimple_seq *pre_p, gimple_seq *post_p, + && num_nonzero_elements > 1 + && TREE_READONLY (object) + && VAR_P (object) ++ && !DECL_REGISTER (object) + && (flag_merge_constants >= 2 || !TREE_ADDRESSABLE (object)) + /* For ctors that have many repeated nonzero elements + represented through RANGE_EXPRs, prefer initializing +--- a/src/gcc/hsa-gen.c ++++ b/src/gcc/hsa-gen.c +@@ -5251,11 +5251,6 @@ gen_hsa_insns_for_call (gimple *stmt, hsa_bb *hbb) + if (!gimple_call_builtin_p (stmt, BUILT_IN_NORMAL)) + { + tree function_decl = gimple_call_fndecl (stmt); +- /* Prefetch pass can create type-mismatching prefetch builtin calls which +- fail the gimple_call_builtin_p test above. Handle them here. */ +- if (DECL_BUILT_IN_CLASS (function_decl) +- && DECL_FUNCTION_CODE (function_decl) == BUILT_IN_PREFETCH) +- return; + + if (function_decl == NULL_TREE) + { +@@ -5264,6 +5259,12 @@ gen_hsa_insns_for_call (gimple *stmt, hsa_bb *hbb) + return; + } + ++ /* Prefetch pass can create type-mismatching prefetch builtin calls which ++ fail the gimple_call_builtin_p test above. Handle them here. */ ++ if (DECL_BUILT_IN_CLASS (function_decl) ++ && DECL_FUNCTION_CODE (function_decl) == BUILT_IN_PREFETCH) ++ return; ++ + if (hsa_callable_function_p (function_decl)) + gen_hsa_insns_for_direct_call (stmt, hbb); + else if (!gen_hsa_insns_for_known_library_call (stmt, hbb)) +--- a/src/gcc/ipa-icf-gimple.c ++++ b/src/gcc/ipa-icf-gimple.c +@@ -37,6 +37,7 @@ along with GCC; see the file COPYING3. If not see + #include "ipa-utils.h" + #include "tree-eh.h" + #include "builtins.h" ++#include "attribs.h" + + #include "ipa-icf-gimple.h" + +@@ -769,6 +770,9 @@ func_checker::compare_gimple_call (gcall *s1, gcall *s2) + || (fntype1 && !types_compatible_p (fntype1, fntype2))) + return return_false_with_msg ("call function types are not compatible"); + ++ if (fntype1 && fntype2 && comp_type_attributes (fntype1, fntype2) != 1) ++ return return_false_with_msg ("different fntype attributes"); ++ + tree chain1 = gimple_call_chain (s1); + tree chain2 = gimple_call_chain (s2); + if ((chain1 && !chain2) +--- a/src/gcc/omp-simd-clone.c ++++ b/src/gcc/omp-simd-clone.c +@@ -816,6 +816,7 @@ simd_clone_init_simd_arrays (struct cgraph_node *node, + struct modify_stmt_info { + ipa_parm_adjustment_vec adjustments; + gimple *stmt; ++ gimple *after_stmt; + /* True if the parent statement was modified by + ipa_simd_modify_stmt_ops. */ + bool modified; +@@ -899,7 +900,10 @@ ipa_simd_modify_stmt_ops (tree *tp, int *walk_subtrees, void *data) + gimple_stmt_iterator gsi; + if (gimple_code (info->stmt) == GIMPLE_PHI) + { +- gsi = gsi_after_labels (single_succ (ENTRY_BLOCK_PTR_FOR_FN (cfun))); ++ if (info->after_stmt) ++ gsi = gsi_for_stmt (info->after_stmt); ++ else ++ 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 +@@ -908,7 +912,12 @@ ipa_simd_modify_stmt_ops (tree *tp, int *walk_subtrees, void *data) + } + else + gsi = gsi_for_stmt (info->stmt); +- gsi_insert_before (&gsi, stmt, GSI_SAME_STMT); ++ if (info->after_stmt) ++ gsi_insert_after (&gsi, stmt, GSI_SAME_STMT); ++ else ++ gsi_insert_before (&gsi, stmt, GSI_SAME_STMT); ++ if (gimple_code (info->stmt) == GIMPLE_PHI) ++ info->after_stmt = stmt; + *orig_tp = repl; + } + else if (!useless_type_conversion_p (TREE_TYPE (*tp), TREE_TYPE (repl))) +@@ -1013,6 +1022,7 @@ ipa_simd_modify_function_body (struct cgraph_node *node, + gphi *phi = as_a (gsi_stmt (gsi)); + int i, n = gimple_phi_num_args (phi); + info.stmt = phi; ++ info.after_stmt = NULL; + struct walk_stmt_info wi; + memset (&wi, 0, sizeof (wi)); + info.modified = false; +@@ -1038,6 +1048,7 @@ ipa_simd_modify_function_body (struct cgraph_node *node, + { + gimple *stmt = gsi_stmt (gsi); + info.stmt = stmt; ++ info.after_stmt = NULL; + struct walk_stmt_info wi; + + memset (&wi, 0, sizeof (wi)); +--- a/src/gcc/optabs-libfuncs.c ++++ b/src/gcc/optabs-libfuncs.c +@@ -719,10 +719,10 @@ struct libfunc_decl_hasher : ggc_ptr_hash + /* A table of previously-created libfuncs, hashed by name. */ + static GTY (()) hash_table *libfunc_decls; + +-/* Build a decl for a libfunc named NAME. */ ++/* Build a decl for a libfunc named NAME with visibility VIS. */ + + tree +-build_libfunc_function (const char *name) ++build_libfunc_function_visibility (const char *name, symbol_visibility vis) + { + /* ??? We don't have any type information; pretend this is "int foo ()". */ + tree decl = build_decl (UNKNOWN_LOCATION, FUNCTION_DECL, +@@ -731,7 +731,7 @@ build_libfunc_function (const char *name) + DECL_EXTERNAL (decl) = 1; + TREE_PUBLIC (decl) = 1; + DECL_ARTIFICIAL (decl) = 1; +- DECL_VISIBILITY (decl) = VISIBILITY_DEFAULT; ++ DECL_VISIBILITY (decl) = vis; + DECL_VISIBILITY_SPECIFIED (decl) = 1; + gcc_assert (DECL_ASSEMBLER_NAME (decl)); + +@@ -742,11 +742,19 @@ build_libfunc_function (const char *name) + return decl; + } + ++/* Build a decl for a libfunc named NAME. */ ++ ++tree ++build_libfunc_function (const char *name) ++{ ++ return build_libfunc_function_visibility (name, VISIBILITY_DEFAULT); ++} ++ + /* Return a libfunc for NAME, creating one if we don't already have one. +- The returned rtx is a SYMBOL_REF. */ ++ The decl is given visibility VIS. The returned rtx is a SYMBOL_REF. */ + + rtx +-init_one_libfunc (const char *name) ++init_one_libfunc_visibility (const char *name, symbol_visibility vis) + { + tree id, decl; + hashval_t hash; +@@ -763,12 +771,18 @@ init_one_libfunc (const char *name) + { + /* Create a new decl, so that it can be passed to + targetm.encode_section_info. */ +- decl = build_libfunc_function (name); ++ decl = build_libfunc_function_visibility (name, vis); + *slot = decl; + } + return XEXP (DECL_RTL (decl), 0); + } + ++rtx ++init_one_libfunc (const char *name) ++{ ++ return init_one_libfunc_visibility (name, VISIBILITY_DEFAULT); ++} ++ + /* Adjust the assembler name of libfunc NAME to ASMSPEC. */ + + rtx +--- a/src/gcc/optabs-libfuncs.h ++++ b/src/gcc/optabs-libfuncs.h +@@ -63,7 +63,9 @@ void gen_satfract_conv_libfunc (convert_optab, const char *, + void gen_satfractuns_conv_libfunc (convert_optab, const char *, + machine_mode, machine_mode); + ++tree build_libfunc_function_visibility (const char *, symbol_visibility); + tree build_libfunc_function (const char *); ++rtx init_one_libfunc_visibility (const char *, symbol_visibility); + rtx init_one_libfunc (const char *); + rtx set_user_assembler_libfunc (const char *, const char *); + +--- a/src/gcc/optabs.c ++++ b/src/gcc/optabs.c +@@ -1363,6 +1363,8 @@ expand_binop (machine_mode mode, optab binoptab, rtx op0, rtx op1, + if (target == 0 + || target == op0 + || target == op1 ++ || reg_overlap_mentioned_p (target, op0) ++ || reg_overlap_mentioned_p (target, op1) + || !valid_multiword_target_p (target)) + target = gen_reg_rtx (int_mode); + +@@ -1437,6 +1439,8 @@ expand_binop (machine_mode mode, optab binoptab, rtx op0, rtx op1, + if (target == 0 + || target == op0 + || target == op1 ++ || reg_overlap_mentioned_p (target, op0) ++ || reg_overlap_mentioned_p (target, op1) + || !valid_multiword_target_p (target)) + target = gen_reg_rtx (int_mode); + +@@ -1495,6 +1499,8 @@ expand_binop (machine_mode mode, optab binoptab, rtx op0, rtx op1, + || target == op0 + || target == op1 + || !REG_P (target) ++ || reg_overlap_mentioned_p (target, op0) ++ || reg_overlap_mentioned_p (target, op1) + || !valid_multiword_target_p (target)) + target = gen_reg_rtx (int_mode); + +@@ -2632,6 +2638,7 @@ expand_absneg_bit (enum rtx_code code, scalar_float_mode mode, + + if (target == 0 + || target == op0 ++ || reg_overlap_mentioned_p (target, op0) + || (nwords > 1 && !valid_multiword_target_p (target))) + target = gen_reg_rtx (mode); + +@@ -2910,7 +2917,10 @@ expand_unop (machine_mode mode, optab unoptab, rtx op0, rtx target, + int i; + rtx_insn *insns; + +- if (target == 0 || target == op0 || !valid_multiword_target_p (target)) ++ if (target == 0 ++ || target == op0 ++ || reg_overlap_mentioned_p (target, op0) ++ || !valid_multiword_target_p (target)) + target = gen_reg_rtx (int_mode); + + start_sequence (); +@@ -3420,6 +3430,8 @@ expand_copysign_bit (scalar_float_mode mode, rtx op0, rtx op1, rtx target, + if (target == 0 + || target == op0 + || target == op1 ++ || reg_overlap_mentioned_p (target, op0) ++ || reg_overlap_mentioned_p (target, op1) + || (nwords > 1 && !valid_multiword_target_p (target))) + target = gen_reg_rtx (mode); + +@@ -5518,6 +5530,8 @@ expand_vec_perm_const (machine_mode mode, rtx v0, rtx v1, + if (shift_amt) + { + struct expand_operand ops[3]; ++ if (shift_amt == const0_rtx) ++ return v0; + if (shift_code != CODE_FOR_nothing) + { + create_output_operand (&ops[0], target, mode); +--- a/src/gcc/params.def ++++ b/src/gcc/params.def +@@ -1017,6 +1017,13 @@ DEFPARAM (PARAM_SRA_MAX_SCALARIZATION_SIZE_SIZE, + "considered for scalarization when compiling for size.", + 0, 0, 0) + ++DEFPARAM (PARAM_SRA_MAX_PROPAGATIONS, ++ "sra-max-propagations", ++ "Maximum number of artificial accesses to enable forward propagation " ++ "that Scalar Replacement of Aggregates will keep for one local " ++ "variable.", ++ 32, 0, 0) ++ + DEFPARAM (PARAM_IPA_CP_VALUE_LIST_SIZE, + "ipa-cp-value-list-size", + "Maximum size of a list of values associated with each parameter for " +--- a/src/gcc/print-rtl.c ++++ b/src/gcc/print-rtl.c +@@ -1664,7 +1664,9 @@ print_value (pretty_printer *pp, const_rtx x, int verbose) + pp_string (pp, tmp); + break; + case CONST_STRING: +- pp_printf (pp, "\"%s\"", XSTR (x, 0)); ++ pp_string (pp, "\""); ++ pretty_print_string (pp, XSTR (x, 0)); ++ pp_string (pp, "\""); + break; + case SYMBOL_REF: + pp_printf (pp, "`%s'", XSTR (x, 0)); +--- a/src/gcc/reorg.c ++++ b/src/gcc/reorg.c +@@ -563,8 +563,9 @@ add_to_delay_list (rtx_insn *insn, vec *delay_list) + { + /* If INSN has its block number recorded, clear it since we may + be moving the insn to a new block. */ +- clear_hashed_info_for_insn (insn); +- delay_list->safe_push (insn); ++ clear_hashed_info_for_insn (insn); ++ ++ delay_list->safe_push (insn); + } + + /* Delete INSN from the delay slot of the insn that it is in, which may +@@ -3200,7 +3201,14 @@ relax_delay_slots (rtx_insn *first) + + if (invert_jump (jump_insn, label, 1)) + { +- delete_related_insns (next); ++ rtx_insn *from = delete_related_insns (next); ++ ++ /* We have just removed a BARRIER, which means that the block ++ number of the next insns has effectively been changed (see ++ find_basic_block in resource.c), so clear it. */ ++ if (from) ++ clear_hashed_info_until_next_barrier (from); ++ + next = jump_insn; + } + +@@ -3473,18 +3481,22 @@ relax_delay_slots (rtx_insn *first) + + if (invert_jump (delay_jump_insn, label, 1)) + { +- int i; +- + /* Must update the INSN_FROM_TARGET_P bits now that + the branch is reversed, so that mark_target_live_regs + will handle the delay slot insn correctly. */ +- for (i = 1; i < XVECLEN (PATTERN (insn), 0); i++) ++ for (int i = 1; i < XVECLEN (PATTERN (insn), 0); i++) + { + rtx slot = XVECEXP (PATTERN (insn), 0, i); + INSN_FROM_TARGET_P (slot) = ! INSN_FROM_TARGET_P (slot); + } + +- delete_related_insns (next); ++ /* We have just removed a BARRIER, which means that the block ++ number of the next insns has effectively been changed (see ++ find_basic_block in resource.c), so clear it. */ ++ rtx_insn *from = delete_related_insns (next); ++ if (from) ++ clear_hashed_info_until_next_barrier (from); ++ + next = insn; + } + +--- a/src/gcc/resource.c ++++ b/src/gcc/resource.c +@@ -1293,7 +1293,26 @@ clear_hashed_info_for_insn (rtx_insn *insn) + tinfo->block = -1; + } + } +- ++ ++/* Clear any hashed information that we have stored for instructions ++ between INSN and the next BARRIER that follow a JUMP or a LABEL. */ ++ ++void ++clear_hashed_info_until_next_barrier (rtx_insn *insn) ++{ ++ while (insn && !BARRIER_P (insn)) ++ { ++ if (JUMP_P (insn) || LABEL_P (insn)) ++ { ++ rtx_insn *next = next_active_insn (insn); ++ if (next) ++ clear_hashed_info_for_insn (next); ++ } ++ ++ insn = next_nonnote_insn (insn); ++ } ++} ++ + /* Increment the tick count for the basic block that contains INSN. */ + + void +--- a/src/gcc/resource.h ++++ b/src/gcc/resource.h +@@ -46,6 +46,7 @@ extern void mark_set_resources (rtx, struct resources *, int, + enum mark_resource_type); + extern void mark_referenced_resources (rtx, struct resources *, bool); + extern void clear_hashed_info_for_insn (rtx_insn *); ++extern void clear_hashed_info_until_next_barrier (rtx_insn *); + extern void incr_ticks_for_insn (rtx_insn *); + extern void mark_end_of_function_resources (rtx, bool); + extern void init_resource_info (rtx_insn *); +--- a/src/gcc/stor-layout.c ++++ b/src/gcc/stor-layout.c +@@ -1314,7 +1314,8 @@ place_field (record_layout_info rli, tree field) + Bump the cumulative size to multiple of field alignment. */ + + if (!targetm.ms_bitfield_layout_p (rli->t) +- && DECL_SOURCE_LOCATION (field) != BUILTINS_LOCATION) ++ && DECL_SOURCE_LOCATION (field) != BUILTINS_LOCATION ++ && !TYPE_ARTIFICIAL (rli->t)) + warning (OPT_Wpadded, "padding struct to align %q+D", field); + + /* If the alignment is still within offset_align, just align +@@ -1748,7 +1749,8 @@ finalize_record_size (record_layout_info rli) + + if (TREE_CONSTANT (unpadded_size) + && simple_cst_equal (unpadded_size, TYPE_SIZE (rli->t)) == 0 +- && input_location != BUILTINS_LOCATION) ++ && input_location != BUILTINS_LOCATION ++ && !TYPE_ARTIFICIAL (rli->t)) + warning (OPT_Wpadded, "padding struct size to alignment boundary"); + + if (warn_packed && TREE_CODE (rli->t) == RECORD_TYPE +--- a/src/gcc/testsuite/ChangeLog ++++ b/src/gcc/testsuite/ChangeLog +@@ -1,3 +1,1212 @@ ++2020-11-24 Jason Merrill ++ ++ PR c++/97918 ++ * g++.dg/debug/localclass2.C: New test. ++ ++2020-11-24 Jason Merrill ++ ++ PR c++/95158 ++ * g++.dg/template/virtual5.C: New test. ++ ++2020-11-17 Richard Sandiford ++ ++ Backported from master: ++ 2020-08-05 Richard Sandiford ++ ++ PR target/96191 ++ * gcc.target/aarch64/stack-protector-1.c: New test. ++ * gcc.target/aarch64/stack-protector-2.c: Likewise. ++ ++2020-11-17 Tamar Christina ++ ++ PR target/97535 ++ * gcc.target/aarch64/pr97535.c: New test. ++ ++2020-11-06 Peter Bergner ++ ++ Backported from master: ++ 2020-11-06 Peter Bergner ++ ++ * gcc.target/powerpc/pr64505.c: Run everywhere. Use correct minimized ++ test case. ++ ++2020-11-03 Richard Biener ++ ++ Backported from master: ++ 2020-11-03 Richard Biener ++ ++ PR testsuite/97688 ++ * gcc.dg/vect/tree-vect.h (check_vect): Fix the x86 cpuid ++ check to always specify subleaf zero. ++ ++2020-10-24 Harald Anlauf ++ ++ Backported from master: ++ 2020-10-18 Harald Anlauf ++ ++ * gfortran.dg/matmul_20.f90: New test. ++ ++2020-10-22 Andreas Krebbel ++ ++ Backported from master: ++ 2020-10-22 Andreas Krebbel ++ ++ * gcc.dg/dfp/pr97439.c: New test. ++ ++2020-10-13 Kyrylo Tkachov ++ ++ Backported from master: ++ 2020-10-13 Kyrylo Tkachov ++ ++ PR target/97349 ++ * gcc.target/aarch64/simd/pr97349.c: New test. ++ ++2020-10-08 Kyrylo Tkachov ++ ++ Backported from master: ++ 2020-10-08 Kyrylo Tkachov ++ ++ PR target/97150 ++ * gcc.target/aarch64/pr97150.c: New test. ++ ++2020-10-08 Kyrylo Tkachov ++ ++ Backported from master: ++ 2020-10-08 Kyrylo Tkachov ++ ++ PR target/96313 ++ * gcc.target/aarch64/pr96313.c: New test. ++ * gcc.target/aarch64/scalar_intrinsics.c (test_vqmovunh_s16): ++ Adjust return type. ++ (test_vqmovuns_s32): Likewise. ++ (test_vqmovund_s64): Likewise. ++ ++2020-09-30 H.J. Lu ++ ++ Backported from master: ++ 2020-09-30 H.J. Lu ++ ++ PR target/97184 ++ * gcc.target/i386/movdir64b.c: New test. ++ * gcc.target/i386/movdiri32.c: Likewise. ++ * gcc.target/i386/movdiri64.c: Likewise. ++ * lib/target-supports.exp (check_effective_target_movdir): New. ++ ++2020-09-28 Christophe Lyon ++ ++ Backported from master: ++ 2020-09-25 Christophe Lyon ++ ++ PR target/71233 ++ * gcc.target/aarch64/advsimd-intrinsics/vtrn_half.c: Remove ++ declarations of vector, vector2, vector_res for float64x2 type. ++ * gcc.target/aarch64/advsimd-intrinsics/vuzp_half.c: Likewise. ++ * gcc.target/aarch64/advsimd-intrinsics/vzip_half.c: Likewise. ++ ++2020-09-28 Kyrylo Tkachov ++ ++ Backported from master: ++ 2020-09-23 Kyrylo Tkachov ++ ++ PR target/71233 ++ * gcc.target/aarch64/advsimd-intrinsics/arm-neon-ref.h ++ (clean_results): Add float64x2_t cleanup. ++ (DECL_VARIABLE_128BITS_VARIANTS): Add float64x2_t variable. ++ * gcc.target/aarch64/advsimd-intrinsics/vreinterpret_p128.c: Add ++ testing of vreinterpretq_f64_p128, vreinterpretq_p128_f64. ++ ++2020-09-28 Kyrylo Tkachov ++ ++ Backported from master: ++ 2020-09-23 Kyrylo Tkachov ++ ++ PR target/71233 ++ * gcc.target/aarch64/simd/vrndns_f32_1.c: New test. ++ ++2020-09-28 Kyrylo Tkachov ++ ++ Backported from master: ++ 2020-09-23 Kyrylo Tkachov ++ ++ PR target/71233 ++ * gcc.target/aarch64/simd/trn_zip_p64_1.c: New test. ++ ++2020-09-28 Kyrylo Tkachov ++ ++ Backported from master: ++ 2020-09-23 Kyrylo Tkachov ++ ++ PR target/71233 ++ * gcc.target/aarch64/simd/vldrq_p128_1.c: New test. ++ ++2020-09-28 Kyrylo Tkachov ++ ++ Backported from master: ++ 2020-09-23 Kyrylo Tkachov ++ ++ PR target/71233 ++ * gcc.target/aarch64/simd/vstrq_p128_1.c: New test. ++ ++2020-09-28 Kyrylo Tkachov ++ ++ Backported from master: ++ 2020-09-22 Kyrylo Tkachov ++ ++ PR target/71233 ++ * gcc.target/aarch64/simd/vcls_unsigned_1.c: New test. ++ ++2020-09-28 Kyrylo Tkachov ++ ++ Backported from master: ++ 2020-09-22 Kyrylo Tkachov ++ ++ PR target/71233 ++ * gcc.target/aarch64/simd/vceq_poly_1.c: New test. ++ ++2020-09-28 Kyrylo Tkachov ++ ++ Backported from master: ++ 2020-09-22 Kyrylo Tkachov ++ ++ PR target/71233 ++ * gcc.target/aarch64/simd/vadd_poly_1.c: New test. ++ ++2020-09-28 Mark Eggleston ++ ++ Revert: ++ 2020-09-28 Steven G. Kargl ++ Mark Eggleston ++ ++ PR fortran/95614 ++ * gfortran.dg/pr95614_1.f90: New test. ++ * gfortran.dg/pr95614_2.f90: New test. ++ ++2020-09-27 Jakub Jelinek ++ ++ Backported from master: ++ 2020-09-27 Jakub Jelinek ++ ++ PR middle-end/97073 ++ * gcc.c-torture/execute/pr97073.c: New test. ++ ++2020-09-27 Mark Eggleston ++ ++ Backported from master: ++ 2020-09-27 Steven G. Kargl ++ Mark Eggleston ++ ++ PR fortran/95614 ++ * gfortran.dg/pr95614_1.f90: New test. ++ * gfortran.dg/pr95614_2.f90: New test. ++ ++2020-09-25 Tamar Christina ++ ++ PR target/71233 ++ * lib/target-supports.exp ++ (check_effective_target_arm_v8_3a_complex_neon_ok_nocache, ++ check_effective_target_arm_v8_3a_complex_neon_ok, ++ add_options_for_arm_v8_3a_complex_neon, ++ check_effective_target_arm_v8_3a_complex_neon_hw, ++ check_effective_target_vect_complex_rot_N): New. ++ * gcc.target/aarch64/advsimd-intrinsics/vector-complex.c: New test. ++ * gcc.target/aarch64/advsimd-intrinsics/vector-complex_f16.c: New test. ++ ++2020-09-25 Kyrylo Tkachov ++ ++ PR target/71233 ++ * gcc.target/aarch64/acle/rng_1.c: New test. ++ ++2020-09-24 H.J. Lu ++ ++ Backported from master: ++ 2020-09-16 H.J. Lu ++ ++ PR target/97032 ++ * gcc.target/i386/pr97032.c: New test. ++ ++2020-09-24 Kyrylo Tkachov ++ ++ Backported from master: ++ 2020-09-24 Kyrylo Tkachov ++ Andrea Corallo ++ ++ PR target/71233 ++ * gcc.target/aarch64/acle/jcvt_1.c: New test. ++ * gcc.target/aarch64/acle/jcvt_2.c: New testcase. ++ * lib/target-supports.exp ++ (check_effective_target_aarch64_fjcvtzs_hw): Add new check for ++ FJCVTZS hw. ++ ++2020-09-24 Tamar Christina ++ ++ Backported from master: ++ 2019-02-25 Tamar Christina ++ ++ PR target/71233 ++ * gcc.target/aarch64/fp16_fmul_high.h (test_vfmlal_high_u32, ++ test_vfmlalq_high_u32, test_vfmlsl_high_u32, test_vfmlslq_high_u32): ++ Rename ... ++ (test_vfmlal_high_f16, test_vfmlalq_high_f16, test_vfmlsl_high_f16, ++ test_vfmlslq_high_f16): ... To this. ++ * gcc.target/aarch64/fp16_fmul_lane_high.h (test_vfmlal_lane_high_u32, ++ tets_vfmlsl_lane_high_u32, test_vfmlal_laneq_high_u32, ++ test_vfmlsl_laneq_high_u32, test_vfmlalq_lane_high_u32, ++ test_vfmlslq_lane_high_u32, test_vfmlalq_laneq_high_u32, ++ test_vfmlslq_laneq_high_u32): Rename ... ++ (test_vfmlal_lane_high_f16, tets_vfmlsl_lane_high_f16, ++ test_vfmlal_laneq_high_f16, test_vfmlsl_laneq_high_f16, ++ test_vfmlalq_lane_high_f16, test_vfmlslq_lane_high_f16, ++ test_vfmlalq_laneq_high_f16, test_vfmlslq_laneq_high_f16): ... To this. ++ * gcc.target/aarch64/fp16_fmul_lane_low.h (test_vfmlal_lane_low_u32, ++ test_vfmlsl_lane_low_u32, test_vfmlal_laneq_low_u32, ++ test_vfmlsl_laneq_low_u32, test_vfmlalq_lane_low_u32, ++ test_vfmlslq_lane_low_u32, test_vfmlalq_laneq_low_u32, ++ test_vfmlslq_laneq_low_u32): Rename ... ++ (test_vfmlal_lane_low_f16, test_vfmlsl_lane_low_f16, ++ test_vfmlal_laneq_low_f16, test_vfmlsl_laneq_low_f16, ++ test_vfmlalq_lane_low_f16, test_vfmlslq_lane_low_f16, ++ test_vfmlalq_laneq_low_f16, test_vfmlslq_laneq_low_f16): ... To this. ++ * gcc.target/aarch64/fp16_fmul_low.h (test_vfmlal_low_u32, ++ test_vfmlalq_low_u32, test_vfmlsl_low_u32, test_vfmlslq_low_u32): ++ Rename ... ++ (test_vfmlal_low_f16, test_vfmlalq_low_f16, test_vfmlsl_low_f16, ++ test_vfmlslq_low_f16): ... To This. ++ * lib/target-supports.exp ++ (check_effective_target_arm_fp16fml_neon_ok_nocache): Update test. ++ ++2020-09-24 Tamar Christina ++ ++ Backported from master: ++ 2018-05-21 Tamar Christina ++ ++ PR target/71233 ++ * gcc.target/aarch64/sha3.h (veor3q_u8, veor3q_u32, ++ veor3q_u64, veor3q_s8, veor3q_s16, veor3q_s32, veor3q_s64, vbcaxq_u8, ++ vbcaxq_u32, vbcaxq_u64, vbcaxq_s8, vbcaxq_s16, vbcaxq_s32, ++ vbcaxq_s64): New. ++ * gcc.target/aarch64/sha3_1.c: Likewise. ++ * gcc.target/aarch64/sha3_2.c: Likewise. ++ * gcc.target/aarch64/sha3_3.c: Likewise. ++ ++2020-09-22 Vlad Lazar ++ ++ Backported from master: ++ 2018-08-31 Vlad Lazar ++ ++ PR target/71233 ++ * gcc.target/aarch64/scalar_intrinsics.c (test_vnegd_s64): New. ++ * gcc.target/aarch64/vneg_s.c (RUN_TEST_SCALAR): New. ++ (test_vnegd_s64): Likewise. ++ * gcc.target/aarch64/vnegd_s64.c: New. ++ * gcc.target/aarch64/vabsd_s64.c: New. ++ * gcc.target/aarch64/vabs_intrinsic_3.c: New file. ++ ++2020-09-19 Harald Anlauf ++ ++ Backported from master: ++ 2020-07-02 Harald Anlauf ++ ++ PR fortran/93423 ++ * gfortran.dg/pr93423.f90: New file. ++ ++2020-09-18 Jakub Jelinek ++ ++ Backported from master: ++ 2020-09-16 Jakub Jelinek ++ ++ PR tree-optimization/97053 ++ * gcc.dg/store_merging_31.c: New test. ++ * gcc.dg/store_merging_32.c: New test. ++ ++2020-09-17 Jakub Jelinek ++ ++ Backported from master: ++ 2020-08-25 Jakub Jelinek ++ ++ PR tree-optimization/96722 ++ * g++.dg/opt/pr96722.C: New test. ++ ++2020-09-17 Jakub Jelinek ++ ++ Backported from master: ++ 2020-08-18 Jakub Jelinek ++ ++ PR c/96571 ++ * gcc.dg/Wunused-var-4.c: New test. ++ ++2020-09-17 Jakub Jelinek ++ ++ Backported from master: ++ 2020-08-11 Jakub Jelinek ++ ++ PR c/96545 ++ * c-c++-common/pr96545.c: New test. ++ ++2020-09-17 Jakub Jelinek ++ ++ Backported from master: ++ 2020-07-15 Jakub Jelinek ++ ++ PR target/96174 ++ * gcc.target/i386/avx512f-vcmppd-3.c: New test. ++ * gcc.target/i386/avx512f-vcmpps-3.c: New test. ++ ++2020-09-17 Jakub Jelinek ++ ++ Backported from master: ++ 2020-07-02 Jakub Jelinek ++ ++ PR tree-optimization/95857 ++ * gcc.dg/pr95857.c: New test. ++ ++2020-09-17 Jakub Jelinek ++ ++ Backported from master: ++ 2020-06-27 Jakub Jelinek ++ ++ PR middle-end/95903 ++ * c-c++-common/pr95903.c: New test. ++ ++2020-09-17 Jakub Jelinek ++ ++ Backported from master: ++ 2020-05-28 Jakub Jelinek ++ ++ PR c++/95328 ++ * g++.dg/cpp1z/decomp53.C: New test. ++ ++2020-09-17 Jakub Jelinek ++ ++ Backported from master: ++ 2020-05-14 Jakub Jelinek ++ ++ PR middle-end/95108 ++ * gcc.dg/gomp/pr95108.c: New test. ++ ++2020-09-17 Jakub Jelinek ++ ++ Backported from master: ++ 2020-05-13 Jakub Jelinek ++ ++ PR debug/95080 ++ * g++.dg/opt/pr95080.C: New test. ++ ++2020-09-17 Jakub Jelinek ++ ++ Backported from master: ++ 2020-05-07 Jakub Jelinek ++ ++ PR c++/94951 ++ * g++.dg/warn/Wstrict-aliasing-bogus-tmpl.C: New test. ++ ++2020-09-17 Jakub Jelinek ++ ++ Backported from master: ++ 2020-05-07 Jakub Jelinek ++ ++ PR rtl-optimization/94873 ++ * gcc.dg/pr94873.c: New test. ++ ++2020-09-17 Jakub Jelinek ++ ++ Backported from master: ++ 2020-05-07 Jakub Jelinek ++ ++ PR c/94842 ++ * gcc.dg/pr94842.c: New test. ++ ++2020-09-17 Jakub Jelinek ++ ++ Backported from master: ++ 2020-04-28 Jakub Jelinek ++ ++ PR tree-optimization/94809 ++ * gcc.c-torture/execute/pr94809.c: New test. ++ ++2020-09-17 Jakub Jelinek ++ ++ Backported from master: ++ 2020-04-27 Jakub Jelinek ++ ++ PR target/94780 ++ * gcc.dg/pr94780.c: New test. ++ ++2020-09-17 Jakub Jelinek ++ ++ Backported from master: ++ 2020-04-24 Jakub Jelinek ++ ++ PR c++/94742 ++ * g++.dg/warn/Wreturn-type-12.C: New test. ++ ++2020-09-17 Jakub Jelinek ++ ++ Backported from master: ++ 2020-04-23 Jakub Jelinek ++ ++ PR c/94705 ++ * gcc.dg/pr94705.c: New test. ++ ++2020-09-17 Jakub Jelinek ++ ++ Backported from master: ++ 2020-04-21 Jakub Jelinek ++ ++ PR c/94641 ++ * c-c++-common/ubsan/pr94641.c: New test. ++ ++2020-09-17 Jakub Jelinek ++ ++ Backported from master: ++ 2020-04-17 Jakub Jelinek ++ ++ PR rtl-optimization/94618 ++ * g++.dg/opt/pr94618.C: New test. ++ ++2020-09-17 Jakub Jelinek ++ ++ Backported from master: ++ 2020-04-16 Jakub Jelinek ++ ++ PR c++/94571 ++ * g++.dg/cpp1z/decomp51.C: New test. ++ ++2020-09-17 Jakub Jelinek ++ ++ Backported from master: ++ 2020-04-08 Jakub Jelinek ++ ++ PR tree-optimization/94524 ++ * gcc.c-torture/execute/pr94524-1.c: New test. ++ * gcc.c-torture/execute/pr94524-2.c: New test. ++ ++2020-09-17 Jakub Jelinek ++ ++ Backported from master: ++ 2020-04-08 Jakub Jelinek ++ ++ PR target/94438 ++ * gcc.target/i386/avx512bw-pr94438.c: New test. ++ * gcc.target/i386/avx512vlbw-pr94438.c: New test. ++ ++2020-09-17 Jakub Jelinek ++ ++ Backported from master: ++ 2020-04-08 Jakub Jelinek ++ ++ PR c++/94325 ++ * g++.dg/ubsan/vptr-15.C: New test. ++ ++2020-09-17 Jakub Jelinek ++ ++ Backported from master: ++ 2020-04-07 Jakub Jelinek ++ ++ PR target/94509 ++ * gcc.target/i386/avx512bw-pr94509-1.c: New test. ++ * gcc.target/i386/avx512bw-pr94509-2.c: New test. ++ ++2020-09-17 Jakub Jelinek ++ ++ Backported from master: ++ 2020-04-07 Jakub Jelinek ++ ++ PR target/94488 ++ * gcc.c-torture/compile/pr94488.c: New test. ++ ++2020-09-17 Jakub Jelinek ++ ++ Backported from master: ++ 2020-04-07 Hannes Domani ++ Jakub Jelinek ++ ++ PR debug/94459 ++ * g++.dg/debug/pr94459.C: New test. ++ ++2020-09-17 Jakub Jelinek ++ ++ Backported from master: ++ 2020-04-07 Jakub Jelinek ++ ++ PR target/94460 ++ * gcc.target/i386/avx2-pr94460.c: New test. ++ ++2020-09-17 Jakub Jelinek ++ ++ Backported from master: ++ 2020-04-07 Jakub Jelinek ++ ++ PR middle-end/94423 ++ * gcc.dg/ubsan/pr94423.c: New test. ++ ++2020-09-17 Jakub Jelinek ++ ++ Backported from master: ++ 2020-04-07 Marc Glisse ++ Jakub Jelinek ++ ++ PR middle-end/94412 ++ * gcc.c-torture/execute/pr94412.c: New test. ++ ++2020-09-17 Jakub Jelinek ++ ++ Backported from master: ++ 2020-04-07 Jakub Jelinek ++ ++ PR target/93069 ++ * gcc.target/i386/avx512vl-pr93069.c: New test. ++ * gcc.dg/vect/pr93069.c: New test. ++ ++2020-09-17 Jakub Jelinek ++ ++ Backported from master: ++ 2020-04-07 Jakub Jelinek ++ ++ PR tree-optimization/94329 ++ * gfortran.dg/pr94329.f90: New test. ++ ++2020-09-17 Jakub Jelinek ++ ++ Backported from master: ++ 2020-04-07 Jakub Jelinek ++ ++ PR middle-end/94303 ++ * g++.dg/torture/pr94303.C: New test. ++ ++2020-09-17 Jakub Jelinek ++ ++ Backported from master: ++ 2020-04-07 Richard Biener ++ Jakub Jelinek ++ ++ PR debug/94283 ++ * gcc.dg/pr94283.c: New test. ++ ++2020-09-17 Jakub Jelinek ++ ++ Backported from master: ++ 2020-04-07 Jakub Jelinek ++ ++ PR debug/94283 ++ * gcc.target/i386/pr94283.c: New test. ++ ++2020-09-17 Jakub Jelinek ++ ++ Backported from master: ++ 2020-04-07 Jakub Jelinek ++ ++ PR tree-optimization/94211 ++ * gcc.dg/pr94211.c: New test. ++ ++2020-09-17 Jakub Jelinek ++ ++ Backported from master: ++ 2020-04-07 Jakub Jelinek ++ ++ PR c/94172 ++ * gcc.dg/pr94172-1.c: New test. ++ * gcc.dg/pr94172-2.c: New test. ++ ++2020-09-17 Jakub Jelinek ++ ++ Backported from master: ++ 2020-04-07 Jakub Jelinek ++ ++ PR c++/90995 ++ * g++.dg/cpp0x/enum40.C: New test. ++ ++2020-09-17 Jakub Jelinek ++ ++ Backported from master: ++ 2020-03-17 Jakub Jelinek ++ ++ PR debug/94167 ++ * gcc.dg/pr94167.c: New test. ++ ++2020-09-17 Jakub Jelinek ++ ++ Backported from master: ++ 2020-03-17 Jakub Jelinek ++ ++ PR tree-optimization/94130 ++ * gcc.c-torture/execute/pr94130.c: New test. ++ ++2020-09-17 Jakub Jelinek ++ ++ Backported from master: ++ 2020-03-17 Jakub Jelinek ++ ++ PR target/94134 ++ * gcc.c-torture/execute/pr94134.c: New test. ++ ++2020-09-17 Jakub Jelinek ++ ++ Backported from master: ++ 2020-03-17 Jakub Jelinek ++ ++ PR target/94121 ++ * gcc.dg/pr94121.c: New test. ++ ++2020-09-17 Jakub Jelinek ++ ++ Backported from master: ++ 2020-03-17 Jakub Jelinek ++ ++ PR middle-end/94111 ++ * gcc.dg/dfp/pr94111.c: New test. ++ ++2020-09-17 Jakub Jelinek ++ ++ Backported from master: ++ 2020-03-17 Jakub Jelinek ++ ++ PR tree-optimization/94114 ++ * gcc.dg/pr94114.c: New test. ++ ++2020-09-17 Jakub Jelinek ++ ++ Backported from master: ++ 2020-03-17 Jakub Jelinek ++ ++ PR middle-end/93399 ++ * gcc.dg/pr93399.c: New test. ++ ++2020-09-17 Jakub Jelinek ++ ++ Backported from master: ++ 2020-03-17 Jakub Jelinek ++ ++ PR debug/93888 ++ * g++.dg/guality/pr93888.C: New test. ++ ++2020-09-17 Jakub Jelinek ++ ++ Backported from master: ++ 2020-03-05 Jakub Jelinek ++ ++ PR target/94046 ++ * g++.dg/ext/pr94046-1.C: New test. ++ * g++.dg/ext/pr94046-2.C: New test. ++ ++2020-09-17 Jakub Jelinek ++ ++ Backported from master: ++ 2020-03-03 Jakub Jelinek ++ ++ PR rtl-optimization/94002 ++ * gcc.dg/pr94002.c: New test. ++ ++2020-09-16 Will Schmidt ++ ++ PR target/96139 ++ * gcc.target/powerpc/pr96139-a.c: New test. ++ * gcc.target/powerpc/pr96139-b.c: New test. ++ * gcc.target/powerpc/pr96139-c.c: New test. ++ ++2020-09-16 Sylvia Taylor ++ ++ Backported from master: ++ 2019-08-22 Sylvia Taylor ++ ++ * gcc.target/aarch64/advsimd-intrinsics/vld1x4.c: New test. ++ * gcc.target/aarch64/advsimd-intrinsics/vst1x4.c: New test. ++ ++2020-09-16 Sameera Deshpande ++ ++ Backported from master: ++ 2018-05-31 Sameera Deshpande ++ ++ * gcc.target/aarch64/advsimd-intrinsics/vld1x3.c: New test for ++ vld1x3 intrinsics for aarch64. ++ * gcc.target/aarch64/advsimd-intrinsics/vst1x2.c: New test for ++ vst1x2 intrinsics for aarch64. ++ * gcc.target/aarch64/advsimd-intrinsics/vst1x3.c: New test for ++ vst1x3 intrinsics for aarch64. ++ ++2020-09-09 Harald Anlauf ++ ++ Backported from master: ++ 2020-09-03 Harald Anlauf ++ ++ * gfortran.dg/iall_masked.f90: New test. ++ ++2020-08-21 Tamar Christina ++ ++ Backported from master: ++ 2020-07-17 Tamar Christina ++ ++ * gcc.target/aarch64/cpunative/aarch64-cpunative.exp: New file. ++ * gcc.target/aarch64/cpunative/info_0: New test. ++ * gcc.target/aarch64/cpunative/info_1: New test. ++ * gcc.target/aarch64/cpunative/info_10: New test. ++ * gcc.target/aarch64/cpunative/info_11: New test. ++ * gcc.target/aarch64/cpunative/info_12: New test. ++ * gcc.target/aarch64/cpunative/info_13: New test. ++ * gcc.target/aarch64/cpunative/info_14: New test. ++ * gcc.target/aarch64/cpunative/info_15: New test. ++ * gcc.target/aarch64/cpunative/info_2: New test. ++ * gcc.target/aarch64/cpunative/info_3: New test. ++ * gcc.target/aarch64/cpunative/info_4: New test. ++ * gcc.target/aarch64/cpunative/info_5: New test. ++ * gcc.target/aarch64/cpunative/info_6: New test. ++ * gcc.target/aarch64/cpunative/info_7: New test. ++ * gcc.target/aarch64/cpunative/info_8: New test. ++ * gcc.target/aarch64/cpunative/info_9: New test. ++ * gcc.target/aarch64/cpunative/native_cpu_0.c: New test. ++ * gcc.target/aarch64/cpunative/native_cpu_1.c: New test. ++ * gcc.target/aarch64/cpunative/native_cpu_10.c: New test. ++ * gcc.target/aarch64/cpunative/native_cpu_13.c: New test. ++ * gcc.target/aarch64/cpunative/native_cpu_14.c: New test. ++ * gcc.target/aarch64/cpunative/native_cpu_2.c: New test. ++ * gcc.target/aarch64/cpunative/native_cpu_3.c: New test. ++ * gcc.target/aarch64/cpunative/native_cpu_4.c: New test. ++ * gcc.target/aarch64/cpunative/native_cpu_5.c: New test. ++ * gcc.target/aarch64/cpunative/native_cpu_6.c: New test. ++ * gcc.target/aarch64/cpunative/native_cpu_7.c: New test. ++ * gcc.target/aarch64/cpunative/native_cpu_8.c: New test. ++ ++2020-08-21 Tamar Christina ++ ++ Backported from master: ++ 2020-07-17 Tamar Christina ++ ++ * lib/gcc-dg.exp (dg-set-compiler-env-var, dg-set-target-env-var): Add ++ verbose output. ++ ++2020-08-12 Kewen Lin ++ ++ PR testsuite/94077 ++ * gcc.dg/gomp/pr82374.c: Add option -fno-common. ++ ++2020-08-07 Jakub Jelinek ++ ++ Backported from master: ++ 2020-08-03 Jakub Jelinek ++ ++ PR target/96402 ++ * gcc.target/aarch64/pr96402.c: New test. ++ ++2020-07-25 Dominique d'Humieres ++ ++ Backported from master: ++ 2020-07-24 Dominique d'Humieres ++ ++ PR fortran/93592 ++ * gfortran.dg/fmt_en.f90: Adjust test. ++ * gfortran.dg/fmt_en_rd.f90: New test. ++ * gfortran.dg/fmt_en_rn.f90: New test. ++ * gfortran.dg/fmt_en_ru.f90: New test. ++ * gfortran.dg/fmt_en_rz.f90: New test. ++ ++2020-07-23 Harald Anlauf ++ ++ Backported from master: ++ 2020-07-21 Harald Anlauf ++ ++ PR fortran/89574 ++ * gfortran.dg/pr89574.f90: New file. ++ ++2020-07-16 Stefan Schulze Frielinghaus ++ ++ Backported from master: ++ 2020-06-16 Stefan Schulze Frielinghaus ++ ++ * gcc.target/s390/vector/align-1.c: Change target architecture ++ to z13. ++ * gcc.target/s390/vector/align-2.c: Change target architecture ++ to z13. ++ ++2020-07-16 Andreas Krebbel ++ ++ Backported from master: ++ 2018-11-21 Andreas Krebbel ++ ++ * gcc.target/s390/vector/align-1.c: New test. ++ * gcc.target/s390/vector/align-2.c: New test. ++ ++2020-07-13 Will Schmidt ++ ++ * gcc.target/powerpc/builtins-msum-runnable.c: New test. ++ * gcc.target/powerpc/vsx-builtin-msum.c: New test. ++ Modified from ... ++ (cherry picked from commit c1a57681a64150d2fc336ba8e055c5f82e3737e8) ++ ++2020-07-06 Will Schmidt ++ ++ * gcc.target/powerpc/builtins-1-p9-runnable.c: Update. ++ ++2020-07-05 Harald Anlauf ++ ++ Backported from master: ++ 2020-06-30 Harald Anlauf ++ ++ PR fortran/88379 ++ * gfortran.dg/pr88379.f90: New file. ++ ++2020-07-02 Harald Anlauf ++ ++ Backported from master: ++ 2020-06-29 Harald Anlauf ++ ++ PR fortran/71706 ++ * gfortran.dg/pr71706.f90: New file. ++ ++2020-07-01 Mark Eggleston ++ ++ Backported from master: ++ 2020-07-01 Steven G. Kargl ++ ++ PR fortran/95829 ++ * gfortran.dg/pr95829.f90: New test. ++ ++2020-06-30 Alex Coplan ++ ++ Backported from master: ++ 2020-05-18 Alex Coplan ++ ++ * gcc.c-torture/compile/packed-aligned-1.c: New test. ++ * gcc.c-torture/execute/packed-aligned.c: New test. ++ ++2020-06-24 Harald Anlauf ++ ++ PR fortran/95689 ++ * gfortran.dg/pr95689.f90: New test. ++ (reverts the cherry-pick from commit 62c0c0ea7bfb6f8f6b8d767b05120cafb6823da6) ++ ++2020-06-23 Harald Anlauf ++ ++ Backported from master: ++ 2020-06-20 Harald Anlauf ++ ++ PR fortran/95689 ++ * gfortran.dg/pr95689.f90: New file. ++ ++2020-06-20 Bin Cheng ++ ++ PR tree-optimization/95110 ++ * gcc.dg/tree-ssa/pr94969.c: Swap scan-tree-dump-not arguments. ++ ++2020-06-20 Bin Cheng ++ Jakub Jelinek ++ ++ PR tree-optimization/94969 ++ * gcc.dg/tree-ssa/pr94969.c: New test. ++ ++2020-06-17 Thomas Schwinge ++ ++ Backported from master: ++ 2020-06-17 Thomas Schwinge ++ ++ * c-c++-common/gomp/hsa-indirect-call-1.c: New file. ++ ++2020-06-14 Thomas Koenig ++ ++ PR fortran/94109 ++ * gfortran.dg/finalize_34.f90: Adjust free counts. ++ * gfortran.dg/finalize_36.f90: New test. ++ ++2020-06-01 Thomas Koenig ++ ++ PR fortran/94361 ++ * gfortran.dg/finalize_28.f90: Adjusted free counts. ++ * gfortran.dg/finalize_34.f90: Likewise. ++ * gfortran.dg/finalize_35.f90: New test. ++ ++2020-05-29 Alex Coplan ++ ++ PR target/94591 ++ * gcc.c-torture/execute/pr94591.c: New test. ++ ++2020-05-28 Tobias Burnus ++ ++ PR fortran/50392 ++ * gfortran.dg/pr50392.f: New test. ++ ++2020-05-25 Jason Merrill ++ ++ PR c++/90749 ++ * g++.dg/cpp0x/nsdmi-template20.C: New file. ++ ++2020-05-25 Jason Merrill ++ ++ PR c++/91529 ++ * g++.dg/init/const14.C: New file. ++ ++2020-05-21 Martin Liska ++ ++ * gcc.target/aarch64/target_attr_20.c: New test. ++ * gcc.target/aarch64/target_attr_21.c: New test. ++ ++2020-05-20 Mark Eggleston ++ ++ Backport from master ++ 2020-05-20 Mark Eggleston ++ ++ PR fortran/39695 ++ * gfortran.dg/pr39695_1.f90: New test. ++ * gfortran.dg/pr39695_2.f90: New test. ++ * gfortran.dg/pr39695_3.f90: New test. ++ * gfortran.dg/pr39695_4.f90: New test. ++ ++2020-05-18 Doug Rupp ++ ++ * gcc.target/powerpc/pr71763.c: Require powerpc_vsx_ok. ++ ++2020-05-14 Szabolcs Nagy ++ ++ Backport from mainline. ++ 2020-04-27 Szabolcs Nagy ++ ++ PR target/94515 ++ * g++.target/aarch64/pr94515-1.C: New test. ++ * g++.target/aarch64/pr94515-2.C: New test. ++ ++2020-05-14 Szabolcs Nagy ++ ++ Backport from mainline. ++ 2020-04-23 Szabolcs Nagy ++ ++ PR target/94514 ++ * g++.target/aarch64/pr94514.C: Require lp64. ++ * gcc.target/aarch64/pr94514.c: Likewise. ++ ++ Backport from mainline. ++ 2020-04-21 Szabolcs Nagy ++ ++ PR target/94514 ++ * g++.target/aarch64/pr94514.C: New test. ++ * gcc.target/aarch64/pr94514.c: New test. ++ ++2020-05-11 Mark Eggleston ++ ++ Backported from mainline ++ 2020-05-11 Mark Eggleston ++ ++ PR fortran/59107 ++ * gfortran.dg/pr59107.f90: New test. ++ ++2020-05-04 Bin Cheng ++ ++ PR tree-optimization/93674 ++ Backport from master ++ 2020-04-09 Bin Cheng ++ ++ * g++.dg/pr93674.C: New test. ++ ++2020-05-04 Andreas Krebbel ++ ++ Backport from mainline ++ 2020-04-20 Andreas Krebbel ++ ++ * g++.dg/pr94666.C: New test. ++ ++2020-05-04 Andreas Krebbel ++ ++ Backport from mainline ++ 2020-04-20 Andreas Krebbel ++ ++ PR target/94613 ++ * gcc.target/s390/zvector/pr94613.c: New test. ++ * gcc.target/s390/zvector/vec_sel-1.c: New test. ++ ++2020-05-01 Thomas Koenig ++ ++ PR fortran/93956 ++ PR fortran/94788 ++ * gfortran.dg/pointer_assign_13.f90: Remove. ++ ++2020-04-24 Thomas Koenig ++ ++ Backport from trunk ++ PR fortran/93956 ++ * gfortran.dg/pointer_assign_13.f90: New test. ++ ++2020-04-16 Andre Vieira ++ ++ Backport from mainline ++ 2020-04-02 Jakub Jelinek ++ ++ PR target/94435 ++ * gcc.target/aarch64/pr94435.c: New test. ++ ++2020-04-16 Andre Vieira ++ ++ Backport from mainline ++ 2020-03-31 Jakub Jelinek ++ ++ * gcc.dg/pr94368.c: New test. ++ ++2020-04-16 Andre Vieira ++ ++ Backport from mainline ++ 2019-09-19 Richard Henderson ++ ++ * gcc.target/aarch64/atomic-op-acq_rel.c: Use -mno-outline-atomics. ++ * gcc.target/aarch64/atomic-comp-swap-release-acquire.c: Likewise. ++ * gcc.target/aarch64/atomic-op-acquire.c: Likewise. ++ * gcc.target/aarch64/atomic-op-char.c: Likewise. ++ * gcc.target/aarch64/atomic-op-consume.c: Likewise. ++ * gcc.target/aarch64/atomic-op-imm.c: Likewise. ++ * gcc.target/aarch64/atomic-op-int.c: Likewise. ++ * gcc.target/aarch64/atomic-op-long.c: Likewise. ++ * gcc.target/aarch64/atomic-op-relaxed.c: Likewise. ++ * gcc.target/aarch64/atomic-op-release.c: Likewise. ++ * gcc.target/aarch64/atomic-op-seq_cst.c: Likewise. ++ * gcc.target/aarch64/atomic-op-short.c: Likewise. ++ * gcc.target/aarch64/atomic_cmp_exchange_zero_reg_1.c: Likewise. ++ * gcc.target/aarch64/atomic_cmp_exchange_zero_strong_1.c: Likewise. ++ * gcc.target/aarch64/sync-comp-swap.c: Likewise. ++ * gcc.target/aarch64/sync-op-acquire.c: Likewise. ++ * gcc.target/aarch64/sync-op-full.c: Likewise. ++ ++2020-04-21 Martin Jambor ++ ++ Backport from master ++ 2020-04-09 Martin Jambor ++ ++ PR tree-optimization/94482 ++ * gcc.dg/torture/pr94482.c: New test. ++ * gcc.dg/tree-ssa/pr94482-2.c: Likewise. ++ ++2020-04-20 Tamar Christina ++ ++ Backport from mainline. ++ 2020-04-03 Tamar Christina ++ ++ PR target/94396 ++ * gcc.target/aarch64/options_set_11.c: New test. ++ * gcc.target/aarch64/options_set_12.c: New test. ++ * gcc.target/aarch64/options_set_13.c: New test. ++ * gcc.target/aarch64/options_set_14.c: New test. ++ * gcc.target/aarch64/options_set_15.c: New test. ++ * gcc.target/aarch64/options_set_16.c: New test. ++ * gcc.target/aarch64/options_set_17.c: New test. ++ * gcc.target/aarch64/options_set_18.c: New test. ++ * gcc.target/aarch64/options_set_19.c: New test. ++ * gcc.target/aarch64/options_set_20.c: New test. ++ * gcc.target/aarch64/options_set_21.c: New test. ++ * gcc.target/aarch64/options_set_22.c: New test. ++ * gcc.target/aarch64/options_set_23.c: New test. ++ * gcc.target/aarch64/options_set_24.c: New test. ++ * gcc.target/aarch64/options_set_25.c: New test. ++ * gcc.target/aarch64/options_set_26.c: New test. ++ ++2020-04-17 H.J. Lu ++ ++ Backport from master ++ 2020-04-08 H.J. Lu ++ ++ PR target/94417 ++ * gcc.target/i386/pr94417-1.c: New test. ++ * gcc.target/i386/pr94417-2.c: Likewise. ++ * gcc.target/i386/pr94417-3.c: Likewise. ++ ++2020-04-15 UroÅ¡ Bizjak ++ ++ PR target/94603 ++ * gcc.target/i386/pr94603.c: New test. ++ ++2020-04-15 Max Filippov ++ ++ Backport from mainline. ++ 2020-04-13 Max Filippov ++ ++ PR target/94584 ++ * gcc.target/xtensa/pr94584.c: New test. ++ ++2020-04-15 Max Filippov ++ ++ Backport from mainline. ++ 2019-09-26 Max Filippov ++ ++ * gcc.target/xtensa/pr91880.c: New test case. ++ * gcc.target/xtensa/xtensa.exp: New test suite. ++ ++2020-04-14 Thomas Koenig ++ ++ Backport from trunk ++ PR fortran/94270 ++ * gfortran.dg/warn_unused_dummy_argument_6.f90: New test. ++ ++2020-04-07 Will Schmidt ++ ++ Backport from mainline. ++ 2020-03-23 Will Schmidt ++ ++ * gcc.target/powerpc/pragma_power6.c: New. ++ * gcc.target/powerpc/pragma_power7.c: New. ++ * gcc.target/powerpc/pragma_power8.c: New. ++ * gcc.target/powerpc/pragma_power9.c: New. ++ * gcc.target/powerpc/pragma_misc9.c: New. ++ * gcc.target/powerpc/vsu/pragma_misc9.c: New. ++ * gcc.target/powerpc/vsu/vec-all-nez-7.c: Update. ++ * gcc.target/powerpc/vsu/vec-any-eqz-7.c: Update. ++ ++2020-04-07 Jakub Jelinek ++ ++ PR target/94500 ++ * gcc.target/i386/avx512bw-pr94500.c: New test. ++ ++2020-04-03 Martin Jambor ++ ++ PR tree-optimization/93435 ++ * gcc.dg/tree-ssa/pr93435.c: New test. ++ ++2020-04-02 Fritz Reese ++ ++ Backport from master. ++ 2020-04-02 Fritz Reese ++ ++ PR fortran/85982 ++ * gfortran.dg/dec_structure_28.f90: New test. ++ ++2020-04-02 Mark Eggleston ++ ++ Backport from master ++ 2020-04-02 Steven G. Kargl ++ ++ PR fortran/94030 ++ * resolve.c (resolve_equivalence): Correct formatting ++ around the label "identical_types". Instead of using ++ gfc_resolve_array_spec use is_non_constants_shape_array ++ to determine whether the array can be used in a in an ++ equivalence statement. ++ ++2020-03-25 Mark Eggleston ++ ++ Backport from master ++ 2020-03-25 Mark Eggleston ++ ++ PR fortran/93484 ++ * gfortran.dg/pr93484_1.f90: New test. ++ * gfortran.dg/pr93484_2.f90: New test. ++ ++2020-03-24 Tamar Christina ++ ++ * g++.target/aarch64/aarch64.exp: New file. ++ * g++.target/aarch64/pr94052.C: New test. ++ ++2020-03-12 Richard Earnshaw ++ ++ Backport from master ++ 2020-02-10 Jakub Jelinek ++ ++ PR target/91913 ++ * gfortran.dg/pr91913.f90: New test. ++ ++2020-02-27 Jakub Jelinek ++ ++ PR c/93949 ++ * gcc.c-torture/compile/pr93949.c: New test. ++ ++2020-02-04 Tobias Burnus ++ ++ Backported from mainline ++ 2020-01-31 Tobias Burnus ++ ++ PR fortran/93462 ++ * gfortran.dg/goacc/atomic-1.f90: New. ++ + 2020-03-04 Release Manager + + * GCC 8.4.0 released. +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/c-c++-common/gomp/hsa-indirect-call-1.c +@@ -0,0 +1,24 @@ ++/* Instead of ICE, we'd like "HSA does not implement indirect calls". */ ++ ++/* Reduced from 'libgomp.c/target-39.c'. */ ++ ++/* { dg-require-effective-target offload_hsa } */ ++/* { dg-additional-options "-Whsa" } to override '{gcc,g++}.dg/gomp/gomp.exp'. */ ++ ++typedef void (*fnp) (void); ++void f1 (void) { } ++fnp f2 (void) { return f1; } ++#pragma omp declare target to (f1, f2) ++ ++int ++main () ++{ ++ #pragma omp target ++ { ++ fnp fnp = f2 (); ++ fnp (); /* { dg-message "note: support for HSA does not implement indirect calls" } */ ++ } ++ return 0; ++} ++ ++/* { dg-warning "could not emit HSAIL for the function" "" { target *-*-* } 0 } */ +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/c-c++-common/pr95903.c +@@ -0,0 +1,19 @@ ++/* PR middle-end/95903 */ ++/* { dg-do compile { target lp64 } } */ ++/* { dg-options "-O2 -fwrapv -fdump-tree-optimized" } */ ++/* Verify that for -fwrapv the + 1 addition is performed in the parameter's ++ type before sign extending it. */ ++/* { dg-final { scan-tree-dump-times "off_\[0-9]+\\\(D\\\) \\+ 1" 2 "optimized" } } */ ++ ++char ++foo (const char *ptr, int off) ++{ ++ off += 1; ++ return ptr[off]; ++} ++ ++char ++bar (const char *ptr, int off) ++{ ++ return ptr[off + 1]; ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/c-c++-common/pr96545.c +@@ -0,0 +1,31 @@ ++/* PR c/96545 */ ++/* { dg-do compile } */ ++ ++extern char x[], y[], z[]; ++struct S; ++extern struct S s, t, u; ++int v, w; ++ ++void ++foo (void) ++{ ++ __atomic_exchange (&x, &y, &z, 0); /* { dg-error "must be a pointer to a complete type" } */ ++} ++ ++void ++bar (void) ++{ ++ __atomic_exchange (&s, &t, &u, 0); /* { dg-error "must be a pointer to a complete type" } */ ++} ++ ++void ++baz (void) ++{ ++ __atomic_exchange (&v, &t, &w, 0); /* { dg-error "size mismatch in argument 2 of" } */ ++} ++ ++void ++qux (void) ++{ ++ __atomic_exchange (&v, &w, &t, 0); /* { dg-error "size mismatch in argument 3 of" } */ ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/c-c++-common/ubsan/pr94641.c +@@ -0,0 +1,11 @@ ++/* PR c/94641 */ ++/* { dg-do compile } */ ++/* { dg-options "-fsanitize=undefined -Wpadded" } */ ++ ++void foo (void *) __attribute__((nonnull)); ++ ++void ++bar (void *p) ++{ ++ foo (p); ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/g++.dg/abi/mangle75.C +@@ -0,0 +1,13 @@ ++// PR c++/91377 ++// { dg-do compile { target c++11 } } ++ ++struct f { ++ static constexpr int d = 3; ++ typedef int e; ++}; ++template struct x { }; ++template using n = x; ++template auto v() -> n; ++void af() { v(); } ++ ++// { dg-final { scan-assembler "_Z1vI1fE1xIXplLi0EsrT_1dEEv" } } +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/g++.dg/cpp0x/alignof5.C +@@ -0,0 +1,6 @@ ++// PR c++/90736 - bogus error with alignof. ++// { dg-do compile { target c++11 } } ++ ++constexpr int fn(const int b) { return b; } ++constexpr int c = fn(alignof(int)); ++alignas(c) char d; +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/g++.dg/cpp0x/enum40.C +@@ -0,0 +1,26 @@ ++// PR c++/90995 ++// { dg-do compile { target c++11 } } ++ ++void ++foo () ++{ ++ enum : int a alignas; // { dg-error "expected" } ++} ++ ++void ++bar () ++{ ++ enum : int a; // { dg-error "expected" } ++} ++ ++void ++baz () ++{ ++ enum class a : int b alignas; // { dg-error "expected" } ++} ++ ++void ++qux () ++{ ++ enum class a : int b; // { dg-error "expected" } ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-variadic10.C +@@ -0,0 +1,12 @@ ++// PR c++/92909 ++// { dg-do compile { target c++11 } } ++ ++template ++void foo() ++{ ++ [] ++ { ++ using T = Ts; ++ }(); // { dg-error "not expanded" } ++} ++template void foo<>(); +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/g++.dg/cpp0x/nsdmi-template20.C +@@ -0,0 +1,13 @@ ++// PR c++/90479 ++// { dg-do compile { target c++11 } } ++ ++template ++void foo () ++{ ++ static int i {100}; ++ struct { int a {i++}; } b {}; ++} ++int main () ++{ ++ foo<0> (); ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/g++.dg/cpp0x/variadic-alias2.C +@@ -0,0 +1,103 @@ ++// PR c++/91966 ++// { dg-do compile { target c++11 } } ++ ++// Reduced to this include-free example. Further reduction is hard: Either ++// the bug(?) disappears, or the program becomes meaningless. ++ ++template ++struct list {}; ++ ++struct nil; ++ ++//////////////////////////////////////////////////////////////////////////////// ++ ++template ++struct number { ++ constexpr /*implicit*/ operator int() const { return n; } ++ using type = number; ++}; ++ ++using false_ = number<0>; ++using true_ = number<1>; ++ ++static_assert(!false_{}, ""); ++static_assert(true_{}, ""); ++ ++template using numbers = list...>; ++ ++//////////////////////////////////////////////////////////////////////////////// ++ ++template ++struct less_impl; ++ ++template ++struct less_impl, number> ++ : number<(lhs < rhs)> {}; ++ ++template using less = typename less_impl::type; ++ ++//////////////////////////////////////////////////////////////////////////////// ++ ++template ++struct sum_impl { ++ static_assert(sizeof...(vs) == 0, "see specialization"); ++ using type = v0; ++}; ++ ++template ++struct sum_impl, number, vs...> ++ : sum_impl, vs...> {}; ++ ++template using sum = typename sum_impl::type; ++ ++//////////////////////////////////////////////////////////////////////////////// ++ ++template ++struct conditional_impl { ++ static_assert(num{}, "see specialization"); ++ ++ template ++ using type = T; ++}; ++ ++template<> ++struct conditional_impl { ++ template ++ using type = F; ++}; ++ ++template ++using conditional = typename conditional_impl::template type; ++ ++//////////////////////////////////////////////////////////////////////////////// ++ ++template ++struct min_filter_impl; ++ ++template ++struct min_filter_impl> { ++ template ++ using count_better_mins = sum...>; ++ ++ using type = list, nil, nums>...>; ++ ++//using debug = list, nil, void>...>; ++ ++// error: expansion pattern 'conditional...>::type, nil, void>' contains no parameter packs ++ ++}; ++ ++template using min_filter = typename min_filter_impl::type; ++ ++//////////////////////////////////////////////////////////////////////////////// ++ ++void test_min_filter() { ++ using computed = min_filter>; ++ using expected = list, nil, number<2>>; ++ (void)(computed{} = expected{});// compiles for identical types ++ ++// error: no match for 'operator=' (operand types are 'computed' {aka 'list, number<7>, number<2> >'} and 'expected' {aka 'list, nil, number<2> >'}) ++ ++} ++ ++int main() {} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/g++.dg/cpp0x/variadic178.C +@@ -0,0 +1,6 @@ ++// PR c++/92068 ++// { dg-do compile { target c++11 } } ++ ++template struct a; ++template ++struct a { }; // { dg-error "arguments" } +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/g++.dg/cpp1z/class-deduction71.C +@@ -0,0 +1,6 @@ ++// PR c++/93248 ++// { dg-do compile { target c++17 } } ++ ++template struct S ++{ template S (T, V, long = 0); }; ++using U = decltype(S{0, 4u}); +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/g++.dg/cpp1z/decomp51.C +@@ -0,0 +1,16 @@ ++// PR c++/94571 ++// { dg-do compile { target c++17 } } ++ ++void ++foo () ++{ ++ int e[2], f[2]; ++ auto [a,b] = e, [c,d] = f; // { dg-error "expected ';' before ',' token" } ++} ++ ++void ++bar () ++{ ++ int e[2]; ++ auto [a, b] = e ); // { dg-error "expected ';' before '\\\)' token" } ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/g++.dg/cpp1z/decomp53.C +@@ -0,0 +1,22 @@ ++// PR c++/95328 ++// { dg-do compile { target c++11 } } ++// { dg-options "" } ++ ++template ++struct S ++{ ++ int a, b; ++}; ++ ++template ++void ++foo () ++{ ++ auto [a, b] = S(); // { dg-warning "structured bindings only available with" "" { target c++14_down } } ++} ++ ++int ++main () ++{ ++ foo (); ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/g++.dg/debug/localclass2.C +@@ -0,0 +1,24 @@ ++// PR c++/97918 ++// { dg-do compile { target c++11 } } ++// { dg-require-effective-target lto } ++// { dg-additional-options "-g -O -flto" } ++ ++namespace { class A {}; } ++class B {}; ++template struct H { ++ constexpr static unsigned h = 0; ++}; ++ ++template A bar () ++{ ++ struct J { ++ static void foo(); ++ }; ++ H(); ++ return A (); ++} ++ ++void fn () ++{ ++ bar; // only mentions the function ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/g++.dg/debug/pr94459.C +@@ -0,0 +1,58 @@ ++// PR debug/94459 ++// { dg-do compile { target c++14 } } ++// { dg-options "-g -dA" } ++ ++template ++struct S ++{ ++ T v; ++ T w[2]; ++ S () : v (0), w { 0, 0 } {} ++ static auto baz () { return (T) 0; } ++ auto m1 () { return v; } ++ auto &m2 () { return v; } ++ auto &&m3 () { return (T&&)v; } ++ const auto m4 () { return v; } ++ const auto &m5 () { return v; } ++ const auto &&m6 () { return (T&&)v; } ++ volatile auto m7 () { return v; } ++ volatile auto &m8 () { return v; } ++ volatile auto &&m9 () { return (T&&)v; } ++ volatile const auto m10 () { return v; } ++ volatile const auto &m11 () { return v; } ++ volatile const auto &&m12 () { return (T&&)v; } ++ const volatile auto m13 () { return v; } ++ const volatile auto &m14 () { return v; } ++ const volatile auto &&m15 () { return (T&&)v; } ++#ifndef __STRICT_ANSI__ ++ __restrict const volatile auto &&m16 () { return (T&&)v; } ++ const __restrict auto &m17 () { return v; } ++#endif ++ auto *m18 () { return &v; } ++ auto (S::* (m19 ())) () { return &S::m1; } ++ auto (S::* (m20 ())) { return &S::v; } ++ auto (*m21 ()) () { return S::baz; } ++}; ++ ++S s, u, v; ++ ++long ++foo () ++{ ++ auto x = s.m19 (); ++ auto y = s.m20 (); ++ auto z = s.m21 (); ++ return s.m1 () + s.m2 () + s.m3 () + s.m4 () + s.m5 () ++ + s.m6 () + s.m7 () + s.m8 () + s.m9 () + s.m10 () ++ + s.m11 () + s.m12 () + s.m13 () + s.m14 () + s.m15 () ++#ifndef __STRICT_ANSI__ ++ + u.m16 () + v.m17 () ++#endif ++ + *s.m18 () + (s.*x) () + s.*y + z (); ++} ++ ++int ++main () ++{ ++ return foo (); ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/g++.dg/ext/pr94046-1.C +@@ -0,0 +1,55 @@ ++// PR target/94046 ++// { dg-do compile { target i?86-*-* x86_64-*-* } } ++// { dg-options "-O2 -mavx2 -mxop" } ++ ++#include ++ ++#define S(x) struct x { operator __##x (); }; ++S (m128) ++S (m128d) ++S (m128i) ++S (m256) ++S (m256d) ++S (m256i) ++ ++__m128 ++f1 (m128 src, float const *base, m128i idx, m128 mask) ++{ ++ return _mm_mask_i32gather_ps (src, base, idx, mask, 2); ++} ++ ++__m256 ++f2 (m256 src, float const *base, m256i idx, m256 mask) ++{ ++ return _mm256_mask_i32gather_ps (src, base, idx, mask, 2); ++} ++ ++__m128 ++f3 (m128 src, float const *base, m128i idx, m128 mask) ++{ ++ return _mm_mask_i64gather_ps (src, base, idx, mask, 2); ++} ++ ++__m128d ++f4 (m128d x, m128d y, m128i c) ++{ ++ return _mm_permute2_pd (x, y, c, 3); ++} ++ ++__m128 ++f5 (m128 x, m128 y, m128i c) ++{ ++ return _mm_permute2_ps (x, y, c, 3); ++} ++ ++__m256d ++f6 (m256d x, m256d y, m256i c) ++{ ++ return _mm256_permute2_pd (x, y, c, 3); ++} ++ ++__m256 ++f7 (m256 x, m256 y, m256i c) ++{ ++ return _mm256_permute2_ps (x, y, c, 3); ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/g++.dg/ext/pr94046-2.C +@@ -0,0 +1,5 @@ ++// PR target/94046 ++// { dg-do compile { target i?86-*-* x86_64-*-* } } ++// { dg-options "-O0 -mavx2 -mxop" } ++ ++#include "pr94046-1.C" +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/g++.dg/guality/pr93888.C +@@ -0,0 +1,24 @@ ++// PR debug/93888 ++// { dg-do run } ++// { dg-options "-g -fvar-tracking -fno-inline" } ++// { dg-skip-if "" { *-*-* } { "*" } { "-O0" } } ++ ++struct K ++{ ++ K () {} ++ K (K const &rhs) { k[0] = 'C'; } ++ char k[8] = {'B','B','B','B','B','B','B','B'}; ++}; ++ ++__attribute__((always_inline)) inline bool ++foo (const K karg) ++{ ++ return karg.k[0] != 'C'; // { dg-final { gdb-test 16 "karg.k\[0]" "'C'" } } ++} // { dg-final { gdb-test 16 "karg.k\[1]" "'B'" } } ++ ++int ++main () ++{ ++ K x; ++ return foo (x); ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/g++.dg/init/const14.C +@@ -0,0 +1,14 @@ ++// PR c++/91529 ++// { dg-do run } ++// { dg-additional-options -fmerge-all-constants } ++ ++struct A ++{ ++ int i[2]; ++ ~A() { i[0] = 0; } ++}; ++ ++int main() ++{ ++ const A a = { 1,2 }; ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/g++.dg/lookup/pr84733.C +@@ -0,0 +1,21 @@ ++// { dg-do compile { target c++11 } } ++// PR c++/84733 ICE popping local binding after cleanup region ++ ++struct c { ++ ~c(); ++} b; ++ ++void f() { ++#ifndef OK ++ try { ++ d: ++ ; ++ } catch (int) { ++ } ++#endif ++ decltype(b) a; ++ int e; ++ struct e { } f; ++ e = 5; ++ struct e j; ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/g++.dg/opt/pr94618.C +@@ -0,0 +1,25 @@ ++// PR rtl-optimization/94618 ++// { dg-do compile { target c++11 } } ++// { dg-options "-O2 -fnon-call-exceptions -fcompare-debug" } ++ ++struct S ++{ ++ int a, b, c; ++ int foo () noexcept { return a; } ++ int bar () noexcept { return b; } ++ void baz (int); ++ void qux () { if (c) for (int x = foo (); x != bar (); ) baz (x); } ++}; ++ ++struct T ++{ ++ S s; ++ void foo (); ++}; ++ ++void ++T::foo () ++{ ++ s.qux (); ++ s.qux (); ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/g++.dg/opt/pr95080.C +@@ -0,0 +1,41 @@ ++// PR debug/95080 ++// { dg-do compile } ++// { dg-options "-Og -fcse-follow-jumps -fnon-call-exceptions -fcompare-debug" } ++ ++char *a; ++ ++void baz (); ++ ++static inline bool ++bar () ++{ ++ int j = a[0] - 1; ++ switch (j) ++ { ++ case 0: ++ case 2: ++ return true; ++ default: ++ return false; ++ } ++} ++ ++static inline bool ++foo () ++{ ++ if (bar ()) ++ baz (); ++ return 0; ++} ++ ++struct S ++{ ++ int h; ++ ~S (); ++}; ++ ++S::~S () ++{ ++ if (a[0] == 0) ++ foo () != h; ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/g++.dg/opt/pr96722.C +@@ -0,0 +1,20 @@ ++// PR tree-optimization/96722 ++// { dg-do run } ++// { dg-options "-O2" } ++ ++struct S { int s; ~S () {} }; ++ ++void ++foo (S *a) ++{ ++ if (a) ++ return; ++ a->~S (); ++} ++ ++int ++main () ++{ ++ S s; ++ foo (&s); ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/g++.dg/pr93674.C +@@ -0,0 +1,16 @@ ++// { dg-do compile } ++// { dg-options "-O3 -std=c++14 -fstrict-enums -pedantic -fdump-tree-optimized" } ++enum some_enum { x = 1000 }; ++void sink(some_enum); ++ ++int __attribute__((noinline)) func() { ++ int sum = 0; ++ for (int i = 0; i < 3; ++i) { ++ for (int j = 3; j >= 0; --j) { ++ sink((some_enum)(i + j)); ++ } ++ } ++ return sum; ++} ++ ++// { dg-final { scan-tree-dump-not "some_enum ivtmp" "optimized" } } +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/g++.dg/pr94666.C +@@ -0,0 +1,20 @@ ++// { dg-do compile } ++// { dg-options "-O3" } ++// { dg-additional-options "-march=z13" { target s390*-*-* } } ++ ++int a, c; ++struct A { ++ int e() { ++ int f; ++ for (int b = 0; b < 4; b++) { ++ a = __builtin_popcountl(d[b]); ++ f += a; ++ } ++ return f; ++ } ++ long d[4]; ++} * g; ++void h() { ++ for (int b; b; b++) ++ c += g[b].e(); ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/g++.dg/template/virtual5.C +@@ -0,0 +1,31 @@ ++// PR c++/95158 ++// { dg-do run } ++ ++class Base { ++ public: ++ virtual void foo()=0; ++}; ++ ++template ++class MiddleA : virtual public Base { ++ public: ++ virtual void foo() {} ++}; ++ ++class MiddleB : virtual public Base {}; ++ ++template ++class Derived : public MiddleA, public MiddleB { ++ public: ++ void bar() ++ { ++ Derived d; ++ d.foo(); ++ } ++}; ++ ++int main() ++{ ++ Derived a; ++ a.bar(); // Instantiate the template ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/g++.dg/torture/pr94303.C +@@ -0,0 +1,17 @@ ++// PR middle-end/94303 ++// { dg-do run } ++ ++struct A { ++ int d = 9; ++ A () = default; ++ A (int x) : d(x) {} ++ void foo () { if (d < 1) __builtin_abort (); } ++}; ++ ++A a[3] = { 1 }; ++ ++int ++main () ++{ ++ a[2].foo (); ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/g++.dg/ubsan/vptr-15.C +@@ -0,0 +1,14 @@ ++// PR c++/94325 ++// { dg-do run { target c++11 } } ++// { dg-options "-fsanitize=vptr -fno-sanitize-recover=vptr" } ++ ++struct A { virtual ~A () = default; }; ++struct B : public virtual A {}; ++struct C : public B {}; ++struct D : public C {}; ++ ++int ++main () ++{ ++ D a; ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/g++.dg/warn/Wreturn-type-12.C +@@ -0,0 +1,23 @@ ++// PR c++/94742 ++// { dg-do compile { target c++11 } } ++// { dg-options "-Wreturn-type" } ++ ++template ++[[noreturn]] void ++foo (T const &t, char const *) ++{ ++ throw T (t); ++} ++ ++template ++int ++bar () ++{ ++ foo (42, __FUNCTION__); ++} // { dg-bogus "no return statement in function returning non-void" } ++ ++int ++main () ++{ ++ bar(); ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-tmpl.C +@@ -0,0 +1,12 @@ ++// PR c++/94951 ++// { dg-do compile } ++// { dg-options "-O2 -Wall" } ++ ++struct A { int a; }; ++template ++struct B : public A ++{ ++ static B foo () { B t; t.a = 4; return t; } // { dg-bogus "dereferencing type-punned pointer will break strict-aliasing rules" } ++}; ++ ++B<0> b = B<0>::foo (); +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/g++.target/aarch64/aarch64.exp +@@ -0,0 +1,44 @@ ++# Specific regression driver for AArch64. ++# Copyright (C) 2009-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 ++# . */ ++ ++# GCC testsuite that uses the `dg.exp' driver. ++ ++# Exit immediately if this isn't an AArch64 target. ++if {![istarget aarch64*-*-*] } then { ++ return ++} ++ ++# Load support procs. ++load_lib g++-dg.exp ++ ++global DEFAULT_CXXFLAGS ++if ![info exists DEFAULT_CXXFLAGS] then { ++ set DEFAULT_CXXFLAGS " -pedantic-errors" ++} ++ ++# Initialize `dg'. ++dg-init ++ ++# Main loop. ++dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.C]] \ ++ "" $DEFAULT_CXXFLAGS ++ ++# All done. ++dg-finish ++ +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/g++.target/aarch64/pr94052.C +@@ -0,0 +1,174 @@ ++/* { dg-do compile } */ ++/* { dg-additional-options "-O2 -std=gnu++11 -w" } */ ++ ++namespace c { ++typedef int d; ++template struct f { typedef e g; }; ++template struct h; ++template e aa(typename f::g i) { return i; } ++template struct j {}; ++template struct k; ++template struct k<1, j> { typedef m g; }; ++template typename k>::g ab(j); ++} // namespace c ++typedef long d; ++typedef char o; ++typedef int p; ++typedef char q; ++typedef int r; ++namespace { ++struct s; ++constexpr d t = 6; ++template class ad { ++public: ++ static constexpr d u = t; ++ d v(); ++ d x(); ++ d y(); ++}; ++class z : ad {}; ++struct ae { ++ p af; ++}; ++class ag { ++public: ++ ae ah(); ++}; ++} // namespace ++typedef __Int32x4_t ai; ++typedef struct { ++ ai aj[2]; ++} ak; ++typedef int al; ++void am(p *a, ai b) { __builtin_aarch64_st1v4si(a, b); } ++namespace an { ++class ao { ++public: ++ bool operator==(ao); ++ d v(); ++ d x(); ++}; ++class ap : public ad {}; ++class aq { ++public: ++ c::j ar(); ++ int as(); ++ int at(); ++}; ++class au { ++public: ++ virtual d av(d); ++ virtual ap aw(); ++ virtual ag ax(); ++}; ++class ay {}; ++class az { ++ virtual void ba(const ay &, const s &); ++}; ++using bb = az; ++class bc; ++class bd : bb { ++ void ba(const ay &, const s &); ++ bc *be; ++ bc *bf; ++ bc *bg; ++ aq bh; ++ int bi; ++ int bj; ++ ao bk; ++}; ++namespace bl { ++namespace bm { ++namespace bn { ++class bo; ++} ++} // namespace bm ++} // namespace bl ++namespace bn { ++template > ++ai bp(ac *, ac *, ac *, al, al, al, d, p); ++template > ++ak bq(ac *br, ac *bs, ac *bt, al bu, al bv, al bw, d bx, int, int by) { ++ ak{bp(br, bs, bt, bu, bv, bw, bx, by), bp(br, bs, bt, bu, bv, bw, bx, by)}; ++} ++template > ++ak bz(ac *, ac *, ac *, al, al, al &, int, p); ++template void ca(p *, const ak &); ++template <> void ca<1>(p *buffer, const ak &cb) { ++ am(buffer, cb.aj[0]); ++ am(buffer + 4, cb.aj[1]); ++} ++int cc(int, int); ++} // namespace bn ++class bc { ++public: ++ virtual au *cd(); ++}; ++class ce { ++public: ++ q *cf(); ++}; ++template struct cg { ++ template static void ci(ay, z cj, ch ck) { ck(cj); } ++}; ++template void cl(ay w, ch ck) { ++ z cj; ++ cg::ci(w, cj, c::aa(ck)); ++} ++namespace { ++template class co { ++public: ++ static void convolve(ay, int cs, bc *cp, bc *cq, bc *cr, aq cw, int, ao ct) { ++ int by = cp->cd()->ax().ah().af; ++ int cu = cq->cd()->ax().ah().af; ++ cp->cd()->aw().v(); ++ int cv = cp->cd()->aw().x(); ++ cp->cd()->aw().y(); ++ cp->cd()->aw(); ++ int da = cr->cd()->aw().x(); ++ int cx = cq->cd()->aw().x(); ++ cq->cd()->aw().y(); ++ int cy = cr->cd()->av(0); ++ int cz = cr->cd()->av(1); ++ bn::cc(cs, cn); ++ int de = c::ab<1>(cw.ar()); ++ cw.as(); ++ cw.at(); ++ ay db; ++ ce dc; ++ ce dd; ++ ce w; ++ q *di = w.cf(); ++ cl(db, [&](z) { ++ int df; ++ dc; ++ di; ++ cx; ++ auto dg(cu); ++ auto dh(cu); ++ auto dl(cu); ++ for (; cz; df += de) { ++ auto br = reinterpret_cast(cv); ++ auto bs = reinterpret_cast(cv); ++ auto bt = reinterpret_cast(df * ct.x()); ++ auto dj = reinterpret_cast(dd.cf() + da); ++ for (int dk; dk < cy; dk += cs, dj += cs) ++ if (ct == ao()) { ++ auto vres = bn::bz(br, bs, bt, dg, dh, dl, cn, by); ++ bn::ca(dj, vres); ++ } else ++ bn::bq(br, bs, bt, dg, dh, dl, ct.v(), cn, by); ++ } ++ }); ++ } ++}; ++template ++void bz(ay dm, int cs, bc *cp, bc *cq, bc *cr, aq cw, int dn, ao ct) { ++ co::convolve(dm, cs, cp, cq, cr, cw, dn, ct); ++ co::convolve(dm, cs, cp, cq, cr, cw, dn, ct); ++} ++} // namespace ++void bd::ba(const ay &dm, const s &) { ++ bz(dm, bi, be, bg, bf, bh, bj, bk); ++} ++} // namespace an +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/g++.target/aarch64/pr94514.C +@@ -0,0 +1,27 @@ ++/* PR target/94514. Unwind across mixed pac-ret and non-pac-ret frames. */ ++/* { dg-do run } */ ++/* { dg-require-effective-target lp64 } */ ++ ++__attribute__((noinline, target("sign-return-address=all"))) ++static void do_throw (void) ++{ ++ throw 42; ++ __builtin_abort (); ++} ++ ++__attribute__((noinline, target("sign-return-address=none"))) ++static void no_pac_ret (void) ++{ ++ do_throw (); ++ __builtin_abort (); ++} ++ ++int main () ++{ ++ try { ++ no_pac_ret (); ++ } catch (...) { ++ return 0; ++ } ++ __builtin_abort (); ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/g++.target/aarch64/pr94515-1.C +@@ -0,0 +1,44 @@ ++/* PR target/94515. Check .cfi_window_save with multiple return paths. */ ++/* { dg-do run } */ ++/* { dg-require-effective-target lp64 } */ ++/* { dg-additional-options "-O2 --save-temps" } */ ++ ++volatile int zero = 0; ++ ++__attribute__((noinline, target("sign-return-address=none"))) ++void unwind (void) ++{ ++ if (zero == 0) ++ throw 42; ++} ++ ++__attribute__((noinline, noipa, target("sign-return-address=all"))) ++int test (int z) ++{ ++ if (z) { ++ asm volatile ("":::"x20","x21"); ++ unwind (); ++ return 1; ++ } else { ++ unwind (); ++ return 2; ++ } ++} ++ ++__attribute__((target("sign-return-address=none"))) ++int main () ++{ ++ try { ++ test (zero); ++ __builtin_abort (); ++ } catch (...) { ++ return 0; ++ } ++ __builtin_abort (); ++} ++ ++/* This check only works if there are two return paths in test and ++ cfi_window_save is used for both instead of cfi_remember_state ++ plus cfi_restore_state. This is currently the case with -O2. */ ++ ++/* { dg-final { scan-assembler-times {\t\.cfi_window_save\n} 4 } } */ +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/g++.target/aarch64/pr94515-2.C +@@ -0,0 +1,41 @@ ++/* PR target/94515. Check .cfi_window_save with multiple return paths. */ ++/* { dg-do run } */ ++/* { dg-require-effective-target lp64 } */ ++/* { dg-additional-options "-O2 -msign-return-address=all" } */ ++ ++volatile int zero = 0; ++int global = 0; ++ ++__attribute__((noinline)) ++int bar(void) ++{ ++ if (zero == 0) return 3; ++ return 0; ++} ++ ++__attribute__((noinline, noreturn)) ++void unwind (void) ++{ ++ throw 42; ++} ++ ++__attribute__((noinline, noipa)) ++int test(int x) ++{ ++ if (x==1) return 2; /* This return path may not use the stack. */ ++ int y = bar(); ++ if (y > global) global=y; ++ if (y==3) unwind(); /* This return path must have RA mangle state set. */ ++ return 0; ++} ++ ++int main () ++{ ++ try { ++ test (zero); ++ __builtin_abort (); ++ } catch (...) { ++ return 0; ++ } ++ __builtin_abort (); ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.c-torture/compile/packed-aligned-1.c +@@ -0,0 +1,11 @@ ++struct c { ++ double a; ++} __attribute((packed)) __attribute((aligned)); ++ ++void f(struct c *, struct c); ++ ++void g(struct c *ptr) ++{ ++ ptr++; ++ f(ptr, *ptr); ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.c-torture/compile/pr93949.c +@@ -0,0 +1,7 @@ ++/* PR c/93949 */ ++ ++void ++foo (void) ++{ ++ register const double d[3] = { 0., 1., 2. }; ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.c-torture/compile/pr94488.c +@@ -0,0 +1,22 @@ ++/* PR target/94488 */ ++ ++typedef unsigned long V __attribute__((__vector_size__(16))); ++typedef long W __attribute__((__vector_size__(16))); ++ ++void ++foo (V *x, unsigned long y) ++{ ++ *x = *x >> (unsigned int) y; ++} ++ ++void ++bar (V *x, unsigned long y) ++{ ++ *x = *x << (unsigned int) y; ++} ++ ++void ++baz (W *x, unsigned long y) ++{ ++ *x = *x >> (unsigned int) y; ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.c-torture/execute/packed-aligned.c +@@ -0,0 +1,28 @@ ++struct c { ++ double a; ++} __attribute((packed)) __attribute((aligned)); ++ ++extern void abort(void); ++ ++double g_expect = 32.25; ++ ++void f(unsigned x, struct c y) ++{ ++ if (x != 0) ++ abort(); ++ ++ if (y.a != g_expect) ++ abort(); ++} ++ ++struct c e = { 64.25 }; ++ ++int main(void) ++{ ++ struct c d = { 32.25 }; ++ f(0, d); ++ ++ g_expect = 64.25; ++ f(0, e); ++ return 0; ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.c-torture/execute/pr94130.c +@@ -0,0 +1,16 @@ ++/* PR tree-optimization/94130 */ ++ ++int ++main () ++{ ++ int a[8]; ++ char *b = __builtin_memset (a, 0, sizeof (a)); ++ a[0] = 1; ++ a[1] = 2; ++ a[2] = 3; ++ if (b != (char *) a) ++ __builtin_abort (); ++ else ++ asm volatile ("" : : "g" (a) : "memory"); ++ return 0; ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.c-torture/execute/pr94134.c +@@ -0,0 +1,14 @@ ++/* PR target/94134 */ ++ ++static volatile int a = 0; ++static volatile int b = 1; ++ ++int ++main () ++{ ++ a++; ++ b++; ++ if (a != 1 || b != 2) ++ __builtin_abort (); ++ return 0; ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.c-torture/execute/pr94412.c +@@ -0,0 +1,28 @@ ++/* PR middle-end/94412 */ ++ ++typedef unsigned V __attribute__ ((__vector_size__ (sizeof (unsigned) * 2))); ++ ++void ++foo (V *v, V *w) ++{ ++ *w = -*v / 11; ++} ++ ++void ++bar (V *v, V *w) ++{ ++ *w = -18 / -*v; ++} ++ ++int ++main () ++{ ++ V a = (V) { 1, 0 }; ++ V b = (V) { 3, __INT_MAX__ }; ++ V c, d; ++ foo (&a, &c); ++ bar (&b, &d); ++ if (c[0] != -1U / 11 || c[1] != 0 || d[0] != 0 || d[1] != -18U / -__INT_MAX__) ++ __builtin_abort (); ++ return 0; ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.c-torture/execute/pr94524-1.c +@@ -0,0 +1,19 @@ ++/* PR tree-optimization/94524 */ ++ ++typedef signed char __attribute__ ((__vector_size__ (16))) V; ++ ++static __attribute__ ((__noinline__, __noclone__)) V ++foo (V c) ++{ ++ c %= (signed char) -19; ++ return (V) c; ++} ++ ++int ++main () ++{ ++ V x = foo ((V) { 31 }); ++ if (x[0] != 12) ++ __builtin_abort (); ++ return 0; ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.c-torture/execute/pr94524-2.c +@@ -0,0 +1,25 @@ ++/* PR tree-optimization/94524 */ ++ ++typedef signed char __attribute__ ((__vector_size__ (16))) V; ++ ++static __attribute__ ((__noinline__, __noclone__)) V ++foo (V c) ++{ ++ c %= (signed char) -128; ++ return (V) c; ++} ++ ++int ++main () ++{ ++ V x = foo ((V) { -128 }); ++ if (x[0] != 0) ++ __builtin_abort (); ++ x = foo ((V) { -127 }); ++ if (x[0] != -127) ++ __builtin_abort (); ++ x = foo ((V) { 127 }); ++ if (x[0] != 127) ++ __builtin_abort (); ++ return 0; ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.c-torture/execute/pr94591.c +@@ -0,0 +1,32 @@ ++typedef unsigned __attribute__((__vector_size__(8))) V2SI_u; ++typedef int __attribute__((__vector_size__(8))) V2SI_d; ++ ++typedef unsigned long __attribute__((__vector_size__(16))) V2DI_u; ++typedef long __attribute__((__vector_size__(16))) V2DI_d; ++ ++void id_V2SI(V2SI_d *v) ++{ ++ *v = __builtin_shuffle(*v, (V2SI_d)(V2SI_u) { 0, 1 }); ++} ++ ++void id_V2DI(V2DI_d *v) ++{ ++ *v = __builtin_shuffle(*v, (V2DI_d)(V2DI_u) { 0, 1 }); ++} ++ ++extern void abort(void); ++ ++int main(void) ++{ ++ V2SI_d si = { 35, 42 }; ++ id_V2SI(&si); ++ ++ if (si[0] != 35 || si[1] != 42) ++ abort(); ++ ++ V2DI_d di = { 63, 38 }; ++ id_V2DI(&di); ++ ++ if (di[0] != 63 || di[1] != 38) ++ abort(); ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.c-torture/execute/pr94809.c +@@ -0,0 +1,12 @@ ++/* PR tree-optimization/94809 */ ++ ++int ++main () ++{ ++ int a = 0; ++ unsigned long long one = 1; ++ ((-1ULL / one) < a++, one); ++ if (a != 1) ++ __builtin_abort (); ++ return 0; ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.c-torture/execute/pr97073.c +@@ -0,0 +1,21 @@ ++/* PR middle-end/97073 */ ++/* { dg-additional-options "-mno-stv" { target i?86-*-* x86_64-*-* } } */ ++ ++typedef unsigned long long L; ++union U { L i; struct T { unsigned k; L l; } j; } u; ++ ++__attribute__((noinline,noclone)) void ++foo (L x) ++{ ++ u.j.l = u.i & x; ++} ++ ++int ++main () ++{ ++ u.i = 5; ++ foo (-1ULL); ++ if (u.j.l != 5) ++ __builtin_abort (); ++ return 0; ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.dg/Wunused-var-4.c +@@ -0,0 +1,33 @@ ++/* PR c/96571 */ ++/* { dg-do compile } */ ++/* { dg-options "-std=c99 -O2 -Wunused-but-set-variable" } */ ++ ++enum E { V }; ++ ++int ++foo (void) ++{ ++ enum E v; /* { dg-bogus "set but not used" } */ ++ return _Generic (v, enum E : 0); ++} ++ ++int ++bar (void) ++{ ++ int a = 0; /* { dg-bogus "set but not used" } */ ++ return _Generic (0, int : a); ++} ++ ++int ++baz (void) ++{ ++ int a; /* { dg-bogus "set but not used" } */ ++ return _Generic (0, long long : a, int : 0); ++} ++ ++int ++qux (void) ++{ ++ int a; /* { dg-bogus "set but not used" } */ ++ return _Generic (0, long long : a, default: 0); ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.dg/dfp/pr94111.c +@@ -0,0 +1,12 @@ ++/* PR middle-end/94111 */ ++/* { dg-do run } */ ++/* { dg-options "-O2" } */ ++ ++int ++main () ++{ ++ _Decimal32 d = (_Decimal32) __builtin_inff (); ++ if (!__builtin_isinf ((double) d)) ++ __builtin_abort (); ++ return 0; ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.dg/dfp/pr97439.c +@@ -0,0 +1,27 @@ ++// { dg-do run } ++// { dg-options "-O1" } ++ ++static int ++foo(_Decimal128 x, _Decimal128 y) ++{ ++ if (x > y) ++ return 1; ++ ++ return 0; ++} ++ ++int __attribute__((noinline)) ++bar(_Decimal128 x) ++{ ++ return foo (x, -1.0DL * __builtin_infd32()); ++} ++ ++int ++main (void) ++{ ++ int res = bar (0.0DL); ++ if (res != 1) ++ __builtin_abort (); ++ ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.dg/gomp/pr82374.c ++++ b/src/gcc/testsuite/gcc.dg/gomp/pr82374.c +@@ -1,6 +1,9 @@ + /* PR tree-optimization/82374 */ + /* { dg-do compile } */ +-/* { dg-options "-O2 -fno-tree-vectorize -fdump-tree-vect-details" } */ ++/* Option -fno-common makes vectorizer able to force alignment and ensures ++ vectorization can succeed even on targets lacking of unaligned vector ++ load/store. */ ++/* { dg-options "-O2 -fno-tree-vectorize -fdump-tree-vect-details -fno-common" } */ + /* { dg-additional-options "-mavx -mno-avx2" { target i?86-*-* x86_64-*-* } } */ + /* { dg-additional-options "-mvsx" { target powerpc_vsx_ok } } */ + +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.dg/gomp/pr95108.c +@@ -0,0 +1,18 @@ ++/* PR middle-end/95108 */ ++/* { dg-do compile { target vect_simd_clones } } */ ++/* { dg-options "-O2 -fopenmp-simd -w" } */ ++ ++int *v; ++ ++#pragma omp declare simd ++void ++foo (int x) ++{ ++ int *a = &x + 1; ++ ++ for (;;) ++ { ++ *v = *a; ++ a = v; ++ } ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.dg/pr93399.c +@@ -0,0 +1,17 @@ ++/* PR middle-end/93399 */ ++/* { dg-do assemble } */ ++/* { dg-options "-fverbose-asm -dA -g -O3" } */ ++ ++extern inline __attribute__ ((__always_inline__, __gnu_inline__)) char * ++strstr (const char *haystack, const char *needle) ++{ ++ return __builtin_strstr (haystack, needle); ++} ++ ++int ++main (int argc, const char **argv) ++{ ++ char *substr = strstr (argv[0], "\n"); ++ char *another = strstr (argv[0], "\r\n"); ++ return 0; ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.dg/pr94002.c +@@ -0,0 +1,13 @@ ++/* PR rtl-optimization/94002 */ ++/* { dg-do compile } */ ++/* { dg-options "-O1 -fno-tree-dce -fno-tree-reassoc" } */ ++/* { dg-additional-options "-fPIC" { target fpic } } */ ++ ++unsigned a, b; ++ ++void ++foo (void) ++{ ++ __builtin_sub_overflow (b, 44852956282LL, &a); ++ a += ~b; ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.dg/pr94114.c +@@ -0,0 +1,13 @@ ++/* PR tree-optimization/94114 */ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -ftree-loop-distribute-patterns -ftrapv" } */ ++ ++void ++foo (int *x, int *y, int *z, long int w) ++{ ++ while (y + w > z) ++ { ++ x[w] = 0; ++ --w; ++ } ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.dg/pr94121.c +@@ -0,0 +1,16 @@ ++/* PR target/94121 */ ++/* { dg-do compile { target pie } } */ ++/* { dg-options "-O2 -fpie -w" } */ ++ ++#define DIFF_MAX __PTRDIFF_MAX__ ++#define DIFF_MIN (-DIFF_MAX - 1) ++ ++extern void foo (char *); ++extern char v[]; ++ ++void ++bar (void) ++{ ++ char *p = v; ++ foo (&p[DIFF_MIN]); ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.dg/pr94167.c +@@ -0,0 +1,33 @@ ++/* PR debug/94167 */ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -fcompare-debug" } */ ++ ++struct S { int g, h; signed char i; int j; signed char k; int l[4]; } a, c; ++struct T { signed char g; } e; ++int *b, d; ++static void foo (); ++ ++void ++bar (void) ++{ ++ while (d) ++ { ++ int k; ++ struct T f[3]; ++ foo (bar, a); ++ for (k = 0;; k++) ++ f[k] = e; ++ } ++} ++ ++static inline void ++foo (int x, struct S y, struct T z) ++{ ++ for (z.g = 2; z.g; z.g--) ++ { ++ c = a = y; ++ *b |= 6; ++ if (y.g) ++ break; ++ } ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.dg/pr94172-1.c +@@ -0,0 +1,12 @@ ++/* PR c/94172 */ ++/* { dg-do compile } */ ++/* { dg-options "-O2" } */ ++ ++extern enum E e; ++enum E { l = 0x100000000ULL }; ++ ++unsigned long long ++foo (void) ++{ ++ return e; ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.dg/pr94172-2.c +@@ -0,0 +1,19 @@ ++/* PR c/94172 */ ++/* { dg-do compile } */ ++/* { dg-options "-Os -g -fshort-enums" } */ ++ ++extern enum E e; ++extern void bar (int a); ++enum E { F }; ++ ++void ++foo (int a) ++{ ++ int l = e; ++ if (a) ++ { ++ __asm volatile ("nop"); ++ l = 0; ++ } ++ bar (l); ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.dg/pr94211.c +@@ -0,0 +1,12 @@ ++/* PR tree-optimization/94211 */ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -fcompare-debug" } */ ++ ++long ++foo (long a, long b) ++{ ++ if (__builtin_expect (b == 1, 1)) ++ return a; ++ int e = a + 1; ++ return a / b; ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.dg/pr94283.c +@@ -0,0 +1,16 @@ ++/* PR debug/94283 */ ++/* { dg-do compile } */ ++/* { dg-options "-O3 -fno-tree-dce -fcompare-debug" } */ ++ ++void ++foo (int *n) ++{ ++ for (int i = 0; i < 32; i++) ++ { ++ int x = 0; ++ x++; ++ if (i & 4) ++ x++; ++ x++; ++ } ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.dg/pr94368.c +@@ -0,0 +1,25 @@ ++/* PR target/94368 */ ++/* { dg-do compile { target fpic } } */ ++/* { dg-options "-fpic -O1 -fcommon" } */ ++ ++int b, c, d, e, f, h; ++short g; ++int foo (int) __attribute__ ((__const__)); ++ ++void ++bar (void) ++{ ++ while (1) ++ { ++ while (1) ++ { ++ __atomic_load_n (&e, 0); ++ if (foo (2)) ++ __sync_val_compare_and_swap (&c, 0, f); ++ b = 1; ++ if (h == e) ++ break; ++ } ++ __sync_val_compare_and_swap (&g, -1, f); ++ } ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.dg/pr94705.c +@@ -0,0 +1,13 @@ ++/* PR c/94705 */ ++/* { dg-do compile } */ ++/* { dg-options "" } */ ++ ++void foo (); ++ ++int ++bar (void) ++{ ++ foo (baz); /* { dg-error "'baz' undeclared" } */ ++ /* { dg-message "only once" "" { target *-*-* } .-1 } */ ++ void __attribute__ ((noinline)) baz (void); ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.dg/pr94780.c +@@ -0,0 +1,13 @@ ++/* PR target/94780 */ ++/* { dg-do compile } */ ++/* { dg-options "-O2" } */ ++ ++_Atomic double x; ++ ++double ++foo (void) ++{ ++ double bar () { return x; } ++ x /= 3; ++ return bar (); ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.dg/pr94842.c +@@ -0,0 +1,11 @@ ++/* PR c/94842 */ ++/* { dg-do compile } */ ++/* { dg-options "" } */ ++ ++_Atomic float x = 5; ++ ++void ++foo (void) ++{ ++ void bar (float y[(int) (x += 2)]) {} ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.dg/pr94873.c +@@ -0,0 +1,27 @@ ++/* PR rtl-optimization/94873 */ ++/* { dg-do run { target int128 } } */ ++/* { dg-options "-O -fno-merge-constants -fno-split-wide-types -fno-tree-fre" } */ ++ ++__attribute__((noipa)) void ++foo (const char *p, int q) ++{ ++ if (p[0] != '%' || p[1] != '0' || p[2] != '2' || p[3] != 'x' || p[4] != '\0') ++ __builtin_abort (); ++#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ ++ if ((unsigned char) q != 0x95) ++ __builtin_abort (); ++#elif __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ ++ if ((unsigned char) q != 0) ++ __builtin_abort (); ++#endif ++} ++ ++int ++main () ++{ ++ union U { __int128 a; char b[sizeof (__int128)]; }; ++ char x = ((union U){ .a = 0xF4409395252B9560ULL}).b[1]; ++ for (unsigned i = 0; i < sizeof (x); i++) ++ foo ("%02x", i[(volatile unsigned char *) &x]); ++ return 0; ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.dg/pr95857.c +@@ -0,0 +1,37 @@ ++/* PR tree-optimization/95857 */ ++/* { dg-do compile } */ ++/* { dg-options "-O2" } */ ++ ++struct E { int e; }; ++int bar (void), baz (void); ++void qux (void *); ++ ++void ++foo (int x) ++{ ++ struct E a = { 0 }; ++ struct E i = { 0 }; ++ qux (&&lab2); ++ if (baz ()) ++ i.e = 1; ++ else ++ a.e = -2; ++ switch (a.e) ++ { ++ case -2: ++ lab1: ++ switch (i.e) ++ { ++ case -3: ++ case 2: ++ if (i.e-- != 2) ++ __builtin_unreachable (); ++ lab2: ++ baz (); ++ goto lab1; ++ case 0: ++ bar (); ++ } ++ break; ++ } ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.dg/store_merging_31.c +@@ -0,0 +1,27 @@ ++/* PR tree-optimization/97053 */ ++/* { dg-do run } */ ++/* { dg-options "-O2" } */ ++ ++struct S { short a; char b[9]; int c; char d; int e; }; ++ ++__attribute__((noipa)) void ++foo (char *x, char *y) ++{ ++ if (__builtin_strcmp (x, "ABCDXXXX") != 0 ++ || __builtin_strcmp (y, "ABCDXXXX") != 0) ++ __builtin_abort (); ++} ++ ++int ++main () ++{ ++ char a[9] = "XXXXXXXX"; ++ struct S b = {}; ++ __builtin_memcpy (a, "ABCD", 4); ++ b.a = 5; ++ __builtin_memcpy (b.b, a, 8); ++ b.d = 'X'; ++ b.e = 1; ++ foo (a, b.b); ++ return 0; ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.dg/store_merging_32.c +@@ -0,0 +1,129 @@ ++/* PR tree-optimization/97053 */ ++/* { dg-do run } */ ++/* { dg-options "-O2 -fno-tree-dse" } */ ++ ++struct __attribute__((packed, may_alias)) S { long long s; }; ++struct __attribute__((packed, may_alias)) T { short t; }; ++ ++__attribute__((noipa)) void ++test (char *p, char *q, int s) ++{ ++ if ((s & 1) == 0) ++ { ++ if (*(short __attribute__((may_alias)) *) &p[sizeof (short)] ++ != *(short __attribute__((may_alias)) *) &q[sizeof (short)] ++ || (((struct S __attribute__((may_alias)) *) &p[1])->s ++ != ((struct S __attribute__((may_alias)) *) &q[1])->s) ++ || (*(short __attribute__((may_alias)) *) &p[2 * sizeof (short)] ++ != *(short __attribute__((may_alias)) *) &q[2 * sizeof (short)])) ++ __builtin_abort (); ++ } ++ else ++ { ++ if (*(short __attribute__((may_alias)) *) &p[sizeof (short)] ++ != *(short __attribute__((may_alias)) *) &q[sizeof (short)] ++ || (((struct S __attribute__((may_alias)) *) &p[1])->s ++ != ((struct S __attribute__((may_alias)) *) &q[1])->s) ++ || (((struct T __attribute__((may_alias)) *) &p[2 * sizeof (short) - 1])->t ++ != ((struct T __attribute__((may_alias)) *) &q[2 * sizeof (short) - 1])->t) ++ || p[3 * sizeof (short) - 2] != q[3 * sizeof (short) - 2]) ++ __builtin_abort (); ++ } ++} ++ ++__attribute__((noipa)) void ++foo (long long *p, char *q, char *r, char *s) ++{ ++ char a[64] __attribute__((aligned (__alignof (short)))); ++ *(short __attribute__((may_alias)) *) &a[sizeof (short)] = 1; ++ ((struct S __attribute__((may_alias)) *) &a[1])->s = p[0]; ++ *(short __attribute__((may_alias)) *) &a[2 * sizeof (short)] = 2; ++ *(short __attribute__((may_alias)) *) &q[sizeof (short)] = 1; ++ ((struct S __attribute__((may_alias)) *) &r[1])->s = p[0]; ++ *(short __attribute__((may_alias)) *) &s[2 * sizeof (short)] = 2; ++ test (a, q, 0); ++} ++ ++__attribute__((noipa)) void ++bar (long long *p, char *q, char *r, char *s, char *t) ++{ ++ char a[64] __attribute__((aligned (__alignof (short)))); ++ *(short __attribute__((may_alias)) *) &a[sizeof (short)] = 1; ++ ((struct S __attribute__((may_alias)) *) &a[1])->s = p[0]; ++ ((struct T __attribute__((may_alias)) *) &a[2 * sizeof (short) - 1])->t = 2; ++ a[3 * sizeof (short) - 2] = 3; ++ *(short __attribute__((may_alias)) *) &q[sizeof (short)] = 1; ++ ((struct S __attribute__((may_alias)) *) &r[1])->s = p[0]; ++ ((struct T __attribute__((may_alias)) *) &s[2 * sizeof (short) - 1])->t = 2; ++ t[3 * sizeof (short) - 2] = 3; ++ test (a, q, 1); ++} ++ ++__attribute__((noipa)) void ++baz (long long *p, char *q, char *r, char *s) ++{ ++ char a[64] __attribute__((aligned (__alignof (short)))); ++ *(short __attribute__((may_alias)) *) &a[2 * sizeof (short)] = 2; ++ ((struct S __attribute__((may_alias)) *) &a[1])->s = p[0]; ++ *(short __attribute__((may_alias)) *) &a[sizeof (short)] = 1; ++ *(short __attribute__((may_alias)) *) &q[2 * sizeof (short)] = 2; ++ ((struct S __attribute__((may_alias)) *) &r[1])->s = p[0]; ++ *(short __attribute__((may_alias)) *) &s[sizeof (short)] = 1; ++ test (a, q, 2); ++} ++ ++__attribute__((noipa)) void ++qux (long long *p, char *q, char *r, char *s, char *t) ++{ ++ char a[64] __attribute__((aligned (__alignof (short)))); ++ *(short __attribute__((may_alias)) *) &a[2 * sizeof (short) - 1] = 2; ++ ((struct S __attribute__((may_alias)) *) &a[1])->s = p[0]; ++ a[3 * sizeof (short) - 2] = 3; ++ *(short __attribute__((may_alias)) *) &a[sizeof (short)] = 1; ++ ((struct T __attribute__((may_alias)) *) &q[2 * sizeof (short) - 1])->t = 2; ++ ((struct S __attribute__((may_alias)) *) &r[1])->s = p[0]; ++ s[3 * sizeof (short) - 2] = 3; ++ ((struct T __attribute__((may_alias)) *) &t[sizeof (short)])->t = 1; ++ test (a, q, 3); ++} ++ ++__attribute__((noipa)) void ++corge (long long *p, char *q, char *r, char *s, short u[3]) ++{ ++ char a[64] __attribute__((aligned (__alignof (short)))); ++ *(short __attribute__((may_alias)) *) &a[2 * sizeof (short)] = u[2]; ++ ((struct S __attribute__((may_alias)) *) &a[1])->s = p[0]; ++ *(short __attribute__((may_alias)) *) &a[sizeof (short)] = u[1]; ++ *(short __attribute__((may_alias)) *) &q[2 * sizeof (short)] = u[2]; ++ ((struct S __attribute__((may_alias)) *) &r[1])->s = p[0]; ++ *(short __attribute__((may_alias)) *) &s[sizeof (short)] = u[1]; ++ test (a, q, 4); ++} ++ ++__attribute__((noipa)) void ++garply (long long *p, char *q, char *r, char *s, short u[3]) ++{ ++ char a[64] __attribute__((aligned (__alignof (short)))); ++ *(short __attribute__((may_alias)) *) &a[sizeof (short)] = u[1]; ++ ((struct S __attribute__((may_alias)) *) &a[1])->s = p[0]; ++ *(short __attribute__((may_alias)) *) &a[2 * sizeof (short)] = u[2]; ++ *(short __attribute__((may_alias)) *) &s[sizeof (short)] = u[1]; ++ ((struct S __attribute__((may_alias)) *) &r[1])->s = p[0]; ++ *(short __attribute__((may_alias)) *) &q[2 * sizeof (short)] = u[2]; ++ test (a, q, 6); ++} ++ ++int ++main () ++{ ++ char a[64] __attribute__((aligned (__alignof (short)))); ++ long long p = -1LL; ++ short u[] = { 1, 2, 3 }; ++ foo (&p, &a[0], &a[0], &a[0]); ++ bar (&p, &a[0], &a[0], &a[0], &a[0]); ++ baz (&p, &a[0], &a[0], &a[0]); ++ qux (&p, &a[0], &a[0], &a[0], &a[0]); ++ corge (&p, &a[0], &a[0], &a[0], u); ++ garply (&p, &a[0], &a[0], &a[0], u); ++ return 0; ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.dg/torture/pr94482.c +@@ -0,0 +1,36 @@ ++/* { dg-do run } */ ++/* { dg-additional-options "-Wno-psabi -w" } */ ++/* { dg-additional-options "-msse2" { target sse2_runtime } } */ ++ ++typedef unsigned V __attribute__ ((__vector_size__ (16))); ++union U ++{ ++ V j; ++ unsigned long long i __attribute__ ((__vector_size__ (16))); ++}; ++ ++static inline __attribute__((always_inline)) V ++foo (unsigned long long a) ++{ ++ union U z = { .j = (V) {} }; ++ for (unsigned long i = 0; i < 1; i++) ++ z.i[i] = a; ++ return z.j; ++} ++ ++static inline __attribute__((always_inline)) V ++bar (V a, unsigned long long i, int q) ++{ ++ union U z = { .j = a }; ++ z.i[q] = i; ++ return z.j; ++} ++ ++int ++main () ++{ ++ union U z = { .j = bar (foo (1729), 2, 1) }; ++ if (z.i[0] != 1729) ++ __builtin_abort (); ++ return 0; ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr93435.c +@@ -0,0 +1,159 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O2" } */ ++ ++typedef signed char int8_T; ++typedef int int32_T; ++ ++typedef struct { ++ int8_T a; ++} struct0_T; ++ ++typedef struct { ++ struct0_T f10[4]; ++} struct_T; ++ ++typedef struct { ++ struct_T f9[4]; ++} b_struct_T; ++ ++typedef struct { ++ b_struct_T f8[4]; ++} c_struct_T; ++ ++typedef struct { ++ c_struct_T f7[4]; ++} d_struct_T; ++ ++typedef struct { ++ d_struct_T f6[4]; ++} e_struct_T; ++ ++typedef struct { ++ e_struct_T f5[4]; ++} f_struct_T; ++ ++typedef struct { ++ f_struct_T f4[4]; ++} g_struct_T; ++ ++typedef struct { ++ g_struct_T f3[4]; ++} h_struct_T; ++ ++typedef struct { ++ h_struct_T f2[4]; ++} i_struct_T; ++ ++typedef struct { ++ i_struct_T f1[4]; ++} j_struct_T; ++ ++typedef struct { ++ struct { ++ j_struct_T ds21[4]; ++ i_struct_T ds20[4]; ++ i_struct_T r9; ++ } f0; ++} deep_struct_arraysStackData; ++ ++/* Function Definitions */ ++void deep_struct_arrays(deep_struct_arraysStackData *SD, ++ int8_T in1, int8_T inCount, int8_T *out1, int8_T *out2, struct0_T out3[4]) ++{ ++ struct0_T r; ++ struct_T r1; ++ b_struct_T r2; ++ c_struct_T r3; ++ d_struct_T r4; ++ e_struct_T r5; ++ f_struct_T r6; ++ g_struct_T r7; ++ h_struct_T r8; ++ int32_T count; ++ int32_T i; ++ ++ /* Check properties of input in1 */ ++ /* Check properties of input inCount */ ++ /* Copyright 2006 The MathWorks, Inc. */ ++ r.a = in1; ++ r1.f10[0] = r; ++ r1.f10[1] = r; ++ r1.f10[2] = r; ++ r1.f10[3] = r; ++ r2.f9[0] = r1; ++ r2.f9[1] = r1; ++ r2.f9[2] = r1; ++ r2.f9[3] = r1; ++ r3.f8[0] = r2; ++ r3.f8[1] = r2; ++ r3.f8[2] = r2; ++ r3.f8[3] = r2; ++ r4.f7[0] = r3; ++ r4.f7[1] = r3; ++ r4.f7[2] = r3; ++ r4.f7[3] = r3; ++ r5.f6[0] = r4; ++ r5.f6[1] = r4; ++ r5.f6[2] = r4; ++ r5.f6[3] = r4; ++ r6.f5[0] = r5; ++ r6.f5[1] = r5; ++ r6.f5[2] = r5; ++ r6.f5[3] = r5; ++ r7.f4[0] = r6; ++ r7.f4[1] = r6; ++ r7.f4[2] = r6; ++ r7.f4[3] = r6; ++ r8.f3[0] = r7; ++ r8.f3[1] = r7; ++ r8.f3[2] = r7; ++ r8.f3[3] = r7; ++ SD->f0.r9.f2[0] = r8; ++ SD->f0.r9.f2[1] = r8; ++ SD->f0.r9.f2[2] = r8; ++ SD->f0.r9.f2[3] = r8; ++ SD->f0.ds20[0] = SD->f0.r9; ++ SD->f0.ds20[3] = SD->f0.r9; ++ count = 0; ++ while (count < inCount) { ++ i = in1 + SD->f0.ds20[0].f2[0].f3[0].f4[0].f5[0].f6[0].f7[0].f8[0].f9[0] ++ .f10[0].a; ++ if (i > 127) { ++ i = 127; ++ } else { ++ if (i < -128) { ++ i = -128; ++ } ++ } ++ ++ SD->f0.ds20[0].f2[0].f3[0].f4[0].f5[0].f6[0].f7[0].f8[0].f9[0].f10[0].a = ++ (int8_T)i; ++ i = SD->f0.ds20[3].f2[3].f3[3].f4[3].f5[3].f6[3].f7[3].f8[3].f9[3].f10[3].a ++ + 3; ++ if (i > 127) { ++ i = 127; ++ } ++ ++ SD->f0.ds20[3].f2[3].f3[3].f4[3].f5[3].f6[3].f7[3].f8[3].f9[3].f10[3].a = ++ (int8_T)i; ++ count++; ++ } ++ ++ if (inCount > 10) { ++ SD->f0.ds21[0].f1[1].f2[2].f3[3].f4[3].f5[3].f6[3].f7[3].f8[3].f9[3].f10[3]. ++ a = 14; ++ } else { ++ SD->f0.ds21[0].f1[1].f2[2].f3[3].f4[3].f5[3].f6[3].f7[3].f8[3].f9[3].f10[3]. ++ a = 16; ++ } ++ ++ *out1 = SD->f0.ds20[0].f2[0].f3[0].f4[0].f5[0].f6[0].f7[0].f8[0].f9[0].f10[0]. ++ a; ++ *out2 = SD->f0.ds20[3].f2[3].f3[3].f4[3].f5[3].f6[3].f7[3].f8[3].f9[3].f10[3]. ++ a; ++ out3[0] = r; ++ out3[1] = r; ++ out3[2] = r; ++ out3[3] = SD->f0.ds21[0].f1[1].f2[2].f3[3].f4[3].f5[3].f6[3].f7[3].f8[3].f9[3] ++ .f10[3]; ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr94482-2.c +@@ -0,0 +1,50 @@ ++/* { dg-do run } */ ++/* { dg-options "-O1" } */ ++ ++typedef unsigned long V __attribute__ ((__vector_size__ (8))); ++typedef _Complex int Ci; ++typedef _Complex float Cf; ++ ++union U ++{ ++ Ci ci; ++ Cf cf; ++}; ++ ++volatile Ci vgi; ++ ++Cf foo (Cf c) ++{ ++ __real c = 0x1ffp10; ++ return c; ++} ++ ++Ci ioo (Ci c) ++{ ++ __real c = 50; ++ return c; ++} ++ ++ ++int main (int argc, char *argv[]) ++{ ++ union U u; ++ ++ __real u.ci = 500; ++ __imag u.ci = 1000; ++ vgi = u.ci; ++ ++ u.ci = ioo (u.ci); ++ __imag u.ci = 100; ++ ++ if (__real u.ci != 50 || __imag u.ci != 100) ++ __builtin_abort(); ++ ++ u.cf = foo (u.cf); ++ __imag u.cf = 0x1p3; ++ ++ if (__real u.cf != 0x1ffp10 || __imag u.cf != 0x1p3) ++ __builtin_abort(); ++ ++ return 0; ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr94969.c +@@ -0,0 +1,28 @@ ++/* PR tree-optimization/52267 */ ++/* { dg-do run } */ ++/* { dg-options "-O3 -fdump-tree-ldist-details" } */ ++ ++int a = 0, b = 0, c = 0; ++struct S { ++ signed m : 7; ++ signed e : 2; ++}; ++struct S f[2] = {{0, 0}, {0, 0}}; ++struct S g = {0, 0}; ++ ++void __attribute__((noinline)) ++k() ++{ ++ for (; c <= 1; c++) { ++ f[b] = g; ++ f[b].e ^= 1; ++ } ++} ++int main() ++{ ++ k(); ++ if (f[b].e != 1) ++ __builtin_abort (); ++} ++ ++/* { dg-final { scan-tree-dump-not "Loop 1 distributed: split to 3 loops" "ldist" } } */ +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.dg/ubsan/pr94423.c +@@ -0,0 +1,17 @@ ++/* PR middle-end/94423 */ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -fsanitize=object-size" } */ ++ ++void foo (void); ++typedef struct { long buf[22]; } jmp_buf[1]; ++extern int sigsetjmp (jmp_buf, int) __attribute__ ((__nothrow__)); ++jmp_buf buf; ++ ++void ++bar (int *c) ++{ ++ while (*c) ++ foo (); ++ while (*c) ++ sigsetjmp (buf, 0); ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.dg/vect/pr93069.c +@@ -0,0 +1,10 @@ ++/* PR target/93069 */ ++/* { dg-do assemble { target vect_simd_clones } } */ ++/* { dg-options "-O2 -fopenmp-simd" } */ ++ ++#pragma omp declare simd ++int ++foo (int x, int y) ++{ ++ return x == 0 ? x : y; ++} +--- a/src/gcc/testsuite/gcc.dg/vect/tree-vect.h ++++ b/src/gcc/testsuite/gcc.dg/vect/tree-vect.h +@@ -52,7 +52,7 @@ check_vect (void) + want_level = 1, want_d = bit_SSE2; + # endif + +- if (!__get_cpuid (want_level, &a, &b, &c, &d) ++ if (!__get_cpuid_count (want_level, 0, &a, &b, &c, &d) + || ((b & want_b) | (c & want_c) | (d & want_d)) == 0) + exit (0); + } +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/aarch64/acle/jcvt_1.c +@@ -0,0 +1,15 @@ ++/* Test the __jcvt ACLE intrinsic. */ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -march=armv8.3-a" } */ ++ ++#include ++ ++#ifdef __ARM_FEATURE_JCVT ++int32_t ++test_jcvt (double a) ++{ ++ return __jcvt (a); ++} ++#endif ++ ++/* { dg-final { scan-assembler-times "fjcvtzs\tw\[0-9\]+, d\[0-9\]+\n" 1 } } */ +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/aarch64/acle/jcvt_2.c +@@ -0,0 +1,33 @@ ++/* Test the __jcvt ACLE intrinsic. */ ++/* { dg-do run } */ ++/* { dg-options "-O2 -march=armv8.3-a -save-temps" } */ ++/* { dg-require-effective-target aarch64_fjcvtzs_hw } */ ++ ++#include ++ ++extern void abort (void); ++ ++#ifdef __ARM_FEATURE_JCVT ++volatile int32_t x; ++ ++int __attribute__((noinline)) ++foo (double a, int b, int c) ++{ ++ b = b > c; ++ x = __jcvt (a); ++ return b; ++} ++ ++int ++main (void) ++{ ++ int x = foo (1.1, 2, 3); ++ if (x) ++ abort (); ++ ++ return 0; ++} ++ ++#endif ++ ++/* { dg-final { scan-assembler-times "fjcvtzs\tw\[0-9\]+, d\[0-9\]+\n" 1 } } */ +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/aarch64/acle/rng_1.c +@@ -0,0 +1,53 @@ ++/* Test the __rndr ACLE intrinsic. */ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -march=armv8.3-a+rng" } */ ++ ++#include ++ ++#ifdef __ARM_FEATURE_RNG ++/* Check that instruction is generated when status result is unused. */ ++uint64_t ++test_rndr_no_stat (void) ++{ ++ uint64_t res; ++ __rndr (&res); ++ return res; ++} ++ ++/* Check that instruction is generated when random number result ++ is unused. */ ++int ++test_rndr_error_check (void) ++{ ++ uint64_t res; ++ int fail = __rndr (&res); ++ if (fail) ++ return 0; ++ return -1; ++} ++ ++/* { dg-final { scan-assembler-times "mrs\tx..?, RNDR\n" 2 } } */ ++ ++/* Check that instruction is generated when status result is unused. */ ++uint64_t ++test_rndrrs_no_stat (void) ++{ ++ uint64_t res; ++ __rndrrs (&res); ++ return res; ++} ++ ++/* Check that instruction is generated when random number result ++ is unused. */ ++int ++test_rndrrs_error_check (void) ++{ ++ uint64_t res; ++ int fail = __rndrrs (&res); ++ if (fail) ++ return 0; ++ return -1; ++} ++ ++/* { dg-final { scan-assembler-times "mrs\tx..?, RNDRRS\n" 2 } } */ ++#endif +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/arm-neon-ref.h ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/arm-neon-ref.h +@@ -460,6 +460,8 @@ static void clean_results (void) + #endif + CLEAN(result, float, 32, 4); + ++ AARCH64_ONLY(CLEAN(result, float, 64, 2)); ++ + #if defined(__aarch64__) + /* On AArch64, make sure to return DefaultNaN to have the same + results as on AArch32. */ +@@ -544,7 +546,8 @@ static void clean_results (void) + DECL_VARIABLE(VAR, poly, 16, 8); \ + DECL_VARIABLE_CRYPTO(VAR, poly, 64, 2); \ + DECL_VARIABLE(VAR, float, 16, 8); \ +- DECL_VARIABLE(VAR, float, 32, 4) ++ DECL_VARIABLE(VAR, float, 32, 4); \ ++ AARCH64_ONLY(DECL_VARIABLE(VAR, float, 64, 2)) + #else + #define DECL_VARIABLE_128BITS_VARIANTS(VAR) \ + DECL_VARIABLE_128BITS_SIGNED_VARIANTS(VAR); \ +@@ -552,7 +555,8 @@ static void clean_results (void) + DECL_VARIABLE(VAR, poly, 8, 16); \ + DECL_VARIABLE(VAR, poly, 16, 8); \ + DECL_VARIABLE_CRYPTO(VAR, poly, 64, 2); \ +- DECL_VARIABLE(VAR, float, 32, 4) ++ DECL_VARIABLE(VAR, float, 32, 4); \ ++ AARCH64_ONLY(DECL_VARIABLE(VAR, float, 64, 2)) + #endif + /* Declare all variants. */ + #define DECL_VARIABLE_ALL_VARIANTS(VAR) \ +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vector-complex.c +@@ -0,0 +1,251 @@ ++/* { dg-skip-if "" { arm*-*-* } } */ ++/* { dg-do assemble } */ ++/* { dg-require-effective-target arm_v8_3a_complex_neon_ok } */ ++/* { dg-add-options arm_v8_3a_complex_neon } */ ++/* { dg-additional-options "-O2 -save-temps" } */ ++ ++#include ++ ++float32x2_t ++test_vcadd_rot90_f32 (float32x2_t __a, float32x2_t __b) ++{ ++ return vcadd_rot90_f32 (__a, __b); ++} ++ ++float32x4_t ++test_vcaddq_rot90_f32 (float32x4_t __a, float32x4_t __b) ++{ ++ return vcaddq_rot90_f32 (__a, __b); ++} ++ ++#ifdef __ARM_ARCH_ISA_A64 ++float64x2_t ++test_vcaddq_rot90_f64 (float64x2_t __a, float64x2_t __b) ++{ ++ return vcaddq_rot90_f64 (__a, __b); ++} ++#endif ++ ++float32x2_t ++test_vcadd_rot270_f32 (float32x2_t __a, float32x2_t __b) ++{ ++ return vcadd_rot270_f32 (__a, __b); ++} ++ ++float32x4_t ++test_vcaddq_rot270_f32 (float32x4_t __a, float32x4_t __b) ++{ ++ return vcaddq_rot270_f32 (__a, __b); ++} ++ ++#ifdef __ARM_ARCH_ISA_A64 ++float64x2_t ++test_vcaddq_rot270_f64 (float64x2_t __a, float64x2_t __b) ++{ ++ return vcaddq_rot270_f64 (__a, __b); ++} ++#endif ++ ++float32x2_t ++test_vcmla_f32 (float32x2_t __r, float32x2_t __a, float32x2_t __b) ++{ ++ return vcmla_f32 (__r, __a, __b); ++} ++ ++float32x4_t ++test_vcmlaq_f32 (float32x4_t __r, float32x4_t __a, float32x4_t __b) ++{ ++ return vcmlaq_f32 (__r, __a, __b); ++} ++ ++#ifdef __ARM_ARCH_ISA_A64 ++float64x2_t ++test_vcmlaq_f64 (float64x2_t __r, float64x2_t __a, float64x2_t __b) ++{ ++ return vcmlaq_f64 (__r, __a, __b); ++} ++#endif ++ ++float32x2_t ++test_vcmla_lane_f32 (float32x2_t __r, float32x2_t __a, float32x2_t __b) ++{ ++ return vcmla_lane_f32 (__r, __a, __b, 0); ++} ++ ++float32x2_t ++test_vcmla_laneq_f32 (float32x2_t __r, float32x2_t __a, float32x4_t __b) ++{ ++ return vcmla_laneq_f32 (__r, __a, __b, 1); ++} ++ ++float32x4_t ++test_vcmlaq_lane_f32 (float32x4_t __r, float32x4_t __a, float32x2_t __b) ++{ ++ return vcmlaq_lane_f32 (__r, __a, __b, 0); ++} ++ ++float32x4_t ++test_vcmlaq_laneq_f32 (float32x4_t __r, float32x4_t __a, float32x4_t __b) ++{ ++ return vcmlaq_laneq_f32 (__r, __a, __b, 1); ++} ++ ++float32x2_t ++test_vcmla_rot90_f32 (float32x2_t __r, float32x2_t __a, float32x2_t __b) ++{ ++ return vcmla_rot90_f32 (__r, __a, __b); ++} ++ ++float32x4_t ++test_vcmlaq_rot90_f32 (float32x4_t __r, float32x4_t __a, float32x4_t __b) ++{ ++ return vcmlaq_rot90_f32 (__r, __a, __b); ++} ++ ++#ifdef __ARM_ARCH_ISA_A64 ++float64x2_t ++test_vcmlaq_rot90_f64 (float64x2_t __r, float64x2_t __a, float64x2_t __b) ++{ ++ return vcmlaq_rot90_f64 (__r, __a, __b); ++} ++#endif ++ ++float32x2_t ++test_vcmla_rot90_lane_f32 (float32x2_t __r, float32x2_t __a, float32x2_t __b) ++{ ++ return vcmla_rot90_lane_f32 (__r, __a, __b, 0); ++} ++ ++float32x2_t ++test_vcmla_rot90_laneq_f32 (float32x2_t __r, float32x2_t __a, float32x4_t __b) ++{ ++ return vcmla_rot90_laneq_f32 (__r, __a, __b, 1); ++} ++ ++float32x4_t ++test_vcmlaq_rot90_lane_f32 (float32x4_t __r, float32x4_t __a, float32x2_t __b) ++{ ++ return vcmlaq_rot90_lane_f32 (__r, __a, __b, 0); ++} ++ ++float32x4_t ++test_vcmlaq_rot90_laneq_f32 (float32x4_t __r, float32x4_t __a, float32x4_t __b) ++{ ++ return vcmlaq_rot90_laneq_f32 (__r, __a, __b, 1); ++} ++ ++float32x2_t ++test_vcmla_rot180_f32 (float32x2_t __r, float32x2_t __a, float32x2_t __b) ++{ ++ return vcmla_rot180_f32 (__r, __a, __b); ++} ++ ++float32x4_t ++test_vcmlaq_rot180_f32 (float32x4_t __r, float32x4_t __a, float32x4_t __b) ++{ ++ return vcmlaq_rot180_f32 (__r, __a, __b); ++} ++ ++#ifdef __ARM_ARCH_ISA_A64 ++float64x2_t ++test_vcmlaq_rot180_f64 (float64x2_t __r, float64x2_t __a, float64x2_t __b) ++{ ++ return vcmlaq_rot180_f64 (__r, __a, __b); ++} ++#endif ++ ++float32x2_t ++test_vcmla_rot180_lane_f32 (float32x2_t __r, float32x2_t __a, float32x2_t __b) ++{ ++ return vcmla_rot180_lane_f32 (__r, __a, __b, 0); ++} ++ ++float32x2_t ++test_vcmla_rot180_laneq_f32 (float32x2_t __r, float32x2_t __a, float32x4_t __b) ++{ ++ return vcmla_rot180_laneq_f32 (__r, __a, __b, 1); ++} ++ ++float32x4_t ++test_vcmlaq_rot180_lane_f32 (float32x4_t __r, float32x4_t __a, float32x2_t __b) ++{ ++ return vcmlaq_rot180_lane_f32 (__r, __a, __b, 0); ++} ++ ++float32x4_t ++test_vcmlaq_rot180_laneq_f32 (float32x4_t __r, float32x4_t __a, float32x4_t __b) ++{ ++ return vcmlaq_rot180_laneq_f32 (__r, __a, __b, 1); ++} ++ ++float32x2_t ++test_vcmla_rot270_f32 (float32x2_t __r, float32x2_t __a, float32x2_t __b) ++{ ++ return vcmla_rot270_f32 (__r, __a, __b); ++} ++ ++float32x4_t ++test_vcmlaq_rot270_f32 (float32x4_t __r, float32x4_t __a, float32x4_t __b) ++{ ++ return vcmlaq_rot270_f32 (__r, __a, __b); ++} ++ ++#ifdef __ARM_ARCH_ISA_A64 ++float64x2_t ++test_vcmlaq_rot270_f64 (float64x2_t __r, float64x2_t __a, float64x2_t __b) ++{ ++ return vcmlaq_rot270_f64 (__r, __a, __b); ++} ++#endif ++ ++float32x2_t ++test_vcmla_rot270_lane_f32 (float32x2_t __r, float32x2_t __a, float32x2_t __b) ++{ ++ return vcmla_rot270_lane_f32 (__r, __a, __b, 0); ++} ++ ++float32x2_t ++test_vcmla_rot270_laneq_f32 (float32x2_t __r, float32x2_t __a, float32x4_t __b) ++{ ++ return vcmla_rot270_laneq_f32 (__r, __a, __b, 1); ++} ++ ++float32x4_t ++test_vcmlaq_rot270_lane_f32 (float32x4_t __r, float32x4_t __a, float32x2_t __b) ++{ ++ return vcmlaq_rot270_lane_f32 (__r, __a, __b, 0); ++} ++ ++float32x4_t ++test_vcmlaq_rot270_laneq_f32 (float32x4_t __r, float32x4_t __a, float32x4_t __b) ++{ ++ return vcmlaq_rot270_laneq_f32 (__r, __a, __b, 1); ++} ++ ++/* { dg-final { scan-assembler-times {fcadd\tv[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d, #270} 1 { target { aarch64*-*-* } } } } */ ++/* { dg-final { scan-assembler-times {fcadd\tv[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d, #90} 1 { target { aarch64*-*-* } } } } */ ++/* { dg-final { scan-assembler-times {fcadd\tv[0-9]+.2s, v[0-9]+.2s, v[0-9]+.2s, #270} 1 { target { aarch64*-*-* } } } } */ ++/* { dg-final { scan-assembler-times {fcadd\tv[0-9]+.2s, v[0-9]+.2s, v[0-9]+.2s, #90} 1 { target { aarch64*-*-* } } } } */ ++/* { dg-final { scan-assembler-times {fcadd\tv[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4s, #270} 1 { target { aarch64*-*-* } } } } */ ++/* { dg-final { scan-assembler-times {fcadd\tv[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4s, #90} 1 { target { aarch64*-*-* } } } } */ ++/* { dg-final { scan-assembler-times {fcmla\tv[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d, #0} 1 { target { aarch64*-*-* } } } } */ ++/* { dg-final { scan-assembler-times {fcmla\tv[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d, #180} 1 { target { aarch64*-*-* } } } } */ ++/* { dg-final { scan-assembler-times {fcmla\tv[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d, #270} 1 { target { aarch64*-*-* } } } } */ ++/* { dg-final { scan-assembler-times {fcmla\tv[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d, #90} 1 { target { aarch64*-*-* } } } } */ ++/* { dg-final { scan-assembler-times {fcmla\tv[0-9]+.2s, v[0-9]+.2s, v[0-9]+.2s, #0} 3 { target { aarch64*-*-* } } } } */ ++/* { dg-final { scan-assembler-times {fcmla\tv[0-9]+.2s, v[0-9]+.2s, v[0-9]+.2s, #180} 3 { target { aarch64*-*-* } } } } */ ++/* { dg-final { scan-assembler-times {fcmla\tv[0-9]+.2s, v[0-9]+.2s, v[0-9]+.2s, #270} 3 { target { aarch64*-*-* } } } } */ ++/* { dg-final { scan-assembler-times {fcmla\tv[0-9]+.2s, v[0-9]+.2s, v[0-9]+.2s, #90} 3 { target { aarch64*-*-* } } } } */ ++/* { dg-final { scan-assembler-times {fcmla\tv[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4s, #0} 1 { target { aarch64*-*-* } } } } */ ++/* { dg-final { scan-assembler-times {fcmla\tv[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4s, #180} 1 { target { aarch64*-*-* } } } } */ ++/* { dg-final { scan-assembler-times {fcmla\tv[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4s, #270} 1 { target { aarch64*-*-* } } } } */ ++/* { dg-final { scan-assembler-times {fcmla\tv[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4s, #90} 1 { target { aarch64*-*-* } } } } */ ++/* { dg-final { scan-assembler-times {fcmla\tv[0-9]+.4s, v[0-9]+.4s, v[0-9]+.s\[0\], #0} 1 { target { aarch64*-*-* } } } } */ ++/* { dg-final { scan-assembler-times {fcmla\tv[0-9]+.4s, v[0-9]+.4s, v[0-9]+.s\[0\], #180} 1 { target { aarch64*-*-* } } } } */ ++/* { dg-final { scan-assembler-times {fcmla\tv[0-9]+.4s, v[0-9]+.4s, v[0-9]+.s\[0\], #270} 1 { target { aarch64*-*-* } } } } */ ++/* { dg-final { scan-assembler-times {fcmla\tv[0-9]+.4s, v[0-9]+.4s, v[0-9]+.s\[0\], #90} 1 { target { aarch64*-*-* } } } } */ ++/* { dg-final { scan-assembler-times {fcmla\tv[0-9]+.4s, v[0-9]+.4s, v[0-9]+.s\[1\], #0} 1 { target { aarch64*-*-* } } } } */ ++/* { dg-final { scan-assembler-times {fcmla\tv[0-9]+.4s, v[0-9]+.4s, v[0-9]+.s\[1\], #180} 1 { target { aarch64*-*-* } } } } */ ++/* { dg-final { scan-assembler-times {fcmla\tv[0-9]+.4s, v[0-9]+.4s, v[0-9]+.s\[1\], #270} 1 { target { aarch64*-*-* } } } } */ ++/* { dg-final { scan-assembler-times {fcmla\tv[0-9]+.4s, v[0-9]+.4s, v[0-9]+.s\[1\], #90} 1 { target { aarch64*-*-* } } } } */ ++/* { dg-final { scan-assembler-times {dup\td[0-9]+, v[0-9]+.d\[1\]} 4 { target { aarch64*-*-* } } } } */ +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vector-complex_f16.c +@@ -0,0 +1,307 @@ ++/* { dg-skip-if "" { arm*-*-* } } */ ++/* { dg-do assemble } */ ++/* { dg-require-effective-target arm_v8_3a_complex_neon_ok } */ ++/* { dg-require-effective-target arm_v8_2a_fp16_neon_ok } */ ++/* { dg-add-options arm_v8_3a_complex_neon } */ ++/* { dg-add-options arm_v8_2a_fp16_neon } */ ++/* { dg-additional-options "-O2 -march=armv8.3-a+fp16 -save-temps" } */ ++ ++#include ++ ++float16x4_t ++test_vcadd_rot90_f16 (float16x4_t __a, float16x4_t __b) ++{ ++ return vcadd_rot90_f16 (__a, __b); ++} ++ ++float16x8_t ++test_vcaddq_rot90_f16 (float16x8_t __a, float16x8_t __b) ++{ ++ return vcaddq_rot90_f16 (__a, __b); ++} ++ ++float16x4_t ++test_vcadd_rot270_f16 (float16x4_t __a, float16x4_t __b) ++{ ++ return vcadd_rot270_f16 (__a, __b); ++} ++ ++float16x8_t ++test_vcaddq_rot270_f16 (float16x8_t __a, float16x8_t __b) ++{ ++ return vcaddq_rot270_f16 (__a, __b); ++} ++ ++float16x4_t ++test_vcmla_f16 (float16x4_t __r, float16x4_t __a, float16x4_t __b) ++{ ++ return vcmla_f16 (__r, __a, __b); ++} ++ ++float16x8_t ++test_vcmlaq_f16 (float16x8_t __r, float16x8_t __a, float16x8_t __b) ++{ ++ return vcmlaq_f16 (__r, __a, __b); ++} ++ ++float16x4_t ++test_vcmla_lane_f16 (float16x4_t __r, float16x4_t __a, float16x4_t __b) ++{ ++ return vcmla_lane_f16 (__r, __a, __b, 0); ++} ++ ++float16x4_t ++test_vcmla_laneq_f16 (float16x4_t __r, float16x4_t __a, float16x8_t __b) ++{ ++ return vcmla_laneq_f16 (__r, __a, __b, 0); ++} ++ ++float16x8_t ++test_vcmlaq_lane_f16 (float16x8_t __r, float16x8_t __a, float16x4_t __b) ++{ ++ return vcmlaq_lane_f16 (__r, __a, __b, 0); ++} ++ ++float16x8_t ++test_vcmlaq_laneq_f16 (float16x8_t __r, float16x8_t __a, float16x8_t __b) ++{ ++ return vcmlaq_laneq_f16 (__r, __a, __b, 0); ++} ++ ++float16x4_t ++test_vcmla_lane_f16_2 (float16x4_t __r, float16x4_t __a, float16x4_t __b) ++{ ++ return vcmla_lane_f16 (__r, __a, __b, 1); ++} ++ ++float16x4_t ++test_vcmla_laneq_f16_2 (float16x4_t __r, float16x4_t __a, float16x8_t __b) ++{ ++ return vcmla_laneq_f16 (__r, __a, __b, 3); ++} ++ ++float16x8_t ++test_vcmlaq_lane_f16_2 (float16x8_t __r, float16x8_t __a, float16x4_t __b) ++{ ++ return vcmlaq_lane_f16 (__r, __a, __b, 1); ++} ++ ++float16x8_t ++test_vcmlaq_laneq_f16_2 (float16x8_t __r, float16x8_t __a, float16x8_t __b) ++{ ++ return vcmlaq_laneq_f16 (__r, __a, __b, 3); ++} ++ ++float16x4_t ++test_vcmla_rot90_f16 (float16x4_t __r, float16x4_t __a, float16x4_t __b) ++{ ++ return vcmla_rot90_f16 (__r, __a, __b); ++} ++ ++float16x8_t ++test_vcmlaq_rot90_f16 (float16x8_t __r, float16x8_t __a, float16x8_t __b) ++{ ++ return vcmlaq_rot90_f16 (__r, __a, __b); ++} ++ ++float16x4_t ++test_vcmla_rot90_lane_f16 (float16x4_t __r, float16x4_t __a, float16x4_t __b) ++{ ++ return vcmla_rot90_lane_f16 (__r, __a, __b, 0); ++} ++ ++float16x4_t ++test_vcmla_rot90_laneq_f16 (float16x4_t __r, float16x4_t __a, float16x8_t __b) ++{ ++ return vcmla_rot90_laneq_f16 (__r, __a, __b, 0); ++} ++ ++float16x8_t ++test_vcmlaq_rot90_lane_f16 (float16x8_t __r, float16x8_t __a, float16x4_t __b) ++{ ++ return vcmlaq_rot90_lane_f16 (__r, __a, __b, 0); ++} ++ ++float16x8_t ++test_vcmlaq_rot90_laneq_f16 (float16x8_t __r, float16x8_t __a, float16x8_t __b) ++{ ++ return vcmlaq_rot90_laneq_f16 (__r, __a, __b, 0); ++} ++ ++float16x4_t ++test_vcmla_rot90_lane_f16_2 (float16x4_t __r, float16x4_t __a, float16x4_t __b) ++{ ++ return vcmla_rot90_lane_f16 (__r, __a, __b, 1); ++} ++ ++float16x4_t ++test_vcmla_rot90_laneq_f16_2 (float16x4_t __r, float16x4_t __a, float16x8_t __b) ++{ ++ return vcmla_rot90_laneq_f16 (__r, __a, __b, 3); ++} ++ ++float16x8_t ++test_vcmlaq_rot90_lane_f16_2 (float16x8_t __r, float16x8_t __a, float16x4_t __b) ++{ ++ return vcmlaq_rot90_lane_f16 (__r, __a, __b, 1); ++} ++ ++float16x8_t ++test_vcmlaq_rot90_laneq_f16_2 (float16x8_t __r, float16x8_t __a, float16x8_t __b) ++{ ++ return vcmlaq_rot90_laneq_f16 (__r, __a, __b, 3); ++} ++ ++float16x4_t ++test_vcmla_rot180_f16 (float16x4_t __r, float16x4_t __a, float16x4_t __b) ++{ ++ return vcmla_rot180_f16 (__r, __a, __b); ++} ++ ++float16x8_t ++test_vcmlaq_rot180_f16 (float16x8_t __r, float16x8_t __a, float16x8_t __b) ++{ ++ return vcmlaq_rot180_f16 (__r, __a, __b); ++} ++ ++float16x4_t ++test_vcmla_rot180_lane_f16 (float16x4_t __r, float16x4_t __a, float16x4_t __b) ++{ ++ return vcmla_rot180_lane_f16 (__r, __a, __b, 0); ++} ++ ++float16x4_t ++test_vcmla_rot180_laneq_f16 (float16x4_t __r, float16x4_t __a, float16x8_t __b) ++{ ++ return vcmla_rot180_laneq_f16 (__r, __a, __b, 0); ++} ++ ++float16x8_t ++test_vcmlaq_rot180_lane_f16 (float16x8_t __r, float16x8_t __a, float16x4_t __b) ++{ ++ return vcmlaq_rot180_lane_f16 (__r, __a, __b, 0); ++} ++ ++float16x8_t ++test_vcmlaq_rot180_laneq_f16 (float16x8_t __r, float16x8_t __a, float16x8_t __b) ++{ ++ return vcmlaq_rot180_laneq_f16 (__r, __a, __b, 0); ++} ++ ++float16x4_t ++test_vcmla_rot180_lane_f16_2 (float16x4_t __r, float16x4_t __a, float16x4_t __b) ++{ ++ return vcmla_rot180_lane_f16 (__r, __a, __b, 1); ++} ++ ++float16x4_t ++test_vcmla_rot180_laneq_f16_2 (float16x4_t __r, float16x4_t __a, float16x8_t __b) ++{ ++ return vcmla_rot180_laneq_f16 (__r, __a, __b, 3); ++} ++ ++float16x8_t ++test_vcmlaq_rot180_lane_f16_2 (float16x8_t __r, float16x8_t __a, float16x4_t __b) ++{ ++ return vcmlaq_rot180_lane_f16 (__r, __a, __b, 1); ++} ++ ++float16x8_t ++test_vcmlaq_rot180_laneq_f16_2 (float16x8_t __r, float16x8_t __a, float16x8_t __b) ++{ ++ return vcmlaq_rot180_laneq_f16 (__r, __a, __b, 3); ++} ++ ++float16x4_t ++test_vcmla_rot270_f16 (float16x4_t __r, float16x4_t __a, float16x4_t __b) ++{ ++ return vcmla_rot270_f16 (__r, __a, __b); ++} ++ ++float16x8_t ++test_vcmlaq_rot270_f16 (float16x8_t __r, float16x8_t __a, float16x8_t __b) ++{ ++ return vcmlaq_rot270_f16 (__r, __a, __b); ++} ++ ++float16x4_t ++test_vcmla_rot270_lane_f16 (float16x4_t __r, float16x4_t __a, float16x4_t __b) ++{ ++ return vcmla_rot270_lane_f16 (__r, __a, __b, 0); ++} ++ ++float16x4_t ++test_vcmla_rot270_laneq_f16 (float16x4_t __r, float16x4_t __a, float16x8_t __b) ++{ ++ return vcmla_rot270_laneq_f16 (__r, __a, __b, 0); ++} ++ ++float16x8_t ++test_vcmlaq_rot270_lane_f16 (float16x8_t __r, float16x8_t __a, float16x4_t __b) ++{ ++ return vcmlaq_rot270_lane_f16 (__r, __a, __b, 0); ++} ++ ++float16x8_t ++test_vcmlaq_rot270_laneq_f16 (float16x8_t __r, float16x8_t __a, float16x8_t __b) ++{ ++ return vcmlaq_rot270_laneq_f16 (__r, __a, __b, 0); ++} ++ ++float16x4_t ++test_vcmla_rot270_lane_f16_2 (float16x4_t __r, float16x4_t __a, float16x4_t __b) ++{ ++ return vcmla_rot270_lane_f16 (__r, __a, __b, 1); ++} ++ ++float16x4_t ++test_vcmla_rot270_laneq_f16_2 (float16x4_t __r, float16x4_t __a, float16x8_t __b) ++{ ++ return vcmla_rot270_laneq_f16 (__r, __a, __b, 3); ++} ++ ++float16x8_t ++test_vcmlaq_rot270_lane_f16_2 (float16x8_t __r, float16x8_t __a, float16x4_t __b) ++{ ++ return vcmlaq_rot270_lane_f16 (__r, __a, __b, 1); ++} ++ ++float16x8_t ++test_vcmlaq_rot270_laneq_f16_2 (float16x8_t __r, float16x8_t __a, float16x8_t __b) ++{ ++ return vcmlaq_rot270_laneq_f16 (__r, __a, __b, 3); ++} ++ ++/* { dg-final { scan-assembler-times {dup\td[0-9]+, v[0-9]+.d\[1\]} 4 { target { aarch64*-*-* } } } } */ ++/* { dg-final { scan-assembler-times {fcadd\tv[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h, #270} 1 { target { aarch64*-*-* } } } } */ ++/* { dg-final { scan-assembler-times {fcadd\tv[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h, #90} 1 { target { aarch64*-*-* } } } } */ ++/* { dg-final { scan-assembler-times {fcadd\tv[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h, #270} 1 { target { aarch64*-*-* } } } } */ ++/* { dg-final { scan-assembler-times {fcadd\tv[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h, #90} 1 { target { aarch64*-*-* } } } } */ ++/* { dg-final { scan-assembler-times {fcmla\tv[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h, #0} 1 { target { aarch64*-*-* } } } } */ ++/* { dg-final { scan-assembler-times {fcmla\tv[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h, #180} 1 { target { aarch64*-*-* } } } } */ ++/* { dg-final { scan-assembler-times {fcmla\tv[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h, #270} 1 { target { aarch64*-*-* } } } } */ ++/* { dg-final { scan-assembler-times {fcmla\tv[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h, #90} 1 { target { aarch64*-*-* } } } } */ ++/* { dg-final { scan-assembler-times {fcmla\tv[0-9]+.4h, v[0-9]+.4h, v[0-9]+.h\[0\], #0} 2 { target { aarch64*-*-* } } } } */ ++/* { dg-final { scan-assembler-times {fcmla\tv[0-9]+.4h, v[0-9]+.4h, v[0-9]+.h\[0\], #180} 2 { target { aarch64*-*-* } } } } */ ++/* { dg-final { scan-assembler-times {fcmla\tv[0-9]+.4h, v[0-9]+.4h, v[0-9]+.h\[0\], #270} 2 { target { aarch64*-*-* } } } } */ ++/* { dg-final { scan-assembler-times {fcmla\tv[0-9]+.4h, v[0-9]+.4h, v[0-9]+.h\[0\], #90} 2 { target { aarch64*-*-* } } } } */ ++/* { dg-final { scan-assembler-times {fcmla\tv[0-9]+.4h, v[0-9]+.4h, v[0-9]+.h\[1\], #0} 2 { target { aarch64*-*-* } } } } */ ++/* { dg-final { scan-assembler-times {fcmla\tv[0-9]+.4h, v[0-9]+.4h, v[0-9]+.h\[1\], #180} 2 { target { aarch64*-*-* } } } } */ ++/* { dg-final { scan-assembler-times {fcmla\tv[0-9]+.4h, v[0-9]+.4h, v[0-9]+.h\[1\], #270} 2 { target { aarch64*-*-* } } } } */ ++/* { dg-final { scan-assembler-times {fcmla\tv[0-9]+.4h, v[0-9]+.4h, v[0-9]+.h\[1\], #90} 2 { target { aarch64*-*-* } } } } */ ++/* { dg-final { scan-assembler-times {fcmla\tv[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h, #0} 1 { target { aarch64*-*-* } } } } */ ++/* { dg-final { scan-assembler-times {fcmla\tv[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h, #180} 1 { target { aarch64*-*-* } } } } */ ++/* { dg-final { scan-assembler-times {fcmla\tv[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h, #270} 1 { target { aarch64*-*-* } } } } */ ++/* { dg-final { scan-assembler-times {fcmla\tv[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h, #90} 1 { target { aarch64*-*-* } } } } */ ++/* { dg-final { scan-assembler-times {fcmla\tv[0-9]+.8h, v[0-9]+.8h, v[0-9]+.h\[0\], #0} 2 { target { aarch64*-*-* } } } } */ ++/* { dg-final { scan-assembler-times {fcmla\tv[0-9]+.8h, v[0-9]+.8h, v[0-9]+.h\[0\], #180} 2 { target { aarch64*-*-* } } } } */ ++/* { dg-final { scan-assembler-times {fcmla\tv[0-9]+.8h, v[0-9]+.8h, v[0-9]+.h\[0\], #270} 2 { target { aarch64*-*-* } } } } */ ++/* { dg-final { scan-assembler-times {fcmla\tv[0-9]+.8h, v[0-9]+.8h, v[0-9]+.h\[0\], #90} 2 { target { aarch64*-*-* } } } } */ ++/* { dg-final { scan-assembler-times {fcmla\tv[0-9]+.8h, v[0-9]+.8h, v[0-9]+.h\[1\], #0} 1 { target { aarch64*-*-* } } } } */ ++/* { dg-final { scan-assembler-times {fcmla\tv[0-9]+.8h, v[0-9]+.8h, v[0-9]+.h\[1\], #180} 1 { target { aarch64*-*-* } } } } */ ++/* { dg-final { scan-assembler-times {fcmla\tv[0-9]+.8h, v[0-9]+.8h, v[0-9]+.h\[1\], #270} 1 { target { aarch64*-*-* } } } } */ ++/* { dg-final { scan-assembler-times {fcmla\tv[0-9]+.8h, v[0-9]+.8h, v[0-9]+.h\[1\], #90} 1 { target { aarch64*-*-* } } } } */ ++/* { dg-final { scan-assembler-times {fcmla\tv[0-9]+.8h, v[0-9]+.8h, v[0-9]+.h\[3\], #0} 1 { target { aarch64*-*-* } } } } */ ++/* { dg-final { scan-assembler-times {fcmla\tv[0-9]+.8h, v[0-9]+.8h, v[0-9]+.h\[3\], #180} 1 { target { aarch64*-*-* } } } } */ ++/* { dg-final { scan-assembler-times {fcmla\tv[0-9]+.8h, v[0-9]+.8h, v[0-9]+.h\[3\], #270} 1 { target { aarch64*-*-* } } } } */ ++/* { dg-final { scan-assembler-times {fcmla\tv[0-9]+.8h, v[0-9]+.8h, v[0-9]+.h\[3\], #90} 1 { target { aarch64*-*-* } } } } */ +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vld1x3.c +@@ -0,0 +1,82 @@ ++/* We haven't implemented these intrinsics for arm yet. */ ++/* { dg-xfail-if "" { arm*-*-* } } */ ++/* { dg-do run } */ ++/* { dg-options "-O3" } */ ++ ++#include ++#include "arm-neon-ref.h" ++ ++extern void abort (void); ++ ++#define TESTMETH(BASE, ELTS, SUFFIX) \ ++int __attribute__ ((noinline)) \ ++test_vld##SUFFIX##_x3 () \ ++{ \ ++ BASE##_t data[ELTS * 3]; \ ++ BASE##_t temp[ELTS * 3]; \ ++ BASE##x##ELTS##x##3##_t vectors; \ ++ int i,j; \ ++ for (i = 0; i < ELTS * 3; i++) \ ++ data [i] = (BASE##_t) 3*i; \ ++ asm volatile ("" : : : "memory"); \ ++ vectors = vld1##SUFFIX##_x3 (data); \ ++ vst1##SUFFIX (temp, vectors.val[0]); \ ++ vst1##SUFFIX (&temp[ELTS], vectors.val[1]); \ ++ vst1##SUFFIX (&temp[ELTS * 2], vectors.val[2]); \ ++ asm volatile ("" : : : "memory"); \ ++ for (j = 0; j < ELTS * 3; j++) \ ++ if (temp[j] != data[j]) \ ++ return 1; \ ++ return 0; \ ++} ++ ++#define VARIANTS_1(VARIANT) \ ++VARIANT (uint8, 8, _u8) \ ++VARIANT (uint16, 4, _u16) \ ++VARIANT (uint32, 2, _u32) \ ++VARIANT (uint64, 1, _u64) \ ++VARIANT (int8, 8, _s8) \ ++VARIANT (int16, 4, _s16) \ ++VARIANT (int32, 2, _s32) \ ++VARIANT (int64, 1, _s64) \ ++VARIANT (poly8, 8, _p8) \ ++VARIANT (poly16, 4, _p16) \ ++VARIANT (float16, 4, _f16) \ ++VARIANT (float32, 2, _f32) \ ++VARIANT (uint8, 16, q_u8) \ ++VARIANT (uint16, 8, q_u16) \ ++VARIANT (uint32, 4, q_u32) \ ++VARIANT (uint64, 2, q_u64) \ ++VARIANT (int8, 16, q_s8) \ ++VARIANT (int16, 8, q_s16) \ ++VARIANT (int32, 4, q_s32) \ ++VARIANT (int64, 2, q_s64) \ ++VARIANT (poly8, 16, q_p8) \ ++VARIANT (poly16, 8, q_p16) \ ++VARIANT (float16, 8, q_f16) \ ++VARIANT (float32, 4, q_f32) ++ ++#ifdef __aarch64__ ++#define VARIANTS(VARIANT) VARIANTS_1(VARIANT) \ ++VARIANT (float64, 1, _f64) \ ++VARIANT (float64, 2, q_f64) ++#else ++#define VARIANTS(VARIANT) VARIANTS_1(VARIANT) ++#endif ++ ++ ++/* Tests of vld1_x3 and vld1q_x3. */ ++VARIANTS (TESTMETH) ++ ++#define CHECKS(BASE, ELTS, SUFFIX) \ ++ if (test_vld##SUFFIX##_x3 () != 0) \ ++ fprintf (stderr, "test_vld1##SUFFIX##_x3"); ++ ++int ++main (int argc, char **argv) ++{ ++ VARIANTS (CHECKS) ++ ++ return 0; ++} ++ +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vld1x4.c +@@ -0,0 +1,83 @@ ++/* We haven't implemented these intrinsics for arm yet. */ ++/* { dg-xfail-if "" { arm*-*-* } } */ ++/* { dg-do run } */ ++/* { dg-options "-O3" } */ ++ ++#include ++#include "arm-neon-ref.h" ++ ++extern void abort (void); ++ ++#define TESTMETH(BASE, ELTS, SUFFIX) \ ++int __attribute__ ((noinline)) \ ++test_vld1##SUFFIX##_x4 () \ ++{ \ ++ BASE##_t data[ELTS * 4]; \ ++ BASE##_t temp[ELTS * 4]; \ ++ BASE##x##ELTS##x##4##_t vectors; \ ++ int i,j; \ ++ for (i = 0; i < ELTS * 4; i++) \ ++ data [i] = (BASE##_t) 4*i; \ ++ asm volatile ("" : : : "memory"); \ ++ vectors = vld1##SUFFIX##_x4 (data); \ ++ vst1##SUFFIX (temp, vectors.val[0]); \ ++ vst1##SUFFIX (&temp[ELTS], vectors.val[1]); \ ++ vst1##SUFFIX (&temp[ELTS * 2], vectors.val[2]); \ ++ vst1##SUFFIX (&temp[ELTS * 3], vectors.val[3]); \ ++ asm volatile ("" : : : "memory"); \ ++ for (j = 0; j < ELTS * 4; j++) \ ++ if (temp[j] != data[j]) \ ++ return 1; \ ++ return 0; \ ++} ++ ++#define VARIANTS_1(VARIANT) \ ++VARIANT (uint8, 8, _u8) \ ++VARIANT (uint16, 4, _u16) \ ++VARIANT (uint32, 2, _u32) \ ++VARIANT (uint64, 1, _u64) \ ++VARIANT (int8, 8, _s8) \ ++VARIANT (int16, 4, _s16) \ ++VARIANT (int32, 2, _s32) \ ++VARIANT (int64, 1, _s64) \ ++VARIANT (poly8, 8, _p8) \ ++VARIANT (poly16, 4, _p16) \ ++VARIANT (poly64, 1, _p64) \ ++VARIANT (float16, 4, _f16) \ ++VARIANT (float32, 2, _f32) \ ++VARIANT (uint8, 16, q_u8) \ ++VARIANT (uint16, 8, q_u16) \ ++VARIANT (uint32, 4, q_u32) \ ++VARIANT (uint64, 2, q_u64) \ ++VARIANT (int8, 16, q_s8) \ ++VARIANT (int16, 8, q_s16) \ ++VARIANT (int32, 4, q_s32) \ ++VARIANT (int64, 2, q_s64) \ ++VARIANT (poly8, 16, q_p8) \ ++VARIANT (poly16, 8, q_p16) \ ++VARIANT (poly64, 2, q_p64) \ ++VARIANT (float16, 8, q_f16) \ ++VARIANT (float32, 4, q_f32) ++ ++#ifdef __aarch64__ ++#define VARIANTS(VARIANT) VARIANTS_1(VARIANT) \ ++VARIANT (float64, 1, _f64) \ ++VARIANT (float64, 2, q_f64) ++#else ++#define VARIANTS(VARIANT) VARIANTS_1(VARIANT) ++#endif ++ ++/* Tests of vld1_x4 and vld1q_x4. */ ++VARIANTS (TESTMETH) ++ ++#define CHECKS(BASE, ELTS, SUFFIX) \ ++ if (test_vld1##SUFFIX##_x4 () != 0) \ ++ fprintf (stderr, "test_vld1##SUFFIX##_x4"); ++ ++int ++main (int argc, char **argv) ++{ ++ VARIANTS (CHECKS) ++ ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vreinterpret_p128.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vreinterpret_p128.c +@@ -33,6 +33,10 @@ VECT_VAR_DECL(vreint_expected_q_p128_f32,poly,64,2) [] = { 0xc1700000c1800000, + 0xc1500000c1600000 }; + VECT_VAR_DECL(vreint_expected_q_p128_f16,poly,64,2) [] = { 0xca80cb00cb80cc00, + 0xc880c900c980ca00 }; ++#ifdef __aarch64__ ++VECT_VAR_DECL(vreint_expected_q_p128_f64,poly,64,2) [] = { 0xc030000000000000, ++ 0xc02e000000000000 }; ++#endif + + /* Expected results: vreinterpretq_*_p128. */ + VECT_VAR_DECL(vreint_expected_q_s8_p128,int,8,16) [] = { 0xf0, 0xff, 0xff, 0xff, +@@ -75,6 +79,10 @@ VECT_VAR_DECL(vreint_expected_q_f16_p128,hfloat,16,8) [] = { 0xfff0, 0xffff, + 0xffff, 0xffff, + 0xfff1, 0xffff, + 0xffff, 0xffff }; ++#ifdef __aarch64__ ++VECT_VAR_DECL(vreint_expected_q_f64_p128,hfloat,64,2) [] = { 0xfffffffffffffff0, ++ 0xfffffffffffffff1 }; ++#endif + + int main (void) + { +@@ -90,6 +98,10 @@ int main (void) + #endif + VLOAD(vreint_vector, buffer, q, float, f, 32, 4); + ++#ifdef __aarch64__ ++ VLOAD(vreint_vector, buffer, q, float, f, 64, 2); ++#endif ++ + /* vreinterpretq_p128_* tests. */ + #undef TEST_MSG + #define TEST_MSG "VREINTERPRETQ_P128_*" +@@ -121,6 +133,10 @@ int main (void) + #endif + TEST_VREINTERPRET128(q, poly, p, 128, 1, float, f, 32, 4, vreint_expected_q_p128_f32); + ++#ifdef __aarch64__ ++ TEST_VREINTERPRET128(q, poly, p, 128, 1, float, f, 64, 2, vreint_expected_q_p128_f64); ++#endif ++ + /* vreinterpretq_*_p128 tests. */ + #undef TEST_MSG + #define TEST_MSG "VREINTERPRETQ_*_P128" +@@ -161,5 +177,8 @@ int main (void) + #endif + TEST_VREINTERPRET_FP_FROM_P128(q, float, f, 32, 4, poly, p, 128, 1, vreint_expected_q_f32_p128); + ++#ifdef __aarch64__ ++ TEST_VREINTERPRET_FP_FROM_P128(q, float, f, 64, 2, poly, p, 128, 1, vreint_expected_q_f64_p128); ++#endif + return 0; + } +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vst1x2.c +@@ -0,0 +1,80 @@ ++/* We haven't implemented these intrinsics for arm yet. */ ++/* { dg-xfail-if "" { arm*-*-* } } */ ++/* { dg-do run } */ ++/* { dg-options "-O3" } */ ++ ++#include ++#include "arm-neon-ref.h" ++ ++extern void abort (void); ++ ++#define TESTMETH(BASE, ELTS, SUFFIX) \ ++int __attribute__ ((noinline)) \ ++test_vst1##SUFFIX##_x2 () \ ++{ \ ++ BASE##_t data[ELTS * 2]; \ ++ BASE##_t temp[ELTS * 2]; \ ++ BASE##x##ELTS##x##2##_t vectors; \ ++ int i,j; \ ++ for (i = 0; i < ELTS * 2; i++) \ ++ data [i] = (BASE##_t) 2*i; \ ++ asm volatile ("" : : : "memory"); \ ++ vectors.val[0] = vld1##SUFFIX (data); \ ++ vectors.val[1] = vld1##SUFFIX (&data[ELTS]); \ ++ vst1##SUFFIX##_x2 (temp, vectors); \ ++ asm volatile ("" : : : "memory"); \ ++ for (j = 0; j < ELTS * 2; j++) \ ++ if (temp[j] != data[j]) \ ++ return 1; \ ++ return 0; \ ++} ++ ++#define VARIANTS_1(VARIANT) \ ++VARIANT (uint8, 8, _u8) \ ++VARIANT (uint16, 4, _u16) \ ++VARIANT (uint32, 2, _u32) \ ++VARIANT (uint64, 1, _u64) \ ++VARIANT (int8, 8, _s8) \ ++VARIANT (int16, 4, _s16) \ ++VARIANT (int32, 2, _s32) \ ++VARIANT (int64, 1, _s64) \ ++VARIANT (poly8, 8, _p8) \ ++VARIANT (poly16, 4, _p16) \ ++VARIANT (float16, 4, _f16) \ ++VARIANT (float32, 2, _f32) \ ++VARIANT (uint8, 16, q_u8) \ ++VARIANT (uint16, 8, q_u16) \ ++VARIANT (uint32, 4, q_u32) \ ++VARIANT (uint64, 2, q_u64) \ ++VARIANT (int8, 16, q_s8) \ ++VARIANT (int16, 8, q_s16) \ ++VARIANT (int32, 4, q_s32) \ ++VARIANT (int64, 2, q_s64) \ ++VARIANT (poly8, 16, q_p8) \ ++VARIANT (poly16, 8, q_p16) \ ++VARIANT (float16, 8, q_f16) \ ++VARIANT (float32, 4, q_f32) ++ ++#ifdef __aarch64__ ++#define VARIANTS(VARIANT) VARIANTS_1(VARIANT) \ ++VARIANT (float64, 1, _f64) \ ++VARIANT (float64, 2, q_f64) ++#else ++#define VARIANTS(VARIANT) VARIANTS_1(VARIANT) ++#endif ++ ++/* Tests of vst1_x2 and vst1q_x2. */ ++VARIANTS (TESTMETH) ++ ++#define CHECKS(BASE, ELTS, SUFFIX) \ ++ if (test_vst1##SUFFIX##_x2 () != 0) \ ++ fprintf (stderr, "test_vst1##SUFFIX##_x2"); ++ ++int ++main (int argc, char **argv) ++{ ++ VARIANTS (CHECKS) ++ ++ return 0; ++} ++ +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vst1x3.c +@@ -0,0 +1,81 @@ ++/* We haven't implemented these intrinsics for arm yet. */ ++/* { dg-xfail-if "" { arm*-*-* } } */ ++/* { dg-do run } */ ++/* { dg-options "-O3" } */ ++ ++#include ++#include "arm-neon-ref.h" ++ ++extern void abort (void); ++ ++#define TESTMETH(BASE, ELTS, SUFFIX) \ ++int __attribute__ ((noinline)) \ ++test_vst1##SUFFIX##_x3 () \ ++{ \ ++ BASE##_t data[ELTS * 3]; \ ++ BASE##_t temp[ELTS * 3]; \ ++ BASE##x##ELTS##x##3##_t vectors; \ ++ int i,j; \ ++ for (i = 0; i < ELTS * 3; i++) \ ++ data [i] = (BASE##_t) 3*i; \ ++ asm volatile ("" : : : "memory"); \ ++ vectors.val[0] = vld1##SUFFIX (data); \ ++ vectors.val[1] = vld1##SUFFIX (&data[ELTS]); \ ++ vectors.val[2] = vld1##SUFFIX (&data[ELTS * 2]); \ ++ vst1##SUFFIX##_x3 (temp, vectors); \ ++ asm volatile ("" : : : "memory"); \ ++ for (j = 0; j < ELTS * 3; j++) \ ++ if (temp[j] != data[j]) \ ++ return 1; \ ++ return 0; \ ++} ++ ++#define VARIANTS_1(VARIANT) \ ++VARIANT (uint8, 8, _u8) \ ++VARIANT (uint16, 4, _u16) \ ++VARIANT (uint32, 2, _u32) \ ++VARIANT (uint64, 1, _u64) \ ++VARIANT (int8, 8, _s8) \ ++VARIANT (int16, 4, _s16) \ ++VARIANT (int32, 2, _s32) \ ++VARIANT (int64, 1, _s64) \ ++VARIANT (poly8, 8, _p8) \ ++VARIANT (poly16, 4, _p16) \ ++VARIANT (float16, 4, _f16) \ ++VARIANT (float32, 2, _f32) \ ++VARIANT (uint8, 16, q_u8) \ ++VARIANT (uint16, 8, q_u16) \ ++VARIANT (uint32, 4, q_u32) \ ++VARIANT (uint64, 2, q_u64) \ ++VARIANT (int8, 16, q_s8) \ ++VARIANT (int16, 8, q_s16) \ ++VARIANT (int32, 4, q_s32) \ ++VARIANT (int64, 2, q_s64) \ ++VARIANT (poly8, 16, q_p8) \ ++VARIANT (poly16, 8, q_p16) \ ++VARIANT (float16, 8, q_f16) \ ++VARIANT (float32, 4, q_f32) ++ ++#ifdef __aarch64__ ++#define VARIANTS(VARIANT) VARIANTS_1(VARIANT) \ ++VARIANT (float64, 1, _f64) \ ++VARIANT (float64, 2, q_f64) ++#else ++#define VARIANTS(VARIANT) VARIANTS_1(VARIANT) ++#endif ++ ++/* Tests of vst1_x3 and vst1q_x3. */ ++VARIANTS (TESTMETH) ++ ++#define CHECKS(BASE, ELTS, SUFFIX) \ ++ if (test_vst1##SUFFIX##_x3 () != 0) \ ++ fprintf (stderr, "test_vst1##SUFFIX##_x3"); ++ ++int ++main (int argc, char **argv) ++{ ++ VARIANTS (CHECKS) ++ ++ return 0; ++} ++ +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vst1x4.c +@@ -0,0 +1,83 @@ ++/* We haven't implemented these intrinsics for arm yet. */ ++/* { dg-xfail-if "" { arm*-*-* } } */ ++/* { dg-do run } */ ++/* { dg-options "-O3" } */ ++ ++#include ++#include "arm-neon-ref.h" ++ ++extern void abort (void); ++ ++#define TESTMETH(BASE, ELTS, SUFFIX) \ ++int __attribute__ ((noinline)) \ ++test_vst1##SUFFIX##_x4 () \ ++{ \ ++ BASE##_t data[ELTS * 4]; \ ++ BASE##_t temp[ELTS * 4]; \ ++ BASE##x##ELTS##x##4##_t vectors; \ ++ int i,j; \ ++ for (i = 0; i < ELTS * 4; i++) \ ++ data [i] = (BASE##_t) 4*i; \ ++ asm volatile ("" : : : "memory"); \ ++ vectors.val[0] = vld1##SUFFIX (data); \ ++ vectors.val[1] = vld1##SUFFIX (&data[ELTS]); \ ++ vectors.val[2] = vld1##SUFFIX (&data[ELTS * 2]); \ ++ vectors.val[3] = vld1##SUFFIX (&data[ELTS * 3]); \ ++ vst1##SUFFIX##_x4 (temp, vectors); \ ++ asm volatile ("" : : : "memory"); \ ++ for (j = 0; j < ELTS * 4; j++) \ ++ if (temp[j] != data[j]) \ ++ return 1; \ ++ return 0; \ ++} ++ ++#define VARIANTS_1(VARIANT) \ ++VARIANT (uint8, 8, _u8) \ ++VARIANT (uint16, 4, _u16) \ ++VARIANT (uint32, 2, _u32) \ ++VARIANT (uint64, 1, _u64) \ ++VARIANT (int8, 8, _s8) \ ++VARIANT (int16, 4, _s16) \ ++VARIANT (int32, 2, _s32) \ ++VARIANT (int64, 1, _s64) \ ++VARIANT (poly8, 8, _p8) \ ++VARIANT (poly16, 4, _p16) \ ++VARIANT (poly64, 1, _p64) \ ++VARIANT (float16, 4, _f16) \ ++VARIANT (float32, 2, _f32) \ ++VARIANT (uint8, 16, q_u8) \ ++VARIANT (uint16, 8, q_u16) \ ++VARIANT (uint32, 4, q_u32) \ ++VARIANT (uint64, 2, q_u64) \ ++VARIANT (int8, 16, q_s8) \ ++VARIANT (int16, 8, q_s16) \ ++VARIANT (int32, 4, q_s32) \ ++VARIANT (int64, 2, q_s64) \ ++VARIANT (poly8, 16, q_p8) \ ++VARIANT (poly16, 8, q_p16) \ ++VARIANT (poly64, 2, q_p64) \ ++VARIANT (float16, 8, q_f16) \ ++VARIANT (float32, 4, q_f32) ++ ++#ifdef __aarch64__ ++#define VARIANTS(VARIANT) VARIANTS_1(VARIANT) \ ++VARIANT (float64, 1, _f64) \ ++VARIANT (float64, 2, q_f64) ++#else ++#define VARIANTS(VARIANT) VARIANTS_1(VARIANT) ++#endif ++ ++/* Tests of vst1_x4 and vst1q_x4. */ ++VARIANTS (TESTMETH) ++ ++#define CHECKS(BASE, ELTS, SUFFIX) \ ++ if (test_vst1##SUFFIX##_x4 () != 0) \ ++ fprintf (stderr, "test_vst1##SUFFIX##_x4"); ++ ++int ++main (int argc, char **argv) ++{ ++ VARIANTS (CHECKS) ++ ++ return 0; ++} +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vtrn_half.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vtrn_half.c +@@ -73,11 +73,8 @@ void exec_vtrn_half (void) + /* Input vector can only have 64 bits. */ + DECL_VARIABLE_ALL_VARIANTS(vector); + DECL_VARIABLE_ALL_VARIANTS(vector2); +- DECL_VARIABLE(vector, float, 64, 2); +- DECL_VARIABLE(vector2, float, 64, 2); + + DECL_VARIABLE_ALL_VARIANTS(vector_res); +- DECL_VARIABLE(vector_res, float, 64, 2); + + clean_results (); + /* We don't have vtrn1_T64x1, so set expected to the clean value. */ +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vuzp_half.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vuzp_half.c +@@ -70,11 +70,8 @@ void exec_vuzp_half (void) + /* Input vector can only have 64 bits. */ + DECL_VARIABLE_ALL_VARIANTS(vector); + DECL_VARIABLE_ALL_VARIANTS(vector2); +- DECL_VARIABLE(vector, float, 64, 2); +- DECL_VARIABLE(vector2, float, 64, 2); + + DECL_VARIABLE_ALL_VARIANTS(vector_res); +- DECL_VARIABLE(vector_res, float, 64, 2); + + clean_results (); + /* We don't have vuzp1_T64x1, so set expected to the clean value. */ +--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vzip_half.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vzip_half.c +@@ -73,11 +73,8 @@ void exec_vzip_half (void) + /* Input vector can only have 64 bits. */ + DECL_VARIABLE_ALL_VARIANTS(vector); + DECL_VARIABLE_ALL_VARIANTS(vector2); +- DECL_VARIABLE(vector, float, 64, 2); +- DECL_VARIABLE(vector2, float, 64, 2); + + DECL_VARIABLE_ALL_VARIANTS(vector_res); +- DECL_VARIABLE(vector_res, float, 64, 2); + + clean_results (); + /* We don't have vzip1_T64x1, so set expected to the clean value. */ +--- a/src/gcc/testsuite/gcc.target/aarch64/atomic-comp-swap-release-acquire.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/atomic-comp-swap-release-acquire.c +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-march=armv8-a+nolse -O2 -fno-ipa-icf" } */ ++/* { dg-options "-march=armv8-a+nolse -O2 -fno-ipa-icf -mno-outline-atomics" } */ + + #include "atomic-comp-swap-release-acquire.x" + +--- a/src/gcc/testsuite/gcc.target/aarch64/atomic-op-acq_rel.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/atomic-op-acq_rel.c +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-march=armv8-a+nolse -O2" } */ ++/* { dg-options "-march=armv8-a+nolse -O2 -mno-outline-atomics" } */ + + #include "atomic-op-acq_rel.x" + +--- a/src/gcc/testsuite/gcc.target/aarch64/atomic-op-acquire.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/atomic-op-acquire.c +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-march=armv8-a+nolse -O2" } */ ++/* { dg-options "-march=armv8-a+nolse -O2 -mno-outline-atomics" } */ + + #include "atomic-op-acquire.x" + +--- a/src/gcc/testsuite/gcc.target/aarch64/atomic-op-char.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/atomic-op-char.c +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-march=armv8-a+nolse -O2" } */ ++/* { dg-options "-march=armv8-a+nolse -O2 -mno-outline-atomics" } */ + + #include "atomic-op-char.x" + +--- a/src/gcc/testsuite/gcc.target/aarch64/atomic-op-consume.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/atomic-op-consume.c +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-march=armv8-a+nolse -O2" } */ ++/* { dg-options "-march=armv8-a+nolse -O2 -mno-outline-atomics" } */ + + #include "atomic-op-consume.x" + +--- a/src/gcc/testsuite/gcc.target/aarch64/atomic-op-imm.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/atomic-op-imm.c +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-march=armv8-a+nolse -O2" } */ ++/* { dg-options "-march=armv8-a+nolse -O2 -mno-outline-atomics" } */ + + int v = 0; + +--- a/src/gcc/testsuite/gcc.target/aarch64/atomic-op-int.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/atomic-op-int.c +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-march=armv8-a+nolse -O2" } */ ++/* { dg-options "-march=armv8-a+nolse -O2 -mno-outline-atomics" } */ + + #include "atomic-op-int.x" + +--- a/src/gcc/testsuite/gcc.target/aarch64/atomic-op-long.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/atomic-op-long.c +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-march=armv8-a+nolse -O2" } */ ++/* { dg-options "-march=armv8-a+nolse -O2 -mno-outline-atomics" } */ + + long v = 0; + +--- a/src/gcc/testsuite/gcc.target/aarch64/atomic-op-relaxed.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/atomic-op-relaxed.c +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-march=armv8-a+nolse -O2" } */ ++/* { dg-options "-march=armv8-a+nolse -O2 -mno-outline-atomics" } */ + + #include "atomic-op-relaxed.x" + +--- a/src/gcc/testsuite/gcc.target/aarch64/atomic-op-release.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/atomic-op-release.c +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-march=armv8-a+nolse -O2" } */ ++/* { dg-options "-march=armv8-a+nolse -O2 -mno-outline-atomics" } */ + + #include "atomic-op-release.x" + +--- a/src/gcc/testsuite/gcc.target/aarch64/atomic-op-seq_cst.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/atomic-op-seq_cst.c +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-march=armv8-a+nolse -O2" } */ ++/* { dg-options "-march=armv8-a+nolse -O2 -mno-outline-atomics" } */ + + #include "atomic-op-seq_cst.x" + +--- a/src/gcc/testsuite/gcc.target/aarch64/atomic-op-short.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/atomic-op-short.c +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-march=armv8-a+nolse -O2" } */ ++/* { dg-options "-march=armv8-a+nolse -O2 -mno-outline-atomics" } */ + + #include "atomic-op-short.x" + +--- a/src/gcc/testsuite/gcc.target/aarch64/atomic_cmp_exchange_zero_reg_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/atomic_cmp_exchange_zero_reg_1.c +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -march=armv8-a+nolse" } */ ++/* { dg-options "-O2 -march=armv8-a+nolse -mno-outline-atomics" } */ + /* { dg-skip-if "" { *-*-* } { "-mcpu=*" } { "" } } */ + + int +--- a/src/gcc/testsuite/gcc.target/aarch64/atomic_cmp_exchange_zero_strong_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/atomic_cmp_exchange_zero_strong_1.c +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -march=armv8-a+nolse" } */ ++/* { dg-options "-O2 -march=armv8-a+nolse -mno-outline-atomics" } */ + /* { dg-skip-if "" { *-*-* } { "-mcpu=*" } { "" } } */ + + int +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/aarch64/cpunative/aarch64-cpunative.exp +@@ -0,0 +1,35 @@ ++# Copyright (C) 2014-2020 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 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 GCC; see the file COPYING3. If not see ++# . ++ ++# GCC testsuite that uses the `dg.exp' driver. ++ ++# Exit immediately if this isn't an AArch64 target. ++if ![istarget aarch64*-*-*] then { ++ return ++} ++ ++# Load support procs. ++load_lib gcc-dg.exp ++ ++# Initialize `dg'. ++dg-init ++ ++# Main loop. ++dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.\[cCS\]]] \ ++ "" "" ++ ++# All done. ++dg-finish +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/aarch64/cpunative/info_0 +@@ -0,0 +1,8 @@ ++processor : 0 ++BogoMIPS : 100.00 ++Features : fp asimd evtstrm aes pmull sha1 sha2 crc32 asimddp ++CPU implementer : 0x41 ++CPU architecture: 8 ++CPU variant : 0x0 ++CPU part : 0xd08 ++CPU revision : 2 +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/aarch64/cpunative/info_1 +@@ -0,0 +1,8 @@ ++processor : 0 ++BogoMIPS : 100.00 ++Features : fp ++CPU implementer : 0x41 ++CPU architecture: 8 ++CPU variant : 0x0 ++CPU part : 0xd08 ++CPU revision : 2 +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/aarch64/cpunative/info_10 +@@ -0,0 +1,8 @@ ++processor : 0 ++BogoMIPS : 100.00 ++Features : ++CPU implementer : 0x41 ++CPU architecture: 8 ++CPU variant : 0x0 ++CPU part : 0xd08 ++CPU revision : 2 +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/aarch64/cpunative/info_11 +@@ -0,0 +1,8 @@ ++processor : 0 ++BogoMIPS : 100.00 ++Features : asimd fp sb ++CPU implementer : 0x41 ++CPU architecture: 8 ++CPU variant : 0x0 ++CPU part : 0xd08 ++CPU revision : 2 +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/aarch64/cpunative/info_12 +@@ -0,0 +1,8 @@ ++processor : 0 ++BogoMIPS : 100.00 ++Features : asimd fp ssbs ++CPU implementer : 0x41 ++CPU architecture: 8 ++CPU variant : 0x0 ++CPU part : 0xd08 ++CPU revision : 2 +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/aarch64/cpunative/info_13 +@@ -0,0 +1,8 @@ ++processor : 0 ++BogoMIPS : 100.00 ++Features : fp asimd evtstrm aes pmull sha1 sha2 crc32 asimddp ++CPU implementer : 0x41 ++CPU architecture: 8 ++CPU variant : 0x0 ++CPU part : 0xd08 ++CPU revision : 2 +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/aarch64/cpunative/info_14 +@@ -0,0 +1,8 @@ ++processor : 0 ++BogoMIPS : 100.00 ++Features : Lorem ipsum dolor sit ametd rebum expetendis per at Dolor lucilius referrentur ei mei virtute eruditi eum ne Iisque verterem tacimates eu mea ei autem asimd fp asimddp ++CPU implementer : 0x41 ++CPU architecture: 8 ++CPU variant : 0x0 ++CPU part : 0xd08 ++CPU revision : 2 +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/aarch64/cpunative/info_15 +@@ -0,0 +1,8 @@ ++processor : 0 ++BogoMIPS : 100.00 ++Features : Lorem ipsum dolor sit ametd rebum expetendis per at Dolor lucilius referrentur ei mei virtute eruditi eum ne Iisque verter svesm4 asimd fp ++CPU implementer : 0x41 ++CPU architecture: 8 ++CPU variant : 0x0 ++CPU part : 0xd08 ++CPU revision : 2 +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/aarch64/cpunative/info_2 +@@ -0,0 +1,8 @@ ++processor : 0 ++BogoMIPS : 100.00 ++Features : asimd ++CPU implementer : 0x41 ++CPU architecture: 8 ++CPU variant : 0x0 ++CPU part : 0xd08 ++CPU revision : 2 +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/aarch64/cpunative/info_3 +@@ -0,0 +1,8 @@ ++processor : 0 ++BogoMIPS : 100.00 ++Features : asimd fp ++CPU implementer : 0x41 ++CPU architecture: 8 ++CPU variant : 0x0 ++CPU part : 0xd08 ++CPU revision : 2 +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/aarch64/cpunative/info_4 +@@ -0,0 +1,8 @@ ++processor : 0 ++BogoMIPS : 100.00 ++Features : asimd fp aes pmull sha1 sha2 ++CPU implementer : 0x41 ++CPU architecture: 8 ++CPU variant : 0x0 ++CPU part : 0xd08 ++CPU revision : 2 +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/aarch64/cpunative/info_5 +@@ -0,0 +1,8 @@ ++processor : 0 ++BogoMIPS : 100.00 ++Features : asimd fp fphp asimdhp ++CPU implementer : 0x41 ++CPU architecture: 8 ++CPU variant : 0x0 ++CPU part : 0xd08 ++CPU revision : 2 +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/aarch64/cpunative/info_6 +@@ -0,0 +1,8 @@ ++processor : 0 ++BogoMIPS : 100.00 ++Features : asimd fp aes pmull sha1 sha2 fphp asimdhp ++CPU implementer : 0x41 ++CPU architecture: 8 ++CPU variant : 0x0 ++CPU part : 0xd08 ++CPU revision : 2 +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/aarch64/cpunative/info_7 +@@ -0,0 +1,8 @@ ++processor : 0 ++BogoMIPS : 100.00 ++Features : asimd pmull sha1 fp aes sha2 fphp asimdhp ++CPU implementer : 0x41 ++CPU architecture: 8 ++CPU variant : 0x0 ++CPU part : 0xd08 ++CPU revision : 2 +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/aarch64/cpunative/info_8 +@@ -0,0 +1,8 @@ ++processor : 0 ++BogoMIPS : 100.00 ++Features : asimd sve fp ++CPU implementer : 0x41 ++CPU architecture: 8 ++CPU variant : 0x0 ++CPU part : 0xd08 ++CPU revision : 2 +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/aarch64/cpunative/info_9 +@@ -0,0 +1,8 @@ ++processor : 0 ++BogoMIPS : 100.00 ++Features : asimd fp svesm4 ++CPU implementer : 0x41 ++CPU architecture: 8 ++CPU variant : 0x0 ++CPU part : 0xd08 ++CPU revision : 2 +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/aarch64/cpunative/native_cpu_0.c +@@ -0,0 +1,12 @@ ++/* { dg-do compile { target { { aarch64*-*-linux*} && native } } } */ ++/* { dg-set-compiler-env-var GCC_CPUINFO "$srcdir/gcc.target/aarch64/cpunative/info_0" } */ ++/* { dg-additional-options "-mcpu=native" } */ ++ ++int main() ++{ ++ return 0; ++} ++ ++/* { dg-final { scan-assembler {\.arch armv8-a\+crypto\+crc\+dotprod} } } */ ++ ++/* Test a normal looking procinfo. */ +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/aarch64/cpunative/native_cpu_1.c +@@ -0,0 +1,12 @@ ++/* { dg-do compile { target { { aarch64*-*-linux*} && native } } } */ ++/* { dg-set-compiler-env-var GCC_CPUINFO "$srcdir/gcc.target/aarch64/cpunative/info_1" } */ ++/* { dg-additional-options "-mcpu=native" } */ ++ ++int main() ++{ ++ return 0; ++} ++ ++/* { dg-final { scan-assembler {\.arch armv8-a\+nosimd} } } */ ++ ++/* Test one where fp is on by default so turn off simd. */ +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/aarch64/cpunative/native_cpu_10.c +@@ -0,0 +1,12 @@ ++/* { dg-do compile { target { { aarch64*-*-linux*} && native } } } */ ++/* { dg-set-compiler-env-var GCC_CPUINFO "$srcdir/gcc.target/aarch64/cpunative/info_10" } */ ++/* { dg-additional-options "-mcpu=native" } */ ++ ++int main() ++{ ++ return 0; ++} ++ ++/* { dg-final { scan-assembler {\.arch armv8-a\+nofp\+nosimd} } } */ ++ ++/* Test one with no entry in feature list. */ +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/aarch64/cpunative/native_cpu_13.c +@@ -0,0 +1,12 @@ ++/* { dg-do compile { target { { aarch64*-*-linux*} && native } } } */ ++/* { dg-set-compiler-env-var GCC_CPUINFO "$srcdir/gcc.target/aarch64/cpunative/info_13" } */ ++/* { dg-additional-options "-mcpu=native" } */ ++ ++int main() ++{ ++ return 0; ++} ++ ++/* { dg-final { scan-assembler {\.arch armv8-a\+crypto\+crc\+dotprod} } } */ ++ ++/* Test one with mixed order of feature bits. */ +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/aarch64/cpunative/native_cpu_14.c +@@ -0,0 +1,12 @@ ++/* { dg-do compile { target { { aarch64*-*-linux*} && native } } } */ ++/* { dg-set-compiler-env-var GCC_CPUINFO "$srcdir/gcc.target/aarch64/cpunative/info_14" } */ ++/* { dg-additional-options "-mcpu=native" } */ ++ ++int main() ++{ ++ return 0; ++} ++ ++/* { dg-final { scan-assembler {\.arch armv8-a\+dotprod} } } */ ++ ++/* Test one where valid feature bits are at a boundary > buffer size. */ +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/aarch64/cpunative/native_cpu_2.c +@@ -0,0 +1,12 @@ ++/* { dg-do compile { target { { aarch64*-*-linux*} && native } } } */ ++/* { dg-set-compiler-env-var GCC_CPUINFO "$srcdir/gcc.target/aarch64/cpunative/info_2" } */ ++/* { dg-additional-options "-mcpu=native" } */ ++ ++int main() ++{ ++ return 0; ++} ++ ++/* { dg-final { scan-assembler {\.arch armv8-a\+nofp\+nosimd} } } */ ++ ++/* Test one where asimd is provided byt no fp. */ +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/aarch64/cpunative/native_cpu_3.c +@@ -0,0 +1,13 @@ ++/* { dg-do compile { target { { aarch64*-*-linux*} && native } } } */ ++/* { dg-set-compiler-env-var GCC_CPUINFO "$srcdir/gcc.target/aarch64/cpunative/info_3" } */ ++/* { dg-additional-options "-mcpu=native" } */ ++ ++int main() ++{ ++ return 0; ++} ++ ++/* { dg-final { scan-assembler {\.arch armv8-a} } } */ ++ ++/* Test where asimd and fp are the only ones provided, these are default ++ and so shouldn't emit anything. */ +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/aarch64/cpunative/native_cpu_4.c +@@ -0,0 +1,12 @@ ++/* { dg-do compile { target { { aarch64*-*-linux*} && native } } } */ ++/* { dg-set-compiler-env-var GCC_CPUINFO "$srcdir/gcc.target/aarch64/cpunative/info_4" } */ ++/* { dg-additional-options "-mcpu=native" } */ ++ ++int main() ++{ ++ return 0; ++} ++ ++/* { dg-final { scan-assembler {\.arch armv8-a\+crypto} } } */ ++ ++/* Test one where all crypto bits are given so crypto should be enabled. */ +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/aarch64/cpunative/native_cpu_5.c +@@ -0,0 +1,12 @@ ++/* { dg-do compile { target { { aarch64*-*-linux*} && native } } } */ ++/* { dg-set-compiler-env-var GCC_CPUINFO "$srcdir/gcc.target/aarch64/cpunative/info_5" } */ ++/* { dg-additional-options "-mcpu=native" } */ ++ ++int main() ++{ ++ return 0; ++} ++ ++/* { dg-final { scan-assembler {\.arch armv8-a\+fp16} } } */ ++ ++/* Test one where fp16 is available and so should be emitted. */ +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/aarch64/cpunative/native_cpu_6.c +@@ -0,0 +1,13 @@ ++/* { dg-do compile { target { { aarch64*-*-linux*} && native } } } */ ++/* { dg-set-compiler-env-var GCC_CPUINFO "$srcdir/gcc.target/aarch64/cpunative/info_6" } */ ++/* { dg-additional-options "-mcpu=native" } */ ++ ++int main() ++{ ++ return 0; ++} ++ ++/* { dg-final { scan-assembler {\.arch armv8-a\+crypto\+fp16} } } */ ++ ++/* Test one where the feature bits for crypto and fp16 are given in ++ same order as declared in options file. */ +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/aarch64/cpunative/native_cpu_7.c +@@ -0,0 +1,13 @@ ++/* { dg-do compile { target { { aarch64*-*-linux*} && native } } } */ ++/* { dg-set-compiler-env-var GCC_CPUINFO "$srcdir/gcc.target/aarch64/cpunative/info_7" } */ ++/* { dg-additional-options "-mcpu=native" } */ ++ ++int main() ++{ ++ return 0; ++} ++ ++/* { dg-final { scan-assembler {\.arch armv8-a\+crypto\+fp16} } } */ ++ ++/* Test one where the crypto and fp16 options are specified in different ++ order from what is in the options file. */ +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/aarch64/cpunative/native_cpu_8.c +@@ -0,0 +1,12 @@ ++/* { dg-do compile { target { { aarch64*-*-linux*} && native } } } */ ++/* { dg-set-compiler-env-var GCC_CPUINFO "$srcdir/gcc.target/aarch64/cpunative/info_8" } */ ++/* { dg-additional-options "-mcpu=native" } */ ++ ++int main() ++{ ++ return 0; ++} ++ ++/* { dg-final { scan-assembler {\.arch armv8-a\+sve} } } */ ++ ++/* Test one where sve is enabled. */ +--- a/src/gcc/testsuite/gcc.target/aarch64/fp16_fmul_high.h ++++ b/src/gcc/testsuite/gcc.target/aarch64/fp16_fmul_high.h +@@ -1,25 +1,25 @@ + #include "arm_neon.h" + + float32x2_t +-test_vfmlal_high_u32 (float32x2_t r, float16x4_t a, float16x4_t b) ++test_vfmlal_high_f16 (float32x2_t r, float16x4_t a, float16x4_t b) + { +- return vfmlal_high_u32 (r, a, b); ++ return vfmlal_high_f16 (r, a, b); + } + + float32x4_t +-test_vfmlalq_high_u32 (float32x4_t r, float16x8_t a, float16x8_t b) ++test_vfmlalq_high_f16 (float32x4_t r, float16x8_t a, float16x8_t b) + { +- return vfmlalq_high_u32 (r, a, b); ++ return vfmlalq_high_f16 (r, a, b); + } + + float32x2_t +-test_vfmlsl_high_u32 (float32x2_t r, float16x4_t a, float16x4_t b) ++test_vfmlsl_high_f16 (float32x2_t r, float16x4_t a, float16x4_t b) + { +- return vfmlsl_high_u32 (r, a, b); ++ return vfmlsl_high_f16 (r, a, b); + } + + float32x4_t +-test_vfmlslq_high_u32 (float32x4_t r, float16x8_t a, float16x8_t b) ++test_vfmlslq_high_f16 (float32x4_t r, float16x8_t a, float16x8_t b) + { +- return vfmlslq_high_u32 (r, a, b); ++ return vfmlslq_high_f16 (r, a, b); + } +--- a/src/gcc/testsuite/gcc.target/aarch64/fp16_fmul_lane_high.h ++++ b/src/gcc/testsuite/gcc.target/aarch64/fp16_fmul_lane_high.h +@@ -1,49 +1,49 @@ + #include "arm_neon.h" + + float32x2_t +-test_vfmlal_lane_high_u32 (float32x2_t r, float16x4_t a, float16x4_t b) ++test_vfmlal_lane_high_f16 (float32x2_t r, float16x4_t a, float16x4_t b) + { +- return vfmlal_lane_high_u32 (r, a, b, 0); ++ return vfmlal_lane_high_f16 (r, a, b, 0); + } + + float32x2_t +-tets_vfmlsl_lane_high_u32 (float32x2_t r, float16x4_t a, float16x4_t b) ++tets_vfmlsl_lane_high_f16 (float32x2_t r, float16x4_t a, float16x4_t b) + { +- return vfmlsl_lane_high_u32 (r, a, b, 0); ++ return vfmlsl_lane_high_f16 (r, a, b, 0); + } + + float32x2_t +-test_vfmlal_laneq_high_u32 (float32x2_t r, float16x4_t a, float16x8_t b) ++test_vfmlal_laneq_high_f16 (float32x2_t r, float16x4_t a, float16x8_t b) + { +- return vfmlal_laneq_high_u32 (r, a, b, 6); ++ return vfmlal_laneq_high_f16 (r, a, b, 6); + } + + float32x2_t +-test_vfmlsl_laneq_high_u32 (float32x2_t r, float16x4_t a, float16x8_t b) ++test_vfmlsl_laneq_high_f16 (float32x2_t r, float16x4_t a, float16x8_t b) + { +- return vfmlsl_laneq_high_u32 (r, a, b, 6); ++ return vfmlsl_laneq_high_f16 (r, a, b, 6); + } + + float32x4_t +-test_vfmlalq_lane_high_u32 (float32x4_t r, float16x8_t a, float16x4_t b) ++test_vfmlalq_lane_high_f16 (float32x4_t r, float16x8_t a, float16x4_t b) + { +- return vfmlalq_lane_high_u32 (r, a, b, 1); ++ return vfmlalq_lane_high_f16 (r, a, b, 1); + } + + float32x4_t +-test_vfmlslq_lane_high_u32 (float32x4_t r, float16x8_t a, float16x4_t b) ++test_vfmlslq_lane_high_f16 (float32x4_t r, float16x8_t a, float16x4_t b) + { +- return vfmlslq_lane_high_u32 (r, a, b, 1); ++ return vfmlslq_lane_high_f16 (r, a, b, 1); + } + + float32x4_t +-test_vfmlalq_laneq_high_u32 (float32x4_t r, float16x8_t a, float16x8_t b) ++test_vfmlalq_laneq_high_f16 (float32x4_t r, float16x8_t a, float16x8_t b) + { +- return vfmlalq_laneq_high_u32 (r, a, b, 7); ++ return vfmlalq_laneq_high_f16 (r, a, b, 7); + } + + float32x4_t +-test_vfmlslq_laneq_high_u32 (float32x4_t r, float16x8_t a, float16x8_t b) ++test_vfmlslq_laneq_high_f16 (float32x4_t r, float16x8_t a, float16x8_t b) + { +- return vfmlslq_laneq_high_u32 (r, a, b, 7); ++ return vfmlslq_laneq_high_f16 (r, a, b, 7); + } +--- a/src/gcc/testsuite/gcc.target/aarch64/fp16_fmul_lane_low.h ++++ b/src/gcc/testsuite/gcc.target/aarch64/fp16_fmul_lane_low.h +@@ -1,49 +1,49 @@ + #include "arm_neon.h" + + float32x2_t +-test_vfmlal_lane_low_u32 (float32x2_t r, float16x4_t a, float16x4_t b) ++test_vfmlal_lane_low_f16 (float32x2_t r, float16x4_t a, float16x4_t b) + { +- return vfmlal_lane_low_u32 (r, a, b, 0); ++ return vfmlal_lane_low_f16 (r, a, b, 0); + } + + float32x2_t +-test_vfmlsl_lane_low_u32 (float32x2_t r, float16x4_t a, float16x4_t b) ++test_vfmlsl_lane_low_f16 (float32x2_t r, float16x4_t a, float16x4_t b) + { +- return vfmlsl_lane_low_u32 (r, a, b, 0); ++ return vfmlsl_lane_low_f16 (r, a, b, 0); + } + + float32x2_t +-test_vfmlal_laneq_low_u32 (float32x2_t r, float16x4_t a, float16x8_t b) ++test_vfmlal_laneq_low_f16 (float32x2_t r, float16x4_t a, float16x8_t b) + { +- return vfmlal_laneq_low_u32 (r, a, b, 6); ++ return vfmlal_laneq_low_f16 (r, a, b, 6); + } + + float32x2_t +-test_vfmlsl_laneq_low_u32 (float32x2_t r, float16x4_t a, float16x8_t b) ++test_vfmlsl_laneq_low_f16 (float32x2_t r, float16x4_t a, float16x8_t b) + { +- return vfmlsl_laneq_low_u32 (r, a, b, 6); ++ return vfmlsl_laneq_low_f16 (r, a, b, 6); + } + + float32x4_t +-test_vfmlalq_lane_low_u32 (float32x4_t r, float16x8_t a, float16x4_t b) ++test_vfmlalq_lane_low_f16 (float32x4_t r, float16x8_t a, float16x4_t b) + { +- return vfmlalq_lane_low_u32 (r, a, b, 1); ++ return vfmlalq_lane_low_f16 (r, a, b, 1); + } + + float32x4_t +-test_vfmlslq_lane_low_u32 (float32x4_t r, float16x8_t a, float16x4_t b) ++test_vfmlslq_lane_low_f16 (float32x4_t r, float16x8_t a, float16x4_t b) + { +- return vfmlslq_lane_low_u32 (r, a, b, 1); ++ return vfmlslq_lane_low_f16 (r, a, b, 1); + } + + float32x4_t +-test_vfmlalq_laneq_low_u32 (float32x4_t r, float16x8_t a, float16x8_t b) ++test_vfmlalq_laneq_low_f16 (float32x4_t r, float16x8_t a, float16x8_t b) + { +- return vfmlalq_laneq_low_u32 (r, a, b, 7); ++ return vfmlalq_laneq_low_f16 (r, a, b, 7); + } + + float32x4_t +-test_vfmlslq_laneq_low_u32 (float32x4_t r, float16x8_t a, float16x8_t b) ++test_vfmlslq_laneq_low_f16 (float32x4_t r, float16x8_t a, float16x8_t b) + { +- return vfmlslq_laneq_low_u32 (r, a, b, 7); ++ return vfmlslq_laneq_low_f16 (r, a, b, 7); + } +--- a/src/gcc/testsuite/gcc.target/aarch64/fp16_fmul_low.h ++++ b/src/gcc/testsuite/gcc.target/aarch64/fp16_fmul_low.h +@@ -1,25 +1,25 @@ + #include "arm_neon.h" + + float32x2_t +-test_vfmlal_low_u32 (float32x2_t r, float16x4_t a, float16x4_t b) ++test_vfmlal_low_f16 (float32x2_t r, float16x4_t a, float16x4_t b) + { +- return vfmlal_low_u32 (r, a, b); ++ return vfmlal_low_f16 (r, a, b); + } + + float32x4_t +-test_vfmlalq_low_u32 (float32x4_t r, float16x8_t a, float16x8_t b) ++test_vfmlalq_low_f16 (float32x4_t r, float16x8_t a, float16x8_t b) + { +- return vfmlalq_low_u32 (r, a, b); ++ return vfmlalq_low_f16 (r, a, b); + } + + float32x2_t +-test_vfmlsl_low_u32 (float32x2_t r, float16x4_t a, float16x4_t b) ++test_vfmlsl_low_f16 (float32x2_t r, float16x4_t a, float16x4_t b) + { +- return vfmlsl_low_u32 (r, a, b); ++ return vfmlsl_low_f16 (r, a, b); + } + + float32x4_t +-test_vfmlslq_low_u32 (float32x4_t r, float16x8_t a, float16x8_t b) ++test_vfmlslq_low_f16 (float32x4_t r, float16x8_t a, float16x8_t b) + { +- return vfmlslq_low_u32 (r, a, b); ++ return vfmlslq_low_f16 (r, a, b); + } +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/aarch64/options_set_11.c +@@ -0,0 +1,11 @@ ++/* { dg-do compile } */ ++/* { dg-additional-options "-march=armv8.2-a+fp" } */ ++ ++int main () ++{ ++ return 0; ++} ++ ++/* { dg-final { scan-assembler {\.arch armv8\.2-a\+crc} } } */ ++ ++ /* FP is default on, no need to pass on to assembler. */ +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/aarch64/options_set_12.c +@@ -0,0 +1,11 @@ ++/* { dg-do compile } */ ++/* { dg-additional-options "-march=armv8.2-a+fp16" } */ ++ ++int main () ++{ ++ return 0; ++} ++ ++/* { dg-final { scan-assembler {\.arch armv8\.2-a\+crc\+fp16} } } */ ++ ++ /* fp16 not default, should be emitted. */ +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/aarch64/options_set_13.c +@@ -0,0 +1,11 @@ ++/* { dg-do compile } */ ++/* { dg-additional-options "-march=armv8.2-a+fp16+fp" } */ ++ ++int main () ++{ ++ return 0; ++} ++ ++/* { dg-final { scan-assembler {\.arch armv8\.2-a\+crc\+fp16} } } */ ++ ++ /* FP is part of FP16, don't emit it. */ +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/aarch64/options_set_14.c +@@ -0,0 +1,11 @@ ++/* { dg-do compile } */ ++/* { dg-additional-options "-march=armv8.2-a+fp16fml" } */ ++ ++int main () ++{ ++ return 0; ++} ++ ++/* { dg-final { scan-assembler {\.arch armv8\.2-a\+crc\+fp16fml} } } */ ++ ++ /* fmp16fml is smallest option to emit. */ +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/aarch64/options_set_15.c +@@ -0,0 +1,11 @@ ++/* { dg-do compile } */ ++/* { dg-additional-options "-march=armv8.2-a+fp16fml+fp" } */ ++ ++int main () ++{ ++ return 0; ++} ++ ++/* { dg-final { scan-assembler {\.arch armv8\.2-a\+crc\+fp16fml*} } } */ ++ ++ /* fp included in fp16fml, only emit latter. */ +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/aarch64/options_set_16.c +@@ -0,0 +1,11 @@ ++/* { dg-do compile } */ ++/* { dg-additional-options "-march=armv8.2-a+fp16fml+fp16+fp" } */ ++ ++int main () ++{ ++ return 0; ++} ++ ++/* { dg-final { scan-assembler {\.arch armv8\.2-a\+crc\+fp16fml} } } */ ++ ++ /* fp16fml is smallest options to emit. */ +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/aarch64/options_set_17.c +@@ -0,0 +1,11 @@ ++/* { dg-do compile } */ ++/* { dg-additional-options "-march=armv8.2-a+dotprod" } */ ++ ++int main () ++{ ++ return 0; ++} ++ ++/* { dg-final { scan-assembler {\.arch armv8\.2-a\+crc\+dotprod} } } */ ++ ++ /* dotprod needs to be emitted pre armv8.4. */ +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/aarch64/options_set_18.c +@@ -0,0 +1,11 @@ ++/* { dg-do compile } */ ++/* { dg-additional-options "-march=armv8.4-a+dotprod" } */ ++ ++int main () ++{ ++ return 0; ++} ++ ++/* { dg-final { scan-assembler {\.arch armv8\.4-a\+crc} } } */ ++ ++ /* dotprod is default in armv8.4-a, don't emit. */ +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/aarch64/options_set_19.c +@@ -0,0 +1,11 @@ ++/* { dg-do compile } */ ++/* { dg-additional-options "-march=armv8.4-a+fp" } */ ++ ++int main () ++{ ++ return 0; ++} ++ ++/* { dg-final { scan-assembler {\.arch armv8\.4-a\+crc} } } */ ++ ++ /* fp default, don't emit. */ +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/aarch64/options_set_20.c +@@ -0,0 +1,11 @@ ++/* { dg-do compile } */ ++/* { dg-additional-options "-march=armv8.4-a+fp16" } */ ++ ++int main () ++{ ++ return 0; ++} ++ ++/* { dg-final { scan-assembler {\.arch armv8\.4-a\+crc\+fp16} } } */ ++ ++ /* fp16 smallest set to emit. */ +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/aarch64/options_set_21.c +@@ -0,0 +1,11 @@ ++/* { dg-do compile } */ ++/* { dg-additional-options "-march=armv8.4-a+fp16+fp" } */ ++ ++int main () ++{ ++ return 0; ++} ++ ++/* { dg-final { scan-assembler {\.arch armv8\.4-a\+crc\+fp16} } } */ ++ ++ /* fp16 smallest set to emit. */ +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/aarch64/options_set_22.c +@@ -0,0 +1,11 @@ ++/* { dg-do compile } */ ++/* { dg-additional-options "-march=armv8.4-a+fp16fml" } */ ++ ++int main () ++{ ++ return 0; ++} ++ ++/* { dg-final { scan-assembler {\.arch armv8\.4-a\+crc\+fp16} } } */ ++ ++ /* fp16 smallest set to emit. */ +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/aarch64/options_set_23.c +@@ -0,0 +1,11 @@ ++/* { dg-do compile } */ ++/* { dg-additional-options "-march=armv8.4-a+fp16fml+fp" } */ ++ ++int main () ++{ ++ return 0; ++} ++ ++/* { dg-final { scan-assembler {\.arch armv8\.4-a\+crc\+fp16} } } */ ++ ++ /* fp16 smallest set to emit. */ +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/aarch64/options_set_24.c +@@ -0,0 +1,11 @@ ++/* { dg-do compile } */ ++/* { dg-additional-options "-march=armv8.4-a+fp16fml+fp16" } */ ++ ++int main () ++{ ++ return 0; ++} ++ ++/* { dg-final { scan-assembler {\.arch armv8\.4-a\+crc\+fp16} } } */ ++ ++ /* fp16 smallest set to emit. */ +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/aarch64/options_set_25.c +@@ -0,0 +1,11 @@ ++/* { dg-do compile } */ ++/* { dg-additional-options "-march=armv8.4-a+fp16fml+fp+fp16" } */ ++ ++int main () ++{ ++ return 0; ++} ++ ++/* { dg-final { scan-assembler {\.arch armv8\.4-a\+crc\+fp16} } } */ ++ ++ /* fp16 smallest set to emit. */ +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/aarch64/options_set_26.c +@@ -0,0 +1,11 @@ ++/* { dg-do compile } */ ++/* { dg-additional-options "-march=armv8.4-a+fp16" } */ ++ ++int main () ++{ ++ return 0; ++} ++ ++/* { dg-final { scan-assembler {\.arch armv8\.4-a\+crc\+fp16} } } */ ++ ++ /* fp16 smallest set to emit. */ +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/aarch64/pr94435.c +@@ -0,0 +1,25 @@ ++/* PR target/94435 */ ++/* { dg-do compile } */ ++/* { dg-options "-march=armv8-a+nolse -moutline-atomics" } */ ++ ++int b, c, d, e, f, h; ++short g; ++int foo (int) __attribute__ ((__const__)); ++ ++void ++bar (void) ++{ ++ while (1) ++ { ++ while (1) ++ { ++ __atomic_load_n (&e, 0); ++ if (foo (2)) ++ __sync_val_compare_and_swap (&c, 0, f); ++ b = 1; ++ if (h == e) ++ break; ++ } ++ __sync_val_compare_and_swap (&g, -1, f); ++ } ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/aarch64/pr94514.c +@@ -0,0 +1,77 @@ ++/* PR target/94514. Unwind across mixed pac-ret and non-pac-ret frames. */ ++/* { dg-do run } */ ++/* { dg-require-effective-target lp64 } */ ++/* { dg-options "-fexceptions -O2" } */ ++ ++#include ++#include ++#include ++ ++#define die() \ ++ do { \ ++ printf ("%s:%d: reached unexpectedly.\n", __FILE__, __LINE__); \ ++ fflush (stdout); \ ++ abort (); \ ++ } while (0) ++ ++static struct _Unwind_Exception exc; ++ ++static _Unwind_Reason_Code ++force_unwind_stop (int version, _Unwind_Action actions, ++ _Unwind_Exception_Class exc_class, ++ struct _Unwind_Exception *exc_obj, ++ struct _Unwind_Context *context, ++ void *stop_parameter) ++{ ++ printf ("%s: CFA: %p PC: %p actions: %d\n", ++ __func__, ++ (void *)_Unwind_GetCFA (context), ++ (void *)_Unwind_GetIP (context), ++ (int)actions); ++ if (actions & _UA_END_OF_STACK) ++ die (); ++ return _URC_NO_REASON; ++} ++ ++static void force_unwind (void) ++{ ++#ifndef __USING_SJLJ_EXCEPTIONS__ ++ _Unwind_ForcedUnwind (&exc, force_unwind_stop, 0); ++#else ++ _Unwind_SjLj_ForcedUnwind (&exc, force_unwind_stop, 0); ++#endif ++} ++ ++__attribute__((noinline, target("sign-return-address=all"))) ++static void f2_pac_ret (void) ++{ ++ force_unwind (); ++ die (); ++} ++ ++__attribute__((noinline, target("sign-return-address=none"))) ++static void f1_no_pac_ret (void) ++{ ++ f2_pac_ret (); ++ die (); ++} ++ ++__attribute__((noinline, target("sign-return-address=all"))) ++static void f0_pac_ret (void) ++{ ++ f1_no_pac_ret (); ++ die (); ++} ++ ++static void cleanup_handler (void *p) ++{ ++ printf ("%s: Success.\n", __func__); ++ exit (0); ++} ++ ++int main () ++{ ++ char dummy __attribute__((cleanup (cleanup_handler))); ++ f0_pac_ret (); ++ die (); ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/aarch64/pr96313.c +@@ -0,0 +1,8 @@ ++/* { dg-do compile } */ ++ ++#include ++ ++uint32_t (*fp3)(int64_t) = vqmovund_s64; ++uint8_t (*fp4)(int16_t) = vqmovunh_s16; ++uint16_t (*fp5)(int32_t) = vqmovuns_s32; ++ +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/aarch64/pr96402.c +@@ -0,0 +1,16 @@ ++/* PR target/96402 */ ++/* { dg-do run { target int128 } } */ ++/* { dg-options "-moutline-atomics" } */ ++ ++int ++main () ++{ ++ __int128 a = 0; ++ __sync_val_compare_and_swap (&a, (__int128) 0, (__int128) 1); ++ if (a != 1) ++ __builtin_abort (); ++ __sync_val_compare_and_swap (&a, (__int128) 1, (((__int128) 0xdeadbeeffeedbac1ULL) << 64) | 0xabadcafe00c0ffeeULL); ++ if (a != ((((__int128) 0xdeadbeeffeedbac1ULL) << 64) | 0xabadcafe00c0ffeeULL)) ++ __builtin_abort (); ++ return 0; ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/aarch64/pr97150.c +@@ -0,0 +1,14 @@ ++/* { dg-do compile } */ ++ ++#include ++ ++uint8_t (*fp0)(uint8_t, int8_t) = vqshlb_u8; ++uint16_t (*fp1)(uint16_t, int16_t) = vqshlh_u16; ++uint32_t (*fp2)(uint32_t, int32_t) = vqshls_u32; ++uint64_t (*fp3)(uint64_t, int64_t) = vqshld_u64; ++uint8_t (*fp4)(uint8_t, int8_t) = vqrshlb_u8; ++uint16_t (*fp5)(uint16_t, int16_t) = vqrshlh_u16; ++uint32_t (*fp6)(uint32_t, int32_t) = vqrshls_u32; ++uint64_t (*fp7)(uint64_t, int64_t) = vqrshld_u64; ++uint64_t (*fp8)(uint64_t, int64_t) = vshld_u64; ++ +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/aarch64/pr97535.c +@@ -0,0 +1,16 @@ ++/* { dg-do compile { target { ! ilp32 } } } */ ++ ++#include ++ ++#define SIZE 0xFF00000000 ++ ++extern char raw_buffer[SIZE]; ++ ++void setRaw(const void *raw) ++{ ++ memcpy(raw_buffer, raw, SIZE); ++} ++ ++/* At any optimization level this should be a function call ++ and not inlined. */ ++/* { dg-final { scan-assembler "bl\tmemcpy" } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/return_address_sign_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/return_address_sign_1.c +@@ -41,12 +41,12 @@ func3 (int a, int b, int c) + void __attribute__ ((target ("arch=armv8.3-a"))) + func4 (long offset, void *handler, int *ptr, int imm1, int imm2) + { +- /* paciasp */ ++ /* no paciasp */ + *ptr = imm1 + foo (imm1) + imm2; + __builtin_eh_return (offset, handler); +- /* autiasp */ ++ /* no autiasp */ + return; + } + +-/* { dg-final { scan-assembler-times "autiasp" 4 } } */ +-/* { dg-final { scan-assembler-times "paciasp" 4 } } */ ++/* { dg-final { scan-assembler-times "autiasp" 3 } } */ ++/* { dg-final { scan-assembler-times "paciasp" 3 } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/scalar_intrinsics.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/scalar_intrinsics.c +@@ -627,6 +627,14 @@ test_vqabss_s32 (int32_t a) + return vqabss_s32 (a); + } + ++/* { dg-final { scan-assembler-times "\\tneg\\tx\[0-9\]+" 1 } } */ ++ ++int64_t ++test_vnegd_s64 (int64_t a) ++{ ++ return vnegd_s64 (a); ++} ++ + /* { dg-final { scan-assembler-times "\\tsqneg\\tb\[0-9\]+" 1 } } */ + + int8_t +@@ -653,7 +661,7 @@ test_vqnegs_s32 (int32_t a) + + /* { dg-final { scan-assembler-times "\\tsqxtun\\tb\[0-9\]+" 1 } } */ + +-int8_t ++uint8_t + test_vqmovunh_s16 (int16_t a) + { + return vqmovunh_s16 (a); +@@ -661,7 +669,7 @@ test_vqmovunh_s16 (int16_t a) + + /* { dg-final { scan-assembler-times "\\tsqxtun\\th\[0-9\]+" 1 } } */ + +-int16_t ++uint16_t + test_vqmovuns_s32 (int32_t a) + { + return vqmovuns_s32 (a); +@@ -669,7 +677,7 @@ test_vqmovuns_s32 (int32_t a) + + /* { dg-final { scan-assembler-times "\\tsqxtun\\ts\[0-9\]+" 1 } } */ + +-int32_t ++uint32_t + test_vqmovund_s64 (int64_t a) + { + return vqmovund_s64 (a); +--- a/src/gcc/testsuite/gcc.target/aarch64/sha3.h ++++ b/src/gcc/testsuite/gcc.target/aarch64/sha3.h +@@ -1,10 +1,26 @@ + #include "arm_neon.h" + +-uint16x8_t +-test_veor3q_u16 (uint16x8_t a, uint16x8_t b, uint16x8_t c) +-{ +- return veor3q_u16 (a, b, c); +-} ++#define TEST_VEOR3(T, S) T \ ++test_veor3q_ ## S (T a, T b, T c) \ ++{ \ ++ return veor3q_ ## S (a, b, c); \ ++} \ ++ ++#define TEST_VBCAX(T, S) T \ ++test_vbcaxq_ ## S (T a, T b, T c) \ ++{ \ ++ return vbcaxq_ ## S (a, b, c); \ ++} \ ++ ++ ++TEST_VEOR3 (uint8x16_t, u8) ++TEST_VEOR3 (uint16x8_t, u16) ++TEST_VEOR3 (uint32x4_t, u32) ++TEST_VEOR3 (uint64x2_t, u64) ++TEST_VEOR3 (int8x16_t, s8) ++TEST_VEOR3 (int16x8_t, s16) ++TEST_VEOR3 (int32x4_t, s32) ++TEST_VEOR3 (int64x2_t, s64) + + uint64x2_t + test_vrax1q_u64 (uint64x2_t a, uint64x2_t b) +@@ -18,8 +34,12 @@ test_vxarq_u64 (uint64x2_t a, uint64x2_t b) + return vxarq_u64 (a, b, 15); + } + +-uint16x8_t +-test_vbcaxq_u16 (uint16x8_t a, uint16x8_t b, uint16x8_t c) +-{ +- return vbcaxq_u16 (a, b, c); +-} ++TEST_VBCAX (uint8x16_t, u8) ++TEST_VBCAX (uint16x8_t, u16) ++TEST_VBCAX (uint32x4_t, u32) ++TEST_VBCAX (uint64x2_t, u64) ++TEST_VBCAX (int8x16_t, s8) ++TEST_VBCAX (int16x8_t, s16) ++TEST_VBCAX (int32x4_t, s32) ++TEST_VBCAX (int64x2_t, s64) ++ +--- a/src/gcc/testsuite/gcc.target/aarch64/sha3_1.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/sha3_1.c +@@ -4,7 +4,7 @@ + #include "sha3.h" + + +-/* { dg-final { scan-assembler-times "eor3\\tv\[0-9\]+\.16b, v\[0-9\]+\.16b, v\[0-9\]+\.16b, v\[0-9\]+\.16b" 1 } } */ ++/* { dg-final { scan-assembler-times "eor3\\tv\[0-9\]+\.16b, v\[0-9\]+\.16b, v\[0-9\]+\.16b, v\[0-9\]+\.16b" 8 } } */ + /* { dg-final { scan-assembler-times "rax1\\tv\[0-9\]+\.2d, v\[0-9\]+\.2d, v\[0-9\]+\.2d" 1 } } */ + /* { dg-final { scan-assembler-times "xar\\tv\[0-9\]+\.2d, v\[0-9\]+\.2d, v\[0-9\]+\.2d, 15" 1 } } */ +-/* { dg-final { scan-assembler-times "bcax\\tv\[0-9\]+\.16b, v\[0-9\]+\.16b, v\[0-9\]+\.16b, v\[0-9\]+\.16b" 1 } } */ ++/* { dg-final { scan-assembler-times "bcax\\tv\[0-9\]+\.16b, v\[0-9\]+\.16b, v\[0-9\]+\.16b, v\[0-9\]+\.16b" 8 } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/sha3_2.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/sha3_2.c +@@ -3,7 +3,7 @@ + + #include "sha3.h" + +-/* { dg-final { scan-assembler-times "eor3\\tv\[0-9\]+\.16b, v\[0-9\]+\.16b, v\[0-9\]+\.16b, v\[0-9\]+\.16b" 1 } } */ ++/* { dg-final { scan-assembler-times "eor3\\tv\[0-9\]+\.16b, v\[0-9\]+\.16b, v\[0-9\]+\.16b, v\[0-9\]+\.16b" 8 } } */ + /* { dg-final { scan-assembler-times "rax1\\tv\[0-9\]+\.2d, v\[0-9\]+\.2d, v\[0-9\]+\.2d" 1 } } */ + /* { dg-final { scan-assembler-times "xar\\tv\[0-9\]+\.2d, v\[0-9\]+\.2d, v\[0-9\]+\.2d, 15" 1 } } */ +-/* { dg-final { scan-assembler-times "bcax\\tv\[0-9\]+\.16b, v\[0-9\]+\.16b, v\[0-9\]+\.16b, v\[0-9\]+\.16b" 1 } } */ ++/* { dg-final { scan-assembler-times "bcax\\tv\[0-9\]+\.16b, v\[0-9\]+\.16b, v\[0-9\]+\.16b, v\[0-9\]+\.16b" 8 } } */ +--- a/src/gcc/testsuite/gcc.target/aarch64/sha3_3.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/sha3_3.c +@@ -3,7 +3,7 @@ + + #include "sha3.h" + +-/* { dg-final { scan-assembler-times "eor3\\tv\[0-9\]+\.16b, v\[0-9\]+\.16b, v\[0-9\]+\.16b, v\[0-9\]+\.16b" 1 } } */ ++/* { dg-final { scan-assembler-times "eor3\\tv\[0-9\]+\.16b, v\[0-9\]+\.16b, v\[0-9\]+\.16b, v\[0-9\]+\.16b" 8 } } */ + /* { dg-final { scan-assembler-times "rax1\\tv\[0-9\]+\.2d, v\[0-9\]+\.2d, v\[0-9\]+\.2d" 1 } } */ + /* { dg-final { scan-assembler-times "xar\\tv\[0-9\]+\.2d, v\[0-9\]+\.2d, v\[0-9\]+\.2d, 15" 1 } } */ +-/* { dg-final { scan-assembler-times "bcax\\tv\[0-9\]+\.16b, v\[0-9\]+\.16b, v\[0-9\]+\.16b, v\[0-9\]+\.16b" 1 } } */ ++/* { dg-final { scan-assembler-times "bcax\\tv\[0-9\]+\.16b, v\[0-9\]+\.16b, v\[0-9\]+\.16b, v\[0-9\]+\.16b" 8 } } */ +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/pr97349.c +@@ -0,0 +1,12 @@ ++/* { dg-do compile } */ ++ ++#include ++ ++poly16x8_t (*fp0)(poly16_t) = vdupq_n_p16; ++poly64x2_t (*fp1)(poly64_t) = vdupq_n_p64; ++poly8x16_t (*fp2)(poly8_t) = vdupq_n_p8; ++int16x8_t (*fp3)(int16_t) = vdupq_n_s16; ++int8x16_t (*fp4)(int8_t) = vdupq_n_s8; ++uint16x8_t (*fp5)(uint16_t) = vdupq_n_u16; ++uint8x16_t (*fp6)(uint8_t) = vdupq_n_u8; ++ +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/trn_zip_p64_1.c +@@ -0,0 +1,44 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O" } */ ++ ++#include ++ ++poly64x2_t ++foo (poly64x2_t a, poly64x2_t b) ++{ ++ return vtrn1q_p64 (a, b); ++} ++ ++poly64x2_t ++foo1 (poly64x2_t a, poly64x2_t b) ++{ ++ return vtrn2q_p64 (a, b); ++} ++ ++poly64x2_t ++foo2 (poly64x2_t a, poly64x2_t b) ++{ ++ return vuzp1q_p64 (a, b); ++} ++ ++poly64x2_t ++foo3 (poly64x2_t a, poly64x2_t b) ++{ ++ return vuzp2q_p64 (a, b); ++} ++ ++poly64x2_t ++foo4 (poly64x2_t a, poly64x2_t b) ++{ ++ return vzip1q_p64 (a, b); ++} ++ ++poly64x2_t ++foo5 (poly64x2_t a, poly64x2_t b) ++{ ++ return vzip2q_p64 (a, b); ++} ++ ++/* { dg-final { scan-assembler-times {zip1\tv0.2d, v0.2d, v1.2d} 3 } } */ ++/* { dg-final { scan-assembler-times {zip2\tv0.2d, v0.2d, v1.2d} 3 } } */ ++ +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vadd_poly_1.c +@@ -0,0 +1,50 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O" } */ ++ ++#include ++ ++poly8x8_t ++foo (poly8x8_t a, poly8x8_t b) ++{ ++ return vadd_p8 (a, b); ++} ++ ++poly16x4_t ++foo16 (poly16x4_t a, poly16x4_t b) ++{ ++ return vadd_p16 (a, b); ++} ++ ++poly64x1_t ++foo64 (poly64x1_t a, poly64x1_t b) ++{ ++ return vadd_p64 (a, b); ++} ++ ++poly8x16_t ++fooq (poly8x16_t a, poly8x16_t b) ++{ ++ return vaddq_p8 (a, b); ++} ++ ++poly16x8_t ++fooq16 (poly16x8_t a, poly16x8_t b) ++{ ++ return vaddq_p16 (a, b); ++} ++ ++poly64x2_t ++fooq64 (poly64x2_t a, poly64x2_t b) ++{ ++ return vaddq_p64 (a, b); ++} ++ ++poly128_t ++fooq128 (poly128_t a, poly128_t b) ++{ ++ return vaddq_p128 (a, b); ++} ++ ++/* { dg-final { scan-assembler-times "eor\\tv\[0-9\]+\.8b, v\[0-9\]+\.8b, v\[0-9\]+\.8b" 3 } } */ ++/* { dg-final { scan-assembler-times "eor\\tv\[0-9\]+\.16b, v\[0-9\]+\.16b, v\[0-9\]+\.16b" 3 } } */ ++/* { dg-final { scan-assembler-times "eor\\tx\[0-9\]+, x\[0-9\]+, x\[0-9\]+" 2 } } */ +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vceq_poly_1.c +@@ -0,0 +1,29 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O" } */ ++ ++#include ++ ++uint64x2_t ++foo (poly64x2_t a, poly64x2_t b) ++{ ++ return vceqq_p64 (a, b); ++} ++ ++/* { dg-final { scan-assembler-times "cmeq\\tv\[0-9\]+\.2d, v\[0-9\]+\.2d, v\[0-9\]+\.2d" 1 } } */ ++ ++uint64x1_t ++fooz (poly64x1_t a) ++{ ++ return vceqz_p64 (a); ++} ++ ++/* { dg-final { scan-assembler-times "cmeq\\td\[0-9\]+, d\[0-9\]+, #0" 1 } } */ ++ ++uint64x2_t ++fooqz (poly64x2_t a) ++{ ++ return vceqzq_p64 (a); ++} ++ ++/* { dg-final { scan-assembler-times "cmeq\\tv\[0-9\]+\.2d, v\[0-9\]+\.2d, #0" 1 } } */ ++ +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vcls_unsigned_1.c +@@ -0,0 +1,54 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O" } */ ++ ++#include ++ ++int16x8_t ++test_16x8 (uint16x8_t a) ++{ ++ return vclsq_u16 (a); ++} ++ ++/* { dg-final { scan-assembler-times "cls\\tv\[0-9\]+\.8h, v\[0-9\]+\.8h" 1 } } */ ++ ++ ++int8x16_t ++test_8x16 (uint8x16_t a) ++{ ++ return vclsq_u8 (a); ++} ++ ++/* { dg-final { scan-assembler-times "cls\\tv\[0-9\]+\.16b, v\[0-9\]+\.16b" 1 } } */ ++ ++int32x4_t ++test_32x4 (uint32x4_t a) ++{ ++ return vclsq_u32 (a); ++} ++ ++/* { dg-final { scan-assembler-times "cls\\tv\[0-9\]+\.4s, v\[0-9\]+\.4s" 1 } } */ ++ ++int16x4_t ++test_16x4 (uint16x4_t a) ++{ ++ return vcls_u16 (a); ++} ++ ++/* { dg-final { scan-assembler-times "cls\\tv\[0-9\]+\.4h, v\[0-9\]+\.4h" 1 } } */ ++ ++int8x8_t ++test_8x8 (uint8x8_t a) ++{ ++ return vcls_u8 (a); ++} ++ ++/* { dg-final { scan-assembler-times "cls\\tv\[0-9\]+\.8b, v\[0-9\]+\.8b" 1 } } */ ++ ++int32x2_t ++test32x2 (uint32x2_t a) ++{ ++ return vcls_u32 (a); ++} ++ ++/* { dg-final { scan-assembler-times "cls\\tv\[0-9\]+\.2s, v\[0-9\]+\.2s" 1 } } */ ++ +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vldrq_p128_1.c +@@ -0,0 +1,13 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O" } */ ++ ++#include ++ ++poly128_t ++test (poly128_t * p) ++{ ++ return vldrq_p128 (p); ++} ++ ++/* { dg-final { scan-assembler-times {ldp.*x0,.*x1,.*[x0]} 1 } } */ ++ +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vrndns_f32_1.c +@@ -0,0 +1,13 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O" } */ ++ ++#include ++ ++float32_t ++test (float32_t a) ++{ ++ return vrndns_f32 (a); ++} ++ ++/* { dg-final { scan-assembler-times "frintn\\ts\[0-9\]+, s\[0-9\]+" 1 } } */ ++ +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vstrq_p128_1.c +@@ -0,0 +1,12 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O" } */ ++ ++#include ++ ++void ++test (poly128_t *ptr, poly128_t a) ++{ ++ vstrq_p128 (ptr, a); ++} ++ ++/* { dg-final { scan-assembler-times {stp.*x2,.*x3,.*[x0]} 1 } } */ +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/aarch64/stack-protector-1.c +@@ -0,0 +1,89 @@ ++/* { dg-do run } */ ++/* { dg-require-effective-target fstack_protector } */ ++/* { dg-options "-fstack-protector-all -O2" } */ ++ ++extern volatile long *stack_chk_guard_ptr; ++ ++volatile long * ++get_ptr (void) ++{ ++ return stack_chk_guard_ptr; ++} ++ ++void __attribute__ ((noipa)) ++f (void) ++{ ++ volatile int x; ++ x = 1; ++ x += 1; ++} ++ ++#define CHECK(REG) "\tcmp\tx0, " #REG "\n\tbeq\t1f\n" ++ ++asm ( ++" .pushsection .data\n" ++" .align 3\n" ++" .globl stack_chk_guard_ptr\n" ++"stack_chk_guard_ptr:\n" ++#if __ILP32__ ++" .word __stack_chk_guard\n" ++#else ++" .xword __stack_chk_guard\n" ++#endif ++" .weak __stack_chk_guard\n" ++"__stack_chk_guard:\n" ++" .word 0xdead4321\n" ++" .word 0xbeef8765\n" ++" .text\n" ++" .globl main\n" ++" .type main, %function\n" ++"main:\n" ++" bl get_ptr\n" ++" str x0, [sp, #-16]!\n" ++" bl f\n" ++" str x0, [sp, #8]\n" ++" ldr x0, [sp]\n" ++#if __ILP32__ ++" ldr w0, [x0]\n" ++#else ++" ldr x0, [x0]\n" ++#endif ++ CHECK (x1) ++ CHECK (x2) ++ CHECK (x3) ++ CHECK (x4) ++ CHECK (x5) ++ CHECK (x6) ++ CHECK (x7) ++ CHECK (x8) ++ CHECK (x9) ++ CHECK (x10) ++ CHECK (x11) ++ CHECK (x12) ++ CHECK (x13) ++ CHECK (x14) ++ CHECK (x15) ++ CHECK (x16) ++ CHECK (x17) ++ CHECK (x18) ++ CHECK (x19) ++ CHECK (x20) ++ CHECK (x21) ++ CHECK (x22) ++ CHECK (x23) ++ CHECK (x24) ++ CHECK (x25) ++ CHECK (x26) ++ CHECK (x27) ++ CHECK (x28) ++ CHECK (x29) ++ CHECK (x30) ++" ldr x1, [sp]\n" ++ CHECK (x1) ++" mov x0, #0\n" ++" b exit\n" ++"1:\n" ++" b abort\n" ++" .size main, .-main\n" ++" .popsection" ++); +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/aarch64/stack-protector-2.c +@@ -0,0 +1,6 @@ ++/* { dg-do run } */ ++/* { dg-require-effective-target fstack_protector } */ ++/* { dg-require-effective-target fpic } */ ++/* { dg-options "-fstack-protector-all -O2 -fpic" } */ ++ ++#include "stack-protector-1.c" +--- a/src/gcc/testsuite/gcc.target/aarch64/sync-comp-swap.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/sync-comp-swap.c +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-march=armv8-a+nolse -O2 -fno-ipa-icf" } */ ++/* { dg-options "-march=armv8-a+nolse -O2 -fno-ipa-icf -mno-outline-atomics" } */ + + #include "sync-comp-swap.x" + +--- a/src/gcc/testsuite/gcc.target/aarch64/sync-op-acquire.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/sync-op-acquire.c +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-march=armv8-a+nolse -O2" } */ ++/* { dg-options "-march=armv8-a+nolse -O2 -mno-outline-atomics" } */ + + #include "sync-op-acquire.x" + +--- a/src/gcc/testsuite/gcc.target/aarch64/sync-op-full.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/sync-op-full.c +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-march=armv8-a+nolse -O2" } */ ++/* { dg-options "-march=armv8-a+nolse -O2 -mno-outline-atomics" } */ + + #include "sync-op-full.x" + +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/aarch64/target_attr_20.c +@@ -0,0 +1,27 @@ ++/* { dg-do compile } */ ++/* { dg-options "-march=armv8-a+nolse -moutline-atomics" } */ ++ ++int b, c, d, e, f, h; ++short g; ++int foo (int) __attribute__ ((__const__)); ++ ++__attribute__ ((target ("no-outline-atomics"))) ++void ++bar (void) ++{ ++ while (1) ++ { ++ while (1) ++ { ++ __atomic_load_n (&e, 0); ++ if (foo (2)) ++ __sync_val_compare_and_swap (&c, 0, f); ++ b = 1; ++ if (h == e) ++ break; ++ } ++ __sync_val_compare_and_swap (&g, -1, f); ++ } ++} ++ ++/* { dg-final { scan-assembler-not "bl.*__aarch64_cas2_acq_rel" } } */ +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/aarch64/target_attr_21.c +@@ -0,0 +1,27 @@ ++/* { dg-do compile } */ ++/* { dg-options "-march=armv8-a+nolse -mno-outline-atomics" } */ ++ ++int b, c, d, e, f, h; ++short g; ++int foo (int) __attribute__ ((__const__)); ++ ++__attribute__ ((target ("outline-atomics"))) ++void ++bar (void) ++{ ++ while (1) ++ { ++ while (1) ++ { ++ __atomic_load_n (&e, 0); ++ if (foo (2)) ++ __sync_val_compare_and_swap (&c, 0, f); ++ b = 1; ++ if (h == e) ++ break; ++ } ++ __sync_val_compare_and_swap (&g, -1, f); ++ } ++} ++ ++/* { dg-final { scan-assembler-times "bl.*__aarch64_cas2_acq_rel" 1 } } */ +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/aarch64/vabs_intrinsic_3.c +@@ -0,0 +1,39 @@ ++/* Test the vabsd_s64 intrinsic. */ ++ ++/* { dg-do run } */ ++/* { dg-options "--save-temps -O2" } */ ++ ++#include ++#include ++ ++extern void abort (void); ++ ++#define force_simd(V1) asm volatile ("mov %d0, %1.d[0]" \ ++ : "=w"(V1) \ ++ : "w"(V1) \ ++ : /* No clobbers */); ++ ++#define RUN_TEST(test, answ) \ ++{ \ ++ force_simd (test); \ ++ force_simd (answ); \ ++ int64_t res = vabsd_s64 (test); \ ++ force_simd (res); \ ++ if (res != answ) \ ++ abort (); \ ++} ++ ++int64_t input[] = {INT64_MAX, 10, 0, -10, INT64_MIN + 1, INT64_MIN}; ++int64_t expected[] = {INT64_MAX, 10, 0, 10, INT64_MAX, INT64_MIN}; ++ ++int main (void) ++{ ++ RUN_TEST (input[0], expected[0]); ++ RUN_TEST (input[1], expected[1]); ++ RUN_TEST (input[2], expected[2]); ++ RUN_TEST (input[3], expected[3]); ++ RUN_TEST (input[4], expected[4]); ++ RUN_TEST (input[5], expected[5]); ++ ++ return 0; ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/aarch64/vabsd_s64.c +@@ -0,0 +1,34 @@ ++/* Check that the compiler does not optimise the vabsd_s64 call out. ++ We need to check for this because there is a mismatch in semantics ++ between the ACLE, which states that he absolute value of the minimum ++ (signed) value is itself, and C, where this is undefined behaviour. */ ++ ++/* { dg-do run } */ ++/* { dg-options "--save-temps -fno-inline -O2" } */ ++ ++#include ++#include ++ ++extern void abort (void); ++ ++int ++bar (int64_t x) ++{ ++ if (x < (int64_t) 0) ++ return vabsd_s64 (x) < (int64_t) 0; ++ else ++ return -1; ++} ++ ++int ++main (void) ++{ ++ int ans = 1; ++ int res_abs = bar (INT64_MIN); ++ ++ if (res_abs != ans) ++ abort (); ++ ++ return 0; ++} ++ +--- a/src/gcc/testsuite/gcc.target/aarch64/vneg_s.c ++++ b/src/gcc/testsuite/gcc.target/aarch64/vneg_s.c +@@ -75,6 +75,18 @@ extern void abort (void); + } \ + } + ++#define RUN_TEST_SCALAR(test_val, answ_val, a, b) \ ++ { \ ++ int64_t res; \ ++ INHIB_OPTIMIZATION; \ ++ a = test_val; \ ++ b = answ_val; \ ++ force_simd (b); \ ++ force_simd (a); \ ++ res = vnegd_s64 (a); \ ++ force_simd (res); \ ++ } ++ + int + test_vneg_s8 () + { +@@ -177,7 +189,24 @@ test_vneg_s64 () + return 0; + } + +-/* { dg-final { scan-assembler-times "neg\\td\[0-9\]+, d\[0-9\]+" 8 } } */ ++int ++test_vnegd_s64 () ++{ ++ int64_t a, b; ++ ++ RUN_TEST_SCALAR (TEST0, ANSW0, a, b); ++ RUN_TEST_SCALAR (TEST1, ANSW1, a, b); ++ RUN_TEST_SCALAR (TEST2, ANSW2, a, b); ++ RUN_TEST_SCALAR (TEST3, ANSW3, a, b); ++ RUN_TEST_SCALAR (TEST4, ANSW4, a, b); ++ RUN_TEST_SCALAR (TEST5, ANSW5, a, b); ++ RUN_TEST_SCALAR (LLONG_MAX, LLONG_MIN + 1, a, b); ++ RUN_TEST_SCALAR (LLONG_MIN, LLONG_MIN, a, b); ++ ++ return 0; ++} ++ ++/* { dg-final { scan-assembler-times "neg\\td\[0-9\]+, d\[0-9\]+" 16 } } */ + + int + test_vnegq_s8 () +@@ -283,6 +312,9 @@ main (int argc, char **argv) + if (test_vneg_s64 ()) + abort (); + ++ if (test_vnegd_s64 ()) ++ abort (); ++ + if (test_vnegq_s8 ()) + abort (); + +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/aarch64/vnegd_s64.c +@@ -0,0 +1,36 @@ ++/* Check that the compiler does not optimise the negation out. ++ We need to check for this because there is a mismatch in semantics ++ between the ACLE, which states that he negative of the minimum ++ (signed) value is itself and C, where this is undefined behaviour. */ ++ ++/* { dg-do run } */ ++/* { dg-options "--save-temps -O2" } */ ++ ++#include ++#include ++ ++extern void abort (void); ++ ++int ++foo (int64_t x) ++{ ++ if (x < (int64_t) 0) ++ return vnegd_s64 (x) < (int64_t) 0; ++ else ++ return -1; ++} ++ ++/* { dg-final { scan-assembler-times {neg\tx[0-9]+, x[0-9]+} 1 } } */ ++ ++int ++main (void) ++{ ++ int ans = 1; ++ int res = foo (INT64_MIN); ++ ++ if (res != ans) ++ abort (); ++ ++ return 0; ++} ++ +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/i386/avx2-pr94460.c +@@ -0,0 +1,31 @@ ++/* PR target/94460 */ ++/* { dg-do run { target { avx2 && int128 } } } */ ++/* { dg-options "-O2 -mavx2" } */ ++ ++#include ++#include "avx2-check.h" ++ ++typedef __int128 v2ti __attribute__ ((__vector_size__ (32))); ++ ++static inline v2ti ++foo (__v16hi b) ++{ ++ return (v2ti) _mm256_hsub_epi16 ((__m256i) b, (__m256i) b); ++} ++ ++static inline v2ti ++bar (__v8si b) ++{ ++ return (v2ti) _mm256_hsub_epi32 ((__m256i) b, (__m256i) b); ++} ++ ++static void ++avx2_test (void) ++{ ++ v2ti x = foo ((__v16hi) { 1 }); ++ if (x[0] != ((__int128)1 << 64 | 1) || x[1] != 0) ++ abort (); ++ x = bar ((__v8si) { 1 }); ++ if (x[0] != ((__int128)1 << 64 | 1) || x[1] != 0) ++ abort (); ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/i386/avx512bw-pr94438.c +@@ -0,0 +1,13 @@ ++/* PR target/94438 */ ++/* { dg-do compile { target int128 } } */ ++/* { dg-options "-mavx512bw" } */ ++ ++typedef __attribute__ ((__vector_size__ (4 * sizeof (__int128)))) __int128 V; ++void bar (V); ++ ++void ++foo (V w) ++{ ++ V v = 0 <= (0 >= w); ++ bar (v); ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/i386/avx512bw-pr94500.c +@@ -0,0 +1,28 @@ ++/* PR target/94500 */ ++/* { dg-do run { target avx512bw } } */ ++/* { dg-options "-O3 -mavx512bw -mprefer-vector-width=512" } */ ++ ++#define AVX512BW ++#include "avx512f-helper.h" ++ ++__attribute__((noipa)) signed char ++foo (signed char *p) ++{ ++ signed char r = 0; ++ int i; ++ for (i = 0; i < 256; i++) ++ if (p[i] > r) r = p[i]; ++ return r; ++} ++ ++signed char buf[256]; ++ ++static void ++TEST (void) ++{ ++ int i; ++ for (i = 0; i < 256; i++) ++ buf[i] = i - 128; ++ if (foo (buf) != 127) ++ abort (); ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/i386/avx512bw-pr94509-1.c +@@ -0,0 +1,30 @@ ++/* PR target/94509 */ ++/* { dg-do run { target avx512bw } } */ ++/* { dg-options "-O2 -mavx512bw" } */ ++ ++#define AVX512BW ++#include "avx512f-helper.h" ++ ++typedef unsigned short __attribute__ ((__vector_size__ (64))) V; ++ ++__attribute__((noipa)) V ++foo (V x) ++{ ++ return __builtin_shuffle (x, (V) { 0, 0, 0, 0, 0, 0, 0, 0, ++ 15, 15, 15, 15, 15, 15, 15, 15, ++ 0, 0, 0, 0, 0, 0, 0, 0, ++ 15, 15, 15, 15, 15, 15, 15, 15 }); ++} ++ ++static void ++TEST (void) ++{ ++ V v = foo ((V) { 1, 2, 3, 4, 5, 6, 7, 8, ++ 9, 10, 11, 12, 13, 14, 15, 16, ++ 17, 18, 19, 20, 21, 22, 23, 24, ++ 25, 26, 27, 28, 29, 30, 31, 32 }); ++ unsigned int i; ++ for (i = 0; i < sizeof (v) / sizeof (v[0]); i++) ++ if (v[i] != ((i & 8) ? 16 : 1)) ++ abort (); ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/i386/avx512bw-pr94509-2.c +@@ -0,0 +1,38 @@ ++/* PR target/94509 */ ++/* { dg-do run { target avx512bw } } */ ++/* { dg-options "-O2 -mavx512bw" } */ ++ ++#define AVX512BW ++#include "avx512f-helper.h" ++ ++typedef unsigned char __attribute__ ((__vector_size__ (64))) V; ++ ++__attribute__((noipa)) V ++foo (V x) ++{ ++ return __builtin_shuffle (x, (V) { 0, 1, 0, 1, 0, 1, 0, 1, ++ 0, 1, 0, 1, 0, 1, 0, 1, ++ 30, 31, 30, 31, 30, 31, 30, 31, ++ 30, 31, 30, 31, 30, 31, 30, 31, ++ 0, 1, 0, 1, 0, 1, 0, 1, ++ 0, 1, 0, 1, 0, 1, 0, 1, ++ 30, 31, 30, 31, 30, 31, 30, 31, ++ 30, 31, 30, 31, 30, 31, 30, 31 }); ++} ++ ++static void ++TEST (void) ++{ ++ V v = foo ((V) { 1, 2, 3, 4, 5, 6, 7, 8, ++ 9, 10, 11, 12, 13, 14, 15, 16, ++ 17, 18, 19, 20, 21, 22, 23, 24, ++ 25, 26, 27, 28, 29, 30, 31, 32, ++ 33, 34, 35, 36, 37, 38, 39, 40, ++ 41, 42, 43, 44, 45, 46, 47, 48, ++ 49, 50, 51, 52, 53, 54, 55, 56, ++ 57, 58, 59, 60, 61, 62, 63, 64 }); ++ unsigned int i; ++ for (i = 0; i < sizeof (v) / sizeof (v[0]); i++) ++ if (v[i] != ((i & 16) ? 31 : 1) + (i & 1)) ++ abort (); ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/i386/avx512f-vcmppd-3.c +@@ -0,0 +1,4 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O0 -mavx512f" } */ ++ ++#include "avx512f-vcmppd-1.c" +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/i386/avx512f-vcmpps-3.c +@@ -0,0 +1,4 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O0 -mavx512f" } */ ++ ++#include "avx512f-vcmpps-1.c" +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/i386/avx512vl-pr93069.c +@@ -0,0 +1,12 @@ ++/* PR target/93069 */ ++/* { dg-do assemble { target vect_simd_clones } } */ ++/* { dg-options "-O2 -fopenmp-simd -mtune=skylake-avx512" } */ ++/* { dg-additional-options "-mavx512vl" { target avx512vl } } */ ++/* { dg-additional-options "-mavx512dq" { target avx512dq } } */ ++ ++#pragma omp declare simd ++int ++foo (int x, int y) ++{ ++ return x == 0 ? x : y; ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/i386/avx512vlbw-pr94438.c +@@ -0,0 +1,13 @@ ++/* PR target/94438 */ ++/* { dg-do compile { target int128 } } */ ++/* { dg-options "-mavx512bw -mavx512vl" } */ ++ ++typedef __attribute__ ((__vector_size__ (sizeof (__int128)))) __int128 V; ++void bar (V); ++ ++void ++foo (V w) ++{ ++ V v = 0 <= (0 >= w); ++ bar (v); ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/i386/movdir64b.c +@@ -0,0 +1,29 @@ ++/* { dg-do run { target movdir } } */ ++/* { dg-options "-mmovdir64b -O2" } */ ++ ++#include ++#include ++#include ++ ++unsigned long long int src[8] = {1, 2, 3, 4, 5, 6, 7, 8}; ++unsigned long long int dest[8] __attribute__ ((aligned (64))) ++ = {-1, -1, -1, -1, -1, -1, -1, -1}; ++ ++int ++main () ++{ ++ unsigned int eax, ebx, ecx, edx; ++ ++ if (!__get_cpuid_count (7, 0, &eax, &ebx, &ecx, &edx)) ++ return 0; ++ ++ if ((ecx & bit_MOVDIR64B) == 0) ++ return 0; ++ ++ _movdir64b (dest, src); ++ ++ if (memcmp (dest, src, sizeof (dest)) != 0) ++ abort (); ++ ++ return 0; ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/i386/movdiri32.c +@@ -0,0 +1,26 @@ ++/* { dg-do run { target movdir } } */ ++/* { dg-options "-mmovdiri -O2" } */ ++ ++#include ++#include ++ ++unsigned int dest = -1; ++ ++int ++main () ++{ ++ unsigned int eax, ebx, ecx, edx; ++ ++ if (!__get_cpuid_count (7, 0, &eax, &ebx, &ecx, &edx)) ++ return 0; ++ ++ if ((ecx & bit_MOVDIRI) == 0) ++ return 0; ++ ++ _directstoreu_u32 (&dest, 0xbadbeef); ++ ++ if (dest != 0xbadbeef) ++ abort (); ++ ++ return 0; ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/i386/movdiri64.c +@@ -0,0 +1,26 @@ ++/* { dg-do run { target { movdir && { ! ia32 } } } } */ ++/* { dg-options "-mmovdiri -O2" } */ ++ ++#include ++#include ++ ++unsigned long long int dest = -1LL; ++ ++int ++main () ++{ ++ unsigned int eax, ebx, ecx, edx; ++ ++ if (!__get_cpuid_count (7, 0, &eax, &ebx, &ecx, &edx)) ++ return 0; ++ ++ if ((ecx & bit_MOVDIRI) == 0) ++ return 0; ++ ++ _directstoreu_u64 (&dest, 0x12345678badbeef); ++ ++ if (dest != 0x12345678badbeef) ++ abort (); ++ ++ return 0; ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/i386/pr94283.c +@@ -0,0 +1,5 @@ ++/* PR debug/94283 */ ++/* { dg-do compile } */ ++/* { dg-options "-O3 -fcompare-debug -mavx2" } */ ++ ++#include "../../gcc.dg/fold-bopcond-1.c" +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/i386/pr94417-1.c +@@ -0,0 +1,20 @@ ++/* { dg-do compile } */ ++/* { dg-require-effective-target lp64 } */ ++/* { dg-options "-O2 -fcf-protection -mcmodel=large" } */ ++/* { dg-final { scan-assembler-times {\mendbr} 2 } } */ ++ ++extern void ext (void); ++ ++__attribute((noclone, noinline)) ++static ++void ++foo (void) ++{ ++ ext (); ++} ++ ++void ++bar (void) ++{ ++ foo (); ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/i386/pr94417-2.c +@@ -0,0 +1,21 @@ ++/* { dg-do compile } */ ++/* { dg-require-effective-target lp64 } */ ++/* { dg-require-effective-target fpic } */ ++/* { dg-options "-O2 -fpic -mcmodel=large -fcf-protection" } */ ++/* { dg-final { scan-assembler-times {\mendbr} 4 } } */ ++ ++extern void ext (void); ++ ++__attribute((noclone, noinline)) ++static ++void ++foo (void) ++{ ++ ext (); ++} ++ ++void ++bar (void) ++{ ++ foo (); ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/i386/pr94417-3.c +@@ -0,0 +1,19 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -fcf-protection -mforce-indirect-call" } */ ++/* { dg-final { scan-assembler-times {\mendbr} 2 } } */ ++ ++extern void ext (void); ++ ++__attribute((noclone, noinline)) ++static ++void ++foo (void) ++{ ++ ext (); ++} ++ ++void ++bar (void) ++{ ++ foo (); ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/i386/pr94603.c +@@ -0,0 +1,11 @@ ++/* PR target/94603 */ ++/* { dg-do compile } */ ++/* { dg-options "-Wno-implicit-function-declaration -msse -mno-sse2" } */ ++ ++typedef long long __attribute__ ((__vector_size__ (16))) V; ++ ++V ++foo (V v) ++{ ++ return __builtin_ia32_movq128 (v); /* { dg-error "" } */ ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/i386/pr97032.c +@@ -0,0 +1,22 @@ ++/* { dg-do compile { target { ia32 && fstack_protector } } } */ ++/* { dg-options "-O2 -mincoming-stack-boundary=2 -fstack-protector-all" } */ ++ ++#include ++ ++extern int *__errno_location (void); ++ ++long ++sys_socketcall (int op, ...) ++{ ++ long int res; ++ va_list ap; ++ va_start (ap, op); ++ asm volatile ("push %%ebx; movl %2, %%ebx; int $0x80; pop %%ebx" ++ : "=a" (res) : "0" (102), "ri" (16), "c" (ap) : "memory", "esp"); ++ if (__builtin_expect (res > 4294963200UL, 0)) ++ *__errno_location () = -res; ++ va_end (ap); ++ return res; ++} ++ ++/* { dg-final { scan-assembler "call\[ \t\]*_?__errno_location" } } */ +--- a/src/gcc/testsuite/gcc.target/powerpc/builtins-1-p9-runnable.c ++++ b/src/gcc/testsuite/gcc.target/powerpc/builtins-1-p9-runnable.c +@@ -1,26 +1,52 @@ +-/* { dg-do run { target { powerpc*-*-linux* && { lp64 && p9vector_hw } } } } */ +-/* { dg-require-effective-target powerpc_p9vector_ok } */ ++ ++/* { dg-do run { target { powerpc*-*-linux* && p9vector_hw } } } */ ++/* { dg-require-effective-target p9vector_hw } */ + /* { dg-options "-O2 -mcpu=power9" } */ + /* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power9" } } */ + + #include ++#include + + void abort (void); + + int main() { + int i; + vector float vfa, vfb; +- vector unsigned short vur, vuexpt; ++ vector unsigned short vresult, vexpected; ++ ++ vfa = (vector float){0.4, 1.6, 20.0, 99.9 }; ++ vfb = (vector float){10.0, -2.0, 70.0, 999.0 }; ++ ++ /* Expected results. */ ++ vexpected = (vector unsigned short) { 0x3666, 0x3e66, 0x4d00, 0x563e, ++ 0x4900, 0xc000, 0x5460, 0x63ce}; ++ ++/* ++ vresult = vec_pack_to_short_fp32 (vfa, vfb); ++ This built-in converts a pair of vector floats into a single vector of ++ packed half-precision (F16) values. The result type is a vector of ++ signed shorts. ++ The expected codegen for this builtin is ++ xvcvsphp t, vfa ++ xvcvsphp u, vfb ++ if (little endian) ++ vpkuwum vresult, t, u ++ else ++ vpkuwum vresult, u, t ++*/ + +- vfa = (vector float){3.4, 5.0, 20.0, 50.9 }; +- vfb = (vector float){10.0, 40.0, 70.0, 100.0 }; +- vuexpt = (vector unsigned short){ 3, 5, 20, 50, +- 10, 40, 70, 100}; ++ vresult = vec_pack_to_short_fp32 (vfa, vfb); + +- vur = vec_pack_to_short_fp32 (vfa, vfb); ++#ifdef DEBUG ++ for(i = 0; i< 4; i++) { printf("i=[%d] %f \n",i,vfa[i]); } ++ for(i = 0; i< 4; i++) { printf("i=[%d] %f \n",i+4,vfb[i]); } ++ for(i = 0; i< 8; i++) { printf("i=[%d] %d \n",i,vresult[i]); } ++#endif + + for(i = 0; i< 8; i++) { +- if (vur[i] != vuexpt[i]) +- abort(); ++ if (vresult[i] != vexpected[i]) { ++ printf("i=[%d] 0x%x != 0x%x \n",i,vresult[i],vexpected[i]); ++ abort(); ++ } + } + } +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/powerpc/builtins-msum-runnable.c +@@ -0,0 +1,74 @@ ++/* { dg-do run { target { p9vector_hw } } } */ ++/* { dg-options "-mcpu=power9 -O2" } */ ++ ++#include ++ ++#ifdef DEBUG ++#include ++#endif ++ ++void abort (void); ++ ++int ++main() ++{ ++ vector __uint128_t arg_uint128, result_uint128, expected_uint128; ++ vector __int128_t arg_int128, result_int128, expected_int128; ++ ++ arg_uint128[0] = 0x1627384950617243; ++ arg_uint128[0] = arg_uint128[0] << 64; ++ arg_uint128[0] |= 0x9405182930415263; ++ expected_uint128[0] = 0x1627384950617243; ++ expected_uint128[0] = expected_uint128[0] << 64; ++ expected_uint128[0] |= 0xb6b07e42a570e5fe; ++ vector unsigned long long arg_vull2 = {0x12345678,0x44445555}; ++ vector unsigned long long arg_vull3 = {0x6789abcd,0x66667777}; ++ result_uint128 = vec_msum (arg_vull2, arg_vull3, arg_uint128); ++ ++ if (result_uint128[0] != expected_uint128[0]) ++ { ++#ifdef DEBUG ++ printf("result_uint128[0] doesn't match expected_u128[0]\n"); ++ printf("arg_vull2 %llx %llx \n", arg_vull2[0], arg_vull2[1]); ++ printf("arg_vull3 %llx %llx \n", arg_vull3[0], arg_vull3[1]); ++ printf("arg_uint128[0] = %llx ", arg_uint128[0] >> 64); ++ printf(" %llx\n", arg_uint128[0] & 0xFFFFFFFFFFFFFFFF); ++ ++ printf("result_uint128[0] = %llx ", result_uint128[0] >> 64); ++ printf(" %llx\n", result_uint128[0] & 0xFFFFFFFFFFFFFFFF); ++ ++ printf("expected_uint128[0] = %llx ", expected_uint128[0] >> 64); ++ printf(" %llx\n", expected_uint128[0] & 0xFFFFFFFFFFFFFFFF); ++#else ++ abort(); ++#endif ++ } ++ ++ arg_int128[0] = 0x1627384950617283; ++ arg_int128[0] = arg_int128[0] << 64; ++ arg_int128[0] |= 0x9405182930415263; ++ expected_int128[0] = 0x1627384950617283; ++ expected_int128[0] = expected_int128[0] << 64; ++ expected_int128[0] |= 0xd99f35969c11cbfa; ++ vector signed long long arg_vll2 = { 0x567890ab, 0x1233456 }; ++ vector signed long long arg_vll3 = { 0xcdef0123, 0x9873451 }; ++ result_int128 = vec_msum (arg_vll2, arg_vll3, arg_int128); ++ ++ if (result_int128[0] != expected_int128[0]) ++ { ++#ifdef DEBUG ++ printf("result_int128[0] doesn't match expected128[0]\n"); ++ printf("arg_int128[0] = %llx ", arg_int128[0] >> 64); ++ printf(" %llx\n", arg_int128[0] & 0xFFFFFFFFFFFFFFFF); ++ ++ printf("result_int128[0] = %llx ", result_int128[0] >> 64); ++ printf(" %llx\n", result_int128[0] & 0xFFFFFFFFFFFFFFFF); ++ ++ printf("expected_int128[0] = %llx ", expected_int128[0] >> 64); ++ printf(" %llx\n", expected_int128[0] & 0xFFFFFFFFFFFFFFFF); ++#else ++ abort(); ++#endif ++ } ++} ++ +--- a/src/gcc/testsuite/gcc.target/powerpc/pr64505.c ++++ b/src/gcc/testsuite/gcc.target/powerpc/pr64505.c +@@ -1,231 +1,52 @@ +-/* { dg-do compile { target { powerpc*-*-* && ilp32 } } } */ ++/* { dg-do compile } */ + /* { dg-skip-if "" { powerpc*-*-aix* } } */ +-/* { dg-options "-O2 -mpowerpc64" } */ ++/* { dg-options "-w -O2 -mpowerpc64" } */ + + /* +- * (below is inlined and simplified from previously included headers) ++ * (below is minimized test case) + */ + +-struct fltcom_st { +- short fltbuf[950]; +-} fltcom_ __attribute__((common)) ; +-#define CM_PLIBOR (*(((double *)&fltcom_ + 1))) +-#define CM_QMRG (*(((double *)&fltcom_ + 2))) ++extern double pow(double x, double y); ++extern long func (); ++short global0, global1; ++static int i0, i1, i2, i3, i4, i5; ++double dbl, *array0, *array1; + +-struct fltcom2_st { +- short fltbuf2[56]; +-} fltcom2_ __attribute__((common)) ; +-#define CM_FLPRV ((short *)&fltcom2_ + 17) +-#define CM_FLNXT ((short *)&fltcom2_ + 20) +-#define CM_FLCPN (*(((double *)&fltcom2_))) +-#define CM_FLCNT (*(((short *)&fltcom2_ + 12))) +- +-struct aidatcm_st { +- double cm_aid, cm_ext, cm_basis; +- short cm_aiday, cm_exday, cm_dperd, cm_aiexf, cm_aidex, cm_aiok, +- cm_aigdo, cm_aildo, cm_prev[3], cm_next[3], cm_aid_pad[2]; +- double cm_rvgfact, cm_ai1st, cm_ai2nd; +- int cm_aieurok; +-} aidatcm_ __attribute__((common)) ; +-#define CM_EXDAY aidatcm_.cm_exday +-#define CM_BASIS aidatcm_.cm_basis +-#define CM_PREV aidatcm_.cm_prev +- +-struct cshfcm_st { +- short bufff[10862]; +-} cshfcm_ __attribute__((common)) ; +-#define CM_FNUM (*(((short *)&cshfcm_ + 9038))) +-#define CM_FIFLX ((double *)&cshfcm_ + 1) +-#define CM_FEXTX ((double *)&cshfcm_ + 1201) +-#define CM_FSHDT ((short *)&cshfcm_ + 7230) +- +-struct calctsdb_st { +- short calctsdbbuff[115]; +-} calctsdb_ __attribute__((common)) ; +-#define CM_CTUP_GOOD_TO_GO (*(((short *)&calctsdb_ + 16))) +-#define CM_PAYMENT_FREQUENCY (*(((short *)&calctsdb_ + 61))) +-#define CM_DISCOUNTING_DAYTYP (*(((short *)&calctsdb_ + 59))) +- +-struct cf600cm_st { +- short bufcf[14404]; +-} cf600cm_ __attribute__((common)) ; +-#define CM_FLT_RFIXRATES ((double *)&cf600cm_ + 600) +- +-typedef struct { int id; int type; const char *name; } bregdb_bitinfo_t; +- +-int +-bregdb_eval_bbitcxt_bool_rv(const bregdb_bitinfo_t * const bbit, +- const int bbit_default, +- const void * const bregucxt); +- +-static const bregdb_bitinfo_t bbit_calc_dr_d33 = +- { 160667, 5, "bbit_calc_dr_d33" }; +-#define bbit_calc_dr_d33__value() \ +- bregdb_eval_bbitcxt_bool_rv(&bbit_calc_dr_d33, 0, 0) +-static const bregdb_bitinfo_t bbit_calc_sx_b24 = +- { 158854, 5, "bbit_calc_sx_b24" }; +-#define bbit_calc_sx_b24__value() \ +- bregdb_eval_bbitcxt_bool_rv(&bbit_calc_sx_b24, 0, 0) +-static const bregdb_bitinfo_t bbit_calc_dr_d36 = +- { 161244, 5, "bbit_calc_dr_d36" }; +-#define bbit_calc_dr_d36__value() \ +- bregdb_eval_bbitcxt_bool_rv(&bbit_calc_dr_d36, 0, 0) +-static const bregdb_bitinfo_t bbit_calc_dr_d37 = +- { 161315, 5, "bbit_calc_dr_d37" }; +-#define bbit_calc_dr_d37__value() \ +- bregdb_eval_bbitcxt_bool_rv(&bbit_calc_dr_d37, 0, 0) +-static const bregdb_bitinfo_t bbit_calc_dr_d47 = +- { 163259, 5, "bbit_calc_dr_d47" }; +-#define bbit_calc_dr_d47__value() \ +- bregdb_eval_bbitcxt_bool_rv(&bbit_calc_dr_d47, 0, 0) +-static const bregdb_bitinfo_t bbit_calc_dr_d46 = +- { 163239, 5, "bbit_calc_dr_d46" }; +-#define bbit_calc_dr_d46__value() \ +- bregdb_eval_bbitcxt_bool_rv(&bbit_calc_dr_d46, 0, 0) +-static const bregdb_bitinfo_t bbit_calc_dr_d62 = +- { 166603, 5, "bbit_calc_dr_d62" }; +-#define bbit_calc_dr_d62__value() \ +- bregdb_eval_bbitcxt_bool_rv(&bbit_calc_dr_d62, 0, 0) +- +- +- +-int dtyp_is_actact_(short *daytyp); +-double rnd_trunc_numb(double in, short num_digits, short rnd_or_trunc); +-void datetrn_(const short* dt, short* dt2); +-short difday_(short* daytyp_in, short* srtdti, short* enddti, short* ercode); +- +- +-double pow(double x, double y); +- +- +-/* +- * (above is inlined and simplified from previously included headers) +- */ +- +- +-void calc_1566( +- short sCalcType, +- short sDayType, +- short sFreq, +- short asSettleDt[3], +- short asMtyDt[3], +- short asIssueDt[3], +- short asFCpnDt[3], +- double dCpn, +- short *psNoPer, +- double *pdExt, +- double *pdAI, +- double *pdAI2, +- double *pdFCpn, +- short *psRcode) ++void ++pr64505 (short *arg0, double *arg1) + { +- +- short ercode = 0; +- int isactact; +- short days_to_next_cpn = 0; +- const short discDaytype = CM_DISCOUNTING_DAYTYP; +- +- if(bbit_calc_sx_b24__value()) +- isactact = (dtyp_is_actact_(&sDayType) != 0); +- else +- isactact = (sDayType == 1 || sDayType == 10); +- +- short days_in_current_period = difday_(&sDayType,CM_FLPRV,CM_FLNXT,&ercode); +- const short sfreq1 = (CM_CTUP_GOOD_TO_GO == 1 && CM_PAYMENT_FREQUENCY == 1); +- +- for (int j = 0; j < CM_FNUM; j++) { +- +- if(j == 0) { +- days_to_next_cpn = difday_(&sDayType,asSettleDt,CM_FLNXT,&ercode); +- +- if(isactact) { +- CM_FIFLX[j] = CM_FLCPN / sFreq; +- CM_FEXTX[j] = (double)days_to_next_cpn / (double)days_in_current_period; +- } +- else { +- CM_FIFLX[j] = CM_FLCPN * days_in_current_period; +- CM_FEXTX[j] = (double)days_to_next_cpn / (double)(1/sfreq1); +- } +- +- if(CM_FNUM == 1) { +- CM_FEXTX[j] = (double)days_to_next_cpn / ((double)1/sfreq1); +- } +- } +- else { +- +- short days_from_settle, days_in_period; +- +- if(bbit_calc_dr_d46__value()){ +- days_from_settle = difday_(&sDayType,asSettleDt, +- &CM_FSHDT[j*3],&ercode); +- days_in_period = difday_(&sDayType,&CM_FSHDT[(j-1)*3], +- &CM_FSHDT[j*3],&ercode); +- } +- +- double cpn_rate = CM_PLIBOR; +- +- if(bbit_calc_dr_d62__value()) { +- if(j < CM_FLCNT && CM_FLT_RFIXRATES[j] != 0) cpn_rate = CM_FLT_RFIXRATES[j]; +- } +- else { +- if(j < CM_FLCNT ) cpn_rate = CM_FLT_RFIXRATES[j]; +- } +- +- if(bbit_calc_dr_d37__value()&& j >= CM_FLCNT && sCalcType == 1570) { +- cpn_rate = CM_PLIBOR + CM_QMRG; +- +- if(bbit_calc_dr_d36__value()){ +- double projected_rate = pow((1 + CM_PLIBOR/100.0), +- (days_in_period)) - 1; +- +- projected_rate = projected_rate + CM_QMRG/100.0 * days_in_period; +- cpn_rate = 100 * projected_rate * (1/days_in_period); +- } +- } +- +- +- if(isactact) { +- CM_FIFLX[j] = cpn_rate / sFreq; +- CM_FEXTX[j] = CM_FEXTX[j-1] + 1; +- +- if(bbit_calc_dr_d46__value() && discDaytype != 0) { +- CM_FEXTX[j] = (double)days_from_settle / (double)(1/sfreq1); +- } +- } +- else { +- if(!bbit_calc_dr_d46__value()){ +- days_from_settle = difday_(&sDayType,asSettleDt, +- &CM_FSHDT[j*3],&ercode); +- days_in_period = difday_(&sDayType,&CM_FSHDT[(j-1)*3], +- &CM_FSHDT[j*3],&ercode); +- +- } +- +- CM_FIFLX[j] = cpn_rate * days_in_period; +- CM_FEXTX[j] = (double)days_from_settle / (double)(1/sfreq1); +- } +- +- } +- +- if(bbit_calc_dr_d33__value() && CM_CTUP_GOOD_TO_GO != 0) { +- CM_FIFLX[j] = rnd_trunc_numb (CM_FIFLX[j], 0, 0); +- } +- ++ int error = 0; ++ short num = func (&global1 + 15, &error); ++ for (int j = 0; j < array0[0]; j++) ++ { ++ if (j == 0) ++ { ++ func (arg0, &global1 + 20, &error); ++ array0[0] = num; ++ } ++ else ++ { ++ double cr = (&dbl)[1]; ++ if (func (&i4)) ++ func (0, &(&array0)[j]); ++ if (func (&i5)) ++ { ++ if ((&global1)[12]) ++ cr = array1[j]; ++ } ++ if (func (&i2) ++ && (&global1)[12]) ++ { ++ if (func (&i1)) ++ pow ((&dbl)[1], 2); ++ } ++ array0[j] = cr; ++ } ++ if (func (&i0) && global0) ++ func (((short *) array0 + 1)[j]); + } +- +- +- short accrued_days = difday_(&sDayType,CM_FLPRV,asSettleDt,&ercode); +- +- if(!bbit_calc_dr_d47__value()) { +- if(isactact) { +- *pdAI = (CM_FLCPN / sFreq)* accrued_days / ((double)days_in_current_period); +- } +- else{ +- *pdAI = (CM_FLCPN / sFreq)* accrued_days / ((double)1/sFreq); +- } +- } +- +- CM_EXDAY = days_to_next_cpn; +- CM_BASIS = days_in_current_period; +- datetrn_(CM_FLPRV,CM_PREV); ++ short ad = func (&global1 + 15, 0); ++ if (func (&i3) && func ()) ++ *arg1 = *((double *) &global1) * ad; ++ func (&global1 + 15); + } +--- a/src/gcc/testsuite/gcc.target/powerpc/pr71763.c ++++ b/src/gcc/testsuite/gcc.target/powerpc/pr71763.c +@@ -1,5 +1,6 @@ + // PR target/71763 + // { dg-do compile } ++// { dg-require-effective-target powerpc_vsx_ok } + // { dg-options "-O1 -mvsx" } + + int a, b; +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/powerpc/pr96139-a.c +@@ -0,0 +1,32 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -Wall -m32 -mvsx" } */ ++/* { dg-require-effective-target ilp32 } */ ++/* { dg-require-effective-target powerpc_vsx_ok } */ ++ ++#include ++#include ++ ++void ++try_printing_longlong_a ( ++ __vector signed char cval, ++ __vector signed int ival, ++ __vector signed long long int llval, ++ int x, int y, int z) ++{ ++ printf (" %016llx \n", llval[x]); ++ printf (" %016x \n", ival[z]); ++ printf (" %c \n", cval[y]); ++} ++ ++void ++try_printing_unsigned_longlong_a ( ++ __vector unsigned char cval, ++ __vector unsigned int ival, ++ __vector unsigned long long int llval, ++ int x, int y, int z) ++{ ++ printf (" %016llx \n", llval[x]); ++ printf (" %016x \n", ival[z]); ++ printf (" %c \n", cval[y]); ++} ++ +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/powerpc/pr96139-b.c +@@ -0,0 +1,32 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -Wall -m64 -mvsx" } */ ++/* { dg-require-effective-target lp64 } */ ++/* { dg-require-effective-target powerpc_vsx_ok } */ ++ ++#include ++#include ++ ++void ++try_printing_longlong_a ( ++ __vector signed char cval, ++ __vector signed int ival, ++ __vector signed long long int llval, ++ int x, int y, int z) ++{ ++ printf (" %016llx \n", llval[x]); ++ printf (" %016x \n", ival[z]); ++ printf (" %c \n", cval[y]); ++} ++ ++ ++void ++try_printing_unsigned_longlong_a ( ++ __vector unsigned char cval, ++ __vector unsigned int ival, ++ __vector unsigned long long int llval, ++ int x, int y, int z) ++{ ++ printf (" %016llx \n", llval[x]); ++ printf (" %016x \n", ival[z]); ++ printf (" %c \n", cval[y]); ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/powerpc/pr96139-c.c +@@ -0,0 +1,26 @@ ++/* { dg-do run } */ ++/* { dg-options "-O2 -Wall -maltivec" } */ ++/* { dg-require-effective-target powerpc_altivec_ok } */ ++ ++/* ++ * Based on test created by sjmunroe for pr96139 ++ */ ++ ++#include ++#include ++ ++volatile vector long long llfoo; ++ ++void ++print_v2xint64_b () { ++ printf (" %016llx \n", llfoo[0]); ++ printf (" %016llx \n", llfoo[1]); ++} ++ ++int ++main() { ++llfoo[0]=12345678; ++llfoo[1]=34567890; ++print_v2xint64_b(); ++return 0; ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/powerpc/pragma_misc9.c +@@ -0,0 +1,47 @@ ++/* { dg-do compile } */ ++/* { dg-require-effective-target powerpc_p9vector_ok } */ ++/* { dg-require-effective-target lp64 } */ ++/* { dg-options "-mcpu=power9 -maltivec -O2" } */ ++ ++/* Ensure that if we set a pragma gcc target for an ++ older processor, we do not compile builtins that ++ the older target does not support. */ ++ ++#include ++ ++vector bool int ++test1 (vector signed int a, vector signed int b) ++{ ++ return vec_cmpnez (a, b); ++} ++ ++#pragma GCC target ("cpu=power8") ++vector bool int ++test2 (vector signed int a, vector signed int b) ++{ ++ return vec_cmpnez (a, b); ++ /* { dg-error "'__builtin_altivec_vcmpnezw' requires the '-mcpu=power9' option" "" { target *-*-* } .-1 } */ ++} ++ ++#pragma GCC target ("cpu=power7") ++vector signed int ++test3 (vector signed int a, vector signed int b) ++{ ++ return vec_mergee (a, b); ++ /* { dg-error "'__builtin_altivec_vmrgew_v4si' requires the '-mpower8-vector' option" "" { target *-*-* } .-1 } */ ++} ++ ++#pragma GCC target ("cpu=power6") ++vector signed int ++test4 (vector int a, vector int b) ++{ ++ return vec_sldw (a, b, 2); ++ /* { dg-error "'__builtin_vsx_xxsldwi_4si' requires the '-mvsx' option" "" { target *-*-* } .-1 } */ ++} ++ ++vector int ++test5 (vector int a, vector int b) ++{ ++ return vec_add (a, b); ++} ++ +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/powerpc/pragma_power6.c +@@ -0,0 +1,17 @@ ++/* { dg-do compile } */ ++/* { dg-require-effective-target powerpc_altivec_ok } */ ++/* { dg-options "-mcpu=power6 -maltivec -O2" } */ ++ ++#include ++ ++#pragma GCC target ("cpu=power6,altivec") ++#ifdef _ARCH_PWR6 ++vector int ++isa_2_05 (vector int a, vector int b) ++{ ++ return vec_add (a, b); ++} ++#else ++#error failed power6 pragma target ++#endif ++ +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/powerpc/pragma_power7.c +@@ -0,0 +1,32 @@ ++/* { dg-do compile } */ ++/* { dg-require-effective-target powerpc_altivec_ok } */ ++/* { dg-require-effective-target lp64 } */ ++/* { dg-options "-mcpu=power6 -maltivec -O2" } */ ++ ++#include ++ ++#pragma GCC target ("cpu=power6,altivec") ++#ifdef _ARCH_PWR6 ++vector int ++test1 (vector int a, vector int b) ++{ ++ return vec_add (a, b); ++} ++#else ++#error failed power6 pragma target ++#endif ++ ++#pragma GCC target ("cpu=power7") ++/* Force a re-read of altivec.h with new cpu target. */ ++#undef _ALTIVEC_H ++#include ++#ifdef _ARCH_PWR7 ++vector signed int ++test2 (vector signed int a, vector signed int b) ++{ ++ return vec_sldw (a, b, 3); ++} ++#else ++#error failed to set power7 pragma target ++#endif ++ +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/powerpc/pragma_power8.c +@@ -0,0 +1,52 @@ ++/* { dg-do compile } */ ++/* { dg-require-effective-target lp64 } */ ++/* { dg-require-effective-target powerpc_p8vector_ok } */ ++/* { dg-options "-mcpu=power6 -maltivec -O2" } */ ++ ++#include ++ ++#pragma GCC target ("cpu=power6,altivec") ++#ifdef _ARCH_PWR6 ++vector int ++test1 (vector int a, vector int b) ++{ ++ return vec_add (a, b); ++} ++#else ++#error failed power6 pragma target ++#endif ++ ++#pragma GCC target ("cpu=power7") ++/* Force a re-read of altivec.h with new cpu target. */ ++#undef _ALTIVEC_H ++#include ++#ifdef _ARCH_PWR7 ++vector signed int ++test2 (vector signed int a, vector signed int b) ++{ ++ return vec_sldw (a, b, 3); ++} ++#else ++#error failed to set power7 pragma target ++#endif ++ ++#pragma GCC target ("cpu=power8") ++/* Force a re-read of altivec.h with new cpu target. */ ++#undef _ALTIVEC_H ++#include ++#ifdef _ARCH_PWR8 ++vector int ++test3 (vector int a, vector int b) ++{ ++ return vec_mergee (a, b); ++} ++typedef __attribute__((altivec(vector__))) long vec_t; ++int ++test3b (vec_t a, vec_t b) ++{ ++ return __builtin_vec_vcmpeq_p (2, a, b); ++} ++#else ++#error failed to set power8 pragma target. ++#endif ++ +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/powerpc/pragma_power9.c +@@ -0,0 +1,63 @@ ++/* { dg-do compile } */ ++/* { dg-require-effective-target powerpc_altivec_ok } */ ++/* { dg-require-effective-target lp64 } */ ++/* { dg-options "-mcpu=power6 -maltivec -O2" } */ ++ ++#include ++ ++#ifdef _ARCH_PWR6 ++vector int ++test1 (vector int a, vector int b) ++{ ++ return vec_add (a, b); ++} ++#else ++#error failed on default power6 pragma target ++#endif ++ ++#pragma GCC target ("cpu=power7") ++#undef _ALTIVEC_H ++#include ++#ifdef _ARCH_PWR7 ++vector signed int ++test2 (vector signed int a, vector signed int b) ++{ ++ return vec_sldw (a, b, 3); ++} ++#else ++#error failed to set power7 pragma target ++#endif ++ ++#pragma GCC target ("cpu=power8") ++#undef _ALTIVEC_H ++#include ++#ifdef _ARCH_PWR8 ++vector int ++test3 (vector int a, vector int b) ++{ ++ return vec_mergee (a, b); ++} ++ ++typedef __attribute__((altivec(vector__))) long vec_t; ++int ++test3b (vec_t a, vec_t b) ++{ ++ return __builtin_vec_vcmpeq_p (2, a, b); ++} ++#else ++#error failed to set power8 pragma target. ++#endif ++ ++#pragma GCC target ("cpu=power9,power9-vector") ++#undef _ALTIVEC_H ++#include ++#ifdef _ARCH_PWR9 ++vector bool int ++test4 (vector signed int a, vector signed int b) ++{ ++ return vec_cmpnez (a, b); ++} ++#else ++#error Failed to set cpu=power9 pragma target. ++#endif ++ +--- a/src/gcc/testsuite/gcc.target/powerpc/vsu/vec-all-nez-7.c ++++ b/src/gcc/testsuite/gcc.target/powerpc/vsu/vec-all-nez-7.c +@@ -12,5 +12,6 @@ test_all_not_equal_and_not_zero (vector unsigned short *arg1_p, + vector unsigned short arg_1 = *arg1_p; + vector unsigned short arg_2 = *arg2_p; + +- return __builtin_vec_vcmpnez_p (__CR6_LT, arg_1, arg_2); /* { dg-error "builtin function '__builtin_vec_vcmpnez_p' not supported in this compiler configuration" } */ ++ return __builtin_vec_vcmpnez_p (__CR6_LT, arg_1, arg_2); ++ /* { dg-error "'__builtin_altivec_vcmpnezh_p' requires the '-mcpu=power9' option" "" { target *-*-* } .-1 } */ + } +--- a/src/gcc/testsuite/gcc.target/powerpc/vsu/vec-any-eqz-7.c ++++ b/src/gcc/testsuite/gcc.target/powerpc/vsu/vec-any-eqz-7.c +@@ -11,5 +11,6 @@ test_any_equal (vector unsigned int *arg1_p, vector unsigned int *arg2_p) + vector unsigned int arg_1 = *arg1_p; + vector unsigned int arg_2 = *arg2_p; + +- return __builtin_vec_vcmpnez_p (__CR6_LT_REV, arg_1, arg_2); /* { dg-error "builtin function '__builtin_vec_vcmpnez_p' not supported in this compiler configuration" } */ ++ return __builtin_vec_vcmpnez_p (__CR6_LT_REV, arg_1, arg_2); ++ /* { dg-error "'__builtin_altivec_vcmpnezw_p' requires the '-mcpu=power9' option" "" { target *-*-* } .-1 } */ + } +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/powerpc/vsx-builtin-msum.c +@@ -0,0 +1,26 @@ ++/* Verify that overloaded built-ins for vec_msum with __int128 ++ inputs generate the proper code. */ ++ ++/* { dg-do compile } */ ++/* { dg-require-effective-target powerpc_p9vector_ok } */ ++/* { dg-require-effective-target int128 } */ ++/* { dg-options "-mcpu=power9 -O3" } */ ++ ++#include ++ ++vector signed __int128 ++test_msum_si (vector signed long long vsll_1, vector signed long long vsll_2, ++ vector signed __int128 vsi128) ++{ ++ return vec_msum (vsll_1, vsll_2, vsi128); ++} ++ ++vector unsigned __int128 ++test_msum_ui (vector unsigned long long vull_1, vector unsigned long long vull_2, ++ vector unsigned __int128 vui128) ++{ ++ return vec_msum (vull_1, vull_2, vui128); ++} ++ ++/* { dg_final { scan_assembler_times "vmsumudm" 2 } } */ ++ +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/s390/vector/align-1.c +@@ -0,0 +1,30 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O3 -mzarch -march=z13" } */ ++ ++/* The user alignment ends up in DECL_ALIGN of the VAR_DECL and is ++ currently ignored if it is smaller than the alignment of the type. ++ In this testcase an alignment hint ",3" is emitted also for ++ accessing a4 which is wrong. ++ Hence this testcase currently fails: ++ https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88085 */ ++ ++typedef int __attribute__((vector_size(16))) v4si; ++ ++v4si a4 __attribute__((aligned(4))); ++v4si a8 __attribute__((aligned(8))); ++v4si a16 __attribute__((aligned(16))); ++v4si a32 __attribute__((aligned(32))); ++ ++void ++foo (v4si a) ++{ ++ a4 += a; /* vl ... vst ... */ ++ a8 += a; /* vl ...,3 vst ...,3 */ ++ a16 += a; /* vl ...,4 vst ...,4 */ ++ a32 += a; /* vl ...,4 vst ...,4 */ ++} ++ ++/* { dg-final { scan-assembler-times "vl\t%v\[0-9\]*,\[0-9\]*\\(%r\[0-9\]*\\),3\n" 1 } } */ ++/* { dg-final { scan-assembler-times "vl\t%v\[0-9\]*,\[0-9\]*\\(%r\[0-9\]*\\),4\n" 2 } } */ ++/* { dg-final { scan-assembler-times "vst\t%v\[0-9\]*,\[0-9\]*\\(%r\[0-9\]*\\),3\n" 1 } } */ ++/* { dg-final { scan-assembler-times "vst\t%v\[0-9\]*,\[0-9\]*\\(%r\[0-9\]*\\),4" 2 } } */ +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/s390/vector/align-2.c +@@ -0,0 +1,29 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O3 -mzarch -march=z13" } */ ++ ++/* The user alignment ends up in TYPE_ALIGN of the type of the ++ VAR_DECL. */ ++ ++typedef int __attribute__((vector_size(16),aligned(4))) v4si_4; ++typedef int __attribute__((vector_size(16),aligned(8))) v4si_8; ++typedef int __attribute__((vector_size(16),aligned(16))) v4si_16; ++typedef int __attribute__((vector_size(16),aligned(32))) v4si_32; ++ ++v4si_4 a4; ++v4si_8 a8; ++v4si_16 a16; ++v4si_32 a32; ++ ++void ++foo (v4si_8 a) ++{ ++ a4 += a; /* vl ... vst ... */ ++ a8 += a; /* vl ...,3 vst ...,3 */ ++ a16 += a; /* vl ...,4 vst ...,4 */ ++ a32 += a; /* vl ...,4 vst ...,4 */ ++} ++ ++/* { dg-final { scan-assembler-times "vl\t%v\[0-9\]*,\[0-9\]*\\(%r\[0-9\]*\\),3\n" 1 } } */ ++/* { dg-final { scan-assembler-times "vl\t%v\[0-9\]*,\[0-9\]*\\(%r\[0-9\]*\\),4\n" 2 } } */ ++/* { dg-final { scan-assembler-times "vst\t%v\[0-9\]*,\[0-9\]*\\(%r\[0-9\]*\\),3\n" 1 } } */ ++/* { dg-final { scan-assembler-times "vst\t%v\[0-9\]*,\[0-9\]*\\(%r\[0-9\]*\\),4" 2 } } */ +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/s390/zvector/pr94613.c +@@ -0,0 +1,38 @@ ++/* { dg-do run } */ ++/* { dg-require-effective-target s390_vx } */ ++/* { dg-options "-O3 -mzarch -march=z13 -mzvector -std=gnu99 --save-temps" } */ ++ ++#include ++ ++/* The initial implementation of vec_sel used an IF_THEN_ELSE rtx. ++ This did NOT match what the vsel instruction does. vsel is a ++ bit-wise operation. Using IF_THEN_ELSE made the + operation to be ++ simplified away in combine. A plus operation affects other bits in ++ the same element. Hence per-element simplifications are wrong for ++ vsel. */ ++vector unsigned char __attribute__((noinline)) ++foo (vector unsigned char a, vector unsigned char b, vector unsigned char c) ++{ ++ return vec_sel (a + b, c, a); ++} ++ ++/* FIXME: The OR operation still should be optimized away in that case. */ ++vector unsigned char __attribute__((noinline)) ++bar (vector unsigned char a, vector unsigned char b, vector unsigned char c) ++{ ++ return vec_sel (a | b, c, a); ++} ++ ++int ++main () ++{ ++ vector unsigned char v = (vector unsigned char){ 1 }; ++ ++ if (foo (v, v, v)[0] != 3) ++ __builtin_abort (); ++ ++ if (bar (v, v, v)[0] != 1) ++ __builtin_abort (); ++ ++ return 0; ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/s390/zvector/vec_sel-1.c +@@ -0,0 +1,211 @@ ++/* { dg-do run } */ ++/* { dg-require-effective-target s390_vxe } */ ++/* { dg-options "-O3 -mzarch -march=z14 -mzvector --save-temps -Wno-attributes" } */ ++ ++#include ++#include ++ ++typedef vector signed char v16qi; ++typedef vector unsigned char uv16qi; ++typedef vector bool char bv16qi; ++ ++typedef vector signed short int v8hi; ++typedef vector unsigned short int uv8hi; ++typedef vector bool short int bv8hi; ++ ++typedef vector signed int v4si; ++typedef vector unsigned int uv4si; ++typedef vector bool int bv4si; ++ ++typedef vector signed long long v2di; ++typedef vector unsigned long long uv2di; ++typedef vector bool long long bv2di; ++ ++typedef vector float v4sf; ++typedef vector double v2df; ++ ++#define NUM_CONSTS 8 ++ ++const v16qi v16qi_vals[NUM_CONSTS] = ++ { (v16qi){ 1 }, ++ (v16qi){ 2 }, ++ (v16qi){ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 }, ++ (v16qi){ 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 }, ++ (v16qi){ -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 }, ++ (v16qi){ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, ++ (v16qi){ 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 }, ++ (v16qi){ 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1 } ++ }; ++ ++const v8hi v8hi_vals[NUM_CONSTS] = ++ { (v8hi){ 1 }, ++ (v8hi){ 2 }, ++ (v8hi){ 1,1,1,1,1,1,1,1 }, ++ (v8hi){ 2,2,2,2,2,2,2,2 }, ++ (v8hi){ -1,-1,-1,-1,-1,-1,-1,-1 }, ++ (v8hi){ 0,0,0,0,0,0,0,0 }, ++ (v8hi){ 1,2,3,4,5,6,7,8 }, ++ (v8hi){ 8,7,6,5,4,3,2,1 } ++ }; ++ ++const v4si v4si_vals[NUM_CONSTS] = ++ { (v4si){ 1 }, ++ (v4si){ 2 }, ++ (v4si){ 1,1,1,1 }, ++ (v4si){ 2,2,2,2 }, ++ (v4si){ -1,-1,-1,-1 }, ++ (v4si){ 0,0,0,0 }, ++ (v4si){ 1,2,3,4 }, ++ (v4si){ 4,3,2,1 } ++ }; ++ ++const v2di v2di_vals[NUM_CONSTS] = ++ { (v2di){ 1 }, ++ (v2di){ 2 }, ++ (v2di){ 1,1 }, ++ (v2di){ 2,2 }, ++ (v2di){ -1,-1 }, ++ (v2di){ 0,0 }, ++ (v2di){ 1,2 }, ++ (v2di){ 2,1 } ++ }; ++ ++const v4sf v4sf_vals[NUM_CONSTS] = ++ { (v4sf){ 1.0f }, ++ (v4sf){ 2.0f }, ++ (v4sf){ 1.0f,1.0f,1.0f,1.0f }, ++ (v4sf){ 2.0f,2.0f,2.0f,2.0f }, ++ (v4sf){ -1.0f,-1.0f,-1.0f,-1.0f }, ++ (v4sf){ 0.0f,0.0f,0.0f,0.0f }, ++ (v4sf){ 1.1f,2.1f,3.1f,4.1f }, ++ (v4sf){ 4.1f,3.1f,2.1f,1.1f } ++ }; ++ ++const v2df v2df_vals[NUM_CONSTS] = ++ { (v2df){ 1.0 }, ++ (v2df){ 2.0 }, ++ (v2df){ 1.0,1.0 }, ++ (v2df){ 2.0,2.0 }, ++ (v2df){ -1.0,-1.0 }, ++ (v2df){ 0.0,0.0 }, ++ (v2df){ 1.1,2.1 }, ++ (v2df){ 2.1,1.1 } ++ }; ++ ++/* Each bit of the result vector has the value of the corresponding ++ bit of A if the corresponding bit of C is 0, or the value of the ++ corresponding bit of B otherwise. */ ++void __attribute__((noinline, noclone, target ("arch=zEC12"))) ++emul (unsigned char *result, unsigned char *a, ++ unsigned char *b, unsigned char *c) ++{ ++ for (int i = 0; i < 16; i++) ++ result[i] = (a[i] & ~c[i]) | (b[i] & c[i]); ++} ++ ++#define GENFUNC(NAME, T1, T2) \ ++ T1 __attribute__((noinline, noclone)) \ ++ NAME##_reg (T1 a, T1 b, T2 c) { return vec_sel (a, b, c); } \ ++ void __attribute__((noinline, noclone)) \ ++ NAME##_mem (T1 *a, T1 *b, T2 *c, T1 *out) { *out = vec_sel (*a, *b, *c); } \ ++ T1 __attribute__((always_inline)) \ ++ NAME##_const (T1 a, T1 b, T2 c) { return vec_sel (a, b, c); } ++ ++GENFUNC (vec_sel_b8_a, bv16qi, uv16qi) ++GENFUNC (vec_sel_b8_b, bv16qi, bv16qi) ++GENFUNC (vec_sel_s8_a, v16qi, uv16qi) ++GENFUNC (vec_sel_s8_b, v16qi, bv16qi) ++GENFUNC (vec_sel_u8_a, uv16qi, uv16qi) ++GENFUNC (vec_sel_u8_b, uv16qi, bv16qi) ++ ++GENFUNC (vec_sel_b16_a, bv8hi, uv8hi) ++GENFUNC (vec_sel_b16_b, bv8hi, bv8hi) ++GENFUNC (vec_sel_s16_a, v8hi, uv8hi) ++GENFUNC (vec_sel_s16_b, v8hi, bv8hi) ++GENFUNC (vec_sel_u16_a, uv8hi, uv8hi) ++GENFUNC (vec_sel_u16_b, uv8hi, bv8hi) ++ ++GENFUNC (vec_sel_b32_a, bv4si, uv4si) ++GENFUNC (vec_sel_b32_b, bv4si, bv4si) ++GENFUNC (vec_sel_s32_a, v4si, uv4si) ++GENFUNC (vec_sel_s32_b, v4si, bv4si) ++GENFUNC (vec_sel_u32_a, uv4si, uv4si) ++GENFUNC (vec_sel_u32_b, uv4si, bv4si) ++ ++GENFUNC (vec_sel_b64_a, bv2di, uv2di) ++GENFUNC (vec_sel_b64_b, bv2di, bv2di) ++GENFUNC (vec_sel_s64_a, v2di, uv2di) ++GENFUNC (vec_sel_s64_b, v2di, bv2di) ++GENFUNC (vec_sel_u64_a, uv2di, uv2di) ++GENFUNC (vec_sel_u64_b, uv2di, bv2di) ++ ++GENFUNC (vec_sel_flt_a, v4sf, uv4si) ++GENFUNC (vec_sel_flt_b, v4sf, bv4si) ++ ++GENFUNC (vec_sel_dbl_a, v2df, uv2di) ++GENFUNC (vec_sel_dbl_b, v2df, bv2di) ++ ++#define TESTFUNC(NAME, T1, T2, VAL_TYPE) \ ++ for (int i = 0; i < NUM_CONSTS; i++) \ ++ for (int j = 0; j < NUM_CONSTS; j++) \ ++ for (int k = 0; k < NUM_CONSTS; k++) \ ++ { \ ++ unsigned char result[16]; \ ++ T1 in1 = (T1)VAL_TYPE##_vals[i]; \ ++ T1 in2 = (T1)VAL_TYPE##_vals[j]; \ ++ T2 in3 = (T2)VAL_TYPE##_vals[k]; \ ++ emul (result, (char*)&in1, (char*)&in2, (char*)&in3); \ ++ \ ++ T1 reg = NAME##_reg (in1, in2, in3); \ ++ if (memcmp ((char*)®, result, 16) != 0) \ ++ __builtin_abort (); \ ++ \ ++ T1 mem; \ ++ NAME##_mem (&in1, &in2, &in3, &mem); \ ++ if (memcmp ((char*)&mem, result, 16) != 0) \ ++ __builtin_abort (); \ ++ \ ++ T1 cons = NAME##_const (in1, in2, in3); \ ++ if (memcmp ((char*)&cons, result, 16) != 0) \ ++ __builtin_abort (); \ ++ } ++ ++int ++main () ++{ ++ TESTFUNC (vec_sel_b8_a, bv16qi, uv16qi, v16qi); ++ TESTFUNC (vec_sel_b8_b, bv16qi, bv16qi, v16qi); ++ TESTFUNC (vec_sel_s8_a, v16qi, uv16qi, v16qi); ++ TESTFUNC (vec_sel_s8_b, v16qi, bv16qi, v16qi); ++ TESTFUNC (vec_sel_u8_a, uv16qi, uv16qi, v16qi); ++ TESTFUNC (vec_sel_u8_b, uv16qi, bv16qi, v16qi); ++ ++ TESTFUNC (vec_sel_b16_a, bv8hi, uv8hi, v8hi); ++ TESTFUNC (vec_sel_b16_b, bv8hi, bv8hi, v8hi); ++ TESTFUNC (vec_sel_s16_a, v8hi, uv8hi, v8hi); ++ TESTFUNC (vec_sel_s16_b, v8hi, bv8hi, v8hi); ++ TESTFUNC (vec_sel_u16_a, uv8hi, uv8hi, v8hi); ++ TESTFUNC (vec_sel_u16_b, uv8hi, bv8hi, v8hi); ++ ++ TESTFUNC (vec_sel_b32_a, bv4si, uv4si, v4si); ++ TESTFUNC (vec_sel_b32_b, bv4si, bv4si, v4si); ++ TESTFUNC (vec_sel_s32_a, v4si, uv4si, v4si); ++ TESTFUNC (vec_sel_s32_b, v4si, bv4si, v4si); ++ TESTFUNC (vec_sel_u32_a, uv4si, uv4si, v4si); ++ TESTFUNC (vec_sel_u32_b, uv4si, bv4si, v4si); ++ ++ TESTFUNC (vec_sel_b64_a, bv2di, uv2di, v2di); ++ TESTFUNC (vec_sel_b64_b, bv2di, bv2di, v2di); ++ TESTFUNC (vec_sel_s64_a, v2di, uv2di, v2di); ++ TESTFUNC (vec_sel_s64_b, v2di, bv2di, v2di); ++ TESTFUNC (vec_sel_u64_a, uv2di, uv2di, v2di); ++ TESTFUNC (vec_sel_u64_b, uv2di, bv2di, v2di); ++ ++ TESTFUNC (vec_sel_flt_a, v4sf, uv4si, v4sf); ++ TESTFUNC (vec_sel_flt_b, v4sf, bv4si, v4sf); ++ ++ TESTFUNC (vec_sel_dbl_a, v2df, uv2di, v2df); ++ TESTFUNC (vec_sel_dbl_b, v2df, bv2di, v2df); ++} ++ ++/* { dg-final { scan-assembler {\n\tvsel\t} } } */ +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/xtensa/pr91880.c +@@ -0,0 +1,10 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O3 -fomit-frame-pointer -fno-tree-vectorize" } */ ++ ++void foo (unsigned int n, char *a, char *b) ++{ ++ int i; ++ ++ for (i = 0; i <= n - 1; ++i) ++ a[i] = b[i]; ++} +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/xtensa/pr94584.c +@@ -0,0 +1,24 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -mserialize-volatile" } */ ++ ++unsigned long load32 (volatile unsigned long *s) ++{ ++ return *s; ++} ++ ++short load16s (volatile short *s) ++{ ++ return *s; ++} ++ ++unsigned short load16u (volatile unsigned short *s) ++{ ++ return *s; ++} ++ ++unsigned char load8 (volatile unsigned char *s) ++{ ++ return *s; ++} ++ ++/* { dg-final { scan-assembler-times "memw" 4 } } */ +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/xtensa/xtensa.exp +@@ -0,0 +1,41 @@ ++# Copyright (C) 2019 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 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 GCC; see the file COPYING3. If not see ++# . ++ ++# GCC testsuite that uses the `dg.exp' driver. ++ ++# Exit immediately if this isn't an Xtensa target. ++if ![istarget xtensa*-*-*] then { ++ return ++} ++ ++# Load support procs. ++load_lib gcc-dg.exp ++ ++# If a testcase doesn't have special options, use these. ++global DEFAULT_CFLAGS ++if ![info exists DEFAULT_CFLAGS] then { ++ set DEFAULT_CFLAGS " -ansi -pedantic-errors" ++} ++ ++# Initialize `dg'. ++dg-init ++ ++# Main loop. ++dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.\[cS\]]] \ ++ "" $DEFAULT_CFLAGS ++ ++# All done. ++dg-finish +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gfortran.dg/dec_structure_28.f90 +@@ -0,0 +1,35 @@ ++! { dg-do compile } ++! { dg-options "-fdec-structure -fdec-static" } ++! ++! PR fortran/85982 ++! ++! Test a regression wherein some component attributes were erroneously accepted ++! within a DEC structure. ++! ++ ++structure /s/ ++ integer :: a ++ integer, intent(in) :: b ! { dg-error "is not allowed" } ++ integer, intent(out) :: c ! { dg-error "is not allowed" } ++ integer, intent(inout) :: d ! { dg-error "is not allowed" } ++ integer, dimension(1,1) :: e ! OK ++ integer, external, pointer :: f ! { dg-error "is not allowed" } ++ integer, intrinsic :: f ! { dg-error "is not allowed" } ++ integer, optional :: g ! { dg-error "is not allowed" } ++ integer, parameter :: h ! { dg-error "is not allowed" } ++ integer, protected :: i ! { dg-error "is not allowed" } ++ integer, private :: j ! { dg-error "is not allowed" } ++ integer, static :: k ! { dg-error "is not allowed" } ++ integer, automatic :: l ! { dg-error "is not allowed" } ++ integer, public :: m ! { dg-error "is not allowed" } ++ integer, save :: n ! { dg-error "is not allowed" } ++ integer, target :: o ! { dg-error "is not allowed" } ++ integer, value :: p ! { dg-error "is not allowed" } ++ integer, volatile :: q ! { dg-error "is not allowed" } ++ integer, bind(c) :: r ! { dg-error "is not allowed" } ++ integer, asynchronous :: t ! { dg-error "is not allowed" } ++ character(len=3) :: v ! OK ++ integer(kind=4) :: w ! OK ++end structure ++ ++end +--- a/src/gcc/testsuite/gfortran.dg/finalize_28.f90 ++++ b/src/gcc/testsuite/gfortran.dg/finalize_28.f90 +@@ -21,4 +21,4 @@ contains + integer, intent(out) :: edges(:,:) + end subroutine coo_dump_edges + end module coo_graphs +-! { dg-final { scan-tree-dump-times "__builtin_free" 5 "original" } } ++! { dg-final { scan-tree-dump-times "__builtin_free" 6 "original" } } +--- a/src/gcc/testsuite/gfortran.dg/finalize_34.f90 ++++ b/src/gcc/testsuite/gfortran.dg/finalize_34.f90 +@@ -22,4 +22,4 @@ program main + use testmodule + type(evtlist_type), dimension(10) :: a + end program main +-! { dg-final { scan-tree-dump-times "__builtin_free" 8 "original" } } ++! { dg-final { scan-tree-dump-times "__builtin_free" 24 "original" } } +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gfortran.dg/finalize_35.f90 +@@ -0,0 +1,48 @@ ++! { dg-do compile } ++! { dg-additional-options "-fdump-tree-original" } ++! PR 94361 - this left open some memory leaks. Original test case by ++! Antony Lewis. ++ ++module debug ++ private ++ ++ Type TypeWithFinal ++ contains ++ FINAL :: finalizer !No leak if this line is commented ++ end type TypeWithFinal ++ ++ Type Tester ++ real, dimension(:), allocatable :: Dat ++ Type(TypeWithFinal) :: X ++ end Type Tester ++ ++ Type :: TestType2 ++ Type(Tester) :: T ++ end type TestType2 ++ public Leaker ++contains ++ ++ subroutine Leaker ++ type(TestType2) :: Test ++ ++ allocate(Test%T%Dat(1000)) ++ end subroutine Leaker ++ ++ subroutine finalizer(this) ++ Type(TypeWithFinal) :: this ++ end subroutine finalizer ++ ++end module debug ++ ++ ++program run ++ use debug ++ implicit none ++ integer i ++ ++ do i=1, 1000 ++ call Leaker() ++ end do ++ ++end program run ++! { dg-final { scan-tree-dump-times "__builtin_free\\ \\(ptr2" 2 "original" } } +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gfortran.dg/finalize_36.f90 +@@ -0,0 +1,39 @@ ++! { dg-do run } ++! { dg-additional-options "-fdump-tree-original" } ++! PR 94109 ++! This used to leak memory. Test case by Antony Lewis. ++ module debug ++ implicit none ++ ++ Type Tester ++ real, dimension(:), allocatable :: Dat, Dat2 ++ end Type ++ ++ Type TestType2 ++ Type(Tester) :: T ++ end type TestType2 ++ ++ contains ++ ++ subroutine Leaker ++ class(TestType2), pointer :: ActiveState ++ Type(Tester) :: Temp ++ ++ allocate(Temp%Dat2(10000)) ++ ++ allocate(TestType2::ActiveState) ++ ActiveState%T = Temp ++ deallocate(ActiveState) ++ ++ end subroutine ++ ++ end module ++ ++ ++ program run ++ use debug ++ ++ call Leaker() ++ ++ end program ++! { dg-final { scan-tree-dump-times "__builtin_free\\ \\(ptr2" 4 "original" } } +--- a/src/gcc/testsuite/gfortran.dg/fmt_en.f90 ++++ b/src/gcc/testsuite/gfortran.dg/fmt_en.f90 +@@ -10,7 +10,6 @@ use ISO_FORTRAN_ENV + integer :: n_tst = 0, n_cnt = 0, n_skip = 0 + character(len=20) :: s, s1 + +- open (unit = 10, file = 'fmt_en.res') + ! Check that the default rounding mode is to nearest and to even on tie. + do i=1,size(real_kinds) + if (i == 1) then +@@ -149,8 +148,7 @@ use ISO_FORTRAN_ENV + + ! print *, n_tst, n_cnt, n_skip + if (n_cnt /= 0) STOP 1 +- if (all(.not. l_skip)) write (10, *) "All kinds rounded to nearest" +- close (10) ++ if (all(.not. l_skip)) print *, "All kinds rounded to nearest" + + contains + subroutine checkfmt(fmt, x, cmp) +@@ -182,4 +180,4 @@ contains + + end subroutine + end program +-! { dg-final { scan-file fmt_en.res "All kinds rounded to nearest" { xfail hppa*-*-hpux* } } } ++! { dg-output "All kinds rounded to nearest" { xfail { i?86-*-solaris2.9* hppa*-*-hpux* } } } +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gfortran.dg/fmt_en_rd.f90 +@@ -0,0 +1,185 @@ ++! { dg-do run } ++! PR60128 Invalid outputs with EN descriptors ++! Test case provided by Walt Brainerd. ++program pr60128 ++use ISO_FORTRAN_ENV ++ implicit none ++ integer, parameter :: j(size(real_kinds)+4)=[REAL_KINDS, [4, 4, 4, 4]] ++ logical :: l_skip(4) = .false. ++ integer :: i ++ integer :: n_tst = 0, n_cnt = 0, n_skip = 0 ++ character(len=20,kind=4) :: s, s1 ++ ++! Check that the default rounding mode is to nearest and to even on tie. ++ do i=1,size(real_kinds) ++ if (i == 1) then ++ write(s, '(2F4.1,2F4.0)') real(-9.49999905,kind=j(1)), & ++ real(9.49999905,kind=j(1)), & ++ real(9.5,kind=j(1)), real(8.5,kind=j(1)) ++ write(s1, '(3PE10.3,2PE10.3)') real(987350.,kind=j(1)), & ++ real(98765.0,kind=j(1)) ++ else if (i == 2) then ++ write(s, '(2F4.1,2F4.0)') real(-9.49999905,kind=j(2)), & ++ real(9.49999905,kind=j(2)), & ++ real(9.5,kind=j(2)), real(8.5,kind=j(2)) ++ write(s1, '(3PE10.3,2PE10.3)') real(987350.,kind=j(2)), & ++ real(98765.0,kind=j(2)) ++ else if (i == 3) then ++ write(s, '(2F4.1,2F4.0)') real(-9.49999905,kind=j(3)), & ++ real(9.49999905,kind=j(3)), & ++ real(9.5,kind=j(3)), real(8.5,kind=j(3)) ++ write(s1, '(3PE10.3,2PE10.3)') real(987350.,kind=j(3)), & ++ real(98765.0,kind=j(3)) ++ else if (i == 4) then ++ write(s, '(2F4.1,2F4.0)') real(-9.49999905,kind=j(4)), & ++ real(9.49999905,kind=j(4)), & ++ real(9.5,kind=j(4)), real(8.5,kind=j(4)) ++ write(s1, '(3PE10.3,2PE10.3)') real(987350.,kind=j(4)), & ++ real(98765.0,kind=j(4)) ++ end if ++ if (s /= 4_'-9.5 9.5 10. 8.' .or. s1 /= 4_' 987.4E+03 98.76E+03') then ++ l_skip(i) = .true. ++ print "('Unsupported rounding for real(',i0,')')", j(i) ++ end if ++ end do ++ ++ ++! Original test. ++ call checkfmt("(en15.2)", -.44444, 4_" -444.44E-03") ++ ++! Test for the bug in comment 6. ++ call checkfmt("(rd,en15.0)", 1.0, 4_" 1.E+00") ++ call checkfmt("(rd,en15.0)", 1.00000012, 4_" 1.E+00") ++ call checkfmt("(rd,en15.0)", 0.99999994, 4_" 999.E-03") ++ call checkfmt("(rd,en15.0)", 10.0, 4_" 10.E+00") ++ call checkfmt("(rd,en15.0)", 10.0000010, 4_" 10.E+00") ++ call checkfmt("(rd,en15.0)", 9.99999905, 4_" 9.E+00") ++ call checkfmt("(ru,en15.0)", 100.0, 4_" 100.E+00") ++ call checkfmt("(rd,en15.0)", 100.000008, 4_" 100.E+00") ++ call checkfmt("(rd,en15.0)", 99.9999924, 4_" 99.E+00") ++ call checkfmt("(rd,en15.0)", 1000.0, 4_" 1.E+03") ++ call checkfmt("(rd,en15.0)", 1000.00006, 4_" 1.E+03") ++ call checkfmt("(rd,en15.0)", 999.999939, 4_" 999.E+00") ++ call checkfmt("(rd,en15.0)", 9.5, 4_" 9.E+00") ++ call checkfmt("(rd,en15.0)", 9.50000095, 4_" 9.E+00") ++ call checkfmt("(rd,en15.0)", 9.49999905, 4_" 9.E+00") ++ call checkfmt("(rd,en15.0)", 99.5, 4_" 99.E+00") ++ call checkfmt("(rd,en15.0)", 99.5000076, 4_" 99.E+00") ++ call checkfmt("(rd,en15.0)", 99.4999924, 4_" 99.E+00") ++ call checkfmt("(rd,en15.0)", 999.5, 4_" 999.E+00") ++ call checkfmt("(rd,en15.0)", 999.500061, 4_" 999.E+00") ++ call checkfmt("(rd,en15.0)", 999.499939, 4_" 999.E+00") ++ call checkfmt("(rd,en15.0)", 9500.0, 4_" 9.E+03") ++ call checkfmt("(rd,en15.0)", 9500.00098, 4_" 9.E+03") ++ call checkfmt("(rd,en15.0)", 9499.99902, 4_" 9.E+03") ++ call checkfmt("(rd,en15.1)", 9950.0, 4_" 9.9E+03") ++ call checkfmt("(rd,en15.2)", 9995.0, 4_" 9.99E+03") ++ call checkfmt("(rd,en15.3)", 9999.5, 4_" 9.999E+03") ++ call checkfmt("(rd,en15.1)", 9.5, 4_" 9.5E+00") ++ call checkfmt("(rd,en15.1)", 9.50000095, 4_" 9.5E+00") ++ call checkfmt("(rd,en15.1)", 9.49999905, 4_" 9.4E+00") ++ call checkfmt("(rd,en15.1)", 0.099951, 4_" 99.9E-03") ++ call checkfmt("(rd,en15.1)", 0.009951, 4_" 9.9E-03") ++ call checkfmt("(rd,en15.1)", 0.000999951,4_" 999.9E-06") ++ ++ call checkfmt("(rd,en15.0)", -1.0, 4_" -1.E+00") ++ call checkfmt("(rd,en15.0)", -1.00000012, 4_" -2.E+00") ++ call checkfmt("(rd,en15.0)", -0.99999994, 4_" -1.E+00") ++ call checkfmt("(rd,en15.0)", -10.0, 4_" -10.E+00") ++ call checkfmt("(rd,en15.0)", -10.0000010, 4_" -11.E+00") ++ call checkfmt("(rd,en15.0)", -9.99999905, 4_" -10.E+00") ++ call checkfmt("(rd,en15.0)", -100.0, 4_" -100.E+00") ++ call checkfmt("(rd,en15.0)", -100.000008, 4_" -101.E+00") ++ call checkfmt("(rd,en15.0)", -99.9999924, 4_" -100.E+00") ++ call checkfmt("(rd,en15.0)", -1000.0, 4_" -1.E+03") ++ call checkfmt("(rd,en15.0)", -1000.00006, 4_" -2.E+03") ++ call checkfmt("(rd,en15.0)", -999.999939, 4_" -1.E+03") ++ call checkfmt("(rd,en15.0)", -9.5, 4_" -10.E+00") ++ call checkfmt("(rd,en15.0)", -9.50000095, 4_" -10.E+00") ++ call checkfmt("(rd,en15.0)", -9.49999905, 4_" -10.E+00") ++ call checkfmt("(rd,en15.0)", -99.5, 4_" -100.E+00") ++ call checkfmt("(rd,en15.0)", -99.5000076, 4_" -100.E+00") ++ call checkfmt("(rd,en15.0)", -99.4999924, 4_" -100.E+00") ++ call checkfmt("(rd,en15.0)", -999.5, 4_" -1.E+03") ++ call checkfmt("(rd,en15.0)", -999.500061, 4_" -1.E+03") ++ call checkfmt("(rd,en15.0)", -999.499939, 4_" -1.E+03") ++ call checkfmt("(rd,en15.0)", -9500.0, 4_" -10.E+03") ++ call checkfmt("(rd,en15.0)", -9500.00098, 4_" -10.E+03") ++ call checkfmt("(rd,en15.0)", -9499.99902, 4_" -10.E+03") ++ call checkfmt("(rd,en15.1)", -9950.0, 4_" -10.0E+03") ++ call checkfmt("(rd,en15.2)", -9995.0, 4_" -10.00E+03") ++ call checkfmt("(rd,en15.3)", -9999.5, 4_" -10.000E+03") ++ call checkfmt("(rd,en15.1)", -9.5, 4_" -9.5E+00") ++ call checkfmt("(rd,en15.1)", -9.50000095, 4_" -9.6E+00") ++ call checkfmt("(rd,en15.1)", -9.49999905, 4_" -9.5E+00") ++ call checkfmt("(rd,en15.1)", -0.099951, 4_" -100.0E-03") ++ call checkfmt("(rd,en15.1)", -0.009951, 4_" -10.0E-03") ++ call checkfmt("(rd,en15.1)", -0.000999951,4_" -1.0E-03") ++ ++ call checkfmt("(rd,en15.1)", 987350., 4_" 987.3E+03") ++ call checkfmt("(rd,en15.2)", 98735., 4_" 98.73E+03") ++ call checkfmt("(rd,en15.3)", 9873.5, 4_" 9.873E+03") ++ call checkfmt("(rd,en15.1)", 987650., 4_" 987.6E+03") ++ call checkfmt("(rd,en15.2)", 98765., 4_" 98.76E+03") ++ call checkfmt("(rd,en15.3)", 9876.5, 4_" 9.876E+03") ++ call checkfmt("(rd,en15.1)", 3.125E-02, 4_" 31.2E-03") ++ call checkfmt("(rd,en15.1)", 9.375E-02, 4_" 93.7E-03") ++ call checkfmt("(rd,en15.2)", 1.5625E-02, 4_" 15.62E-03") ++ call checkfmt("(rd,en15.2)", 4.6875E-02, 4_" 46.87E-03") ++ call checkfmt("(rd,en15.3)", 7.8125E-03, 4_" 7.812E-03") ++ call checkfmt("(rd,en15.3)", 2.34375E-02, 4_" 23.437E-03") ++ call checkfmt("(rd,en15.3)", 9.765625E-04,4_" 976.562E-06") ++ call checkfmt("(rd,en15.6)", 2.9296875E-03,4_" 2.929687E-03") ++ ++ call checkfmt("(rd,en15.1)", -987350., 4_" -987.4E+03") ++ call checkfmt("(rd,en15.2)", -98735., 4_" -98.74E+03") ++ call checkfmt("(rd,en15.3)", -9873.5, 4_" -9.874E+03") ++ call checkfmt("(rd,en15.1)", -987650., 4_" -987.7E+03") ++ call checkfmt("(rd,en15.2)", -98765., 4_" -98.77E+03") ++ call checkfmt("(rd,en15.3)", -9876.5, 4_" -9.877E+03") ++ call checkfmt("(rd,en15.1)", -3.125E-02, 4_" -31.3E-03") ++ call checkfmt("(rd,en15.1)", -9.375E-02, 4_" -93.8E-03") ++ call checkfmt("(rd,en15.2)", -1.5625E-02, 4_" -15.63E-03") ++ call checkfmt("(rd,en15.2)", -4.6875E-02, 4_" -46.88E-03") ++ call checkfmt("(rd,en15.3)", -7.8125E-03, 4_" -7.813E-03") ++ call checkfmt("(rd,en15.3)", -2.34375E-02, 4_" -23.438E-03") ++ call checkfmt("(rd,en15.3)", -9.765625E-04,4_" -976.563E-06") ++ call checkfmt("(rd,en15.6)", -2.9296875E-03,4_" -2.929688E-03") ++ ++ print *, n_tst, n_cnt, n_skip ++ if (n_cnt /= 0) stop n_cnt ++ if (all(.not. l_skip)) print *, "All kinds rounded down" ++ ++contains ++ subroutine checkfmt(fmt, x, cmp) ++ implicit none ++ integer :: i ++ character(len=*), intent(in) :: fmt ++ real, intent(in) :: x ++ character(len=*, kind=4), intent(in) :: cmp ++ do i=1,size(real_kinds) ++ if (l_skip(i)) cycle ++ if (i == 1) then ++ write(s, fmt) real(x,kind=j(1)) ++ else if (i == 2) then ++ write(s, fmt) real(x,kind=j(2)) ++ else if (i == 3) then ++ write(s, fmt) real(x,kind=j(3)) ++ else if (i == 4) then ++ write(s, fmt) real(x,kind=j(4)) ++ end if ++ n_tst = n_tst + 1 ++ if (s /= cmp) then ++ if (l_skip(i)) then ++ n_skip = n_skip + 1 ++ else ++ print "(a,1x,a,' expected: ',1x,a)", fmt, s, cmp ++ n_cnt = n_cnt + 1 ++ end if ++ end if ++ end do ++ ++ end subroutine ++end program ++! { dg-output "All kinds rounded down" { xfail { i?86-*-solaris2.9* hppa*-*-hpux* } } } ++! { dg-final { cleanup-saved-temps } } +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gfortran.dg/fmt_en_rn.f90 +@@ -0,0 +1,185 @@ ++! { dg-do run } ++! PR60128 Invalid outputs with EN descriptors ++! Test case provided by Walt Brainerd. ++program pr60128 ++use ISO_FORTRAN_ENV ++ implicit none ++ integer, parameter :: j(size(real_kinds)+4)=[REAL_KINDS, [4, 4, 4, 4]] ++ logical :: l_skip(4) = .false. ++ integer :: i ++ integer :: n_tst = 0, n_cnt = 0, n_skip = 0 ++ character(len=20,kind=4) :: s, s1 ++ ++! Check that the default rounding mode is to nearest and to even on tie. ++ do i=1,size(real_kinds) ++ if (i == 1) then ++ write(s, '(2F4.1,2F4.0)') real(-9.49999905,kind=j(1)), & ++ real(9.49999905,kind=j(1)), & ++ real(9.5,kind=j(1)), real(8.5,kind=j(1)) ++ write(s1, '(3PE10.3,2PE10.3)') real(987350.,kind=j(1)), & ++ real(98765.0,kind=j(1)) ++ else if (i == 2) then ++ write(s, '(2F4.1,2F4.0)') real(-9.49999905,kind=j(2)), & ++ real(9.49999905,kind=j(2)), & ++ real(9.5,kind=j(2)), real(8.5,kind=j(2)) ++ write(s1, '(3PE10.3,2PE10.3)') real(987350.,kind=j(2)), & ++ real(98765.0,kind=j(2)) ++ else if (i == 3) then ++ write(s, '(2F4.1,2F4.0)') real(-9.49999905,kind=j(3)), & ++ real(9.49999905,kind=j(3)), & ++ real(9.5,kind=j(3)), real(8.5,kind=j(3)) ++ write(s1, '(3PE10.3,2PE10.3)') real(987350.,kind=j(3)), & ++ real(98765.0,kind=j(3)) ++ else if (i == 4) then ++ write(s, '(2F4.1,2F4.0)') real(-9.49999905,kind=j(4)), & ++ real(9.49999905,kind=j(4)), & ++ real(9.5,kind=j(4)), real(8.5,kind=j(4)) ++ write(s1, '(3PE10.3,2PE10.3)') real(987350.,kind=j(4)), & ++ real(98765.0,kind=j(4)) ++ end if ++ if (s /= 4_'-9.5 9.5 10. 8.' .or. s1 /= 4_' 987.4E+03 98.76E+03') then ++ l_skip(i) = .true. ++ print "('Unsupported rounding for real(',i0,')')", j(i) ++ end if ++ end do ++ ++ ++! Original test. ++ call checkfmt("(en15.2)", -.44444, 4_" -444.44E-03") ++ ++! Test for the bug in comment 6. ++ call checkfmt("(rn,en15.0)", 1.0, 4_" 1.E+00") ++ call checkfmt("(rn,en15.0)", 1.00000012, 4_" 1.E+00") ++ call checkfmt("(rn,en15.0)", 0.99999994, 4_" 1.E+00") ++ call checkfmt("(rn,en15.0)", 10.0, 4_" 10.E+00") ++ call checkfmt("(rn,en15.0)", 10.0000010, 4_" 10.E+00") ++ call checkfmt("(rn,en15.0)", 9.99999905, 4_" 10.E+00") ++ call checkfmt("(rn,en15.0)", 100.0, 4_" 100.E+00") ++ call checkfmt("(rn,en15.0)", 100.000008, 4_" 100.E+00") ++ call checkfmt("(rn,en15.0)", 99.9999924, 4_" 100.E+00") ++ call checkfmt("(rn,en15.0)", 1000.0, 4_" 1.E+03") ++ call checkfmt("(rn,en15.0)", 1000.00006, 4_" 1.E+03") ++ call checkfmt("(rn,en15.0)", 999.999939, 4_" 1.E+03") ++ call checkfmt("(rn,en15.0)", 9.5, 4_" 10.E+00") ++ call checkfmt("(rn,en15.0)", 9.50000095, 4_" 10.E+00") ++ call checkfmt("(rn,en15.0)", 9.49999905, 4_" 9.E+00") ++ call checkfmt("(rn,en15.0)", 99.5, 4_" 100.E+00") ++ call checkfmt("(rn,en15.0)", 99.5000076, 4_" 100.E+00") ++ call checkfmt("(rn,en15.0)", 99.4999924, 4_" 99.E+00") ++ call checkfmt("(rn,en15.0)", 999.5, 4_" 1.E+03") ++ call checkfmt("(rn,en15.0)", 999.500061, 4_" 1.E+03") ++ call checkfmt("(rn,en15.0)", 999.499939, 4_" 999.E+00") ++ call checkfmt("(rn,en15.0)", 9500.0, 4_" 10.E+03") ++ call checkfmt("(rn,en15.0)", 9500.00098, 4_" 10.E+03") ++ call checkfmt("(rn,en15.0)", 9499.99902, 4_" 9.E+03") ++ call checkfmt("(rn,en15.1)", 9950.0, 4_" 10.0E+03") ++ call checkfmt("(rn,en15.2)", 9995.0, 4_" 10.00E+03") ++ call checkfmt("(rn,en15.3)", 9999.5, 4_" 10.000E+03") ++ call checkfmt("(rn,en15.1)", 9.5, 4_" 9.5E+00") ++ call checkfmt("(rn,en15.1)", 9.50000095, 4_" 9.5E+00") ++ call checkfmt("(rn,en15.1)", 9.49999905, 4_" 9.5E+00") ++ call checkfmt("(rn,en15.1)", 0.099951, 4_" 100.0E-03") ++ call checkfmt("(rn,en15.1)", 0.009951, 4_" 10.0E-03") ++ call checkfmt("(rn,en15.1)", 0.000999951,4_" 1.0E-03") ++ ++ call checkfmt("(rn,en15.0)", -1.0, 4_" -1.E+00") ++ call checkfmt("(rn,en15.0)", -1.00000012, 4_" -1.E+00") ++ call checkfmt("(rn,en15.0)", -0.99999994, 4_" -1.E+00") ++ call checkfmt("(rn,en15.0)", -10.0, 4_" -10.E+00") ++ call checkfmt("(rn,en15.0)", -10.0000010, 4_" -10.E+00") ++ call checkfmt("(rn,en15.0)", -9.99999905, 4_" -10.E+00") ++ call checkfmt("(rn,en15.0)", -100.0, 4_" -100.E+00") ++ call checkfmt("(rn,en15.0)", -100.000008, 4_" -100.E+00") ++ call checkfmt("(rn,en15.0)", -99.9999924, 4_" -100.E+00") ++ call checkfmt("(rn,en15.0)", -1000.0, 4_" -1.E+03") ++ call checkfmt("(rn,en15.0)", -1000.00006, 4_" -1.E+03") ++ call checkfmt("(rn,en15.0)", -999.999939, 4_" -1.E+03") ++ call checkfmt("(rn,en15.0)", -9.5, 4_" -10.E+00") ++ call checkfmt("(rn,en15.0)", -9.50000095, 4_" -10.E+00") ++ call checkfmt("(rn,en15.0)", -9.49999905, 4_" -9.E+00") ++ call checkfmt("(rn,en15.0)", -99.5, 4_" -100.E+00") ++ call checkfmt("(rn,en15.0)", -99.5000076, 4_" -100.E+00") ++ call checkfmt("(rn,en15.0)", -99.4999924, 4_" -99.E+00") ++ call checkfmt("(rn,en15.0)", -999.5, 4_" -1.E+03") ++ call checkfmt("(rn,en15.0)", -999.500061, 4_" -1.E+03") ++ call checkfmt("(rn,en15.0)", -999.499939, 4_" -999.E+00") ++ call checkfmt("(rn,en15.0)", -9500.0, 4_" -10.E+03") ++ call checkfmt("(rn,en15.0)", -9500.00098, 4_" -10.E+03") ++ call checkfmt("(rn,en15.0)", -9499.99902, 4_" -9.E+03") ++ call checkfmt("(rn,en15.1)", -9950.0, 4_" -10.0E+03") ++ call checkfmt("(rn,en15.2)", -9995.0, 4_" -10.00E+03") ++ call checkfmt("(rn,en15.3)", -9999.5, 4_" -10.000E+03") ++ call checkfmt("(rn,en15.1)", -9.5, 4_" -9.5E+00") ++ call checkfmt("(rn,en15.1)", -9.50000095, 4_" -9.5E+00") ++ call checkfmt("(rn,en15.1)", -9.49999905, 4_" -9.5E+00") ++ call checkfmt("(rn,en15.1)", -0.099951, 4_" -100.0E-03") ++ call checkfmt("(rn,en15.1)", -0.009951, 4_" -10.0E-03") ++ call checkfmt("(rn,en15.1)", -0.000999951,4_" -1.0E-03") ++ ++ call checkfmt("(rn,en15.1)", 987350., 4_" 987.4E+03") ++ call checkfmt("(rn,en15.2)", 98735., 4_" 98.74E+03") ++ call checkfmt("(rn,en15.3)", 9873.5, 4_" 9.874E+03") ++ call checkfmt("(rn,en15.1)", 987650., 4_" 987.6E+03") ++ call checkfmt("(rn,en15.2)", 98765., 4_" 98.76E+03") ++ call checkfmt("(rn,en15.3)", 9876.5, 4_" 9.876E+03") ++ call checkfmt("(rn,en15.1)", 3.125E-02, 4_" 31.2E-03") ++ call checkfmt("(rn,en15.1)", 9.375E-02, 4_" 93.8E-03") ++ call checkfmt("(rn,en15.2)", 1.5625E-02, 4_" 15.62E-03") ++ call checkfmt("(rn,en15.2)", 4.6875E-02, 4_" 46.88E-03") ++ call checkfmt("(rn,en15.3)", 7.8125E-03, 4_" 7.812E-03") ++ call checkfmt("(rn,en15.3)", 2.34375E-02, 4_" 23.438E-03") ++ call checkfmt("(rn,en15.3)", 9.765625E-04,4_" 976.562E-06") ++ call checkfmt("(rn,en15.6)", 2.9296875E-03,4_" 2.929688E-03") ++ ++ call checkfmt("(rn,en15.1)", -987350., 4_" -987.4E+03") ++ call checkfmt("(rn,en15.2)", -98735., 4_" -98.74E+03") ++ call checkfmt("(rn,en15.3)", -9873.5, 4_" -9.874E+03") ++ call checkfmt("(rn,en15.1)", -987650., 4_" -987.6E+03") ++ call checkfmt("(rn,en15.2)", -98765., 4_" -98.76E+03") ++ call checkfmt("(rn,en15.3)", -9876.5, 4_" -9.876E+03") ++ call checkfmt("(rn,en15.1)", -3.125E-02, 4_" -31.2E-03") ++ call checkfmt("(rn,en15.1)", -9.375E-02, 4_" -93.8E-03") ++ call checkfmt("(rn,en15.2)", -1.5625E-02, 4_" -15.62E-03") ++ call checkfmt("(rn,en15.2)", -4.6875E-02, 4_" -46.88E-03") ++ call checkfmt("(rn,en15.3)", -7.8125E-03, 4_" -7.812E-03") ++ call checkfmt("(rn,en15.3)", -2.34375E-02, 4_" -23.438E-03") ++ call checkfmt("(rn,en15.3)", -9.765625E-04,4_" -976.562E-06") ++ call checkfmt("(rn,en15.6)", -2.9296875E-03,4_" -2.929688E-03") ++ ++ print *, n_tst, n_cnt, n_skip ++ if (n_cnt /= 0) stop n_cnt ++ if (all(.not. l_skip)) print *, "All kinds rounded to nearest" ++ ++contains ++ subroutine checkfmt(fmt, x, cmp) ++ implicit none ++ integer :: i ++ character(len=*), intent(in) :: fmt ++ real, intent(in) :: x ++ character(len=*, kind=4), intent(in) :: cmp ++ do i=1,size(real_kinds) ++ if (l_skip(i)) cycle ++ if (i == 1) then ++ write(s, fmt) real(x,kind=j(1)) ++ else if (i == 2) then ++ write(s, fmt) real(x,kind=j(2)) ++ else if (i == 3) then ++ write(s, fmt) real(x,kind=j(3)) ++ else if (i == 4) then ++ write(s, fmt) real(x,kind=j(4)) ++ end if ++ n_tst = n_tst + 1 ++ if (s /= cmp) then ++ if (l_skip(i)) then ++ n_skip = n_skip + 1 ++ else ++ print "(a,1x,a,' expected: ',1x,a)", fmt, s, cmp ++ n_cnt = n_cnt + 1 ++ end if ++ end if ++ end do ++ ++ end subroutine ++end program ++! { dg-output "All kinds rounded to nearest" { xfail { i?86-*-solaris2.9* hppa*-*-hpux* } } } ++! { dg-final { cleanup-saved-temps } } +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gfortran.dg/fmt_en_ru.f90 +@@ -0,0 +1,185 @@ ++! { dg-do run } ++! PR60128 Invalid outputs with EN descriptors ++! Test case provided by Walt Brainerd. ++program pr60128 ++use ISO_FORTRAN_ENV ++ implicit none ++ integer, parameter :: j(size(real_kinds)+4)=[REAL_KINDS, [4, 4, 4, 4]] ++ logical :: l_skip(4) = .false. ++ integer :: i ++ integer :: n_tst = 0, n_cnt = 0, n_skip = 0 ++ character(len=20,kind=4) :: s, s1 ++ ++! Check that the default rounding mode is to nearest and to even on tie. ++ do i=1,size(real_kinds) ++ if (i == 1) then ++ write(s, '(2F4.1,2F4.0)') real(-9.49999905,kind=j(1)), & ++ real(9.49999905,kind=j(1)), & ++ real(9.5,kind=j(1)), real(8.5,kind=j(1)) ++ write(s1, '(3PE10.3,2PE10.3)') real(987350.,kind=j(1)), & ++ real(98765.0,kind=j(1)) ++ else if (i == 2) then ++ write(s, '(2F4.1,2F4.0)') real(-9.49999905,kind=j(2)), & ++ real(9.49999905,kind=j(2)), & ++ real(9.5,kind=j(2)), real(8.5,kind=j(2)) ++ write(s1, '(3PE10.3,2PE10.3)') real(987350.,kind=j(2)), & ++ real(98765.0,kind=j(2)) ++ else if (i == 3) then ++ write(s, '(2F4.1,2F4.0)') real(-9.49999905,kind=j(3)), & ++ real(9.49999905,kind=j(3)), & ++ real(9.5,kind=j(3)), real(8.5,kind=j(3)) ++ write(s1, '(3PE10.3,2PE10.3)') real(987350.,kind=j(3)), & ++ real(98765.0,kind=j(3)) ++ else if (i == 4) then ++ write(s, '(2F4.1,2F4.0)') real(-9.49999905,kind=j(4)), & ++ real(9.49999905,kind=j(4)), & ++ real(9.5,kind=j(4)), real(8.5,kind=j(4)) ++ write(s1, '(3PE10.3,2PE10.3)') real(987350.,kind=j(4)), & ++ real(98765.0,kind=j(4)) ++ end if ++ if (s /= 4_'-9.5 9.5 10. 8.' .or. s1 /= 4_' 987.4E+03 98.76E+03') then ++ l_skip(i) = .true. ++ print "('Unsupported rounding for real(',i0,')')", j(i) ++ end if ++ end do ++ ++ ++! Original test. ++ call checkfmt("(en15.2)", -.44444, 4_" -444.44E-03") ++ ++! Test for the bug in comment 6. ++ call checkfmt("(ru,en15.0)", 1.0, 4_" 1.E+00") ++ call checkfmt("(ru,en15.0)", 1.00000012, 4_" 2.E+00") ++ call checkfmt("(ru,en15.0)", 0.99999994, 4_" 1.E+00") ++ call checkfmt("(ru,en15.0)", 10.0, 4_" 10.E+00") ++ call checkfmt("(ru,en15.0)", 10.0000010, 4_" 11.E+00") ++ call checkfmt("(ru,en15.0)", 9.99999905, 4_" 10.E+00") ++ call checkfmt("(ru,en15.0)", 100.0, 4_" 100.E+00") ++ call checkfmt("(ru,en15.0)", 100.000008, 4_" 101.E+00") ++ call checkfmt("(ru,en15.0)", 99.9999924, 4_" 100.E+00") ++ call checkfmt("(ru,en15.0)", 1000.0, 4_" 1.E+03") ++ call checkfmt("(ru,en15.0)", 1000.00006, 4_" 2.E+03") ++ call checkfmt("(ru,en15.0)", 999.999939, 4_" 1.E+03") ++ call checkfmt("(ru,en15.0)", 9.5, 4_" 10.E+00") ++ call checkfmt("(ru,en15.0)", 9.50000095, 4_" 10.E+00") ++ call checkfmt("(ru,en15.0)", 9.49999905, 4_" 10.E+00") ++ call checkfmt("(ru,en15.0)", 99.5, 4_" 100.E+00") ++ call checkfmt("(ru,en15.0)", 99.5000076, 4_" 100.E+00") ++ call checkfmt("(ru,en15.0)", 99.4999924, 4_" 100.E+00") ++ call checkfmt("(ru,en15.0)", 999.5, 4_" 1.E+03") ++ call checkfmt("(ru,en15.0)", 999.500061, 4_" 1.E+03") ++ call checkfmt("(ru,en15.0)", 999.499939, 4_" 1.E+03") ++ call checkfmt("(ru,en15.0)", 9500.0, 4_" 10.E+03") ++ call checkfmt("(ru,en15.0)", 9500.00098, 4_" 10.E+03") ++ call checkfmt("(ru,en15.0)", 9499.99902, 4_" 10.E+03") ++ call checkfmt("(ru,en15.1)", 9950.0, 4_" 10.0E+03") ++ call checkfmt("(ru,en15.2)", 9995.0, 4_" 10.00E+03") ++ call checkfmt("(ru,en15.3)", 9999.5, 4_" 10.000E+03") ++ call checkfmt("(ru,en15.1)", 9.5, 4_" 9.5E+00") ++ call checkfmt("(ru,en15.1)", 9.50000095, 4_" 9.6E+00") ++ call checkfmt("(ru,en15.1)", 9.49999905, 4_" 9.5E+00") ++ call checkfmt("(ru,en15.1)", 0.099951, 4_" 100.0E-03") ++ call checkfmt("(ru,en15.1)", 0.009951, 4_" 10.0E-03") ++ call checkfmt("(ru,en15.1)", 0.000999951,4_" 1.0E-03") ++ ++ call checkfmt("(ru,en15.0)", -1.0, 4_" -1.E+00") ++ call checkfmt("(ru,en15.0)", -1.00000012, 4_" -1.E+00") ++ call checkfmt("(ru,en15.0)", -0.99999994, 4_" -999.E-03") ++ call checkfmt("(ru,en15.0)", -10.0, 4_" -10.E+00") ++ call checkfmt("(ru,en15.0)", -10.0000010, 4_" -10.E+00") ++ call checkfmt("(ru,en15.0)", -9.99999905, 4_" -9.E+00") ++ call checkfmt("(ru,en15.0)", -100.0, 4_" -100.E+00") ++ call checkfmt("(ru,en15.0)", -100.000008, 4_" -100.E+00") ++ call checkfmt("(ru,en15.0)", -99.9999924, 4_" -99.E+00") ++ call checkfmt("(ru,en15.0)", -1000.0, 4_" -1.E+03") ++ call checkfmt("(ru,en15.0)", -1000.00006, 4_" -1.E+03") ++ call checkfmt("(ru,en15.0)", -999.999939, 4_" -999.E+00") ++ call checkfmt("(ru,en15.0)", -9.5, 4_" -9.E+00") ++ call checkfmt("(ru,en15.0)", -9.50000095, 4_" -9.E+00") ++ call checkfmt("(ru,en15.0)", -9.49999905, 4_" -9.E+00") ++ call checkfmt("(ru,en15.0)", -99.5, 4_" -99.E+00") ++ call checkfmt("(ru,en15.0)", -99.5000076, 4_" -99.E+00") ++ call checkfmt("(ru,en15.0)", -99.4999924, 4_" -99.E+00") ++ call checkfmt("(ru,en15.0)", -999.5, 4_" -999.E+00") ++ call checkfmt("(ru,en15.0)", -999.500061, 4_" -999.E+00") ++ call checkfmt("(ru,en15.0)", -999.499939, 4_" -999.E+00") ++ call checkfmt("(ru,en15.0)", -9500.0, 4_" -9.E+03") ++ call checkfmt("(ru,en15.0)", -9500.00098, 4_" -9.E+03") ++ call checkfmt("(ru,en15.0)", -9499.99902, 4_" -9.E+03") ++ call checkfmt("(ru,en15.1)", -9950.0, 4_" -9.9E+03") ++ call checkfmt("(ru,en15.2)", -9995.0, 4_" -9.99E+03") ++ call checkfmt("(ru,en15.3)", -9999.5, 4_" -9.999E+03") ++ call checkfmt("(ru,en15.1)", -9.5, 4_" -9.5E+00") ++ call checkfmt("(ru,en15.1)", -9.50000095, 4_" -9.5E+00") ++ call checkfmt("(ru,en15.1)", -9.49999905, 4_" -9.4E+00") ++ call checkfmt("(ru,en15.1)", -0.099951, 4_" -99.9E-03") ++ call checkfmt("(ru,en15.1)", -0.009951, 4_" -9.9E-03") ++ call checkfmt("(ru,en15.1)", -0.000999951,4_" -999.9E-06") ++ ++ call checkfmt("(ru,en15.1)", 987350., 4_" 987.4E+03") ++ call checkfmt("(ru,en15.2)", 98735., 4_" 98.74E+03") ++ call checkfmt("(ru,en15.3)", 9873.5, 4_" 9.874E+03") ++ call checkfmt("(ru,en15.1)", 987650., 4_" 987.7E+03") ++ call checkfmt("(ru,en15.2)", 98765., 4_" 98.77E+03") ++ call checkfmt("(ru,en15.3)", 9876.5, 4_" 9.877E+03") ++ call checkfmt("(ru,en15.1)", 3.125E-02, 4_" 31.3E-03") ++ call checkfmt("(ru,en15.1)", 9.375E-02, 4_" 93.8E-03") ++ call checkfmt("(ru,en15.2)", 1.5625E-02, 4_" 15.63E-03") ++ call checkfmt("(ru,en15.2)", 4.6875E-02, 4_" 46.88E-03") ++ call checkfmt("(ru,en15.3)", 7.8125E-03, 4_" 7.813E-03") ++ call checkfmt("(ru,en15.3)", 2.34375E-02, 4_" 23.438E-03") ++ call checkfmt("(ru,en15.3)", 9.765625E-04,4_" 976.563E-06") ++ call checkfmt("(ru,en15.6)", 2.9296875E-03,4_" 2.929688E-03") ++ ++ call checkfmt("(ru,en15.1)", -987350., 4_" -987.3E+03") ++ call checkfmt("(ru,en15.2)", -98735., 4_" -98.73E+03") ++ call checkfmt("(ru,en15.3)", -9873.5, 4_" -9.873E+03") ++ call checkfmt("(ru,en15.1)", -987650., 4_" -987.6E+03") ++ call checkfmt("(ru,en15.2)", -98765., 4_" -98.76E+03") ++ call checkfmt("(ru,en15.3)", -9876.5, 4_" -9.876E+03") ++ call checkfmt("(ru,en15.1)", -3.125E-02, 4_" -31.2E-03") ++ call checkfmt("(ru,en15.1)", -9.375E-02, 4_" -93.7E-03") ++ call checkfmt("(ru,en15.2)", -1.5625E-02, 4_" -15.62E-03") ++ call checkfmt("(ru,en15.2)", -4.6875E-02, 4_" -46.87E-03") ++ call checkfmt("(ru,en15.3)", -7.8125E-03, 4_" -7.812E-03") ++ call checkfmt("(ru,en15.3)", -2.34375E-02, 4_" -23.437E-03") ++ call checkfmt("(ru,en15.3)", -9.765625E-04,4_" -976.562E-06") ++ call checkfmt("(ru,en15.6)", -2.9296875E-03,4_" -2.929687E-03") ++ ++ print *, n_tst, n_cnt, n_skip ++ if (n_cnt /= 0) stop n_cnt ++ if (all(.not. l_skip)) print *, "All kinds rounded up" ++ ++contains ++ subroutine checkfmt(fmt, x, cmp) ++ implicit none ++ integer :: i ++ character(len=*), intent(in) :: fmt ++ real, intent(in) :: x ++ character(len=*, kind=4), intent(in) :: cmp ++ do i=1,size(real_kinds) ++ if (l_skip(i)) cycle ++ if (i == 1) then ++ write(s, fmt) real(x,kind=j(1)) ++ else if (i == 2) then ++ write(s, fmt) real(x,kind=j(2)) ++ else if (i == 3) then ++ write(s, fmt) real(x,kind=j(3)) ++ else if (i == 4) then ++ write(s, fmt) real(x,kind=j(4)) ++ end if ++ n_tst = n_tst + 1 ++ if (s /= cmp) then ++ if (l_skip(i)) then ++ n_skip = n_skip + 1 ++ else ++ print "(a,1x,a,' expected: ',1x,a)", fmt, s, cmp ++ n_cnt = n_cnt + 1 ++ end if ++ end if ++ end do ++ ++ end subroutine ++end program ++! { dg-output "All kinds rounded up" { xfail { i?86-*-solaris2.9* hppa*-*-hpux* } } } ++! { dg-final { cleanup-saved-temps } } +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gfortran.dg/fmt_en_rz.f90 +@@ -0,0 +1,185 @@ ++! { dg-do run } ++! PR60128 Invalid outputs with EN descriptors ++! Test case provided by Walt Brainerd. ++program pr60128 ++use ISO_FORTRAN_ENV ++ implicit none ++ integer, parameter :: j(size(real_kinds)+4)=[REAL_KINDS, [4, 4, 4, 4]] ++ logical :: l_skip(4) = .false. ++ integer :: i ++ integer :: n_tst = 0, n_cnt = 0, n_skip = 0 ++ character(len=20,kind=4) :: s, s1 ++ ++! Check that the default rounding mode is to nearest and to even on tie. ++ do i=1,size(real_kinds) ++ if (i == 1) then ++ write(s, '(2F4.1,2F4.0)') real(-9.49999905,kind=j(1)), & ++ real(9.49999905,kind=j(1)), & ++ real(9.5,kind=j(1)), real(8.5,kind=j(1)) ++ write(s1, '(3PE10.3,2PE10.3)') real(987350.,kind=j(1)), & ++ real(98765.0,kind=j(1)) ++ else if (i == 2) then ++ write(s, '(2F4.1,2F4.0)') real(-9.49999905,kind=j(2)), & ++ real(9.49999905,kind=j(2)), & ++ real(9.5,kind=j(2)), real(8.5,kind=j(2)) ++ write(s1, '(3PE10.3,2PE10.3)') real(987350.,kind=j(2)), & ++ real(98765.0,kind=j(2)) ++ else if (i == 3) then ++ write(s, '(2F4.1,2F4.0)') real(-9.49999905,kind=j(3)), & ++ real(9.49999905,kind=j(3)), & ++ real(9.5,kind=j(3)), real(8.5,kind=j(3)) ++ write(s1, '(3PE10.3,2PE10.3)') real(987350.,kind=j(3)), & ++ real(98765.0,kind=j(3)) ++ else if (i == 4) then ++ write(s, '(2F4.1,2F4.0)') real(-9.49999905,kind=j(4)), & ++ real(9.49999905,kind=j(4)), & ++ real(9.5,kind=j(4)), real(8.5,kind=j(4)) ++ write(s1, '(3PE10.3,2PE10.3)') real(987350.,kind=j(4)), & ++ real(98765.0,kind=j(4)) ++ end if ++ if (s /= 4_'-9.5 9.5 10. 8.' .or. s1 /= 4_' 987.4E+03 98.76E+03') then ++ l_skip(i) = .true. ++ print "('Unsupported rounding for real(',i0,')')", j(i) ++ end if ++ end do ++ ++ ++! Original test. ++ call checkfmt("(en15.2)", -.44444, 4_" -444.44E-03") ++ ++! Test for the bug in comment 6. ++ call checkfmt("(rz,en15.0)", 1.0, 4_" 1.E+00") ++ call checkfmt("(rz,en15.0)", 1.00000012, 4_" 1.E+00") ++ call checkfmt("(rz,en15.0)", 0.99999994, 4_" 999.E-03") ++ call checkfmt("(rz,en15.0)", 10.0, 4_" 10.E+00") ++ call checkfmt("(rz,en15.0)", 10.0000010, 4_" 10.E+00") ++ call checkfmt("(rz,en15.0)", 9.99999905, 4_" 9.E+00") ++ call checkfmt("(rz,en15.0)", 100.0, 4_" 100.E+00") ++ call checkfmt("(rz,en15.0)", 100.000008, 4_" 100.E+00") ++ call checkfmt("(rz,en15.0)", 99.9999924, 4_" 99.E+00") ++ call checkfmt("(rz,en15.0)", 1000.0, 4_" 1.E+03") ++ call checkfmt("(rz,en15.0)", 1000.00006, 4_" 1.E+03") ++ call checkfmt("(rz,en15.0)", 999.999939, 4_" 999.E+00") ++ call checkfmt("(rz,en15.0)", 9.5, 4_" 9.E+00") ++ call checkfmt("(rz,en15.0)", 9.50000095, 4_" 9.E+00") ++ call checkfmt("(rz,en15.0)", 9.49999905, 4_" 9.E+00") ++ call checkfmt("(rz,en15.0)", 99.5, 4_" 99.E+00") ++ call checkfmt("(rz,en15.0)", 99.5000076, 4_" 99.E+00") ++ call checkfmt("(rz,en15.0)", 99.4999924, 4_" 99.E+00") ++ call checkfmt("(rz,en15.0)", 999.5, 4_" 999.E+00") ++ call checkfmt("(rz,en15.0)", 999.500061, 4_" 999.E+00") ++ call checkfmt("(rz,en15.0)", 999.499939, 4_" 999.E+00") ++ call checkfmt("(rz,en15.0)", 9500.0, 4_" 9.E+03") ++ call checkfmt("(rz,en15.0)", 9500.00098, 4_" 9.E+03") ++ call checkfmt("(rz,en15.0)", 9499.99902, 4_" 9.E+03") ++ call checkfmt("(rz,en15.1)", 9950.0, 4_" 9.9E+03") ++ call checkfmt("(rz,en15.2)", 9995.0, 4_" 9.99E+03") ++ call checkfmt("(rz,en15.3)", 9999.5, 4_" 9.999E+03") ++ call checkfmt("(rz,en15.1)", 9.5, 4_" 9.5E+00") ++ call checkfmt("(rz,en15.1)", 9.50000095, 4_" 9.5E+00") ++ call checkfmt("(rz,en15.1)", 9.49999905, 4_" 9.4E+00") ++ call checkfmt("(rz,en15.1)", 0.099951, 4_" 99.9E-03") ++ call checkfmt("(rz,en15.1)", 0.009951, 4_" 9.9E-03") ++ call checkfmt("(rz,en15.1)", 0.000999951,4_" 999.9E-06") ++ ++ call checkfmt("(rz,en15.0)", -1.0, 4_" -1.E+00") ++ call checkfmt("(rz,en15.0)", -1.00000012, 4_" -1.E+00") ++ call checkfmt("(rz,en15.0)", -0.99999994, 4_" -999.E-03") ++ call checkfmt("(rz,en15.0)", -10.0, 4_" -10.E+00") ++ call checkfmt("(rz,en15.0)", -10.0000010, 4_" -10.E+00") ++ call checkfmt("(rz,en15.0)", -9.99999905, 4_" -9.E+00") ++ call checkfmt("(rz,en15.0)", -100.0, 4_" -100.E+00") ++ call checkfmt("(rz,en15.0)", -100.000008, 4_" -100.E+00") ++ call checkfmt("(rz,en15.0)", -99.9999924, 4_" -99.E+00") ++ call checkfmt("(rz,en15.0)", -1000.0, 4_" -1.E+03") ++ call checkfmt("(rz,en15.0)", -1000.00006, 4_" -1.E+03") ++ call checkfmt("(rz,en15.0)", -999.999939, 4_" -999.E+00") ++ call checkfmt("(rz,en15.0)", -9.5, 4_" -9.E+00") ++ call checkfmt("(rz,en15.0)", -9.50000095, 4_" -9.E+00") ++ call checkfmt("(rz,en15.0)", -9.49999905, 4_" -9.E+00") ++ call checkfmt("(rz,en15.0)", -99.5, 4_" -99.E+00") ++ call checkfmt("(rz,en15.0)", -99.5000076, 4_" -99.E+00") ++ call checkfmt("(rz,en15.0)", -99.4999924, 4_" -99.E+00") ++ call checkfmt("(rz,en15.0)", -999.5, 4_" -999.E+00") ++ call checkfmt("(rz,en15.0)", -999.500061, 4_" -999.E+00") ++ call checkfmt("(rz,en15.0)", -999.499939, 4_" -999.E+00") ++ call checkfmt("(rz,en15.0)", -9500.0, 4_" -9.E+03") ++ call checkfmt("(rz,en15.0)", -9500.00098, 4_" -9.E+03") ++ call checkfmt("(rz,en15.0)", -9499.99902, 4_" -9.E+03") ++ call checkfmt("(rz,en15.1)", -9950.0, 4_" -9.9E+03") ++ call checkfmt("(rz,en15.2)", -9995.0, 4_" -9.99E+03") ++ call checkfmt("(rz,en15.3)", -9999.5, 4_" -9.999E+03") ++ call checkfmt("(rz,en15.1)", -9.5, 4_" -9.5E+00") ++ call checkfmt("(rz,en15.1)", -9.50000095, 4_" -9.5E+00") ++ call checkfmt("(rz,en15.1)", -9.49999905, 4_" -9.4E+00") ++ call checkfmt("(rz,en15.1)", -0.099951, 4_" -99.9E-03") ++ call checkfmt("(rz,en15.1)", -0.009951, 4_" -9.9E-03") ++ call checkfmt("(rz,en15.1)", -0.000999951,4_" -999.9E-06") ++ ++ call checkfmt("(rz,en15.1)", 987350., 4_" 987.3E+03") ++ call checkfmt("(rz,en15.2)", 98735., 4_" 98.73E+03") ++ call checkfmt("(rz,en15.3)", 9873.5, 4_" 9.873E+03") ++ call checkfmt("(rz,en15.1)", 987650., 4_" 987.6E+03") ++ call checkfmt("(rz,en15.2)", 98765., 4_" 98.76E+03") ++ call checkfmt("(rz,en15.3)", 9876.5, 4_" 9.876E+03") ++ call checkfmt("(rz,en15.1)", 3.125E-02, 4_" 31.2E-03") ++ call checkfmt("(rz,en15.1)", 9.375E-02, 4_" 93.7E-03") ++ call checkfmt("(rz,en15.2)", 1.5625E-02, 4_" 15.62E-03") ++ call checkfmt("(rz,en15.2)", 4.6875E-02, 4_" 46.87E-03") ++ call checkfmt("(rz,en15.3)", 7.8125E-03, 4_" 7.812E-03") ++ call checkfmt("(rz,en15.3)", 2.34375E-02, 4_" 23.437E-03") ++ call checkfmt("(rz,en15.3)", 9.765625E-04,4_" 976.562E-06") ++ call checkfmt("(rz,en15.6)", 2.9296875E-03,4_" 2.929687E-03") ++ ++ call checkfmt("(rz,en15.1)", -987350., 4_" -987.3E+03") ++ call checkfmt("(rz,en15.2)", -98735., 4_" -98.73E+03") ++ call checkfmt("(rz,en15.3)", -9873.5, 4_" -9.873E+03") ++ call checkfmt("(rz,en15.1)", -987650., 4_" -987.6E+03") ++ call checkfmt("(rz,en15.2)", -98765., 4_" -98.76E+03") ++ call checkfmt("(rz,en15.3)", -9876.5, 4_" -9.876E+03") ++ call checkfmt("(rz,en15.1)", -3.125E-02, 4_" -31.2E-03") ++ call checkfmt("(rz,en15.1)", -9.375E-02, 4_" -93.7E-03") ++ call checkfmt("(rz,en15.2)", -1.5625E-02, 4_" -15.62E-03") ++ call checkfmt("(rz,en15.2)", -4.6875E-02, 4_" -46.87E-03") ++ call checkfmt("(rz,en15.3)", -7.8125E-03, 4_" -7.812E-03") ++ call checkfmt("(rz,en15.3)", -2.34375E-02, 4_" -23.437E-03") ++ call checkfmt("(rz,en15.3)", -9.765625E-04,4_" -976.562E-06") ++ call checkfmt("(rz,en15.6)", -2.9296875E-03,4_" -2.929687E-03") ++ ++ print *, n_tst, n_cnt, n_skip ++ if (n_cnt /= 0) stop n_cnt ++ if (all(.not. l_skip)) print *, "All kinds rounded to zero" ++ ++contains ++ subroutine checkfmt(fmt, x, cmp) ++ implicit none ++ integer :: i ++ character(len=*), intent(in) :: fmt ++ real, intent(in) :: x ++ character(len=*, kind=4), intent(in) :: cmp ++ do i=1,size(real_kinds) ++ if (l_skip(i)) cycle ++ if (i == 1) then ++ write(s, fmt) real(x,kind=j(1)) ++ else if (i == 2) then ++ write(s, fmt) real(x,kind=j(2)) ++ else if (i == 3) then ++ write(s, fmt) real(x,kind=j(3)) ++ else if (i == 4) then ++ write(s, fmt) real(x,kind=j(4)) ++ end if ++ n_tst = n_tst + 1 ++ if (s /= cmp) then ++ if (l_skip(i)) then ++ n_skip = n_skip + 1 ++ else ++ print "(a,1x,a,' expected: ',1x,a)", fmt, s, cmp ++ n_cnt = n_cnt + 1 ++ end if ++ end if ++ end do ++ ++ end subroutine ++end program ++! { dg-output "All kinds rounded to zero" { xfail { i?86-*-solaris2.9* hppa*-*-hpux* } } } ++! { dg-final { cleanup-saved-temps } } +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gfortran.dg/goacc/atomic-1.f90 +@@ -0,0 +1,17 @@ ++! { dg-do compile } ++! ++! PR fortran/93462 ++! ++! Contributed by G. Steinmetz ++! ++program p ++ integer :: n = 1 ++ integer :: a ++!$acc atomic write ++ a = f(n) - f(n) ++contains ++ integer function f(x) ++ integer, intent(in) :: x ++ f = x ++ end ++end +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gfortran.dg/iall_masked.f90 +@@ -0,0 +1,22 @@ ++! { dg-do run } ++! PR fortran/96890 - Wrong answer with intrinsic IALL ++program p ++ implicit none ++ integer :: iarr1(0), iarr2(2,2), iarr3(2,2,2) ++ logical :: mask1(0), mask2(2,2), mask3(2,2,2) ++ ++ if ( iall(iarr1, mask1) /= -1 ) stop 1 ++ if ( iall(iarr1, 1, mask1) /= -1 ) stop 2 ++ ++ iarr2 = reshape ([ 1, 2, 3, 4 ], shape (iarr2)) ++ mask2 = reshape ([ .true., .false., .true., .false. ], shape (mask2)) ++ ++ if (any (iall(iarr2, 2, mask2) /= [1,-1]) ) stop 3 ++ ++ iarr3 = reshape ([ 1, 2, 3, 4, & ++ 5, 6, 7, 8 ], shape (iarr3)) ++ mask3 = reshape ([ .true., .false., .true., .false.,& ++ .true., .false., .true., .false. ], shape (iarr3)) ++ ++ if (any (iall(iarr3, 2, mask3) /= reshape ([1,-1,5,-1],[2,2]))) stop 4 ++end +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gfortran.dg/matmul_20.f90 +@@ -0,0 +1,47 @@ ++! { dg-do run } ++! PR97063 - Wrong result for vector (step size is negative) * matrix ++ ++program p ++ implicit none ++ integer, parameter :: m = 3, k = 2*m, l = k-1, n = 4 ++ integer :: i, j, m1, m2, ms ++ integer :: ai(k), bi(k,n), ci(n), ci_ref(n), c1, c2 ++ real :: ar(k), br(k,n), cr(n), cr_ref(n) ++ ++ ai(:) = [(i,i=0,k-1)] ++ bi(:,:) = reshape ([(((5*i+j),i=0,k-1),j=0,n-1)],[k,n]) ++ ++ ! Parameters of subscript triplet ++ m1 = 1; m2 = l; ms = 2 ++ ++ ! Reference values for cross-checks: integer variant ++ c1 = dot_product (ai(m1:m2: ms), bi(m1:m2: ms,1)) ++ c2 = dot_product (ai(m1:m2: ms), bi(m1:m2: ms,2)) ++ ci_ref = matmul (ai(m1:m2: ms), bi(m1:m2: ms,:)) ++ ci = matmul (ai(m2:m1:-ms), bi(m2:m1:-ms,:)) ++ ++ if (ci_ref(1) /= c1 .or. ci_ref(2) /= c2) stop 1 ++ if (any (ci /= ci_ref)) stop 2 ++ ++ ! Real variant ++ ar = real (ai) ++ br = real (bi) ++ cr_ref = matmul (ar(m1:m2: ms), br(m1:m2: ms,:)) ++ cr = matmul (ar(m2:m1:-ms), br(m2:m1:-ms,:)) ++ ++ if (any (cr_ref /= real (ci_ref))) stop 3 ++ if (any (cr /= cr_ref )) stop 4 ++ ++ ! Mixed variants ++ cr_ref = matmul (ar(m1:m2: ms), bi(m1:m2: ms,:)) ++ cr = matmul (ar(m2:m1:-ms), bi(m2:m1:-ms,:)) ++ ++ if (any (cr_ref /= real (ci_ref))) stop 5 ++ if (any (cr /= cr_ref )) stop 6 ++ ++ cr_ref = matmul (ai(m1:m2: ms), br(m1:m2: ms,:)) ++ cr = matmul (ai(m2:m1:-ms), br(m2:m1:-ms,:)) ++ ++ if (any (cr_ref /= real (ci_ref))) stop 7 ++ if (any (cr /= cr_ref )) stop 8 ++end program +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gfortran.dg/pr39695_1.f90 +@@ -0,0 +1,8 @@ ++! { dg-do compile } ++! ++ ++function f() ++ intrinsic :: sin ++ procedure(sin), pointer :: f ! { dg-error "Procedure pointer 'f'" } ++ f => sin ++end function f +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gfortran.dg/pr39695_2.f90 +@@ -0,0 +1,12 @@ ++! { dg-do compile } ++! ++ ++function g() ++ interface ++ subroutine g() ++ end subroutine g ++ end interface ++ pointer g ++ real g ! { dg-error "Symbol 'g' at .1. cannot have a type" } ++end function ++ +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gfortran.dg/pr39695_3.f90 +@@ -0,0 +1,11 @@ ++! { dg-do compile } ++! ++ ++function g() ++ interface ++ subroutine g() ! { dg-error "RESULT attribute in 'g'" } ++ end subroutine g ++ end interface ++ real g ! { dg-error "Symbol 'g' at .1. cannot have a type" } ++end function ++ +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gfortran.dg/pr39695_4.f90 +@@ -0,0 +1,14 @@ ++! { dg-do compile } ++! ++ ++function g() ++ implicit none ++ interface ++ function g() ++ integer g ++ end function g ++ end interface ++ pointer g ++ real g ! { dg-error "Symbol 'g' at .1. already has basic type of INTEGER" } ++end function ++ +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gfortran.dg/pr50392.f +@@ -0,0 +1,12 @@ ++! { dg-do compile } ++! ++ function kf() ++ integer kf ++ assign 1 to kf ! { dg-warning "Deleted feature: ASSIGN statement at" } ++ kf = 2 ++ goto kf ! { dg-warning "Deleted feature: Assigned GOTO statement at" } ++ kf = 1 ++ 1 continue ++ kf = 0 ++ end ++ +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gfortran.dg/pr59107.f90 +@@ -0,0 +1,11 @@ ++! { dg-compile } ++! { dg-options "-Wsurprising" } ++ ++! There should be no surprising warnings ++ ++program p ++ Integer :: nargs ++ intrinsic :: command_argument_count ++ nargs = command_argument_count() ++end ++ +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gfortran.dg/pr71706.f90 +@@ -0,0 +1,10 @@ ++! { dg-do compile } ++! { dg-options "-fcoarray=lib -fcheck=all -fdefault-integer-8" } ++! PR fortran/71706 - ICE on using sync images with -fcheck=bounds ++ ++program p ++ integer, volatile :: me = 1 ++ sync images (me) ++ sync images (int (me, 2)) ++ sync images (int (me, 8)) ++end +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gfortran.dg/pr88379.f90 +@@ -0,0 +1,11 @@ ++! { dg-do compile } ++! { dg-options "-fcoarray=single" } ++! PR fortran/88379 - ICE with allocatable coarray, class and associate ++ ++program p ++ type t ++ end type t ++ class(t), allocatable :: x[:] ++ associate (y => x) ++ end associate ++end +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gfortran.dg/pr89574.f90 +@@ -0,0 +1,29 @@ ++! { dg-do compile } ++! PR fortran/89574 - ICE in conv_function_val, at fortran/trans-expr.c:3792 ++ ++module mod1 ++contains ++ subroutine init ++ end subroutine ++end module ++ ++module mod2 ++contains ++ subroutine init ++ end subroutine ++end module ++ ++module init ++ use mod1, only : test_init1 => init ++ use mod2, only : test_init2 => init ++ implicit none ++contains ++ subroutine sub ++ call test_init1 ++ call test_init2 ++ call init ++ contains ++ subroutine init ++ end subroutine ++ end subroutine ++end module +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gfortran.dg/pr91913.f90 +@@ -0,0 +1,5 @@ ++! PR target/91913 ++! { dg-do compile } ++! { dg-options "-std=legacy -Ofast --param max-cse-insns=0 -fno-schedule-insns -fsanitize=null" } ++ ++include 'string_ctor_1.f90' +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gfortran.dg/pr93423.f90 +@@ -0,0 +1,21 @@ ++! { dg-do compile } ++! PR fortran/93423 - ICE on invalid with argument list for module procedure ++ ++module t ++ type :: b ++ contains ++ procedure :: p => bp ++ end type b ++ interface ++ module function bp(s) ++ class(b), intent(inout) :: s ++ integer, pointer :: bp ++ end function ++ end interface ++end module t ++ ++submodule (t) ts ++contains ++ module procedure bp(s) ! { dg-error "must be in a generic module interface" } ++ end procedure bp ! { dg-error "Expecting END SUBMODULE statement" } ++end submodule ts +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gfortran.dg/pr93484_1.f90 +@@ -0,0 +1,8 @@ ++! { dg-do compile } ++! ++program p ++ implicit none ++ integer :: x(4) = [1,2,3,4] ++ print *, [real(x(k))] ! { dg-error "Symbol 'k' at .1. has no IMPLICIT type" } ++end ++ +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gfortran.dg/pr93484_2.f90 +@@ -0,0 +1,8 @@ ++! { dg-do compile } ++! ++program p ++ implicit none ++ integer, parameter :: x(4) = [1,2,3,4] ++ print *, [real(x(k))] ! { dg-error "Symbol 'k' at .1. has no IMPLICIT type" } ++end ++ +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gfortran.dg/pr94030_1.f90 +@@ -0,0 +1,11 @@ ++! { dg-do compile } ++! ++ ++subroutine f(n) ++ integer :: n ++ integer :: arr(n) ++ integer :: i ++ equivalence (i, arr(1)) ++end ++ ++! { dg-error "Array 'arr' at .1. with non-constant bounds cannot be an EQUIVALENCE object" " " { target *-*-* } 8 } +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gfortran.dg/pr94030_2.f90 +@@ -0,0 +1,33 @@ ++! { dg-do compile } ++! ++! Provided by Steve Kargl. ++ ++subroutine foo(n,m) ++ integer, intent(in) :: n, m ++ integer a(n) ++ real b(n) ++ equivalence(a,b) ++ if (m /= 2) then ++ a = 1 ++ print *, a(1) ++ else ++ b = 42. ++ print *, b(1) ++ end if ++end subroutine ++ ++subroutine bar(m) ++ integer, intent(in) :: m ++ integer x(8) ++ real y(8) ++ equivalence(x,y) ++ if (m /= 2) then ++ x = 1 ++ print *, x(1) ++ else ++ y = 42. ++ print *, y(1) ++ end if ++end subroutine ++ ++! { dg-error "Array '.' at .1. with non-constant bounds cannot be an EQUIVALENCE object" " " { target *-*-* } 9 } +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gfortran.dg/pr94329.f90 +@@ -0,0 +1,12 @@ ++! PR tree-optimization/94329 ++! { dg-do compile } ++! { dg-options "-O1 -fno-tree-loop-optimize -fwrapv -fcompare-debug" } ++ ++subroutine pr94329 (s, t) ++ real :: s, t(:,:) ++ do i = 1,3 ++ do j = 1,3 ++ s = t(i,j) ++ end do ++ end do ++end +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gfortran.dg/pr95829.f90 +@@ -0,0 +1,14 @@ ++! { dg-do compile } ++! ++! Declaration of b used to be a bogus failure. ++ ++subroutine s (a, b, c, d, e, f, g) ++ type(*) :: a ++ type(* ) :: b ++ type( *) :: c ++ type( * ) :: d ++ type(* ) :: e ++ type( *) :: f ++ type( * ) :: g ++end ++ +new file mode 100644 +--- /dev/null ++++ b/src/gcc/testsuite/gfortran.dg/warn_unused_dummy_argument_6.f90 +@@ -0,0 +1,13 @@ ++! { dg-do compile } ++! { dg-options "-Wall" } ++! PR 94270 - this used to give a bogus warning. ++! Test case by Ignacio Fernández Galván. ++subroutine foo() ++external bar ++call meh(bar) ++call foo_internal() ++contains ++ subroutine foo_internal() ++ call meh(bar) ++ end subroutine foo_internal ++end subroutine foo +--- a/src/gcc/testsuite/lib/gcc-dg.exp ++++ b/src/gcc/testsuite/lib/gcc-dg.exp +@@ -429,7 +429,10 @@ proc dg-set-target-env-var { args } { + error "dg-set-target-env-var: need two arguments" + return + } +- lappend set_target_env_var [list [lindex $args 1] [lindex $args 2]] ++ set var [lindex $args 1] ++ set value [lindex $args 2] ++ verbose "dg-set-target-env-var $var $value" 2 ++ lappend set_target_env_var [list $var $value] + } + + proc set-target-env-var { } { +@@ -470,6 +473,7 @@ proc dg-set-compiler-env-var { args } { + } + set var [lindex $args 1] + set value [lindex $args 2] ++ verbose "dg-set-compiler-env-var $var $value" 2 + if [info exists ::env($var)] { + lappend saved_compiler_env_var [list $var 1 $::env($var)] + } else { +--- a/src/gcc/testsuite/lib/target-supports.exp ++++ b/src/gcc/testsuite/lib/target-supports.exp +@@ -4386,6 +4386,27 @@ proc check_effective_target_arm_neonv2_hw { } { + } [add_options_for_arm_neonv2 ""]] + } + ++# Return 1 if the target supports executing the armv8.3-a FJCVTZS ++# instruction. ++proc check_effective_target_aarch64_fjcvtzs_hw { } { ++ if { ![istarget aarch64*-*-*] } { ++ return 0 ++ } ++ return [check_runtime aarch64_fjcvtzs_hw_available { ++ int ++ main (void) ++ { ++ double in = 25.1; ++ int out; ++ asm volatile ("fjcvtzs %w0, %d1" ++ : "=r" (out) ++ : "w" (in) ++ : /* No clobbers. */); ++ return out != 25; ++ } ++ } "-march=armv8.3-a" ] ++} ++ + # Return 1 if the target supports the ARMv8.1 Adv.SIMD extension, 0 + # otherwise. The test is valid for AArch64 and ARM. Record the command + # line options needed. +@@ -4556,7 +4577,7 @@ proc check_effective_target_arm_fp16fml_neon_ok_nocache { } { + float32x2_t + foo (float32x2_t r, float16x4_t a, float16x4_t b) + { +- return vfmlal_high_u32 (r, a, b); ++ return vfmlal_high_f16 (r, a, b); + } + } "$flags -march=armv8.2-a+fp16fml"] } { + set et_arm_fp16fml_neon_flags "$flags -march=armv8.2-a+fp16fml" +@@ -9335,3 +9356,127 @@ proc check_effective_target_cet { } { + } + } "-O2" ] + } ++ ++# Return 1 if the target supports ARMv8.3 Adv.SIMD Complex instructions ++# instructions, 0 otherwise. The test is valid for ARM and for AArch64. ++# Record the command line options needed. ++ ++proc check_effective_target_arm_v8_3a_complex_neon_ok_nocache { } { ++ global et_arm_v8_3a_complex_neon_flags ++ set et_arm_v8_3a_complex_neon_flags "" ++ ++ if { ![istarget arm*-*-*] && ![istarget aarch64*-*-*] } { ++ return 0; ++ } ++ ++ # Iterate through sets of options to find the compiler flags that ++ # need to be added to the -march option. ++ foreach flags {"" "-mfloat-abi=softfp -mfpu=auto" "-mfloat-abi=hard -mfpu=auto"} { ++ if { [check_no_compiler_messages_nocache \ ++ arm_v8_3a_complex_neon_ok object { ++ #if !defined (__ARM_FEATURE_COMPLEX) ++ #error "__ARM_FEATURE_COMPLEX not defined" ++ #endif ++ } "$flags -march=armv8.3-a"] } { ++ set et_arm_v8_3a_complex_neon_flags "$flags -march=armv8.3-a" ++ return 1 ++ } ++ } ++ ++ return 0; ++} ++ ++proc check_effective_target_arm_v8_3a_complex_neon_ok { } { ++ return [check_cached_effective_target arm_v8_3a_complex_neon_ok \ ++ check_effective_target_arm_v8_3a_complex_neon_ok_nocache] ++} ++ ++proc add_options_for_arm_v8_3a_complex_neon { flags } { ++ if { ! [check_effective_target_arm_v8_3a_complex_neon_ok] } { ++ return "$flags" ++ } ++ global et_arm_v8_3a_complex_neon_flags ++ return "$flags $et_arm_v8_3a_complex_neon_flags" ++} ++ ++# Return 1 if the target supports executing AdvSIMD instructions from ARMv8.3 ++# with the complex instruction extension, 0 otherwise. The test is valid for ++# ARM and for AArch64. ++ ++proc check_effective_target_arm_v8_3a_complex_neon_hw { } { ++ if { ![check_effective_target_arm_v8_3a_complex_neon_ok] } { ++ return 0; ++ } ++ return [check_runtime arm_v8_3a_complex_neon_hw_available { ++ #include "arm_neon.h" ++ int ++ main (void) ++ { ++ ++ float32x2_t results = {-4.0,5.0}; ++ float32x2_t a = {1.0,3.0}; ++ float32x2_t b = {2.0,5.0}; ++ ++ #ifdef __ARM_ARCH_ISA_A64 ++ asm ("fcadd %0.2s, %1.2s, %2.2s, #90" ++ : "=w"(results) ++ : "w"(a), "w"(b) ++ : /* No clobbers. */); ++ ++ #else ++ asm ("vcadd.f32 %P0, %P1, %P2, #90" ++ : "=w"(results) ++ : "w"(a), "w"(b) ++ : /* No clobbers. */); ++ #endif ++ ++ return (results[0] == 8 && results[1] == 24) ? 1 : 0; ++ } ++ } [add_options_for_arm_v8_3a_complex_neon ""]] ++} ++ ++# Return 1 if the target plus current options supports a vector ++# complex addition with rotate of half and single float modes, 0 otherwise. ++# ++# This won't change for different subtargets so cache the result. ++ ++foreach N {hf sf} { ++ eval [string map [list N $N] { ++ proc check_effective_target_vect_complex_rot_N { } { ++ return [check_cached_effective_target_indexed vect_complex_rot_N { ++ expr { [istarget aarch64*-*-*] ++ || [istarget arm*-*-*] }}] ++ } ++ }] ++} ++ ++# Return 1 if the target plus current options supports a vector ++# complex addition with rotate of double float modes, 0 otherwise. ++# ++# This won't change for different subtargets so cache the result. ++ ++foreach N {df} { ++ eval [string map [list N $N] { ++ proc check_effective_target_vect_complex_rot_N { } { ++ return [check_cached_effective_target_indexed vect_complex_rot_N { ++ expr { [istarget aarch64*-*-*] }}] ++ } ++ }] ++} ++ ++# Return 1 if we're able to assemble movdiri and movdir64b ++ ++proc check_effective_target_movdir { } { ++ return [check_no_compiler_messages movdir object { ++ void ++ foo (unsigned int *d, unsigned int s) ++ { ++ __builtin_ia32_directstoreu_u32 (d, s); ++ } ++ void ++ bar (void *d, const void *s) ++ { ++ __builtin_ia32_movdir64b (d, s); ++ } ++ } "-mmovdiri -mmovdir64b" ] ++} +--- a/src/gcc/tree-cfg.c ++++ b/src/gcc/tree-cfg.c +@@ -1768,6 +1768,7 @@ group_case_labels_stmt (gswitch *stmt) + int old_size = gimple_switch_num_labels (stmt); + int i, next_index, new_size; + basic_block default_bb = NULL; ++ hash_set *removed_labels = NULL; + + default_bb = label_to_block (CASE_LABEL (gimple_switch_default_label (stmt))); + +@@ -1784,8 +1785,11 @@ group_case_labels_stmt (gswitch *stmt) + base_bb = label_to_block (CASE_LABEL (base_case)); + + /* Discard cases that have the same destination as the default case or +- whose destiniation blocks have already been removed as unreachable. */ +- if (base_bb == NULL || base_bb == default_bb) ++ whose destination blocks have already been removed as unreachable. */ ++ if (base_bb == NULL ++ || base_bb == default_bb ++ || (removed_labels ++ && removed_labels->contains (CASE_LABEL (base_case)))) + { + i++; + continue; +@@ -1808,10 +1812,13 @@ group_case_labels_stmt (gswitch *stmt) + /* Merge the cases if they jump to the same place, + and their ranges are consecutive. */ + if (merge_bb == base_bb ++ && (removed_labels == NULL ++ || !removed_labels->contains (CASE_LABEL (merge_case))) + && wi::to_wide (CASE_LOW (merge_case)) == bhp1) + { +- base_high = CASE_HIGH (merge_case) ? +- CASE_HIGH (merge_case) : CASE_LOW (merge_case); ++ base_high ++ = (CASE_HIGH (merge_case) ++ ? CASE_HIGH (merge_case) : CASE_LOW (merge_case)); + CASE_HIGH (base_case) = base_high; + next_index++; + } +@@ -1832,7 +1839,29 @@ group_case_labels_stmt (gswitch *stmt) + { + edge base_edge = find_edge (gimple_bb (stmt), base_bb); + if (base_edge != NULL) +- remove_edge_and_dominated_blocks (base_edge); ++ { ++ for (gimple_stmt_iterator gsi = gsi_start_bb (base_bb); ++ !gsi_end_p (gsi); gsi_next (&gsi)) ++ if (glabel *stmt = dyn_cast (gsi_stmt (gsi))) ++ { ++ if (FORCED_LABEL (gimple_label_label (stmt)) ++ || DECL_NONLOCAL (gimple_label_label (stmt))) ++ { ++ /* Forced/non-local labels aren't going to be removed, ++ but they will be moved to some neighbouring basic ++ block. If some later case label refers to one of ++ those labels, we should throw that case away rather ++ than keeping it around and refering to some random ++ other basic block without an edge to it. */ ++ if (removed_labels == NULL) ++ removed_labels = new hash_set; ++ removed_labels->add (gimple_label_label (stmt)); ++ } ++ } ++ else ++ break; ++ remove_edge_and_dominated_blocks (base_edge); ++ } + i = next_index; + continue; + } +@@ -1849,6 +1878,7 @@ group_case_labels_stmt (gswitch *stmt) + if (new_size < old_size) + gimple_switch_set_num_labels (stmt, new_size); + ++ delete removed_labels; + return new_size < old_size; + } + +--- a/src/gcc/tree-data-ref.c ++++ b/src/gcc/tree-data-ref.c +@@ -4342,17 +4342,19 @@ build_classic_dist_vector_1 (struct data_dependence_relation *ddr, + return true; + } + +-/* Return true when the DDR contains only constant access functions. */ ++/* Return true when the DDR contains only invariant access functions wrto. loop ++ number LNUM. */ + + static bool +-constant_access_functions (const struct data_dependence_relation *ddr) ++invariant_access_functions (const struct data_dependence_relation *ddr, ++ int lnum) + { + unsigned i; + subscript *sub; + + FOR_EACH_VEC_ELT (DDR_SUBSCRIPTS (ddr), i, sub) +- if (!evolution_function_is_constant_p (SUB_ACCESS_FN (sub, 0)) +- || !evolution_function_is_constant_p (SUB_ACCESS_FN (sub, 1))) ++ if (!evolution_function_is_invariant_p (SUB_ACCESS_FN (sub, 0), lnum) ++ || !evolution_function_is_invariant_p (SUB_ACCESS_FN (sub, 1), lnum)) + return false; + + return true; +@@ -4551,7 +4553,7 @@ build_classic_dist_vector (struct data_dependence_relation *ddr, + dist_v = lambda_vector_new (DDR_NB_LOOPS (ddr)); + save_dist_v (ddr, dist_v); + +- if (constant_access_functions (ddr)) ++ if (invariant_access_functions (ddr, loop_nest->num)) + add_distance_for_zero_overlaps (ddr); + + if (DDR_NB_LOOPS (ddr) > 1) +--- a/src/gcc/tree-if-conv.c ++++ b/src/gcc/tree-if-conv.c +@@ -2755,9 +2755,12 @@ ifcvt_local_dce (basic_block bb) + for (gsi = gsi_start_bb (bb); !gsi_end_p (gsi); gsi_next (&gsi)) + { + stmt = gsi_stmt (gsi); +- if (gimple_store_p (stmt) +- || gimple_assign_load_p (stmt) +- || is_gimple_debug (stmt)) ++ if (is_gimple_debug (stmt)) ++ { ++ gimple_set_plf (stmt, GF_PLF_2, true); ++ continue; ++ } ++ if (gimple_store_p (stmt) || gimple_assign_load_p (stmt)) + { + gimple_set_plf (stmt, GF_PLF_2, true); + worklist.safe_push (stmt); +@@ -2778,7 +2781,7 @@ ifcvt_local_dce (basic_block bb) + FOR_EACH_IMM_USE_FAST (use_p, imm_iter, lhs) + { + stmt1 = USE_STMT (use_p); +- if (gimple_bb (stmt1) != bb) ++ if (!is_gimple_debug (stmt1) && gimple_bb (stmt1) != bb) + { + gimple_set_plf (stmt, GF_PLF_2, true); + worklist.safe_push (stmt); +@@ -2801,21 +2804,22 @@ ifcvt_local_dce (basic_block bb) + if (TREE_CODE (use) != SSA_NAME) + continue; + stmt1 = SSA_NAME_DEF_STMT (use); +- if (gimple_bb (stmt1) != bb +- || gimple_plf (stmt1, GF_PLF_2)) ++ if (gimple_bb (stmt1) != bb || gimple_plf (stmt1, GF_PLF_2)) + continue; + gimple_set_plf (stmt1, GF_PLF_2, true); + worklist.safe_push (stmt1); + } + } + /* Delete dead statements. */ +- gsi = gsi_start_bb (bb); ++ gsi = gsi_last_bb (bb); + while (!gsi_end_p (gsi)) + { ++ gimple_stmt_iterator gsiprev = gsi; ++ gsi_prev (&gsiprev); + stmt = gsi_stmt (gsi); + if (gimple_plf (stmt, GF_PLF_2)) + { +- gsi_next (&gsi); ++ gsi = gsiprev; + continue; + } + if (dump_file && (dump_flags & TDF_DETAILS)) +@@ -2825,6 +2829,7 @@ ifcvt_local_dce (basic_block bb) + } + gsi_remove (&gsi, true); + release_defs (stmt); ++ gsi = gsiprev; + } + } + +--- a/src/gcc/tree-inline.c ++++ b/src/gcc/tree-inline.c +@@ -3177,10 +3177,10 @@ insert_init_stmt (copy_body_data *id, basic_block bb, gimple *init_stmt) + gimple_assign_set_rhs1 (init_stmt, rhs); + } + gsi_insert_after (&si, init_stmt, GSI_NEW_STMT); +- gimple_regimplify_operands (init_stmt, &si); +- + if (!is_gimple_debug (init_stmt)) + { ++ gimple_regimplify_operands (init_stmt, &si); ++ + tree def = gimple_assign_lhs (init_stmt); + insert_init_debug_bind (id, bb, def, def, init_stmt); + } +@@ -5709,6 +5709,7 @@ copy_decl_to_var (tree decl, copy_body_data *id) + TREE_READONLY (copy) = TREE_READONLY (decl); + TREE_THIS_VOLATILE (copy) = TREE_THIS_VOLATILE (decl); + DECL_GIMPLE_REG_P (copy) = DECL_GIMPLE_REG_P (decl); ++ DECL_BY_REFERENCE (copy) = DECL_BY_REFERENCE (decl); + + return copy_decl_for_dup_finish (id, decl, copy); + } +--- a/src/gcc/tree-loop-distribution.c ++++ b/src/gcc/tree-loop-distribution.c +@@ -1001,7 +1001,7 @@ generate_memset_builtin (struct loop *loop, partition *partition) + nb_bytes = rewrite_to_non_trapping_overflow (builtin->size); + nb_bytes = force_gimple_operand_gsi (&gsi, nb_bytes, true, NULL_TREE, + false, GSI_CONTINUE_LINKING); +- mem = builtin->dst_base; ++ mem = rewrite_to_non_trapping_overflow (builtin->dst_base); + mem = force_gimple_operand_gsi (&gsi, mem, true, NULL_TREE, + false, GSI_CONTINUE_LINKING); + +@@ -1053,8 +1053,8 @@ generate_memcpy_builtin (struct loop *loop, partition *partition) + nb_bytes = rewrite_to_non_trapping_overflow (builtin->size); + nb_bytes = force_gimple_operand_gsi (&gsi, nb_bytes, true, NULL_TREE, + false, GSI_CONTINUE_LINKING); +- dest = builtin->dst_base; +- src = builtin->src_base; ++ dest = rewrite_to_non_trapping_overflow (builtin->dst_base); ++ src = rewrite_to_non_trapping_overflow (builtin->src_base); + if (partition->kind == PKIND_MEMCPY + || ! ptr_derefs_may_alias_p (dest, src)) + kind = BUILT_IN_MEMCPY; +@@ -1919,7 +1919,8 @@ pg_add_dependence_edges (struct graph *rdg, int dir, + this_dir = -this_dir; + + /* Known dependences can still be unordered througout the +- iteration space, see gcc.dg/tree-ssa/ldist-16.c. */ ++ iteration space, see gcc.dg/tree-ssa/ldist-16.c and ++ gcc.dg/tree-ssa/pr94969.c. */ + if (DDR_NUM_DIST_VECTS (ddr) != 1) + this_dir = 2; + /* If the overlap is exact preserve stmt order. */ +--- a/src/gcc/tree-nested.c ++++ b/src/gcc/tree-nested.c +@@ -1125,7 +1125,7 @@ convert_nonlocal_omp_clauses (tree *pclauses, struct walk_stmt_info *wi) + { + struct nesting_info *const info = (struct nesting_info *) wi->info; + bool need_chain = false, need_stmts = false; +- tree clause, decl; ++ tree clause, decl, *pdecl; + int dummy; + bitmap new_suppress; + +@@ -1134,11 +1134,21 @@ convert_nonlocal_omp_clauses (tree *pclauses, struct walk_stmt_info *wi) + + for (clause = *pclauses; clause ; clause = OMP_CLAUSE_CHAIN (clause)) + { ++ pdecl = NULL; + switch (OMP_CLAUSE_CODE (clause)) + { + case OMP_CLAUSE_REDUCTION: + if (OMP_CLAUSE_REDUCTION_PLACEHOLDER (clause)) + need_stmts = true; ++ if (TREE_CODE (OMP_CLAUSE_DECL (clause)) == MEM_REF) ++ { ++ pdecl = &TREE_OPERAND (OMP_CLAUSE_DECL (clause), 0); ++ if (TREE_CODE (*pdecl) == POINTER_PLUS_EXPR) ++ pdecl = &TREE_OPERAND (*pdecl, 0); ++ if (TREE_CODE (*pdecl) == INDIRECT_REF ++ || TREE_CODE (*pdecl) == ADDR_EXPR) ++ pdecl = &TREE_OPERAND (*pdecl, 0); ++ } + goto do_decl_clause; + + case OMP_CLAUSE_LASTPRIVATE: +@@ -1164,7 +1174,9 @@ convert_nonlocal_omp_clauses (tree *pclauses, struct walk_stmt_info *wi) + case OMP_CLAUSE_USE_DEVICE_PTR: + case OMP_CLAUSE_IS_DEVICE_PTR: + do_decl_clause: +- decl = OMP_CLAUSE_DECL (clause); ++ if (pdecl == NULL) ++ pdecl = &OMP_CLAUSE_DECL (clause); ++ decl = *pdecl; + if (VAR_P (decl) + && (TREE_STATIC (decl) || DECL_EXTERNAL (decl))) + break; +@@ -1173,7 +1185,7 @@ convert_nonlocal_omp_clauses (tree *pclauses, struct walk_stmt_info *wi) + if (OMP_CLAUSE_CODE (clause) == OMP_CLAUSE_SHARED) + OMP_CLAUSE_SHARED_READONLY (clause) = 0; + bitmap_set_bit (new_suppress, DECL_UID (decl)); +- OMP_CLAUSE_DECL (clause) = get_nonlocal_debug_decl (info, decl); ++ *pdecl = get_nonlocal_debug_decl (info, decl); + if (OMP_CLAUSE_CODE (clause) != OMP_CLAUSE_PRIVATE) + need_chain = true; + } +@@ -1334,12 +1346,22 @@ convert_nonlocal_omp_clauses (tree *pclauses, struct walk_stmt_info *wi) + if (OMP_CLAUSE_REDUCTION_DECL_PLACEHOLDER (clause)) + DECL_CONTEXT (OMP_CLAUSE_REDUCTION_DECL_PLACEHOLDER (clause)) + = info->context; ++ tree save_local_var_chain = info->new_local_var_chain; ++ info->new_local_var_chain = NULL; ++ gimple_seq *seq = &OMP_CLAUSE_REDUCTION_GIMPLE_INIT (clause); + walk_body (convert_nonlocal_reference_stmt, +- convert_nonlocal_reference_op, info, +- &OMP_CLAUSE_REDUCTION_GIMPLE_INIT (clause)); ++ convert_nonlocal_reference_op, info, seq); ++ if (info->new_local_var_chain) ++ declare_vars (info->new_local_var_chain, ++ gimple_seq_first_stmt (*seq), false); ++ info->new_local_var_chain = NULL; ++ seq = &OMP_CLAUSE_REDUCTION_GIMPLE_MERGE (clause); + walk_body (convert_nonlocal_reference_stmt, +- convert_nonlocal_reference_op, info, +- &OMP_CLAUSE_REDUCTION_GIMPLE_MERGE (clause)); ++ convert_nonlocal_reference_op, info, seq); ++ if (info->new_local_var_chain) ++ declare_vars (info->new_local_var_chain, ++ gimple_seq_first_stmt (*seq), false); ++ info->new_local_var_chain = save_local_var_chain; + DECL_CONTEXT (OMP_CLAUSE_REDUCTION_PLACEHOLDER (clause)) + = old_context; + if (OMP_CLAUSE_REDUCTION_DECL_PLACEHOLDER (clause)) +@@ -1349,15 +1371,31 @@ convert_nonlocal_omp_clauses (tree *pclauses, struct walk_stmt_info *wi) + break; + + case OMP_CLAUSE_LASTPRIVATE: +- walk_body (convert_nonlocal_reference_stmt, +- convert_nonlocal_reference_op, info, +- &OMP_CLAUSE_LASTPRIVATE_GIMPLE_SEQ (clause)); ++ { ++ tree save_local_var_chain = info->new_local_var_chain; ++ info->new_local_var_chain = NULL; ++ gimple_seq *seq = &OMP_CLAUSE_LASTPRIVATE_GIMPLE_SEQ (clause); ++ walk_body (convert_nonlocal_reference_stmt, ++ convert_nonlocal_reference_op, info, seq); ++ if (info->new_local_var_chain) ++ declare_vars (info->new_local_var_chain, ++ gimple_seq_first_stmt (*seq), false); ++ info->new_local_var_chain = save_local_var_chain; ++ } + break; + + case OMP_CLAUSE_LINEAR: +- walk_body (convert_nonlocal_reference_stmt, +- convert_nonlocal_reference_op, info, +- &OMP_CLAUSE_LINEAR_GIMPLE_SEQ (clause)); ++ { ++ tree save_local_var_chain = info->new_local_var_chain; ++ info->new_local_var_chain = NULL; ++ gimple_seq *seq = &OMP_CLAUSE_LINEAR_GIMPLE_SEQ (clause); ++ walk_body (convert_nonlocal_reference_stmt, ++ convert_nonlocal_reference_op, info, seq); ++ if (info->new_local_var_chain) ++ declare_vars (info->new_local_var_chain, ++ gimple_seq_first_stmt (*seq), false); ++ info->new_local_var_chain = save_local_var_chain; ++ } + break; + + default: +@@ -1821,7 +1859,7 @@ convert_local_omp_clauses (tree *pclauses, struct walk_stmt_info *wi) + { + struct nesting_info *const info = (struct nesting_info *) wi->info; + bool need_frame = false, need_stmts = false; +- tree clause, decl; ++ tree clause, decl, *pdecl; + int dummy; + bitmap new_suppress; + +@@ -1830,11 +1868,21 @@ convert_local_omp_clauses (tree *pclauses, struct walk_stmt_info *wi) + + for (clause = *pclauses; clause ; clause = OMP_CLAUSE_CHAIN (clause)) + { ++ pdecl = NULL; + switch (OMP_CLAUSE_CODE (clause)) + { + case OMP_CLAUSE_REDUCTION: + if (OMP_CLAUSE_REDUCTION_PLACEHOLDER (clause)) + need_stmts = true; ++ if (TREE_CODE (OMP_CLAUSE_DECL (clause)) == MEM_REF) ++ { ++ pdecl = &TREE_OPERAND (OMP_CLAUSE_DECL (clause), 0); ++ if (TREE_CODE (*pdecl) == POINTER_PLUS_EXPR) ++ pdecl = &TREE_OPERAND (*pdecl, 0); ++ if (TREE_CODE (*pdecl) == INDIRECT_REF ++ || TREE_CODE (*pdecl) == ADDR_EXPR) ++ pdecl = &TREE_OPERAND (*pdecl, 0); ++ } + goto do_decl_clause; + + case OMP_CLAUSE_LASTPRIVATE: +@@ -1860,7 +1908,9 @@ convert_local_omp_clauses (tree *pclauses, struct walk_stmt_info *wi) + case OMP_CLAUSE_USE_DEVICE_PTR: + case OMP_CLAUSE_IS_DEVICE_PTR: + do_decl_clause: +- decl = OMP_CLAUSE_DECL (clause); ++ if (pdecl == NULL) ++ pdecl = &OMP_CLAUSE_DECL (clause); ++ decl = *pdecl; + if (VAR_P (decl) + && (TREE_STATIC (decl) || DECL_EXTERNAL (decl))) + break; +@@ -1873,8 +1923,7 @@ convert_local_omp_clauses (tree *pclauses, struct walk_stmt_info *wi) + if (OMP_CLAUSE_CODE (clause) == OMP_CLAUSE_SHARED) + OMP_CLAUSE_SHARED_READONLY (clause) = 0; + bitmap_set_bit (new_suppress, DECL_UID (decl)); +- OMP_CLAUSE_DECL (clause) +- = get_local_debug_decl (info, decl, field); ++ *pdecl = get_local_debug_decl (info, decl, field); + need_frame = true; + } + } +--- a/src/gcc/tree-object-size.c ++++ b/src/gcc/tree-object-size.c +@@ -1378,7 +1378,10 @@ pass_object_sizes::execute (function *fun) + } + + /* Propagate into all uses and fold those stmts. */ +- replace_uses_by (lhs, result); ++ if (!SSA_NAME_OCCURS_IN_ABNORMAL_PHI (lhs)) ++ replace_uses_by (lhs, result); ++ else ++ replace_call_with_value (&i, result); + } + } + +--- a/src/gcc/tree-pretty-print.c ++++ b/src/gcc/tree-pretty-print.c +@@ -37,7 +37,6 @@ along with GCC; see the file COPYING3. If not see + + /* Local functions, macros and variables. */ + static const char *op_symbol (const_tree); +-static void pretty_print_string (pretty_printer *, const char*); + static void newline_and_indent (pretty_printer *, int); + static void maybe_init_pretty_print (FILE *); + static void print_struct_decl (pretty_printer *, const_tree, int, dump_flags_t); +@@ -3842,7 +3841,7 @@ print_call_name (pretty_printer *pp, tree node, dump_flags_t flags) + + /* Parses the string STR and replaces new-lines by '\n', tabs by '\t', ... */ + +-static void ++void + pretty_print_string (pretty_printer *pp, const char *str) + { + if (str == NULL) +--- a/src/gcc/tree-pretty-print.h ++++ b/src/gcc/tree-pretty-print.h +@@ -44,6 +44,7 @@ extern void print_declaration (pretty_printer *, tree, int, dump_flags_t); + extern int op_code_prio (enum tree_code); + extern int op_prio (const_tree); + extern const char *op_symbol_code (enum tree_code); ++extern void pretty_print_string (pretty_printer *, const char *); + extern void print_call_name (pretty_printer *, tree, dump_flags_t); + extern void percent_K_format (text_info *, tree); + extern void pp_tree_identifier (pretty_printer *, tree); +--- a/src/gcc/tree-sra.c ++++ b/src/gcc/tree-sra.c +@@ -291,6 +291,9 @@ static object_allocator assign_link_pool ("SRA links"); + /* Base (tree) -> Vector (vec *) map. */ + static hash_map > *base_access_vec; + ++/* Hash to limit creation of artificial accesses */ ++static hash_map *propagation_budget; ++ + /* Candidate hash table helpers. */ + + struct uid_decl_hasher : nofree_ptr_hash +@@ -2321,7 +2324,7 @@ create_access_replacement (struct access *access) + print_generic_expr (dump_file, access->base); + fprintf (dump_file, " offset: %u, size: %u: ", + (unsigned) access->offset, (unsigned) access->size); +- print_generic_expr (dump_file, repl); ++ print_generic_expr (dump_file, repl, TDF_UID); + fprintf (dump_file, "\n"); + } + } +@@ -2665,6 +2668,32 @@ subtree_mark_written_and_enqueue (struct access *access) + subtree_mark_written_and_enqueue (child); + } + ++/* If there is still budget to create a propagation access for DECL, return ++ true and decrement the budget. Otherwise return false. */ ++ ++static bool ++budget_for_propagation_access (tree decl) ++{ ++ unsigned b, *p = propagation_budget->get (decl); ++ if (p) ++ b = *p; ++ else ++ b = PARAM_SRA_MAX_PROPAGATIONS; ++ ++ if (b == 0) ++ return false; ++ b--; ++ ++ if (b == 0 && dump_file && (dump_flags & TDF_DETAILS)) ++ { ++ fprintf (dump_file, "The propagation budget of "); ++ print_generic_expr (dump_file, decl); ++ fprintf (dump_file, " (UID: %u) has been exhausted.\n", DECL_UID (decl)); ++ } ++ propagation_budget->put (decl, b); ++ return true; ++} ++ + /* Propagate subaccesses and grp_write flags of RACC across an assignment link + to LACC. Enqueue sub-accesses as necessary so that the write flag is + propagated transitively. Return true if anything changed. Additionally, if +@@ -2765,7 +2794,8 @@ propagate_subaccesses_across_link (struct access *lacc, struct access *racc) + continue; + } + +- if (rchild->grp_unscalarizable_region) ++ if (rchild->grp_unscalarizable_region ++ || !budget_for_propagation_access (lacc->base)) + { + if (rchild->grp_write && !lacc->grp_write) + { +@@ -2795,6 +2825,7 @@ propagate_subaccesses_across_link (struct access *lacc, struct access *racc) + static void + propagate_all_subaccesses (void) + { ++ propagation_budget = new hash_map; + while (work_queue_head) + { + struct access *racc = pop_access_from_work_queue (); +@@ -2833,6 +2864,7 @@ propagate_all_subaccesses (void) + while (lacc); + } + } ++ delete propagation_budget; + } + + /* Go through all accesses collected throughout the (intraprocedural) analysis +@@ -3150,6 +3182,7 @@ sra_modify_expr (tree *expr, gimple_stmt_iterator *gsi, bool write) + location_t loc; + struct access *access; + tree type, bfr, orig_expr; ++ bool partial_cplx_access = false; + + if (TREE_CODE (*expr) == BIT_FIELD_REF) + { +@@ -3160,7 +3193,10 @@ sra_modify_expr (tree *expr, gimple_stmt_iterator *gsi, bool write) + bfr = NULL_TREE; + + if (TREE_CODE (*expr) == REALPART_EXPR || TREE_CODE (*expr) == IMAGPART_EXPR) +- expr = &TREE_OPERAND (*expr, 0); ++ { ++ expr = &TREE_OPERAND (*expr, 0); ++ partial_cplx_access = true; ++ } + access = get_access_for_expr (*expr); + if (!access) + return false; +@@ -3188,13 +3224,32 @@ sra_modify_expr (tree *expr, gimple_stmt_iterator *gsi, bool write) + be accessed as a different type too, potentially creating a need for + type conversion (see PR42196) and when scalarized unions are involved + in assembler statements (see PR42398). */ +- if (!useless_type_conversion_p (type, access->type)) ++ if (!bfr && !useless_type_conversion_p (type, access->type)) + { + tree ref; + + ref = build_ref_for_model (loc, orig_expr, 0, access, gsi, false); + +- if (write) ++ if (partial_cplx_access) ++ { ++ /* VIEW_CONVERT_EXPRs in partial complex access are always fine in ++ the case of a write because in such case the replacement cannot ++ be a gimple register. In the case of a load, we have to ++ differentiate in between a register an non-register ++ replacement. */ ++ tree t = build1 (VIEW_CONVERT_EXPR, type, repl); ++ gcc_checking_assert (!write || access->grp_partial_lhs); ++ if (!access->grp_partial_lhs) ++ { ++ tree tmp = make_ssa_name (type); ++ gassign *stmt = gimple_build_assign (tmp, t); ++ /* This is always a read. */ ++ gsi_insert_before (gsi, stmt, GSI_SAME_STMT); ++ t = tmp; ++ } ++ *expr = t; ++ } ++ else if (write) + { + gassign *stmt; + +--- a/src/gcc/tree-ssa-dse.c ++++ b/src/gcc/tree-ssa-dse.c +@@ -35,6 +35,7 @@ along with GCC; see the file COPYING3. If not see + #include "tree-cfgcleanup.h" + #include "params.h" + #include "alias.h" ++#include "gimplify.h" + + /* This file implements dead store elimination. + +@@ -373,29 +374,38 @@ decrement_count (gimple *stmt, int decrement) + gcc_assert (TREE_CODE (*countp) == INTEGER_CST); + *countp = wide_int_to_tree (TREE_TYPE (*countp), (TREE_INT_CST_LOW (*countp) + - decrement)); +- + } + + static void + increment_start_addr (gimple *stmt, tree *where, int increment) + { ++ if (tree lhs = gimple_call_lhs (stmt)) ++ if (where == gimple_call_arg_ptr (stmt, 0)) ++ { ++ gassign *newop = gimple_build_assign (lhs, unshare_expr (*where)); ++ gimple_stmt_iterator gsi = gsi_for_stmt (stmt); ++ gsi_insert_after (&gsi, newop, GSI_SAME_STMT); ++ gimple_call_set_lhs (stmt, NULL_TREE); ++ update_stmt (stmt); ++ } ++ + if (TREE_CODE (*where) == SSA_NAME) + { + tree tem = make_ssa_name (TREE_TYPE (*where)); + gassign *newop +- = gimple_build_assign (tem, POINTER_PLUS_EXPR, *where, ++ = gimple_build_assign (tem, POINTER_PLUS_EXPR, *where, + build_int_cst (sizetype, increment)); + gimple_stmt_iterator gsi = gsi_for_stmt (stmt); + gsi_insert_before (&gsi, newop, GSI_SAME_STMT); + *where = tem; +- update_stmt (gsi_stmt (gsi)); ++ update_stmt (stmt); + return; + } + + *where = build_fold_addr_expr (fold_build2 (MEM_REF, char_type_node, +- *where, +- build_int_cst (ptr_type_node, +- increment))); ++ *where, ++ build_int_cst (ptr_type_node, ++ increment))); + } + + /* STMT is builtin call that writes bytes in bitmap ORIG, some bytes are dead +--- a/src/gcc/tree-ssa-forwprop.c ++++ b/src/gcc/tree-ssa-forwprop.c +@@ -2342,7 +2342,8 @@ pass_forwprop::execute (function *fun) + continue; + if (!is_gimple_assign (use_stmt) + || (gimple_assign_rhs_code (use_stmt) != REALPART_EXPR +- && gimple_assign_rhs_code (use_stmt) != IMAGPART_EXPR)) ++ && gimple_assign_rhs_code (use_stmt) != IMAGPART_EXPR) ++ || TREE_OPERAND (gimple_assign_rhs1 (use_stmt), 0) != lhs) + { + rewrite = false; + break; +--- a/src/gcc/tree-ssa-loop-ivopts.c ++++ b/src/gcc/tree-ssa-loop-ivopts.c +@@ -109,6 +109,9 @@ along with GCC; see the file COPYING3. If not see + #include "builtins.h" + #include "tree-vectorizer.h" + ++/* For lang_hooks.types.type_for_mode. */ ++#include "langhooks.h" ++ + /* FIXME: Expressions are expanded to RTL in this pass to determine the + cost of different addressing modes. This should be moved to a TBD + interface between the GIMPLE and RTL worlds. */ +@@ -3476,8 +3479,21 @@ add_iv_candidate_for_use (struct ivopts_data *data, struct iv_use *use) + { + poly_uint64 offset; + tree base; +- tree basetype; + struct iv *iv = use->iv; ++ tree basetype = TREE_TYPE (iv->base); ++ ++ /* Don't add candidate for iv_use with non integer, pointer or non-mode ++ precision types, instead, add candidate for the corresponding scev in ++ unsigned type with the same precision. See PR93674 for more info. */ ++ if ((TREE_CODE (basetype) != INTEGER_TYPE && !POINTER_TYPE_P (basetype)) ++ || !type_has_mode_precision_p (basetype)) ++ { ++ basetype = lang_hooks.types.type_for_mode (TYPE_MODE (basetype), ++ TYPE_UNSIGNED (basetype)); ++ add_candidate (data, fold_convert (basetype, iv->base), ++ fold_convert (basetype, iv->step), false, NULL); ++ return; ++ } + + add_candidate (data, iv->base, iv->step, false, use); + +--- a/src/gcc/tree-ssa-phiopt.c ++++ b/src/gcc/tree-ssa-phiopt.c +@@ -890,7 +890,7 @@ value_replacement (basic_block cond_bb, basic_block middle_bb, + gimple *cond; + edge true_edge, false_edge; + enum tree_code code; +- bool emtpy_or_with_defined_p = true; ++ bool empty_or_with_defined_p = true; + + /* If the type says honor signed zeros we cannot do this + optimization. */ +@@ -907,7 +907,7 @@ value_replacement (basic_block cond_bb, basic_block middle_bb, + gsi_next_nondebug (&gsi); + if (!is_gimple_assign (stmt)) + { +- emtpy_or_with_defined_p = false; ++ empty_or_with_defined_p = false; + continue; + } + /* Now try to adjust arg0 or arg1 according to the computation +@@ -917,7 +917,7 @@ value_replacement (basic_block cond_bb, basic_block middle_bb, + && jump_function_from_stmt (&arg0, stmt)) + || (lhs == arg1 + && jump_function_from_stmt (&arg1, stmt))) +- emtpy_or_with_defined_p = false; ++ empty_or_with_defined_p = false; + } + + cond = last_stmt (cond_bb); +@@ -969,7 +969,7 @@ value_replacement (basic_block cond_bb, basic_block middle_bb, + /* If the middle basic block was empty or is defining the + PHI arguments and this is a single phi where the args are different + for the edges e0 and e1 then we can remove the middle basic block. */ +- if (emtpy_or_with_defined_p ++ if (empty_or_with_defined_p + && single_non_singleton_phi_for_edges (phi_nodes (gimple_bb (phi)), + e0, e1) == phi) + { +@@ -1087,7 +1087,7 @@ value_replacement (basic_block cond_bb, basic_block middle_bb, + && profile_status_for_fn (cfun) != PROFILE_ABSENT + && EDGE_PRED (middle_bb, 0)->probability < profile_probability::even () + /* If assign is cheap, there is no point avoiding it. */ +- && estimate_num_insns (bb_seq (middle_bb), &eni_time_weights) ++ && estimate_num_insns_seq (bb_seq (middle_bb), &eni_time_weights) + >= 3 * estimate_num_insns (cond, &eni_time_weights)) + return 0; + +--- a/src/gcc/tree-ssa-pre.c ++++ b/src/gcc/tree-ssa-pre.c +@@ -2797,7 +2797,8 @@ create_expression_by_pieces (basic_block block, pre_expr expr, + unsigned HOST_WIDE_INT hmisalign + = args.length () == 3 ? tree_to_uhwi (args[2]) : 0; + if ((halign & (halign - 1)) == 0 +- && (hmisalign & ~(halign - 1)) == 0) ++ && (hmisalign & ~(halign - 1)) == 0 ++ && (unsigned int)halign != 0) + set_ptr_info_alignment (get_ptr_info (forcedname), + halign, hmisalign); + } +--- a/src/gcc/tree-ssa-reassoc.c ++++ b/src/gcc/tree-ssa-reassoc.c +@@ -5829,8 +5829,11 @@ reassociate_bb (basic_block bb) + if (stmt && !gimple_visited_p (stmt)) + cfg_cleanup_needed |= maybe_optimize_range_tests (stmt); + +- for (gsi = gsi_last_bb (bb); !gsi_end_p (gsi); gsi_prev (&gsi)) ++ bool do_prev = false; ++ for (gsi = gsi_last_bb (bb); ++ !gsi_end_p (gsi); do_prev ? gsi_prev (&gsi) : (void) 0) + { ++ do_prev = true; + stmt = gsi_stmt (gsi); + + if (is_gimple_assign (stmt) +@@ -5856,15 +5859,12 @@ reassociate_bb (basic_block bb) + release_defs (stmt); + /* We might end up removing the last stmt above which + places the iterator to the end of the sequence. +- Reset it to the last stmt in this case which might +- be the end of the sequence as well if we removed +- the last statement of the sequence. In which case +- we need to bail out. */ ++ Reset it to the last stmt in this case and make sure ++ we don't do gsi_prev in that case. */ + if (gsi_end_p (gsi)) + { + gsi = gsi_last_bb (bb); +- if (gsi_end_p (gsi)) +- break; ++ do_prev = false; + } + } + continue; +--- a/src/gcc/tree-vect-generic.c ++++ b/src/gcc/tree-vect-generic.c +@@ -433,6 +433,7 @@ expand_vector_divmod (gimple_stmt_iterator *gsi, tree type, tree op0, + { + bool use_pow2 = true; + bool has_vector_shift = true; ++ bool use_abs_op1 = false; + int mode = -1, this_mode; + int pre_shift = -1, post_shift; + unsigned int nunits = nunits_for_known_piecewise_op (type); +@@ -573,8 +574,11 @@ expand_vector_divmod (gimple_stmt_iterator *gsi, tree type, tree op0, + + /* n rem d = n rem -d */ + if (code == TRUNC_MOD_EXPR && d < 0) +- d = abs_d; +- else if (abs_d == HOST_WIDE_INT_1U << (prec - 1)) ++ { ++ d = abs_d; ++ use_abs_op1 = true; ++ } ++ if (abs_d == HOST_WIDE_INT_1U << (prec - 1)) + { + /* This case is not handled correctly below. */ + mode = -2; +@@ -854,6 +858,23 @@ expand_vector_divmod (gimple_stmt_iterator *gsi, tree type, tree op0, + if (op == unknown_optab + || optab_handler (op, TYPE_MODE (type)) == CODE_FOR_nothing) + return NULL_TREE; ++ if (use_abs_op1) ++ { ++ tree_vector_builder elts; ++ if (!elts.new_unary_operation (type, op1, false)) ++ return NULL_TREE; ++ unsigned int count = elts.encoded_nelts (); ++ for (unsigned int i = 0; i < count; ++i) ++ { ++ tree elem1 = VECTOR_CST_ELT (op1, i); ++ ++ tree elt = const_unop (ABS_EXPR, TREE_TYPE (elem1), elem1); ++ if (elt == NULL_TREE) ++ return NULL_TREE; ++ elts.quick_push (elt); ++ } ++ op1 = elts.build (); ++ } + tem = gimplify_build2 (gsi, MULT_EXPR, type, cur_op, op1); + op = optab_for_tree_code (MINUS_EXPR, type, optab_default); + if (op == unknown_optab +--- a/src/gcc/tree-vect-patterns.c ++++ b/src/gcc/tree-vect-patterns.c +@@ -2926,8 +2926,8 @@ vect_recog_divmod_pattern (vec *stmts, + d = abs_d; + oprnd1 = build_int_cst (itype, abs_d); + } +- else if (HOST_BITS_PER_WIDE_INT >= prec +- && abs_d == HOST_WIDE_INT_1U << (prec - 1)) ++ if (HOST_BITS_PER_WIDE_INT >= prec ++ && abs_d == HOST_WIDE_INT_1U << (prec - 1)) + /* This case is not handled correctly below. */ + return NULL; + +--- a/src/gcc/tree.c ++++ b/src/gcc/tree.c +@@ -10952,6 +10952,7 @@ build_call_expr_internal_loc_array (location_t loc, internal_fn ifn, + CALL_EXPR_ARG (t, i) = args[i]; + SET_EXPR_LOCATION (t, loc); + CALL_EXPR_IFN (t) = ifn; ++ process_call_operands (t); + return t; + } + +--- a/src/gcc/ubsan.c ++++ b/src/gcc/ubsan.c +@@ -229,6 +229,7 @@ ubsan_get_type_descriptor_type (void) + TYPE_FIELDS (ret) = fields[0]; + TYPE_NAME (ret) = type_decl; + TYPE_STUB_DECL (ret) = type_decl; ++ TYPE_ARTIFICIAL (ret) = 1; + layout_type (ret); + ubsan_type_descriptor_type = ret; + return ret; +@@ -277,6 +278,7 @@ ubsan_get_source_location_type (void) + TYPE_FIELDS (ret) = fields[0]; + TYPE_NAME (ret) = type_decl; + TYPE_STUB_DECL (ret) = type_decl; ++ TYPE_ARTIFICIAL (ret) = 1; + layout_type (ret); + ubsan_source_location_type = ret; + return ret; +@@ -593,6 +595,7 @@ ubsan_create_data (const char *name, int loccnt, const location_t *ploc, ...) + TYPE_FIELDS (ret) = fields[0]; + TYPE_NAME (ret) = type_decl; + TYPE_STUB_DECL (ret) = type_decl; ++ TYPE_ARTIFICIAL (ret) = 1; + layout_type (ret); + + /* Now, fill in the type. */ +--- a/src/gcc/varasm.c ++++ b/src/gcc/varasm.c +@@ -5069,6 +5069,26 @@ struct oc_local_state { + static void + output_constructor_array_range (oc_local_state *local) + { ++ /* Perform the index calculation in modulo arithmetic but ++ sign-extend the result because Ada has negative DECL_FIELD_OFFSETs ++ but we are using an unsigned sizetype. */ ++ unsigned prec = TYPE_PRECISION (sizetype); ++ offset_int idx = wi::sext (wi::to_offset (TREE_OPERAND (local->index, 0)) ++ - wi::to_offset (local->min_index), prec); ++ tree valtype = TREE_TYPE (local->val); ++ HOST_WIDE_INT fieldpos ++ = (idx * wi::to_offset (TYPE_SIZE_UNIT (valtype))).to_short_addr (); ++ ++ /* Advance to offset of this element. */ ++ if (fieldpos > local->total_bytes) ++ { ++ assemble_zeros (fieldpos - local->total_bytes); ++ local->total_bytes = fieldpos; ++ } ++ else ++ /* Must not go backwards. */ ++ gcc_assert (fieldpos == local->total_bytes); ++ + unsigned HOST_WIDE_INT fieldsize + = int_size_in_bytes (TREE_TYPE (local->type)); + +--- a/src/libatomic/ChangeLog ++++ b/src/libatomic/ChangeLog +@@ -1,3 +1,8 @@ ++2020-04-19 UroÅ¡ Bizjak ++ ++ * config/x86/fenv.c (__atomic_feraiseexcept) [__SSE_MATH__]: ++ Remove unneeded assignments to volatile memory. ++ + 2020-03-04 Release Manager + + * GCC 8.4.0 released. +--- a/src/libatomic/config/x86/fenv.c ++++ b/src/libatomic/config/x86/fenv.c +@@ -57,9 +57,7 @@ __atomic_feraiseexcept (int excepts) + { + float f = 0.0f; + #ifdef __SSE_MATH__ +- volatile float r __attribute__ ((unused)); + asm volatile ("%vdivss\t{%0, %d0|%d0, %0}" : "+x" (f)); +- r = f; /* Needed to trigger exception. */ + #else + asm volatile ("fdiv\t{%y0, %0|%0, %y0}" : "+t" (f)); + /* No need for fwait, exception is triggered by emitted fstp. */ +@@ -77,9 +75,7 @@ __atomic_feraiseexcept (int excepts) + { + float f = 1.0f, g = 0.0f; + #ifdef __SSE_MATH__ +- volatile float r __attribute__ ((unused)); + asm volatile ("%vdivss\t{%1, %d0|%d0, %1}" : "+x" (f) : "xm" (g)); +- r = f; /* Needed to trigger exception. */ + #else + asm volatile ("fdivs\t%1" : "+t" (f) : "m" (g)); + /* No need for fwait, exception is triggered by emitted fstp. */ +@@ -105,9 +101,7 @@ __atomic_feraiseexcept (int excepts) + { + float f = 1.0f, g = 3.0f; + #ifdef __SSE_MATH__ +- volatile float r __attribute__ ((unused)); + asm volatile ("%vdivss\t{%1, %d0|%d0, %1}" : "+x" (f) : "xm" (g)); +- r = f; /* Needed to trigger exception. */ + #else + asm volatile ("fdivs\t%1" : "+t" (f) : "m" (g)); + /* No need for fwait, exception is triggered by emitted fstp. */ +--- a/src/libgcc/ChangeLog ++++ b/src/libgcc/ChangeLog +@@ -1,3 +1,123 @@ ++2020-08-07 Jakub Jelinek ++ ++ Backported from master: ++ 2020-08-03 Jakub Jelinek ++ ++ PR target/96402 ++ * config/aarch64/lse.S (__aarch64_cas16_acq_rel): Use x2, x3 instead ++ of x(tmp0), x(tmp1) in STXP arguments. ++ ++2020-06-17 Samuel Thibault ++ ++ Backported from master: ++ 2020-06-17 Samuel Thibault ++ ++ * config.host (md_unwind_header) : Set to ++ 'i386/gnu-unwind.h' ++ * config/i386/gnu-unwind.h: New file. ++ ++2020-05-29 Kyrylo Tkachov ++ ++ * config/aarch64/lse-init.c (init_have_lse_atomics): Use __getauxval ++ instead of getauxval. ++ (AT_HWCAP): Define. ++ (HWCAP_ATOMICS): Define. ++ Guard detection on __gnu_linux__. ++ ++2020-05-29 Dong JianQiang ++ ++ PR gcov-profile/95332 ++ * libgcov-util.c (read_gcda_file): Call gcov_magic. ++ * libgcov.h (gcov_magic): Disable GCC poison. ++ ++2020-05-20 H.J. Lu ++ ++ Backport from master ++ 2020-05-20 H.J. Lu ++ ++ PR target/91695 ++ * config/i386/cpuinfo.c (get_available_features): Fix VPCLMULQDQ ++ check. ++ ++2020-05-19 H.J. Lu ++ ++ Backport from master ++ 2020-05-19 H.J. Lu ++ ++ PR target/95220 ++ * config/i386/cpuinfo.c (get_available_features): Fix ++ FEATURE_GFNI check. ++ ++2020-05-14 Szabolcs Nagy ++ ++ Backport from mainline. ++ 2020-04-21 Szabolcs Nagy ++ ++ PR target/94514 ++ * config/aarch64/aarch64-unwind.h (aarch64_frob_update_context): ++ Update context->flags accroding to the frame state. ++ ++2020-04-16 Andre Vieira ++ ++ Backport from mainline ++ 2020-04-15 Jakub Jelinek ++ ++ PR target/93053 ++ * configure.ac (LIBGCC_CHECK_AS_LSE): Add HAVE_AS_LSE checking. ++ * config/aarch64/lse.S: Include auto-target.h, if HAVE_AS_LSE ++ is not defined, use just .arch armv8-a. ++ (B, M, N, OPN): Define. ++ (COMMENT): New .macro. ++ (CAS, CASP, SWP, LDOP): Use .inst directive if HAVE_AS_LSE is not ++ defined. Otherwise, move the operands right after the glue? and ++ comment out operands where the macros are used. ++ * configure: Regenerated. ++ * config.in: Regenerated. ++ ++2020-04-16 Andre Vieira ++ ++ Backport from mainline ++ 2019-09-25 Richard Henderson ++ ++ PR target/91833 ++ * config/aarch64/lse-init.c: Include auto-target.h. Disable ++ initialization if !HAVE_SYS_AUXV_H. ++ * configure.ac (AC_CHECK_HEADERS): Add sys/auxv.h. ++ * config.in, configure: Rebuild. ++ ++2020-04-16 Andre Vieira ++ ++ Backport from mainline ++ 2019-09-25 Richard Henderson ++ ++ PR target/91834 ++ * config/aarch64/lse.S (LDNM): Ensure STXR output does not ++ overlap the inputs. ++ ++2020-04-16 Andre Vieira ++ ++ Backport from mainline ++ 2019-09-19 Richard Henderson ++ ++ * config/aarch64/lse-init.c: New file. ++ * config/aarch64/lse.S: New file. ++ * config/aarch64/t-lse: New file. ++ * config.host: Add t-lse to all aarch64 tuples. ++ ++2020-04-19 UroÅ¡ Bizjak ++ ++ * config/i386/sfp-exceptions.c (__sfp_handle_exceptions) [__SSE_MATH__]: ++ Remove unneeded assignments to volatile memory. ++ ++2020-03-04 H.J. Lu ++ ++ Backport from mainline ++ 2020-02-10 H.J. Lu ++ ++ PR libgcc/85334 ++ * config/i386/shadow-stack-unwind.h (_Unwind_Frames_Increment): ++ New. ++ + 2020-03-04 Release Manager + + * GCC 8.4.0 released. +--- a/src/libgcc/config.host ++++ b/src/libgcc/config.host +@@ -337,23 +337,27 @@ aarch64*-*-elf | aarch64*-*-rtems*) + extra_parts="$extra_parts crtbegin.o crtend.o crti.o crtn.o" + extra_parts="$extra_parts crtfastmath.o" + tmake_file="${tmake_file} ${cpu_type}/t-aarch64" ++ tmake_file="${tmake_file} ${cpu_type}/t-lse t-slibgcc-libgcc" + tmake_file="${tmake_file} ${cpu_type}/t-softfp t-softfp t-crtfm" + md_unwind_header=aarch64/aarch64-unwind.h + ;; + aarch64*-*-freebsd*) + extra_parts="$extra_parts crtfastmath.o" + tmake_file="${tmake_file} ${cpu_type}/t-aarch64" ++ tmake_file="${tmake_file} ${cpu_type}/t-lse t-slibgcc-libgcc" + tmake_file="${tmake_file} ${cpu_type}/t-softfp t-softfp t-crtfm" + md_unwind_header=aarch64/freebsd-unwind.h + ;; + aarch64*-*-fuchsia*) + tmake_file="${tmake_file} ${cpu_type}/t-aarch64" ++ tmake_file="${tmake_file} ${cpu_type}/t-lse t-slibgcc-libgcc" + tmake_file="${tmake_file} ${cpu_type}/t-softfp t-softfp" + ;; + aarch64*-*-linux*) + extra_parts="$extra_parts crtfastmath.o" + md_unwind_header=aarch64/linux-unwind.h + tmake_file="${tmake_file} ${cpu_type}/t-aarch64" ++ tmake_file="${tmake_file} ${cpu_type}/t-lse t-slibgcc-libgcc" + tmake_file="${tmake_file} ${cpu_type}/t-softfp t-softfp t-crtfm" + ;; + alpha*-*-linux*) +@@ -647,11 +651,17 @@ 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 | 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" + ;; ++i[34567]86-*-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/gnu-unwind.h ++ ;; + x86_64-*-linux*) + 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" +--- a/src/libgcc/config.in ++++ b/src/libgcc/config.in +@@ -10,6 +10,9 @@ + */ + #undef HAVE_AS_CFI_SECTIONS + ++/* Define to 1 if the assembler supports LSE. */ ++#undef HAVE_AS_LSE ++ + /* Define to 1 if the target assembler supports thread-local storage. */ + #undef HAVE_CC_TLS + +@@ -43,6 +46,9 @@ + /* Define to 1 if you have the header file. */ + #undef HAVE_STRING_H + ++/* Define to 1 if you have the header file. */ ++#undef HAVE_SYS_AUXV_H ++ + /* Define to 1 if you have the header file. */ + #undef HAVE_SYS_STAT_H + +@@ -82,6 +88,11 @@ + /* Define to 1 if the target use emutls for thread-local storage. */ + #undef USE_EMUTLS + ++/* Enable large inode numbers on Mac OS X 10.5. */ ++#ifndef _DARWIN_USE_64_BIT_INODE ++# define _DARWIN_USE_64_BIT_INODE 1 ++#endif ++ + /* Number of bits in a file offset, on hosts where this is settable. */ + #undef _FILE_OFFSET_BITS + +--- a/src/libgcc/config/aarch64/aarch64-unwind.h ++++ b/src/libgcc/config/aarch64/aarch64-unwind.h +@@ -27,22 +27,20 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see + + #define DWARF_REGNUM_AARCH64_RA_STATE 34 + +-#define MD_POST_EXTRACT_ROOT_ADDR(addr) __builtin_aarch64_xpaclri (addr) +-#define MD_POST_EXTRACT_FRAME_ADDR(context, fs, addr) \ +- aarch64_post_extract_frame_addr (context, fs, addr) +-#define MD_POST_FROB_EH_HANDLER_ADDR(current, target, addr) \ +- aarch64_post_frob_eh_handler_addr (current, target, addr) ++#define MD_DEMANGLE_RETURN_ADDR(context, fs, addr) \ ++ aarch64_demangle_return_addr (context, fs, addr) + #define MD_FROB_UPDATE_CONTEXT(context, fs) \ + aarch64_frob_update_context (context, fs) + +-/* Do AArch64 private extraction on ADDR based on context info CONTEXT and +- unwind frame info FS. If ADDR is signed, we do address authentication on it +- using CFA of current frame. */ ++/* Do AArch64 private extraction on ADDR_WORD based on context info CONTEXT and ++ unwind frame info FS. If ADDR_WORD is signed, we do address authentication ++ on it using CFA of current frame. */ + + static inline void * +-aarch64_post_extract_frame_addr (struct _Unwind_Context *context, +- _Unwind_FrameState *fs, void *addr) ++aarch64_demangle_return_addr (struct _Unwind_Context *context, ++ _Unwind_FrameState *fs, _Unwind_Word addr_word) + { ++ void *addr = (void *)addr_word; + if (fs->regs.reg[DWARF_REGNUM_AARCH64_RA_STATE].loc.offset & 0x1) + { + _Unwind_Word salt = (_Unwind_Word) context->cfa; +@@ -52,23 +50,6 @@ aarch64_post_extract_frame_addr (struct _Unwind_Context *context, + return addr; + } + +-/* Do AArch64 private frob on exception handler's address HANDLER_ADDR before +- installing it into current context CURRENT. TARGET is currently not used. +- We need to sign exception handler's address if CURRENT itself is signed. */ +- +-static inline void * +-aarch64_post_frob_eh_handler_addr (struct _Unwind_Context *current, +- struct _Unwind_Context *target +- ATTRIBUTE_UNUSED, +- void *handler_addr) +-{ +- if (current->flags & RA_A_SIGNED_BIT) +- return __builtin_aarch64_pacia1716 (handler_addr, +- (_Unwind_Word) current->cfa); +- else +- return handler_addr; +-} +- + /* Do AArch64 private initialization on CONTEXT based on frame info FS. Mark + CONTEXT as return address signed if bit 0 of DWARF_REGNUM_AARCH64_RA_STATE is + set. */ +@@ -80,6 +61,8 @@ aarch64_frob_update_context (struct _Unwind_Context *context, + if (fs->regs.reg[DWARF_REGNUM_AARCH64_RA_STATE].loc.offset & 0x1) + /* The flag is used for re-authenticating EH handler's address. */ + context->flags |= RA_A_SIGNED_BIT; ++ else ++ context->flags &= ~RA_A_SIGNED_BIT; + + return; + } +new file mode 100644 +--- /dev/null ++++ b/src/libgcc/config/aarch64/lse-init.c +@@ -0,0 +1,48 @@ ++/* Out-of-line LSE atomics for AArch64 architecture, Init. ++ Copyright (C) 2019 Free Software Foundation, Inc. ++ Contributed by Linaro 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. ++ ++Under Section 7 of GPL version 3, you are granted additional ++permissions described in the GCC Runtime Library Exception, version ++3.1, as published by the Free Software Foundation. ++ ++You should have received a copy of the GNU General Public License and ++a copy of the GCC Runtime Library Exception along with this program; ++see the files COPYING3 and COPYING.RUNTIME respectively. If not, see ++. */ ++ ++#include "auto-target.h" ++ ++/* Define the symbol gating the LSE implementations. */ ++_Bool __aarch64_have_lse_atomics ++ __attribute__((visibility("hidden"), nocommon)); ++ ++/* Gate availability of __getauxval on glibc. All AArch64-supporting glibc ++ versions support it. */ ++#ifdef __gnu_linux__ ++ ++# define AT_HWCAP 16 ++# define HWCAP_ATOMICS (1 << 8) ++ ++unsigned long int __getauxval (unsigned long int); ++ ++static void __attribute__((constructor)) ++init_have_lse_atomics (void) ++{ ++ unsigned long hwcap = __getauxval (AT_HWCAP); ++ __aarch64_have_lse_atomics = (hwcap & HWCAP_ATOMICS) != 0; ++} ++ ++#endif /* __gnu_linux__ */ +new file mode 100644 +--- /dev/null ++++ b/src/libgcc/config/aarch64/lse.S +@@ -0,0 +1,276 @@ ++/* Out-of-line LSE atomics for AArch64 architecture. ++ Copyright (C) 2019 Free Software Foundation, Inc. ++ Contributed by Linaro 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. ++ ++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 ++. */ ++ ++/* ++ * The problem that we are trying to solve is operating system deployment ++ * of ARMv8.1-Atomics, also known as Large System Exensions (LSE). ++ * ++ * There are a number of potential solutions for this problem which have ++ * been proposed and rejected for various reasons. To recap: ++ * ++ * (1) Multiple builds. The dynamic linker will examine /lib64/atomics/ ++ * if HWCAP_ATOMICS is set, allowing entire libraries to be overwritten. ++ * However, not all Linux distributions are happy with multiple builds, ++ * and anyway it has no effect on main applications. ++ * ++ * (2) IFUNC. We could put these functions into libgcc_s.so, and have ++ * a single copy of each function for all DSOs. However, ARM is concerned ++ * that the branch-to-indirect-branch that is implied by using a PLT, ++ * as required by IFUNC, is too much overhead for smaller cpus. ++ * ++ * (3) Statically predicted direct branches. This is the approach that ++ * is taken here. These functions are linked into every DSO that uses them. ++ * All of the symbols are hidden, so that the functions are called via a ++ * direct branch. The choice of LSE vs non-LSE is done via one byte load ++ * followed by a well-predicted direct branch. The functions are compiled ++ * separately to minimize code size. ++ */ ++ ++#include "auto-target.h" ++ ++/* Tell the assembler to accept LSE instructions. */ ++#ifdef HAVE_AS_LSE ++ .arch armv8-a+lse ++#else ++ .arch armv8-a ++#endif ++ ++/* Declare the symbol gating the LSE implementations. */ ++ .hidden __aarch64_have_lse_atomics ++ ++/* Turn size and memory model defines into mnemonic fragments. */ ++#if SIZE == 1 ++# define S b ++# define UXT uxtb ++# define B 0x00000000 ++#elif SIZE == 2 ++# define S h ++# define UXT uxth ++# define B 0x40000000 ++#elif SIZE == 4 || SIZE == 8 || SIZE == 16 ++# define S ++# define UXT mov ++# if SIZE == 4 ++# define B 0x80000000 ++# elif SIZE == 8 ++# define B 0xc0000000 ++# endif ++#else ++# error ++#endif ++ ++#if MODEL == 1 ++# define SUFF _relax ++# define A ++# define L ++# define M 0x000000 ++# define N 0x000000 ++#elif MODEL == 2 ++# define SUFF _acq ++# define A a ++# define L ++# define M 0x400000 ++# define N 0x800000 ++#elif MODEL == 3 ++# define SUFF _rel ++# define A ++# define L l ++# define M 0x008000 ++# define N 0x400000 ++#elif MODEL == 4 ++# define SUFF _acq_rel ++# define A a ++# define L l ++# define M 0x408000 ++# define N 0xc00000 ++#else ++# error ++#endif ++ ++/* Concatenate symbols. */ ++#define glue2_(A, B) A ## B ++#define glue2(A, B) glue2_(A, B) ++#define glue3_(A, B, C) A ## B ## C ++#define glue3(A, B, C) glue3_(A, B, C) ++#define glue4_(A, B, C, D) A ## B ## C ## D ++#define glue4(A, B, C, D) glue4_(A, B, C, D) ++ ++/* Select the size of a register, given a regno. */ ++#define x(N) glue2(x, N) ++#define w(N) glue2(w, N) ++#if SIZE < 8 ++# define s(N) w(N) ++#else ++# define s(N) x(N) ++#endif ++ ++#define NAME(BASE) glue4(__aarch64_, BASE, SIZE, SUFF) ++#define LDXR glue4(ld, A, xr, S) ++#define STXR glue4(st, L, xr, S) ++ ++/* Temporary registers used. Other than these, only the return value ++ register (x0) and the flags are modified. */ ++#define tmp0 16 ++#define tmp1 17 ++#define tmp2 15 ++ ++/* Start and end a function. */ ++.macro STARTFN name ++ .text ++ .balign 16 ++ .globl \name ++ .hidden \name ++ .type \name, %function ++ .cfi_startproc ++\name: ++.endm ++ ++.macro ENDFN name ++ .cfi_endproc ++ .size \name, . - \name ++.endm ++ ++/* Branch to LABEL if LSE is disabled. */ ++.macro JUMP_IF_NOT_LSE label ++ adrp x(tmp0), __aarch64_have_lse_atomics ++ ldrb w(tmp0), [x(tmp0), :lo12:__aarch64_have_lse_atomics] ++ cbz w(tmp0), \label ++.endm ++ ++#ifdef L_cas ++ ++STARTFN NAME(cas) ++ JUMP_IF_NOT_LSE 8f ++ ++#if SIZE < 16 ++#ifdef HAVE_AS_LSE ++# define CAS glue4(cas, A, L, S) s(0), s(1), [x2] ++#else ++# define CAS .inst 0x08a07c41 + B + M ++#endif ++ ++ CAS /* s(0), s(1), [x2] */ ++ ret ++ ++8: UXT s(tmp0), s(0) ++0: LDXR s(0), [x2] ++ cmp s(0), s(tmp0) ++ bne 1f ++ STXR w(tmp1), s(1), [x2] ++ cbnz w(tmp1), 0b ++1: ret ++ ++#else ++#define LDXP glue3(ld, A, xp) ++#define STXP glue3(st, L, xp) ++#ifdef HAVE_AS_LSE ++# define CASP glue3(casp, A, L) x0, x1, x2, x3, [x4] ++#else ++# define CASP .inst 0x48207c82 + M ++#endif ++ ++ CASP /* x0, x1, x2, x3, [x4] */ ++ ret ++ ++8: mov x(tmp0), x0 ++ mov x(tmp1), x1 ++0: LDXP x0, x1, [x4] ++ cmp x0, x(tmp0) ++ ccmp x1, x(tmp1), #0, eq ++ bne 1f ++ STXP w(tmp2), x2, x3, [x4] ++ cbnz w(tmp2), 0b ++1: ret ++ ++#endif ++ ++ENDFN NAME(cas) ++#endif ++ ++#ifdef L_swp ++#ifdef HAVE_AS_LSE ++# define SWP glue4(swp, A, L, S) s(0), s(0), [x1] ++#else ++# define SWP .inst 0x38208020 + B + N ++#endif ++ ++STARTFN NAME(swp) ++ JUMP_IF_NOT_LSE 8f ++ ++ SWP /* s(0), s(0), [x1] */ ++ ret ++ ++8: mov s(tmp0), s(0) ++0: LDXR s(0), [x1] ++ STXR w(tmp1), s(tmp0), [x1] ++ cbnz w(tmp1), 0b ++ ret ++ ++ENDFN NAME(swp) ++#endif ++ ++#if defined(L_ldadd) || defined(L_ldclr) \ ++ || defined(L_ldeor) || defined(L_ldset) ++ ++#ifdef L_ldadd ++#define LDNM ldadd ++#define OP add ++#define OPN 0x0000 ++#elif defined(L_ldclr) ++#define LDNM ldclr ++#define OP bic ++#define OPN 0x1000 ++#elif defined(L_ldeor) ++#define LDNM ldeor ++#define OP eor ++#define OPN 0x2000 ++#elif defined(L_ldset) ++#define LDNM ldset ++#define OP orr ++#define OPN 0x3000 ++#else ++#error ++#endif ++#ifdef HAVE_AS_LSE ++# define LDOP glue4(LDNM, A, L, S) s(0), s(0), [x1] ++#else ++# define LDOP .inst 0x38200020 + OPN + B + N ++#endif ++ ++STARTFN NAME(LDNM) ++ JUMP_IF_NOT_LSE 8f ++ ++ LDOP /* s(0), s(0), [x1] */ ++ ret ++ ++8: mov s(tmp0), s(0) ++0: LDXR s(0), [x1] ++ OP s(tmp1), s(0), s(tmp0) ++ STXR w(tmp2), s(tmp1), [x1] ++ cbnz w(tmp2), 0b ++ ret ++ ++ENDFN NAME(LDNM) ++#endif +new file mode 100644 +--- /dev/null ++++ b/src/libgcc/config/aarch64/t-lse +@@ -0,0 +1,44 @@ ++# Out-of-line LSE atomics for AArch64 architecture. ++# Copyright (C) 2019 Free Software Foundation, Inc. ++# Contributed by Linaro 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 ++# . ++ ++# Compare-and-swap has 5 sizes and 4 memory models. ++S0 := $(foreach s, 1 2 4 8 16, $(addsuffix _$(s), cas)) ++O0 := $(foreach m, 1 2 3 4, $(addsuffix _$(m)$(objext), $(S0))) ++ ++# Swap, Load-and-operate have 4 sizes and 4 memory models ++S1 := $(foreach s, 1 2 4 8, $(addsuffix _$(s), swp ldadd ldclr ldeor ldset)) ++O1 := $(foreach m, 1 2 3 4, $(addsuffix _$(m)$(objext), $(S1))) ++ ++LSE_OBJS := $(O0) $(O1) ++ ++libgcc-objects += $(LSE_OBJS) lse-init$(objext) ++ ++empty = ++space = $(empty) $(empty) ++PAT_SPLIT = $(subst _,$(space),$(*F)) ++PAT_BASE = $(word 1,$(PAT_SPLIT)) ++PAT_N = $(word 2,$(PAT_SPLIT)) ++PAT_M = $(word 3,$(PAT_SPLIT)) ++ ++lse-init$(objext): $(srcdir)/config/aarch64/lse-init.c ++ $(gcc_compile) -c $< ++ ++$(LSE_OBJS): $(srcdir)/config/aarch64/lse.S ++ $(gcc_compile) -DL_$(PAT_BASE) -DSIZE=$(PAT_N) -DMODEL=$(PAT_M) -c $< +--- a/src/libgcc/config/i386/cpuinfo.c ++++ b/src/libgcc/config/i386/cpuinfo.c +@@ -327,9 +327,13 @@ get_available_features (unsigned int ecx, unsigned int edx, + { + if (ebx & bit_AVX2) + set_feature (FEATURE_AVX2); ++ if (ecx & bit_VPCLMULQDQ) ++ set_feature (FEATURE_VPCLMULQDQ); + } + if (ebx & bit_BMI2) + set_feature (FEATURE_BMI2); ++ if (ecx & bit_GFNI) ++ set_feature (FEATURE_GFNI); + if (avx512_usable) + { + if (ebx & bit_AVX512F) +@@ -352,10 +356,6 @@ get_available_features (unsigned int ecx, unsigned int edx, + set_feature (FEATURE_AVX512VBMI); + if (ecx & bit_AVX512VBMI2) + set_feature (FEATURE_AVX512VBMI2); +- if (ecx & bit_GFNI) +- set_feature (FEATURE_GFNI); +- if (ecx & bit_VPCLMULQDQ) +- set_feature (FEATURE_VPCLMULQDQ); + if (ecx & bit_AVX512VNNI) + set_feature (FEATURE_AVX512VNNI); + if (ecx & bit_AVX512BITALG) +new file mode 100644 +--- /dev/null ++++ b/src/libgcc/config/i386/gnu-unwind.h +@@ -0,0 +1,107 @@ ++/* DWARF2 EH unwinding support for GNU Hurd: x86. ++ Copyright (C) 2020 Free Software Foundation, Inc. ++ Contributed by Samuel Thibault ++ ++This file is part of GCC. ++ ++GCC is free software; you can redistribute it and/or modify ++it under the terms of the GNU General Public License as published by ++the Free Software Foundation; either version 3, or (at your option) ++any later version. ++ ++GCC is distributed in the hope that it will be useful, ++but WITHOUT ANY WARRANTY; without even the implied warranty of ++MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++GNU General Public License for more details. ++ ++Under Section 7 of GPL version 3, you are granted additional ++permissions described in the GCC Runtime Library Exception, version ++3.1, as published by the Free Software Foundation. ++ ++You should have received a copy of the GNU General Public License and ++a copy of the GCC Runtime Library Exception along with this program; ++see the files COPYING3 and COPYING.RUNTIME respectively. If not, see ++. */ ++ ++/* 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 ++ ++#define MD_FALLBACK_FRAME_STATE_FOR x86_gnu_fallback_frame_state ++ ++static _Unwind_Reason_Code ++x86_gnu_fallback_frame_state ++(struct _Unwind_Context *context, _Unwind_FrameState *fs) ++{ ++ struct handler_args { ++ int signo; ++ int sigcode; ++ struct sigcontext *scp; ++ } *handler_args; ++ struct sigcontext *scp; ++ unsigned long usp; ++ ++/* ++ * i386 sigtramp frame we are looking for follows. ++ * (see glibc/sysdeps/mach/hurd/i386/trampoline.c assembly) ++ * ++ * rpc_wait_trampoline: ++ * 0: b8 e7 ff ff ff mov $-25,%eax mach_msg_trap ++ * 5: 9a 00 00 00 00 07 00 lcall $7,$0 ++ * 12: 89 01 movl %eax, (%ecx) ++ * 14: 89 dc movl %ebx, %esp switch to signal stack ++ * ++ * trampoline: ++ * 16: ff d2 call *%edx call the handler function ++ * RA HERE ++ * 18: 83 c4 0c addl $12, %esp pop its args ++ * 21: c3 ret return to sigreturn ++ * ++ * firewall: ++ * 22: f4 hlt ++ */ ++ ++ if (!( *(unsigned int *)(context->ra ) == 0xc30cc483 ++ && *(unsigned char *)(context->ra + 4) == 0xf4 ++ ++ && *(unsigned int *)(context->ra - 4) == 0xd2ffdc89 ++ && *(unsigned int *)(context->ra - 8) == 0x01890007 ++ && *(unsigned int *)(context->ra - 12) == 0x00000000 ++ && *(unsigned int *)(context->ra - 16) == 0x9affffff ++ && *(unsigned short *)(context->ra - 18) == 0xe7b8)) ++ return _URC_END_OF_STACK; ++ ++ handler_args = context->cfa; ++ scp = handler_args->scp; ++ usp = scp->sc_uesp; ++ ++ fs->regs.cfa_how = CFA_REG_OFFSET; ++ fs->regs.cfa_reg = 4; ++ fs->regs.cfa_offset = usp - (unsigned long) context->cfa; ++ ++ fs->regs.reg[0].how = REG_SAVED_OFFSET; ++ fs->regs.reg[0].loc.offset = (unsigned long)&scp->sc_eax - usp; ++ fs->regs.reg[1].how = REG_SAVED_OFFSET; ++ fs->regs.reg[1].loc.offset = (unsigned long)&scp->sc_ecx - usp; ++ fs->regs.reg[2].how = REG_SAVED_OFFSET; ++ fs->regs.reg[2].loc.offset = (unsigned long)&scp->sc_edx - usp; ++ fs->regs.reg[3].how = REG_SAVED_OFFSET; ++ fs->regs.reg[3].loc.offset = (unsigned long)&scp->sc_ebx - usp; ++ fs->regs.reg[5].how = REG_SAVED_OFFSET; ++ fs->regs.reg[5].loc.offset = (unsigned long)&scp->sc_ebp - usp; ++ fs->regs.reg[6].how = REG_SAVED_OFFSET; ++ fs->regs.reg[6].loc.offset = (unsigned long)&scp->sc_esi - usp; ++ fs->regs.reg[7].how = REG_SAVED_OFFSET; ++ fs->regs.reg[7].loc.offset = (unsigned long)&scp->sc_edi - usp; ++ fs->regs.reg[8].how = REG_SAVED_OFFSET; ++ fs->regs.reg[8].loc.offset = (unsigned long)&scp->sc_eip - usp; ++ fs->retaddr_column = 8; ++ fs->signal_frame = 1; ++ ++ return _URC_NO_REASON; ++} ++ ++#endif /* ifndef inhibit_libc */ +--- a/src/libgcc/config/i386/sfp-exceptions.c ++++ b/src/libgcc/config/i386/sfp-exceptions.c +@@ -48,9 +48,7 @@ __sfp_handle_exceptions (int _fex) + { + float f = 0.0f; + #ifdef __SSE_MATH__ +- volatile float r __attribute__ ((unused)); + asm volatile ("%vdivss\t{%0, %d0|%d0, %0}" : "+x" (f)); +- r = f; /* Needed to trigger exception. */ + #else + asm volatile ("fdiv\t{%y0, %0|%0, %y0}" : "+t" (f)); + /* No need for fwait, exception is triggered by emitted fstp. */ +@@ -68,9 +66,7 @@ __sfp_handle_exceptions (int _fex) + { + float f = 1.0f, g = 0.0f; + #ifdef __SSE_MATH__ +- volatile float r __attribute__ ((unused)); + asm volatile ("%vdivss\t{%1, %d0|%d0, %1}" : "+x" (f) : "xm" (g)); +- r = f; /* Needed to trigger exception. */ + #else + asm volatile ("fdivs\t%1" : "+t" (f) : "m" (g)); + /* No need for fwait, exception is triggered by emitted fstp. */ +@@ -96,9 +92,7 @@ __sfp_handle_exceptions (int _fex) + { + float f = 1.0f, g = 3.0f; + #ifdef __SSE_MATH__ +- volatile float r __attribute__ ((unused)); + asm volatile ("%vdivss\t{%1, %d0|%d0, %1}" : "+x" (f) : "xm" (g)); +- r = f; /* Needed to trigger exception. */ + #else + asm volatile ("fdivs\t%1" : "+t" (f) : "m" (g)); + /* No need for fwait, exception is triggered by emitted fstp. */ +--- a/src/libgcc/config/i386/shadow-stack-unwind.h ++++ b/src/libgcc/config/i386/shadow-stack-unwind.h +@@ -49,3 +49,46 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see + } \ + } \ + while (0) ++ ++/* Linux CET kernel places a restore token on shadow stack for signal ++ handler to enhance security. The restore token is 8 byte and aligned ++ to 8 bytes. It is usually transparent to user programs since kernel ++ will pop the restore token when signal handler returns. But when an ++ exception is thrown from a signal handler, now we need to pop the ++ restore token from shadow stack. For x86-64, we just need to treat ++ the signal frame as normal frame. For i386, we need to search for ++ the restore token to check if the original shadow stack is 8 byte ++ aligned. If the original shadow stack is 8 byte aligned, we just ++ need to pop 2 slots, one restore token, from shadow stack. Otherwise, ++ we need to pop 3 slots, one restore token + 4 byte padding, from ++ shadow stack. */ ++#ifndef __x86_64__ ++#undef _Unwind_Frames_Increment ++#define _Unwind_Frames_Increment(context, frames) \ ++ if (_Unwind_IsSignalFrame (context)) \ ++ do \ ++ { \ ++ _Unwind_Word ssp, prev_ssp, token; \ ++ ssp = _get_ssp (); \ ++ if (ssp != 0) \ ++ { \ ++ /* Align shadow stack pointer to the next \ ++ 8 byte aligned boundary. */ \ ++ ssp = (ssp + 4) & ~7; \ ++ do \ ++ { \ ++ /* Look for a restore token. */ \ ++ token = (*(_Unwind_Word *) (ssp - 8)); \ ++ prev_ssp = token & ~7; \ ++ if (prev_ssp == ssp) \ ++ break; \ ++ ssp += 8; \ ++ } \ ++ while (1); \ ++ frames += (token & 0x4) ? 3 : 2; \ ++ } \ ++ } \ ++ while (0); \ ++ else \ ++ frames++; ++#endif +old mode 100644 +new mode 100755 +--- a/src/libgcc/configure ++++ b/src/libgcc/configure +@@ -641,6 +641,7 @@ infodir + docdir + oldincludedir + includedir ++runstatedir + localstatedir + sharedstatedir + sysconfdir +@@ -729,6 +730,7 @@ datadir='${datarootdir}' + sysconfdir='${prefix}/etc' + sharedstatedir='${prefix}/com' + localstatedir='${prefix}/var' ++runstatedir='${localstatedir}/run' + includedir='${prefix}/include' + oldincludedir='/usr/include' + docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' +@@ -980,6 +982,15 @@ do + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + ++ -runstatedir | --runstatedir | --runstatedi | --runstated \ ++ | --runstate | --runstat | --runsta | --runst | --runs \ ++ | --run | --ru | --r) ++ ac_prev=runstatedir ;; ++ -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ ++ | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ ++ | --run=* | --ru=* | --r=*) ++ runstatedir=$ac_optarg ;; ++ + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ +@@ -1117,7 +1128,7 @@ fi + for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ + datadir sysconfdir sharedstatedir localstatedir includedir \ + oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ +- libdir localedir mandir ++ libdir localedir mandir runstatedir + do + eval ac_val=\$$ac_var + # Remove trailing slashes. +@@ -1272,6 +1283,7 @@ Fine tuning of the installation directories: + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] ++ --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] +@@ -4091,7 +4103,7 @@ else + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) ++#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +@@ -4137,7 +4149,7 @@ else + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) ++#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +@@ -4161,7 +4173,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) ++#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +@@ -4206,7 +4218,7 @@ else + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) ++#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +@@ -4230,7 +4242,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) ++#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +@@ -4342,7 +4354,7 @@ as_fn_arith $ac_cv_sizeof_long_double \* 8 && long_double_type_size=$as_val + + for ac_header in inttypes.h stdint.h stdlib.h ftw.h \ + unistd.h sys/stat.h sys/types.h \ +- string.h strings.h memory.h ++ string.h strings.h memory.h sys/auxv.h + do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` + ac_fn_c_check_header_preproc "$LINENO" "$ac_header" "$as_ac_Header" +@@ -5373,6 +5385,46 @@ $as_echo "#define HAVE_AS_AVX 1" >>confdefs.h + ;; + esac + ++ ++ ++case "${target}" in ++aarch64*-*-*) ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the assembler supports LSE" >&5 ++$as_echo_n "checking if the assembler supports LSE... " >&6; } ++if ${libgcc_cv_as_lse+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++ ++int ++main () ++{ ++ asm(".arch armv8-a+lse\n\tcas w0, w1, [x2]"); ++ ++ ; ++ return 0; ++} ++_ACEOF ++if ac_fn_c_try_compile "$LINENO"; then : ++ libgcc_cv_as_lse=yes ++else ++ libgcc_cv_as_lse=no ++fi ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libgcc_cv_as_lse" >&5 ++$as_echo "$libgcc_cv_as_lse" >&6; } ++ if test x$libgcc_cv_as_lse = xyes; then ++ ++$as_echo "#define HAVE_AS_LSE 1" >>confdefs.h ++ ++ fi ++ ;; ++esac ++ + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for init priority support" >&5 + $as_echo_n "checking for init priority support... " >&6; } + if test "${libgcc_cv_init_priority+set}" = set; then : +--- a/src/libgcc/configure.ac ++++ b/src/libgcc/configure.ac +@@ -203,7 +203,7 @@ AC_SUBST(long_double_type_size) + + AC_CHECK_HEADERS(inttypes.h stdint.h stdlib.h ftw.h \ + unistd.h sys/stat.h sys/types.h \ +- string.h strings.h memory.h) ++ string.h strings.h memory.h sys/auxv.h) + AC_HEADER_STDC + + # Check for decimal float support. +@@ -543,6 +543,25 @@ i[[34567]]86-*-* | x86_64-*-*) + esac]) + LIBGCC_CHECK_AS_AVX + ++dnl Check if as supports LSE instructions. ++AC_DEFUN([LIBGCC_CHECK_AS_LSE], [ ++case "${target}" in ++aarch64*-*-*) ++ AC_CACHE_CHECK([if the assembler supports LSE], libgcc_cv_as_lse, [ ++ AC_TRY_COMPILE([], ++changequote(,)dnl ++ asm(".arch armv8-a+lse\n\tcas w0, w1, [x2]"); ++changequote([,])dnl ++ , ++ [libgcc_cv_as_lse=yes], [libgcc_cv_as_lse=no]) ++ ]) ++ if test x$libgcc_cv_as_lse = xyes; then ++ AC_DEFINE(HAVE_AS_LSE, 1, [Define to 1 if the assembler supports LSE.]) ++ fi ++ ;; ++esac]) ++LIBGCC_CHECK_AS_LSE ++ + dnl Check if as supports RTM instructions. + AC_CACHE_CHECK(for init priority support, libgcc_cv_init_priority, [ + AC_COMPILE_IFELSE([AC_LANG_PROGRAM(, +--- a/src/libgcc/libgcov-util.c ++++ b/src/libgcc/libgcov-util.c +@@ -259,7 +259,7 @@ read_gcda_file (const char *filename) + { + unsigned tags[4]; + unsigned depth = 0; +- unsigned magic, version; ++ unsigned version; + struct gcov_info *obj_info; + int i; + +@@ -274,8 +274,7 @@ read_gcda_file (const char *filename) + } + + /* Read magic. */ +- magic = gcov_read_unsigned (); +- if (magic != GCOV_DATA_MAGIC) ++ if (!gcov_magic (gcov_read_unsigned (), GCOV_DATA_MAGIC)) + { + fnotice (stderr, "%s:not a gcov data file\n", filename); + gcov_close (); +--- a/src/libgcc/libgcov.h ++++ b/src/libgcc/libgcov.h +@@ -149,7 +149,7 @@ extern struct gcov_info *gcov_list; + + /* Poison these, so they don't accidentally slip in. */ + #pragma GCC poison gcov_write_string gcov_write_tag gcov_write_length +-#pragma GCC poison gcov_time gcov_magic ++#pragma GCC poison gcov_time + + #ifdef HAVE_GAS_HIDDEN + #define ATTRIBUTE_HIDDEN __attribute__ ((__visibility__ ("hidden"))) +--- a/src/libgcc/unwind-dw2.c ++++ b/src/libgcc/unwind-dw2.c +@@ -1532,11 +1532,14 @@ uw_update_context (struct _Unwind_Context *context, _Unwind_FrameState *fs) + { + /* Compute the return address now, since the return address column + can change from frame to frame. */ +- context->ra = __builtin_extract_return_addr +- (_Unwind_GetPtr (context, fs->retaddr_column)); +-#ifdef MD_POST_EXTRACT_FRAME_ADDR +- context->ra = MD_POST_EXTRACT_FRAME_ADDR (context, fs, context->ra); ++ void *ret_addr; ++#ifdef MD_DEMANGLE_RETURN_ADDR ++ _Unwind_Word ra = _Unwind_GetGR (context, fs->retaddr_column); ++ ret_addr = MD_DEMANGLE_RETURN_ADDR (context, fs, ra); ++#else ++ ret_addr = _Unwind_GetPtr (context, fs->retaddr_column); + #endif ++ context->ra = __builtin_extract_return_addr (ret_addr); + } + } + +@@ -1571,9 +1574,6 @@ uw_init_context_1 (struct _Unwind_Context *context, + void *outer_cfa, void *outer_ra) + { + void *ra = __builtin_extract_return_addr (__builtin_return_address (0)); +-#ifdef MD_POST_EXTRACT_ROOT_ADDR +- ra = MD_POST_EXTRACT_ROOT_ADDR (ra); +-#endif + _Unwind_FrameState fs; + _Unwind_SpTmp sp_slot; + _Unwind_Reason_Code code; +@@ -1610,9 +1610,6 @@ uw_init_context_1 (struct _Unwind_Context *context, + initialization context, then we can't see it in the given + call frame data. So have the initialization context tell us. */ + context->ra = __builtin_extract_return_addr (outer_ra); +-#ifdef MD_POST_EXTRACT_ROOT_ADDR +- context->ra = MD_POST_EXTRACT_ROOT_ADDR (context->ra); +-#endif + } + + static void _Unwind_DebugHook (void *, void *) +@@ -1635,21 +1632,6 @@ _Unwind_DebugHook (void *cfa __attribute__ ((__unused__)), + #endif + } + +-/* Frob exception handler's address kept in TARGET before installing into +- CURRENT context. */ +- +-static inline void * +-uw_frob_return_addr (struct _Unwind_Context *current +- __attribute__ ((__unused__)), +- struct _Unwind_Context *target) +-{ +- void *ret_addr = __builtin_frob_return_addr (target->ra); +-#ifdef MD_POST_FROB_EH_HANDLER_ADDR +- ret_addr = MD_POST_FROB_EH_HANDLER_ADDR (current, target, ret_addr); +-#endif +- return ret_addr; +-} +- + /* Install TARGET into CURRENT so that we can return to it. This is a + macro because __builtin_eh_return must be invoked in the context of + our caller. FRAMES is a number of frames to be unwind. +@@ -1661,7 +1643,7 @@ uw_frob_return_addr (struct _Unwind_Context *current + do \ + { \ + long offset = uw_install_context_1 ((CURRENT), (TARGET)); \ +- void *handler = uw_frob_return_addr ((CURRENT), (TARGET)); \ ++ void *handler = __builtin_frob_return_addr ((TARGET)->ra); \ + _Unwind_DebugHook ((TARGET)->cfa, handler); \ + _Unwind_Frames_Extra (FRAMES); \ + __builtin_eh_return (offset, handler); \ +--- a/src/libgfortran/ChangeLog ++++ b/src/libgfortran/ChangeLog +@@ -1,3 +1,63 @@ ++2020-10-24 Harald Anlauf ++ ++ Backported from master: ++ 2020-10-18 Harald Anlauf ++ ++ * m4/matmul_internal.m4: Move check for rank-1 times rank-2 before ++ checks on strides for rank-2 times rank-2. ++ * generated/matmul_c10.c: Regenerated. ++ * generated/matmul_c16.c: Likewise. ++ * generated/matmul_c4.c: Likewise. ++ * generated/matmul_c8.c: Likewise. ++ * generated/matmul_i1.c: Likewise. ++ * generated/matmul_i16.c: Likewise. ++ * generated/matmul_i2.c: Likewise. ++ * generated/matmul_i4.c: Likewise. ++ * generated/matmul_i8.c: Likewise. ++ * generated/matmul_r10.c: Likewise. ++ * generated/matmul_r16.c: Likewise. ++ * generated/matmul_r4.c: Likewise. ++ * generated/matmul_r8.c: Likewise. ++ * generated/matmulavx128_c10.c: Likewise. ++ * generated/matmulavx128_c16.c: Likewise. ++ * generated/matmulavx128_c4.c: Likewise. ++ * generated/matmulavx128_c8.c: Likewise. ++ * generated/matmulavx128_i1.c: Likewise. ++ * generated/matmulavx128_i16.c: Likewise. ++ * generated/matmulavx128_i2.c: Likewise. ++ * generated/matmulavx128_i4.c: Likewise. ++ * generated/matmulavx128_i8.c: Likewise. ++ * generated/matmulavx128_r10.c: Likewise. ++ * generated/matmulavx128_r16.c: Likewise. ++ * generated/matmulavx128_r4.c: Likewise. ++ * generated/matmulavx128_r8.c: Likewise. ++ ++2020-09-09 Harald Anlauf ++ ++ Backported from master: ++ 2020-09-03 Harald Anlauf ++ ++ * m4/iall.m4: Initial value for result should be -1. ++ * generated/iall_i1.c (miall_i1): Generated. ++ * generated/iall_i16.c (miall_i16): Likewise. ++ * generated/iall_i2.c (miall_i2): Likewise. ++ * generated/iall_i4.c (miall_i4): Likewise. ++ * generated/iall_i8.c (miall_i8): Likewise. ++ ++2020-07-25 Dominique d'Humieres ++ ++ Backported from master: ++ 2020-07-24 Dominique d'Humieres ++ ++ PR fortran/93592 ++ * io/write_float.def (build_float_string): Do not reset ++ nbefore for FMT_F and FMT_EN. ++ ++2020-04-19 UroÅ¡ Bizjak ++ ++ * config/fpu-387.h (local_feraiseexcept) [__SSE_MATH__]: ++ Remove unneeded assignments to volatile memory. ++ + 2020-03-04 Release Manager + + * GCC 8.4.0 released. +--- a/src/libgfortran/config/fpu-387.h ++++ b/src/libgfortran/config/fpu-387.h +@@ -103,9 +103,7 @@ local_feraiseexcept (int excepts) + { + float f = 0.0f; + #ifdef __SSE_MATH__ +- volatile float r __attribute__ ((unused)); + __asm__ __volatile__ ("%vdivss\t{%0, %d0|%d0, %0}" : "+x" (f)); +- r = f; /* Needed to trigger exception. */ + #else + __asm__ __volatile__ ("fdiv\t{%y0, %0|%0, %y0}" : "+t" (f)); + /* No need for fwait, exception is triggered by emitted fstp. */ +@@ -123,9 +121,7 @@ local_feraiseexcept (int excepts) + { + float f = 1.0f, g = 0.0f; + #ifdef __SSE_MATH__ +- volatile float r __attribute__ ((unused)); + __asm__ __volatile__ ("%vdivss\t{%1, %d0|%d0, %1}" : "+x" (f) : "xm" (g)); +- r = f; /* Needed to trigger exception. */ + #else + __asm__ __volatile__ ("fdivs\t%1" : "+t" (f) : "m" (g)); + /* No need for fwait, exception is triggered by emitted fstp. */ +@@ -151,9 +147,7 @@ local_feraiseexcept (int excepts) + { + float f = 1.0f, g = 3.0f; + #ifdef __SSE_MATH__ +- volatile float r __attribute__ ((unused)); + __asm__ __volatile__ ("%vdivss\t{%1, %d0|%d0, %1}" : "+x" (f) : "xm" (g)); +- r = f; /* Needed to trigger exception. */ + #else + __asm__ __volatile__ ("fdivs\t%1" : "+t" (f) : "m" (g)); + /* No need for fwait, exception is triggered by emitted fstp. */ +--- a/src/libgfortran/generated/iall_i1.c ++++ b/src/libgfortran/generated/iall_i1.c +@@ -340,7 +340,7 @@ miall_i1 (gfc_array_i1 * const restrict retarray, + msrc = mbase; + { + +- result = 0; ++ result = (GFC_INTEGER_1) -1; + for (n = 0; n < len; n++, src += delta, msrc += mdelta) + { + +--- a/src/libgfortran/generated/iall_i16.c ++++ b/src/libgfortran/generated/iall_i16.c +@@ -340,7 +340,7 @@ miall_i16 (gfc_array_i16 * const restrict retarray, + msrc = mbase; + { + +- result = 0; ++ result = (GFC_INTEGER_16) -1; + for (n = 0; n < len; n++, src += delta, msrc += mdelta) + { + +--- a/src/libgfortran/generated/iall_i2.c ++++ b/src/libgfortran/generated/iall_i2.c +@@ -340,7 +340,7 @@ miall_i2 (gfc_array_i2 * const restrict retarray, + msrc = mbase; + { + +- result = 0; ++ result = (GFC_INTEGER_2) -1; + for (n = 0; n < len; n++, src += delta, msrc += mdelta) + { + +--- a/src/libgfortran/generated/iall_i4.c ++++ b/src/libgfortran/generated/iall_i4.c +@@ -340,7 +340,7 @@ miall_i4 (gfc_array_i4 * const restrict retarray, + msrc = mbase; + { + +- result = 0; ++ result = (GFC_INTEGER_4) -1; + for (n = 0; n < len; n++, src += delta, msrc += mdelta) + { + +--- a/src/libgfortran/generated/iall_i8.c ++++ b/src/libgfortran/generated/iall_i8.c +@@ -340,7 +340,7 @@ miall_i8 (gfc_array_i8 * const restrict retarray, + msrc = mbase; + { + +- result = 0; ++ result = (GFC_INTEGER_8) -1; + for (n = 0; n < len; n++, src += delta, msrc += mdelta) + { + +--- a/src/libgfortran/generated/matmul_c10.c ++++ b/src/libgfortran/generated/matmul_c10.c +@@ -579,20 +579,6 @@ matmul_c10_avx (gfc_array_c10 * const restrict retarray, + } + } + } +- else if (axstride < aystride) +- { +- for (y = 0; y < ycount; y++) +- for (x = 0; x < xcount; x++) +- dest[x*rxstride + y*rystride] = (GFC_COMPLEX_10)0; +- +- for (y = 0; y < ycount; y++) +- for (n = 0; n < count; n++) +- for (x = 0; x < xcount; x++) +- /* dest[x,y] += a[x,n] * b[n,y] */ +- dest[x*rxstride + y*rystride] += +- abase[x*axstride + n*aystride] * +- bbase[n*bxstride + y*bystride]; +- } + else if (GFC_DESCRIPTOR_RANK (a) == 1) + { + const GFC_COMPLEX_10 *restrict bbase_y; +@@ -607,6 +593,20 @@ matmul_c10_avx (gfc_array_c10 * const restrict retarray, + dest[y*rxstride] = s; + } + } ++ else if (axstride < aystride) ++ { ++ for (y = 0; y < ycount; y++) ++ for (x = 0; x < xcount; x++) ++ dest[x*rxstride + y*rystride] = (GFC_COMPLEX_10)0; ++ ++ for (y = 0; y < ycount; y++) ++ for (n = 0; n < count; n++) ++ for (x = 0; x < xcount; x++) ++ /* dest[x,y] += a[x,n] * b[n,y] */ ++ dest[x*rxstride + y*rystride] += ++ abase[x*axstride + n*aystride] * ++ bbase[n*bxstride + y*bystride]; ++ } + else + { + const GFC_COMPLEX_10 *restrict abase_x; +@@ -1136,20 +1136,6 @@ matmul_c10_avx2 (gfc_array_c10 * const restrict retarray, + } + } + } +- else if (axstride < aystride) +- { +- for (y = 0; y < ycount; y++) +- for (x = 0; x < xcount; x++) +- dest[x*rxstride + y*rystride] = (GFC_COMPLEX_10)0; +- +- for (y = 0; y < ycount; y++) +- for (n = 0; n < count; n++) +- for (x = 0; x < xcount; x++) +- /* dest[x,y] += a[x,n] * b[n,y] */ +- dest[x*rxstride + y*rystride] += +- abase[x*axstride + n*aystride] * +- bbase[n*bxstride + y*bystride]; +- } + else if (GFC_DESCRIPTOR_RANK (a) == 1) + { + const GFC_COMPLEX_10 *restrict bbase_y; +@@ -1164,6 +1150,20 @@ matmul_c10_avx2 (gfc_array_c10 * const restrict retarray, + dest[y*rxstride] = s; + } + } ++ else if (axstride < aystride) ++ { ++ for (y = 0; y < ycount; y++) ++ for (x = 0; x < xcount; x++) ++ dest[x*rxstride + y*rystride] = (GFC_COMPLEX_10)0; ++ ++ for (y = 0; y < ycount; y++) ++ for (n = 0; n < count; n++) ++ for (x = 0; x < xcount; x++) ++ /* dest[x,y] += a[x,n] * b[n,y] */ ++ dest[x*rxstride + y*rystride] += ++ abase[x*axstride + n*aystride] * ++ bbase[n*bxstride + y*bystride]; ++ } + else + { + const GFC_COMPLEX_10 *restrict abase_x; +@@ -1693,20 +1693,6 @@ matmul_c10_avx512f (gfc_array_c10 * const restrict retarray, + } + } + } +- else if (axstride < aystride) +- { +- for (y = 0; y < ycount; y++) +- for (x = 0; x < xcount; x++) +- dest[x*rxstride + y*rystride] = (GFC_COMPLEX_10)0; +- +- for (y = 0; y < ycount; y++) +- for (n = 0; n < count; n++) +- for (x = 0; x < xcount; x++) +- /* dest[x,y] += a[x,n] * b[n,y] */ +- dest[x*rxstride + y*rystride] += +- abase[x*axstride + n*aystride] * +- bbase[n*bxstride + y*bystride]; +- } + else if (GFC_DESCRIPTOR_RANK (a) == 1) + { + const GFC_COMPLEX_10 *restrict bbase_y; +@@ -1721,6 +1707,20 @@ matmul_c10_avx512f (gfc_array_c10 * const restrict retarray, + dest[y*rxstride] = s; + } + } ++ else if (axstride < aystride) ++ { ++ for (y = 0; y < ycount; y++) ++ for (x = 0; x < xcount; x++) ++ dest[x*rxstride + y*rystride] = (GFC_COMPLEX_10)0; ++ ++ for (y = 0; y < ycount; y++) ++ for (n = 0; n < count; n++) ++ for (x = 0; x < xcount; x++) ++ /* dest[x,y] += a[x,n] * b[n,y] */ ++ dest[x*rxstride + y*rystride] += ++ abase[x*axstride + n*aystride] * ++ bbase[n*bxstride + y*bystride]; ++ } + else + { + const GFC_COMPLEX_10 *restrict abase_x; +@@ -2264,20 +2264,6 @@ matmul_c10_vanilla (gfc_array_c10 * const restrict retarray, + } + } + } +- else if (axstride < aystride) +- { +- for (y = 0; y < ycount; y++) +- for (x = 0; x < xcount; x++) +- dest[x*rxstride + y*rystride] = (GFC_COMPLEX_10)0; +- +- for (y = 0; y < ycount; y++) +- for (n = 0; n < count; n++) +- for (x = 0; x < xcount; x++) +- /* dest[x,y] += a[x,n] * b[n,y] */ +- dest[x*rxstride + y*rystride] += +- abase[x*axstride + n*aystride] * +- bbase[n*bxstride + y*bystride]; +- } + else if (GFC_DESCRIPTOR_RANK (a) == 1) + { + const GFC_COMPLEX_10 *restrict bbase_y; +@@ -2292,6 +2278,20 @@ matmul_c10_vanilla (gfc_array_c10 * const restrict retarray, + dest[y*rxstride] = s; + } + } ++ else if (axstride < aystride) ++ { ++ for (y = 0; y < ycount; y++) ++ for (x = 0; x < xcount; x++) ++ dest[x*rxstride + y*rystride] = (GFC_COMPLEX_10)0; ++ ++ for (y = 0; y < ycount; y++) ++ for (n = 0; n < count; n++) ++ for (x = 0; x < xcount; x++) ++ /* dest[x,y] += a[x,n] * b[n,y] */ ++ dest[x*rxstride + y*rystride] += ++ abase[x*axstride + n*aystride] * ++ bbase[n*bxstride + y*bystride]; ++ } + else + { + const GFC_COMPLEX_10 *restrict abase_x; +@@ -2895,20 +2895,6 @@ matmul_c10 (gfc_array_c10 * const restrict retarray, + } + } + } +- else if (axstride < aystride) +- { +- for (y = 0; y < ycount; y++) +- for (x = 0; x < xcount; x++) +- dest[x*rxstride + y*rystride] = (GFC_COMPLEX_10)0; +- +- for (y = 0; y < ycount; y++) +- for (n = 0; n < count; n++) +- for (x = 0; x < xcount; x++) +- /* dest[x,y] += a[x,n] * b[n,y] */ +- dest[x*rxstride + y*rystride] += +- abase[x*axstride + n*aystride] * +- bbase[n*bxstride + y*bystride]; +- } + else if (GFC_DESCRIPTOR_RANK (a) == 1) + { + const GFC_COMPLEX_10 *restrict bbase_y; +@@ -2923,6 +2909,20 @@ matmul_c10 (gfc_array_c10 * const restrict retarray, + dest[y*rxstride] = s; + } + } ++ else if (axstride < aystride) ++ { ++ for (y = 0; y < ycount; y++) ++ for (x = 0; x < xcount; x++) ++ dest[x*rxstride + y*rystride] = (GFC_COMPLEX_10)0; ++ ++ for (y = 0; y < ycount; y++) ++ for (n = 0; n < count; n++) ++ for (x = 0; x < xcount; x++) ++ /* dest[x,y] += a[x,n] * b[n,y] */ ++ dest[x*rxstride + y*rystride] += ++ abase[x*axstride + n*aystride] * ++ bbase[n*bxstride + y*bystride]; ++ } + else + { + const GFC_COMPLEX_10 *restrict abase_x; +--- a/src/libgfortran/generated/matmul_c16.c ++++ b/src/libgfortran/generated/matmul_c16.c +@@ -579,20 +579,6 @@ matmul_c16_avx (gfc_array_c16 * const restrict retarray, + } + } + } +- else if (axstride < aystride) +- { +- for (y = 0; y < ycount; y++) +- for (x = 0; x < xcount; x++) +- dest[x*rxstride + y*rystride] = (GFC_COMPLEX_16)0; +- +- for (y = 0; y < ycount; y++) +- for (n = 0; n < count; n++) +- for (x = 0; x < xcount; x++) +- /* dest[x,y] += a[x,n] * b[n,y] */ +- dest[x*rxstride + y*rystride] += +- abase[x*axstride + n*aystride] * +- bbase[n*bxstride + y*bystride]; +- } + else if (GFC_DESCRIPTOR_RANK (a) == 1) + { + const GFC_COMPLEX_16 *restrict bbase_y; +@@ -607,6 +593,20 @@ matmul_c16_avx (gfc_array_c16 * const restrict retarray, + dest[y*rxstride] = s; + } + } ++ else if (axstride < aystride) ++ { ++ for (y = 0; y < ycount; y++) ++ for (x = 0; x < xcount; x++) ++ dest[x*rxstride + y*rystride] = (GFC_COMPLEX_16)0; ++ ++ for (y = 0; y < ycount; y++) ++ for (n = 0; n < count; n++) ++ for (x = 0; x < xcount; x++) ++ /* dest[x,y] += a[x,n] * b[n,y] */ ++ dest[x*rxstride + y*rystride] += ++ abase[x*axstride + n*aystride] * ++ bbase[n*bxstride + y*bystride]; ++ } + else + { + const GFC_COMPLEX_16 *restrict abase_x; +@@ -1136,20 +1136,6 @@ matmul_c16_avx2 (gfc_array_c16 * const restrict retarray, + } + } + } +- else if (axstride < aystride) +- { +- for (y = 0; y < ycount; y++) +- for (x = 0; x < xcount; x++) +- dest[x*rxstride + y*rystride] = (GFC_COMPLEX_16)0; +- +- for (y = 0; y < ycount; y++) +- for (n = 0; n < count; n++) +- for (x = 0; x < xcount; x++) +- /* dest[x,y] += a[x,n] * b[n,y] */ +- dest[x*rxstride + y*rystride] += +- abase[x*axstride + n*aystride] * +- bbase[n*bxstride + y*bystride]; +- } + else if (GFC_DESCRIPTOR_RANK (a) == 1) + { + const GFC_COMPLEX_16 *restrict bbase_y; +@@ -1164,6 +1150,20 @@ matmul_c16_avx2 (gfc_array_c16 * const restrict retarray, + dest[y*rxstride] = s; + } + } ++ else if (axstride < aystride) ++ { ++ for (y = 0; y < ycount; y++) ++ for (x = 0; x < xcount; x++) ++ dest[x*rxstride + y*rystride] = (GFC_COMPLEX_16)0; ++ ++ for (y = 0; y < ycount; y++) ++ for (n = 0; n < count; n++) ++ for (x = 0; x < xcount; x++) ++ /* dest[x,y] += a[x,n] * b[n,y] */ ++ dest[x*rxstride + y*rystride] += ++ abase[x*axstride + n*aystride] * ++ bbase[n*bxstride + y*bystride]; ++ } + else + { + const GFC_COMPLEX_16 *restrict abase_x; +@@ -1693,20 +1693,6 @@ matmul_c16_avx512f (gfc_array_c16 * const restrict retarray, + } + } + } +- else if (axstride < aystride) +- { +- for (y = 0; y < ycount; y++) +- for (x = 0; x < xcount; x++) +- dest[x*rxstride + y*rystride] = (GFC_COMPLEX_16)0; +- +- for (y = 0; y < ycount; y++) +- for (n = 0; n < count; n++) +- for (x = 0; x < xcount; x++) +- /* dest[x,y] += a[x,n] * b[n,y] */ +- dest[x*rxstride + y*rystride] += +- abase[x*axstride + n*aystride] * +- bbase[n*bxstride + y*bystride]; +- } + else if (GFC_DESCRIPTOR_RANK (a) == 1) + { + const GFC_COMPLEX_16 *restrict bbase_y; +@@ -1721,6 +1707,20 @@ matmul_c16_avx512f (gfc_array_c16 * const restrict retarray, + dest[y*rxstride] = s; + } + } ++ else if (axstride < aystride) ++ { ++ for (y = 0; y < ycount; y++) ++ for (x = 0; x < xcount; x++) ++ dest[x*rxstride + y*rystride] = (GFC_COMPLEX_16)0; ++ ++ for (y = 0; y < ycount; y++) ++ for (n = 0; n < count; n++) ++ for (x = 0; x < xcount; x++) ++ /* dest[x,y] += a[x,n] * b[n,y] */ ++ dest[x*rxstride + y*rystride] += ++ abase[x*axstride + n*aystride] * ++ bbase[n*bxstride + y*bystride]; ++ } + else + { + const GFC_COMPLEX_16 *restrict abase_x; +@@ -2264,20 +2264,6 @@ matmul_c16_vanilla (gfc_array_c16 * const restrict retarray, + } + } + } +- else if (axstride < aystride) +- { +- for (y = 0; y < ycount; y++) +- for (x = 0; x < xcount; x++) +- dest[x*rxstride + y*rystride] = (GFC_COMPLEX_16)0; +- +- for (y = 0; y < ycount; y++) +- for (n = 0; n < count; n++) +- for (x = 0; x < xcount; x++) +- /* dest[x,y] += a[x,n] * b[n,y] */ +- dest[x*rxstride + y*rystride] += +- abase[x*axstride + n*aystride] * +- bbase[n*bxstride + y*bystride]; +- } + else if (GFC_DESCRIPTOR_RANK (a) == 1) + { + const GFC_COMPLEX_16 *restrict bbase_y; +@@ -2292,6 +2278,20 @@ matmul_c16_vanilla (gfc_array_c16 * const restrict retarray, + dest[y*rxstride] = s; + } + } ++ else if (axstride < aystride) ++ { ++ for (y = 0; y < ycount; y++) ++ for (x = 0; x < xcount; x++) ++ dest[x*rxstride + y*rystride] = (GFC_COMPLEX_16)0; ++ ++ for (y = 0; y < ycount; y++) ++ for (n = 0; n < count; n++) ++ for (x = 0; x < xcount; x++) ++ /* dest[x,y] += a[x,n] * b[n,y] */ ++ dest[x*rxstride + y*rystride] += ++ abase[x*axstride + n*aystride] * ++ bbase[n*bxstride + y*bystride]; ++ } + else + { + const GFC_COMPLEX_16 *restrict abase_x; +@@ -2895,20 +2895,6 @@ matmul_c16 (gfc_array_c16 * const restrict retarray, + } + } + } +- else if (axstride < aystride) +- { +- for (y = 0; y < ycount; y++) +- for (x = 0; x < xcount; x++) +- dest[x*rxstride + y*rystride] = (GFC_COMPLEX_16)0; +- +- for (y = 0; y < ycount; y++) +- for (n = 0; n < count; n++) +- for (x = 0; x < xcount; x++) +- /* dest[x,y] += a[x,n] * b[n,y] */ +- dest[x*rxstride + y*rystride] += +- abase[x*axstride + n*aystride] * +- bbase[n*bxstride + y*bystride]; +- } + else if (GFC_DESCRIPTOR_RANK (a) == 1) + { + const GFC_COMPLEX_16 *restrict bbase_y; +@@ -2923,6 +2909,20 @@ matmul_c16 (gfc_array_c16 * const restrict retarray, + dest[y*rxstride] = s; + } + } ++ else if (axstride < aystride) ++ { ++ for (y = 0; y < ycount; y++) ++ for (x = 0; x < xcount; x++) ++ dest[x*rxstride + y*rystride] = (GFC_COMPLEX_16)0; ++ ++ for (y = 0; y < ycount; y++) ++ for (n = 0; n < count; n++) ++ for (x = 0; x < xcount; x++) ++ /* dest[x,y] += a[x,n] * b[n,y] */ ++ dest[x*rxstride + y*rystride] += ++ abase[x*axstride + n*aystride] * ++ bbase[n*bxstride + y*bystride]; ++ } + else + { + const GFC_COMPLEX_16 *restrict abase_x; +--- a/src/libgfortran/generated/matmul_c4.c ++++ b/src/libgfortran/generated/matmul_c4.c +@@ -579,20 +579,6 @@ matmul_c4_avx (gfc_array_c4 * const restrict retarray, + } + } + } +- else if (axstride < aystride) +- { +- for (y = 0; y < ycount; y++) +- for (x = 0; x < xcount; x++) +- dest[x*rxstride + y*rystride] = (GFC_COMPLEX_4)0; +- +- for (y = 0; y < ycount; y++) +- for (n = 0; n < count; n++) +- for (x = 0; x < xcount; x++) +- /* dest[x,y] += a[x,n] * b[n,y] */ +- dest[x*rxstride + y*rystride] += +- abase[x*axstride + n*aystride] * +- bbase[n*bxstride + y*bystride]; +- } + else if (GFC_DESCRIPTOR_RANK (a) == 1) + { + const GFC_COMPLEX_4 *restrict bbase_y; +@@ -607,6 +593,20 @@ matmul_c4_avx (gfc_array_c4 * const restrict retarray, + dest[y*rxstride] = s; + } + } ++ else if (axstride < aystride) ++ { ++ for (y = 0; y < ycount; y++) ++ for (x = 0; x < xcount; x++) ++ dest[x*rxstride + y*rystride] = (GFC_COMPLEX_4)0; ++ ++ for (y = 0; y < ycount; y++) ++ for (n = 0; n < count; n++) ++ for (x = 0; x < xcount; x++) ++ /* dest[x,y] += a[x,n] * b[n,y] */ ++ dest[x*rxstride + y*rystride] += ++ abase[x*axstride + n*aystride] * ++ bbase[n*bxstride + y*bystride]; ++ } + else + { + const GFC_COMPLEX_4 *restrict abase_x; +@@ -1136,20 +1136,6 @@ matmul_c4_avx2 (gfc_array_c4 * const restrict retarray, + } + } + } +- else if (axstride < aystride) +- { +- for (y = 0; y < ycount; y++) +- for (x = 0; x < xcount; x++) +- dest[x*rxstride + y*rystride] = (GFC_COMPLEX_4)0; +- +- for (y = 0; y < ycount; y++) +- for (n = 0; n < count; n++) +- for (x = 0; x < xcount; x++) +- /* dest[x,y] += a[x,n] * b[n,y] */ +- dest[x*rxstride + y*rystride] += +- abase[x*axstride + n*aystride] * +- bbase[n*bxstride + y*bystride]; +- } + else if (GFC_DESCRIPTOR_RANK (a) == 1) + { + const GFC_COMPLEX_4 *restrict bbase_y; +@@ -1164,6 +1150,20 @@ matmul_c4_avx2 (gfc_array_c4 * const restrict retarray, + dest[y*rxstride] = s; + } + } ++ else if (axstride < aystride) ++ { ++ for (y = 0; y < ycount; y++) ++ for (x = 0; x < xcount; x++) ++ dest[x*rxstride + y*rystride] = (GFC_COMPLEX_4)0; ++ ++ for (y = 0; y < ycount; y++) ++ for (n = 0; n < count; n++) ++ for (x = 0; x < xcount; x++) ++ /* dest[x,y] += a[x,n] * b[n,y] */ ++ dest[x*rxstride + y*rystride] += ++ abase[x*axstride + n*aystride] * ++ bbase[n*bxstride + y*bystride]; ++ } + else + { + const GFC_COMPLEX_4 *restrict abase_x; +@@ -1693,20 +1693,6 @@ matmul_c4_avx512f (gfc_array_c4 * const restrict retarray, + } + } + } +- else if (axstride < aystride) +- { +- for (y = 0; y < ycount; y++) +- for (x = 0; x < xcount; x++) +- dest[x*rxstride + y*rystride] = (GFC_COMPLEX_4)0; +- +- for (y = 0; y < ycount; y++) +- for (n = 0; n < count; n++) +- for (x = 0; x < xcount; x++) +- /* dest[x,y] += a[x,n] * b[n,y] */ +- dest[x*rxstride + y*rystride] += +- abase[x*axstride + n*aystride] * +- bbase[n*bxstride + y*bystride]; +- } + else if (GFC_DESCRIPTOR_RANK (a) == 1) + { + const GFC_COMPLEX_4 *restrict bbase_y; +@@ -1721,6 +1707,20 @@ matmul_c4_avx512f (gfc_array_c4 * const restrict retarray, + dest[y*rxstride] = s; + } + } ++ else if (axstride < aystride) ++ { ++ for (y = 0; y < ycount; y++) ++ for (x = 0; x < xcount; x++) ++ dest[x*rxstride + y*rystride] = (GFC_COMPLEX_4)0; ++ ++ for (y = 0; y < ycount; y++) ++ for (n = 0; n < count; n++) ++ for (x = 0; x < xcount; x++) ++ /* dest[x,y] += a[x,n] * b[n,y] */ ++ dest[x*rxstride + y*rystride] += ++ abase[x*axstride + n*aystride] * ++ bbase[n*bxstride + y*bystride]; ++ } + else + { + const GFC_COMPLEX_4 *restrict abase_x; +@@ -2264,20 +2264,6 @@ matmul_c4_vanilla (gfc_array_c4 * const restrict retarray, + } + } + } +- else if (axstride < aystride) +- { +- for (y = 0; y < ycount; y++) +- for (x = 0; x < xcount; x++) +- dest[x*rxstride + y*rystride] = (GFC_COMPLEX_4)0; +- +- for (y = 0; y < ycount; y++) +- for (n = 0; n < count; n++) +- for (x = 0; x < xcount; x++) +- /* dest[x,y] += a[x,n] * b[n,y] */ +- dest[x*rxstride + y*rystride] += +- abase[x*axstride + n*aystride] * +- bbase[n*bxstride + y*bystride]; +- } + else if (GFC_DESCRIPTOR_RANK (a) == 1) + { + const GFC_COMPLEX_4 *restrict bbase_y; +@@ -2292,6 +2278,20 @@ matmul_c4_vanilla (gfc_array_c4 * const restrict retarray, + dest[y*rxstride] = s; + } + } ++ else if (axstride < aystride) ++ { ++ for (y = 0; y < ycount; y++) ++ for (x = 0; x < xcount; x++) ++ dest[x*rxstride + y*rystride] = (GFC_COMPLEX_4)0; ++ ++ for (y = 0; y < ycount; y++) ++ for (n = 0; n < count; n++) ++ for (x = 0; x < xcount; x++) ++ /* dest[x,y] += a[x,n] * b[n,y] */ ++ dest[x*rxstride + y*rystride] += ++ abase[x*axstride + n*aystride] * ++ bbase[n*bxstride + y*bystride]; ++ } + else + { + const GFC_COMPLEX_4 *restrict abase_x; +@@ -2895,20 +2895,6 @@ matmul_c4 (gfc_array_c4 * const restrict retarray, + } + } + } +- else if (axstride < aystride) +- { +- for (y = 0; y < ycount; y++) +- for (x = 0; x < xcount; x++) +- dest[x*rxstride + y*rystride] = (GFC_COMPLEX_4)0; +- +- for (y = 0; y < ycount; y++) +- for (n = 0; n < count; n++) +- for (x = 0; x < xcount; x++) +- /* dest[x,y] += a[x,n] * b[n,y] */ +- dest[x*rxstride + y*rystride] += +- abase[x*axstride + n*aystride] * +- bbase[n*bxstride + y*bystride]; +- } + else if (GFC_DESCRIPTOR_RANK (a) == 1) + { + const GFC_COMPLEX_4 *restrict bbase_y; +@@ -2923,6 +2909,20 @@ matmul_c4 (gfc_array_c4 * const restrict retarray, + dest[y*rxstride] = s; + } + } ++ else if (axstride < aystride) ++ { ++ for (y = 0; y < ycount; y++) ++ for (x = 0; x < xcount; x++) ++ dest[x*rxstride + y*rystride] = (GFC_COMPLEX_4)0; ++ ++ for (y = 0; y < ycount; y++) ++ for (n = 0; n < count; n++) ++ for (x = 0; x < xcount; x++) ++ /* dest[x,y] += a[x,n] * b[n,y] */ ++ dest[x*rxstride + y*rystride] += ++ abase[x*axstride + n*aystride] * ++ bbase[n*bxstride + y*bystride]; ++ } + else + { + const GFC_COMPLEX_4 *restrict abase_x; +--- a/src/libgfortran/generated/matmul_c8.c ++++ b/src/libgfortran/generated/matmul_c8.c +@@ -579,20 +579,6 @@ matmul_c8_avx (gfc_array_c8 * const restrict retarray, + } + } + } +- else if (axstride < aystride) +- { +- for (y = 0; y < ycount; y++) +- for (x = 0; x < xcount; x++) +- dest[x*rxstride + y*rystride] = (GFC_COMPLEX_8)0; +- +- for (y = 0; y < ycount; y++) +- for (n = 0; n < count; n++) +- for (x = 0; x < xcount; x++) +- /* dest[x,y] += a[x,n] * b[n,y] */ +- dest[x*rxstride + y*rystride] += +- abase[x*axstride + n*aystride] * +- bbase[n*bxstride + y*bystride]; +- } + else if (GFC_DESCRIPTOR_RANK (a) == 1) + { + const GFC_COMPLEX_8 *restrict bbase_y; +@@ -607,6 +593,20 @@ matmul_c8_avx (gfc_array_c8 * const restrict retarray, + dest[y*rxstride] = s; + } + } ++ else if (axstride < aystride) ++ { ++ for (y = 0; y < ycount; y++) ++ for (x = 0; x < xcount; x++) ++ dest[x*rxstride + y*rystride] = (GFC_COMPLEX_8)0; ++ ++ for (y = 0; y < ycount; y++) ++ for (n = 0; n < count; n++) ++ for (x = 0; x < xcount; x++) ++ /* dest[x,y] += a[x,n] * b[n,y] */ ++ dest[x*rxstride + y*rystride] += ++ abase[x*axstride + n*aystride] * ++ bbase[n*bxstride + y*bystride]; ++ } + else + { + const GFC_COMPLEX_8 *restrict abase_x; +@@ -1136,20 +1136,6 @@ matmul_c8_avx2 (gfc_array_c8 * const restrict retarray, + } + } + } +- else if (axstride < aystride) +- { +- for (y = 0; y < ycount; y++) +- for (x = 0; x < xcount; x++) +- dest[x*rxstride + y*rystride] = (GFC_COMPLEX_8)0; +- +- for (y = 0; y < ycount; y++) +- for (n = 0; n < count; n++) +- for (x = 0; x < xcount; x++) +- /* dest[x,y] += a[x,n] * b[n,y] */ +- dest[x*rxstride + y*rystride] += +- abase[x*axstride + n*aystride] * +- bbase[n*bxstride + y*bystride]; +- } + else if (GFC_DESCRIPTOR_RANK (a) == 1) + { + const GFC_COMPLEX_8 *restrict bbase_y; +@@ -1164,6 +1150,20 @@ matmul_c8_avx2 (gfc_array_c8 * const restrict retarray, + dest[y*rxstride] = s; + } + } ++ else if (axstride < aystride) ++ { ++ for (y = 0; y < ycount; y++) ++ for (x = 0; x < xcount; x++) ++ dest[x*rxstride + y*rystride] = (GFC_COMPLEX_8)0; ++ ++ for (y = 0; y < ycount; y++) ++ for (n = 0; n < count; n++) ++ for (x = 0; x < xcount; x++) ++ /* dest[x,y] += a[x,n] * b[n,y] */ ++ dest[x*rxstride + y*rystride] += ++ abase[x*axstride + n*aystride] * ++ bbase[n*bxstride + y*bystride]; ++ } + else + { + const GFC_COMPLEX_8 *restrict abase_x; +@@ -1693,20 +1693,6 @@ matmul_c8_avx512f (gfc_array_c8 * const restrict retarray, + } + } + } +- else if (axstride < aystride) +- { +- for (y = 0; y < ycount; y++) +- for (x = 0; x < xcount; x++) +- dest[x*rxstride + y*rystride] = (GFC_COMPLEX_8)0; +- +- for (y = 0; y < ycount; y++) +- for (n = 0; n < count; n++) +- for (x = 0; x < xcount; x++) +- /* dest[x,y] += a[x,n] * b[n,y] */ +- dest[x*rxstride + y*rystride] += +- abase[x*axstride + n*aystride] * +- bbase[n*bxstride + y*bystride]; +- } + else if (GFC_DESCRIPTOR_RANK (a) == 1) + { + const GFC_COMPLEX_8 *restrict bbase_y; +@@ -1721,6 +1707,20 @@ matmul_c8_avx512f (gfc_array_c8 * const restrict retarray, + dest[y*rxstride] = s; + } + } ++ else if (axstride < aystride) ++ { ++ for (y = 0; y < ycount; y++) ++ for (x = 0; x < xcount; x++) ++ dest[x*rxstride + y*rystride] = (GFC_COMPLEX_8)0; ++ ++ for (y = 0; y < ycount; y++) ++ for (n = 0; n < count; n++) ++ for (x = 0; x < xcount; x++) ++ /* dest[x,y] += a[x,n] * b[n,y] */ ++ dest[x*rxstride + y*rystride] += ++ abase[x*axstride + n*aystride] * ++ bbase[n*bxstride + y*bystride]; ++ } + else + { + const GFC_COMPLEX_8 *restrict abase_x; +@@ -2264,20 +2264,6 @@ matmul_c8_vanilla (gfc_array_c8 * const restrict retarray, + } + } + } +- else if (axstride < aystride) +- { +- for (y = 0; y < ycount; y++) +- for (x = 0; x < xcount; x++) +- dest[x*rxstride + y*rystride] = (GFC_COMPLEX_8)0; +- +- for (y = 0; y < ycount; y++) +- for (n = 0; n < count; n++) +- for (x = 0; x < xcount; x++) +- /* dest[x,y] += a[x,n] * b[n,y] */ +- dest[x*rxstride + y*rystride] += +- abase[x*axstride + n*aystride] * +- bbase[n*bxstride + y*bystride]; +- } + else if (GFC_DESCRIPTOR_RANK (a) == 1) + { + const GFC_COMPLEX_8 *restrict bbase_y; +@@ -2292,6 +2278,20 @@ matmul_c8_vanilla (gfc_array_c8 * const restrict retarray, + dest[y*rxstride] = s; + } + } ++ else if (axstride < aystride) ++ { ++ for (y = 0; y < ycount; y++) ++ for (x = 0; x < xcount; x++) ++ dest[x*rxstride + y*rystride] = (GFC_COMPLEX_8)0; ++ ++ for (y = 0; y < ycount; y++) ++ for (n = 0; n < count; n++) ++ for (x = 0; x < xcount; x++) ++ /* dest[x,y] += a[x,n] * b[n,y] */ ++ dest[x*rxstride + y*rystride] += ++ abase[x*axstride + n*aystride] * ++ bbase[n*bxstride + y*bystride]; ++ } + else + { + const GFC_COMPLEX_8 *restrict abase_x; +@@ -2895,20 +2895,6 @@ matmul_c8 (gfc_array_c8 * const restrict retarray, + } + } + } +- else if (axstride < aystride) +- { +- for (y = 0; y < ycount; y++) +- for (x = 0; x < xcount; x++) +- dest[x*rxstride + y*rystride] = (GFC_COMPLEX_8)0; +- +- for (y = 0; y < ycount; y++) +- for (n = 0; n < count; n++) +- for (x = 0; x < xcount; x++) +- /* dest[x,y] += a[x,n] * b[n,y] */ +- dest[x*rxstride + y*rystride] += +- abase[x*axstride + n*aystride] * +- bbase[n*bxstride + y*bystride]; +- } + else if (GFC_DESCRIPTOR_RANK (a) == 1) + { + const GFC_COMPLEX_8 *restrict bbase_y; +@@ -2923,6 +2909,20 @@ matmul_c8 (gfc_array_c8 * const restrict retarray, + dest[y*rxstride] = s; + } + } ++ else if (axstride < aystride) ++ { ++ for (y = 0; y < ycount; y++) ++ for (x = 0; x < xcount; x++) ++ dest[x*rxstride + y*rystride] = (GFC_COMPLEX_8)0; ++ ++ for (y = 0; y < ycount; y++) ++ for (n = 0; n < count; n++) ++ for (x = 0; x < xcount; x++) ++ /* dest[x,y] += a[x,n] * b[n,y] */ ++ dest[x*rxstride + y*rystride] += ++ abase[x*axstride + n*aystride] * ++ bbase[n*bxstride + y*bystride]; ++ } + else + { + const GFC_COMPLEX_8 *restrict abase_x; +--- a/src/libgfortran/generated/matmul_i1.c ++++ b/src/libgfortran/generated/matmul_i1.c +@@ -579,20 +579,6 @@ matmul_i1_avx (gfc_array_i1 * const restrict retarray, + } + } + } +- else if (axstride < aystride) +- { +- for (y = 0; y < ycount; y++) +- for (x = 0; x < xcount; x++) +- dest[x*rxstride + y*rystride] = (GFC_INTEGER_1)0; +- +- for (y = 0; y < ycount; y++) +- for (n = 0; n < count; n++) +- for (x = 0; x < xcount; x++) +- /* dest[x,y] += a[x,n] * b[n,y] */ +- dest[x*rxstride + y*rystride] += +- abase[x*axstride + n*aystride] * +- bbase[n*bxstride + y*bystride]; +- } + else if (GFC_DESCRIPTOR_RANK (a) == 1) + { + const GFC_INTEGER_1 *restrict bbase_y; +@@ -607,6 +593,20 @@ matmul_i1_avx (gfc_array_i1 * const restrict retarray, + dest[y*rxstride] = s; + } + } ++ else if (axstride < aystride) ++ { ++ for (y = 0; y < ycount; y++) ++ for (x = 0; x < xcount; x++) ++ dest[x*rxstride + y*rystride] = (GFC_INTEGER_1)0; ++ ++ for (y = 0; y < ycount; y++) ++ for (n = 0; n < count; n++) ++ for (x = 0; x < xcount; x++) ++ /* dest[x,y] += a[x,n] * b[n,y] */ ++ dest[x*rxstride + y*rystride] += ++ abase[x*axstride + n*aystride] * ++ bbase[n*bxstride + y*bystride]; ++ } + else + { + const GFC_INTEGER_1 *restrict abase_x; +@@ -1136,20 +1136,6 @@ matmul_i1_avx2 (gfc_array_i1 * const restrict retarray, + } + } + } +- else if (axstride < aystride) +- { +- for (y = 0; y < ycount; y++) +- for (x = 0; x < xcount; x++) +- dest[x*rxstride + y*rystride] = (GFC_INTEGER_1)0; +- +- for (y = 0; y < ycount; y++) +- for (n = 0; n < count; n++) +- for (x = 0; x < xcount; x++) +- /* dest[x,y] += a[x,n] * b[n,y] */ +- dest[x*rxstride + y*rystride] += +- abase[x*axstride + n*aystride] * +- bbase[n*bxstride + y*bystride]; +- } + else if (GFC_DESCRIPTOR_RANK (a) == 1) + { + const GFC_INTEGER_1 *restrict bbase_y; +@@ -1164,6 +1150,20 @@ matmul_i1_avx2 (gfc_array_i1 * const restrict retarray, + dest[y*rxstride] = s; + } + } ++ else if (axstride < aystride) ++ { ++ for (y = 0; y < ycount; y++) ++ for (x = 0; x < xcount; x++) ++ dest[x*rxstride + y*rystride] = (GFC_INTEGER_1)0; ++ ++ for (y = 0; y < ycount; y++) ++ for (n = 0; n < count; n++) ++ for (x = 0; x < xcount; x++) ++ /* dest[x,y] += a[x,n] * b[n,y] */ ++ dest[x*rxstride + y*rystride] += ++ abase[x*axstride + n*aystride] * ++ bbase[n*bxstride + y*bystride]; ++ } + else + { + const GFC_INTEGER_1 *restrict abase_x; +@@ -1693,20 +1693,6 @@ matmul_i1_avx512f (gfc_array_i1 * const restrict retarray, + } + } + } +- else if (axstride < aystride) +- { +- for (y = 0; y < ycount; y++) +- for (x = 0; x < xcount; x++) +- dest[x*rxstride + y*rystride] = (GFC_INTEGER_1)0; +- +- for (y = 0; y < ycount; y++) +- for (n = 0; n < count; n++) +- for (x = 0; x < xcount; x++) +- /* dest[x,y] += a[x,n] * b[n,y] */ +- dest[x*rxstride + y*rystride] += +- abase[x*axstride + n*aystride] * +- bbase[n*bxstride + y*bystride]; +- } + else if (GFC_DESCRIPTOR_RANK (a) == 1) + { + const GFC_INTEGER_1 *restrict bbase_y; +@@ -1721,6 +1707,20 @@ matmul_i1_avx512f (gfc_array_i1 * const restrict retarray, + dest[y*rxstride] = s; + } + } ++ else if (axstride < aystride) ++ { ++ for (y = 0; y < ycount; y++) ++ for (x = 0; x < xcount; x++) ++ dest[x*rxstride + y*rystride] = (GFC_INTEGER_1)0; ++ ++ for (y = 0; y < ycount; y++) ++ for (n = 0; n < count; n++) ++ for (x = 0; x < xcount; x++) ++ /* dest[x,y] += a[x,n] * b[n,y] */ ++ dest[x*rxstride + y*rystride] += ++ abase[x*axstride + n*aystride] * ++ bbase[n*bxstride + y*bystride]; ++ } + else + { + const GFC_INTEGER_1 *restrict abase_x; +@@ -2264,20 +2264,6 @@ matmul_i1_vanilla (gfc_array_i1 * const restrict retarray, + } + } + } +- else if (axstride < aystride) +- { +- for (y = 0; y < ycount; y++) +- for (x = 0; x < xcount; x++) +- dest[x*rxstride + y*rystride] = (GFC_INTEGER_1)0; +- +- for (y = 0; y < ycount; y++) +- for (n = 0; n < count; n++) +- for (x = 0; x < xcount; x++) +- /* dest[x,y] += a[x,n] * b[n,y] */ +- dest[x*rxstride + y*rystride] += +- abase[x*axstride + n*aystride] * +- bbase[n*bxstride + y*bystride]; +- } + else if (GFC_DESCRIPTOR_RANK (a) == 1) + { + const GFC_INTEGER_1 *restrict bbase_y; +@@ -2292,6 +2278,20 @@ matmul_i1_vanilla (gfc_array_i1 * const restrict retarray, + dest[y*rxstride] = s; + } + } ++ else if (axstride < aystride) ++ { ++ for (y = 0; y < ycount; y++) ++ for (x = 0; x < xcount; x++) ++ dest[x*rxstride + y*rystride] = (GFC_INTEGER_1)0; ++ ++ for (y = 0; y < ycount; y++) ++ for (n = 0; n < count; n++) ++ for (x = 0; x < xcount; x++) ++ /* dest[x,y] += a[x,n] * b[n,y] */ ++ dest[x*rxstride + y*rystride] += ++ abase[x*axstride + n*aystride] * ++ bbase[n*bxstride + y*bystride]; ++ } + else + { + const GFC_INTEGER_1 *restrict abase_x; +@@ -2895,20 +2895,6 @@ matmul_i1 (gfc_array_i1 * const restrict retarray, + } + } + } +- else if (axstride < aystride) +- { +- for (y = 0; y < ycount; y++) +- for (x = 0; x < xcount; x++) +- dest[x*rxstride + y*rystride] = (GFC_INTEGER_1)0; +- +- for (y = 0; y < ycount; y++) +- for (n = 0; n < count; n++) +- for (x = 0; x < xcount; x++) +- /* dest[x,y] += a[x,n] * b[n,y] */ +- dest[x*rxstride + y*rystride] += +- abase[x*axstride + n*aystride] * +- bbase[n*bxstride + y*bystride]; +- } + else if (GFC_DESCRIPTOR_RANK (a) == 1) + { + const GFC_INTEGER_1 *restrict bbase_y; +@@ -2923,6 +2909,20 @@ matmul_i1 (gfc_array_i1 * const restrict retarray, + dest[y*rxstride] = s; + } + } ++ else if (axstride < aystride) ++ { ++ for (y = 0; y < ycount; y++) ++ for (x = 0; x < xcount; x++) ++ dest[x*rxstride + y*rystride] = (GFC_INTEGER_1)0; ++ ++ for (y = 0; y < ycount; y++) ++ for (n = 0; n < count; n++) ++ for (x = 0; x < xcount; x++) ++ /* dest[x,y] += a[x,n] * b[n,y] */ ++ dest[x*rxstride + y*rystride] += ++ abase[x*axstride + n*aystride] * ++ bbase[n*bxstride + y*bystride]; ++ } + else + { + const GFC_INTEGER_1 *restrict abase_x; +--- a/src/libgfortran/generated/matmul_i16.c ++++ b/src/libgfortran/generated/matmul_i16.c +@@ -579,20 +579,6 @@ matmul_i16_avx (gfc_array_i16 * const restrict retarray, + } + } + } +- else if (axstride < aystride) +- { +- for (y = 0; y < ycount; y++) +- for (x = 0; x < xcount; x++) +- dest[x*rxstride + y*rystride] = (GFC_INTEGER_16)0; +- +- for (y = 0; y < ycount; y++) +- for (n = 0; n < count; n++) +- for (x = 0; x < xcount; x++) +- /* dest[x,y] += a[x,n] * b[n,y] */ +- dest[x*rxstride + y*rystride] += +- abase[x*axstride + n*aystride] * +- bbase[n*bxstride + y*bystride]; +- } + else if (GFC_DESCRIPTOR_RANK (a) == 1) + { + const GFC_INTEGER_16 *restrict bbase_y; +@@ -607,6 +593,20 @@ matmul_i16_avx (gfc_array_i16 * const restrict retarray, + dest[y*rxstride] = s; + } + } ++ else if (axstride < aystride) ++ { ++ for (y = 0; y < ycount; y++) ++ for (x = 0; x < xcount; x++) ++ dest[x*rxstride + y*rystride] = (GFC_INTEGER_16)0; ++ ++ for (y = 0; y < ycount; y++) ++ for (n = 0; n < count; n++) ++ for (x = 0; x < xcount; x++) ++ /* dest[x,y] += a[x,n] * b[n,y] */ ++ dest[x*rxstride + y*rystride] += ++ abase[x*axstride + n*aystride] * ++ bbase[n*bxstride + y*bystride]; ++ } + else + { + const GFC_INTEGER_16 *restrict abase_x; +@@ -1136,20 +1136,6 @@ matmul_i16_avx2 (gfc_array_i16 * const restrict retarray, + } + } + } +- else if (axstride < aystride) +- { +- for (y = 0; y < ycount; y++) +- for (x = 0; x < xcount; x++) +- dest[x*rxstride + y*rystride] = (GFC_INTEGER_16)0; +- +- for (y = 0; y < ycount; y++) +- for (n = 0; n < count; n++) +- for (x = 0; x < xcount; x++) +- /* dest[x,y] += a[x,n] * b[n,y] */ +- dest[x*rxstride + y*rystride] += +- abase[x*axstride + n*aystride] * +- bbase[n*bxstride + y*bystride]; +- } + else if (GFC_DESCRIPTOR_RANK (a) == 1) + { + const GFC_INTEGER_16 *restrict bbase_y; +@@ -1164,6 +1150,20 @@ matmul_i16_avx2 (gfc_array_i16 * const restrict retarray, + dest[y*rxstride] = s; + } + } ++ else if (axstride < aystride) ++ { ++ for (y = 0; y < ycount; y++) ++ for (x = 0; x < xcount; x++) ++ dest[x*rxstride + y*rystride] = (GFC_INTEGER_16)0; ++ ++ for (y = 0; y < ycount; y++) ++ for (n = 0; n < count; n++) ++ for (x = 0; x < xcount; x++) ++ /* dest[x,y] += a[x,n] * b[n,y] */ ++ dest[x*rxstride + y*rystride] += ++ abase[x*axstride + n*aystride] * ++ bbase[n*bxstride + y*bystride]; ++ } + else + { + const GFC_INTEGER_16 *restrict abase_x; +@@ -1693,20 +1693,6 @@ matmul_i16_avx512f (gfc_array_i16 * const restrict retarray, + } + } + } +- else if (axstride < aystride) +- { +- for (y = 0; y < ycount; y++) +- for (x = 0; x < xcount; x++) +- dest[x*rxstride + y*rystride] = (GFC_INTEGER_16)0; +- +- for (y = 0; y < ycount; y++) +- for (n = 0; n < count; n++) +- for (x = 0; x < xcount; x++) +- /* dest[x,y] += a[x,n] * b[n,y] */ +- dest[x*rxstride + y*rystride] += +- abase[x*axstride + n*aystride] * +- bbase[n*bxstride + y*bystride]; +- } + else if (GFC_DESCRIPTOR_RANK (a) == 1) + { + const GFC_INTEGER_16 *restrict bbase_y; +@@ -1721,6 +1707,20 @@ matmul_i16_avx512f (gfc_array_i16 * const restrict retarray, + dest[y*rxstride] = s; + } + } ++ else if (axstride < aystride) ++ { ++ for (y = 0; y < ycount; y++) ++ for (x = 0; x < xcount; x++) ++ dest[x*rxstride + y*rystride] = (GFC_INTEGER_16)0; ++ ++ for (y = 0; y < ycount; y++) ++ for (n = 0; n < count; n++) ++ for (x = 0; x < xcount; x++) ++ /* dest[x,y] += a[x,n] * b[n,y] */ ++ dest[x*rxstride + y*rystride] += ++ abase[x*axstride + n*aystride] * ++ bbase[n*bxstride + y*bystride]; ++ } + else + { + const GFC_INTEGER_16 *restrict abase_x; +@@ -2264,20 +2264,6 @@ matmul_i16_vanilla (gfc_array_i16 * const restrict retarray, + } + } + } +- else if (axstride < aystride) +- { +- for (y = 0; y < ycount; y++) +- for (x = 0; x < xcount; x++) +- dest[x*rxstride + y*rystride] = (GFC_INTEGER_16)0; +- +- for (y = 0; y < ycount; y++) +- for (n = 0; n < count; n++) +- for (x = 0; x < xcount; x++) +- /* dest[x,y] += a[x,n] * b[n,y] */ +- dest[x*rxstride + y*rystride] += +- abase[x*axstride + n*aystride] * +- bbase[n*bxstride + y*bystride]; +- } + else if (GFC_DESCRIPTOR_RANK (a) == 1) + { + const GFC_INTEGER_16 *restrict bbase_y; +@@ -2292,6 +2278,20 @@ matmul_i16_vanilla (gfc_array_i16 * const restrict retarray, + dest[y*rxstride] = s; + } + } ++ else if (axstride < aystride) ++ { ++ for (y = 0; y < ycount; y++) ++ for (x = 0; x < xcount; x++) ++ dest[x*rxstride + y*rystride] = (GFC_INTEGER_16)0; ++ ++ for (y = 0; y < ycount; y++) ++ for (n = 0; n < count; n++) ++ for (x = 0; x < xcount; x++) ++ /* dest[x,y] += a[x,n] * b[n,y] */ ++ dest[x*rxstride + y*rystride] += ++ abase[x*axstride + n*aystride] * ++ bbase[n*bxstride + y*bystride]; ++ } + else + { + const GFC_INTEGER_16 *restrict abase_x; +@@ -2895,20 +2895,6 @@ matmul_i16 (gfc_array_i16 * const restrict retarray, + } + } + } +- else if (axstride < aystride) +- { +- for (y = 0; y < ycount; y++) +- for (x = 0; x < xcount; x++) +- dest[x*rxstride + y*rystride] = (GFC_INTEGER_16)0; +- +- for (y = 0; y < ycount; y++) +- for (n = 0; n < count; n++) +- for (x = 0; x < xcount; x++) +- /* dest[x,y] += a[x,n] * b[n,y] */ +- dest[x*rxstride + y*rystride] += +- abase[x*axstride + n*aystride] * +- bbase[n*bxstride + y*bystride]; +- } + else if (GFC_DESCRIPTOR_RANK (a) == 1) + { + const GFC_INTEGER_16 *restrict bbase_y; +@@ -2923,6 +2909,20 @@ matmul_i16 (gfc_array_i16 * const restrict retarray, + dest[y*rxstride] = s; + } + } ++ else if (axstride < aystride) ++ { ++ for (y = 0; y < ycount; y++) ++ for (x = 0; x < xcount; x++) ++ dest[x*rxstride + y*rystride] = (GFC_INTEGER_16)0; ++ ++ for (y = 0; y < ycount; y++) ++ for (n = 0; n < count; n++) ++ for (x = 0; x < xcount; x++) ++ /* dest[x,y] += a[x,n] * b[n,y] */ ++ dest[x*rxstride + y*rystride] += ++ abase[x*axstride + n*aystride] * ++ bbase[n*bxstride + y*bystride]; ++ } + else + { + const GFC_INTEGER_16 *restrict abase_x; +--- a/src/libgfortran/generated/matmul_i2.c ++++ b/src/libgfortran/generated/matmul_i2.c +@@ -579,20 +579,6 @@ matmul_i2_avx (gfc_array_i2 * const restrict retarray, + } + } + } +- else if (axstride < aystride) +- { +- for (y = 0; y < ycount; y++) +- for (x = 0; x < xcount; x++) +- dest[x*rxstride + y*rystride] = (GFC_INTEGER_2)0; +- +- for (y = 0; y < ycount; y++) +- for (n = 0; n < count; n++) +- for (x = 0; x < xcount; x++) +- /* dest[x,y] += a[x,n] * b[n,y] */ +- dest[x*rxstride + y*rystride] += +- abase[x*axstride + n*aystride] * +- bbase[n*bxstride + y*bystride]; +- } + else if (GFC_DESCRIPTOR_RANK (a) == 1) + { + const GFC_INTEGER_2 *restrict bbase_y; +@@ -607,6 +593,20 @@ matmul_i2_avx (gfc_array_i2 * const restrict retarray, + dest[y*rxstride] = s; + } + } ++ else if (axstride < aystride) ++ { ++ for (y = 0; y < ycount; y++) ++ for (x = 0; x < xcount; x++) ++ dest[x*rxstride + y*rystride] = (GFC_INTEGER_2)0; ++ ++ for (y = 0; y < ycount; y++) ++ for (n = 0; n < count; n++) ++ for (x = 0; x < xcount; x++) ++ /* dest[x,y] += a[x,n] * b[n,y] */ ++ dest[x*rxstride + y*rystride] += ++ abase[x*axstride + n*aystride] * ++ bbase[n*bxstride + y*bystride]; ++ } + else + { + const GFC_INTEGER_2 *restrict abase_x; +@@ -1136,20 +1136,6 @@ matmul_i2_avx2 (gfc_array_i2 * const restrict retarray, + } + } + } +- else if (axstride < aystride) +- { +- for (y = 0; y < ycount; y++) +- for (x = 0; x < xcount; x++) +- dest[x*rxstride + y*rystride] = (GFC_INTEGER_2)0; +- +- for (y = 0; y < ycount; y++) +- for (n = 0; n < count; n++) +- for (x = 0; x < xcount; x++) +- /* dest[x,y] += a[x,n] * b[n,y] */ +- dest[x*rxstride + y*rystride] += +- abase[x*axstride + n*aystride] * +- bbase[n*bxstride + y*bystride]; +- } + else if (GFC_DESCRIPTOR_RANK (a) == 1) + { + const GFC_INTEGER_2 *restrict bbase_y; +@@ -1164,6 +1150,20 @@ matmul_i2_avx2 (gfc_array_i2 * const restrict retarray, + dest[y*rxstride] = s; + } + } ++ else if (axstride < aystride) ++ { ++ for (y = 0; y < ycount; y++) ++ for (x = 0; x < xcount; x++) ++ dest[x*rxstride + y*rystride] = (GFC_INTEGER_2)0; ++ ++ for (y = 0; y < ycount; y++) ++ for (n = 0; n < count; n++) ++ for (x = 0; x < xcount; x++) ++ /* dest[x,y] += a[x,n] * b[n,y] */ ++ dest[x*rxstride + y*rystride] += ++ abase[x*axstride + n*aystride] * ++ bbase[n*bxstride + y*bystride]; ++ } + else + { + const GFC_INTEGER_2 *restrict abase_x; +@@ -1693,20 +1693,6 @@ matmul_i2_avx512f (gfc_array_i2 * const restrict retarray, + } + } + } +- else if (axstride < aystride) +- { +- for (y = 0; y < ycount; y++) +- for (x = 0; x < xcount; x++) +- dest[x*rxstride + y*rystride] = (GFC_INTEGER_2)0; +- +- for (y = 0; y < ycount; y++) +- for (n = 0; n < count; n++) +- for (x = 0; x < xcount; x++) +- /* dest[x,y] += a[x,n] * b[n,y] */ +- dest[x*rxstride + y*rystride] += +- abase[x*axstride + n*aystride] * +- bbase[n*bxstride + y*bystride]; +- } + else if (GFC_DESCRIPTOR_RANK (a) == 1) + { + const GFC_INTEGER_2 *restrict bbase_y; +@@ -1721,6 +1707,20 @@ matmul_i2_avx512f (gfc_array_i2 * const restrict retarray, + dest[y*rxstride] = s; + } + } ++ else if (axstride < aystride) ++ { ++ for (y = 0; y < ycount; y++) ++ for (x = 0; x < xcount; x++) ++ dest[x*rxstride + y*rystride] = (GFC_INTEGER_2)0; ++ ++ for (y = 0; y < ycount; y++) ++ for (n = 0; n < count; n++) ++ for (x = 0; x < xcount; x++) ++ /* dest[x,y] += a[x,n] * b[n,y] */ ++ dest[x*rxstride + y*rystride] += ++ abase[x*axstride + n*aystride] * ++ bbase[n*bxstride + y*bystride]; ++ } + else + { + const GFC_INTEGER_2 *restrict abase_x; +@@ -2264,20 +2264,6 @@ matmul_i2_vanilla (gfc_array_i2 * const restrict retarray, + } + } + } +- else if (axstride < aystride) +- { +- for (y = 0; y < ycount; y++) +- for (x = 0; x < xcount; x++) +- dest[x*rxstride + y*rystride] = (GFC_INTEGER_2)0; +- +- for (y = 0; y < ycount; y++) +- for (n = 0; n < count; n++) +- for (x = 0; x < xcount; x++) +- /* dest[x,y] += a[x,n] * b[n,y] */ +- dest[x*rxstride + y*rystride] += +- abase[x*axstride + n*aystride] * +- bbase[n*bxstride + y*bystride]; +- } + else if (GFC_DESCRIPTOR_RANK (a) == 1) + { + const GFC_INTEGER_2 *restrict bbase_y; +@@ -2292,6 +2278,20 @@ matmul_i2_vanilla (gfc_array_i2 * const restrict retarray, + dest[y*rxstride] = s; + } + } ++ else if (axstride < aystride) ++ { ++ for (y = 0; y < ycount; y++) ++ for (x = 0; x < xcount; x++) ++ dest[x*rxstride + y*rystride] = (GFC_INTEGER_2)0; ++ ++ for (y = 0; y < ycount; y++) ++ for (n = 0; n < count; n++) ++ for (x = 0; x < xcount; x++) ++ /* dest[x,y] += a[x,n] * b[n,y] */ ++ dest[x*rxstride + y*rystride] += ++ abase[x*axstride + n*aystride] * ++ bbase[n*bxstride + y*bystride]; ++ } + else + { + const GFC_INTEGER_2 *restrict abase_x; +@@ -2895,20 +2895,6 @@ matmul_i2 (gfc_array_i2 * const restrict retarray, + } + } + } +- else if (axstride < aystride) +- { +- for (y = 0; y < ycount; y++) +- for (x = 0; x < xcount; x++) +- dest[x*rxstride + y*rystride] = (GFC_INTEGER_2)0; +- +- for (y = 0; y < ycount; y++) +- for (n = 0; n < count; n++) +- for (x = 0; x < xcount; x++) +- /* dest[x,y] += a[x,n] * b[n,y] */ +- dest[x*rxstride + y*rystride] += +- abase[x*axstride + n*aystride] * +- bbase[n*bxstride + y*bystride]; +- } + else if (GFC_DESCRIPTOR_RANK (a) == 1) + { + const GFC_INTEGER_2 *restrict bbase_y; +@@ -2923,6 +2909,20 @@ matmul_i2 (gfc_array_i2 * const restrict retarray, + dest[y*rxstride] = s; + } + } ++ else if (axstride < aystride) ++ { ++ for (y = 0; y < ycount; y++) ++ for (x = 0; x < xcount; x++) ++ dest[x*rxstride + y*rystride] = (GFC_INTEGER_2)0; ++ ++ for (y = 0; y < ycount; y++) ++ for (n = 0; n < count; n++) ++ for (x = 0; x < xcount; x++) ++ /* dest[x,y] += a[x,n] * b[n,y] */ ++ dest[x*rxstride + y*rystride] += ++ abase[x*axstride + n*aystride] * ++ bbase[n*bxstride + y*bystride]; ++ } + else + { + const GFC_INTEGER_2 *restrict abase_x; +--- a/src/libgfortran/generated/matmul_i4.c ++++ b/src/libgfortran/generated/matmul_i4.c +@@ -579,20 +579,6 @@ matmul_i4_avx (gfc_array_i4 * const restrict retarray, + } + } + } +- else if (axstride < aystride) +- { +- for (y = 0; y < ycount; y++) +- for (x = 0; x < xcount; x++) +- dest[x*rxstride + y*rystride] = (GFC_INTEGER_4)0; +- +- for (y = 0; y < ycount; y++) +- for (n = 0; n < count; n++) +- for (x = 0; x < xcount; x++) +- /* dest[x,y] += a[x,n] * b[n,y] */ +- dest[x*rxstride + y*rystride] += +- abase[x*axstride + n*aystride] * +- bbase[n*bxstride + y*bystride]; +- } + else if (GFC_DESCRIPTOR_RANK (a) == 1) + { + const GFC_INTEGER_4 *restrict bbase_y; +@@ -607,6 +593,20 @@ matmul_i4_avx (gfc_array_i4 * const restrict retarray, + dest[y*rxstride] = s; + } + } ++ else if (axstride < aystride) ++ { ++ for (y = 0; y < ycount; y++) ++ for (x = 0; x < xcount; x++) ++ dest[x*rxstride + y*rystride] = (GFC_INTEGER_4)0; ++ ++ for (y = 0; y < ycount; y++) ++ for (n = 0; n < count; n++) ++ for (x = 0; x < xcount; x++) ++ /* dest[x,y] += a[x,n] * b[n,y] */ ++ dest[x*rxstride + y*rystride] += ++ abase[x*axstride + n*aystride] * ++ bbase[n*bxstride + y*bystride]; ++ } + else + { + const GFC_INTEGER_4 *restrict abase_x; +@@ -1136,20 +1136,6 @@ matmul_i4_avx2 (gfc_array_i4 * const restrict retarray, + } + } + } +- else if (axstride < aystride) +- { +- for (y = 0; y < ycount; y++) +- for (x = 0; x < xcount; x++) +- dest[x*rxstride + y*rystride] = (GFC_INTEGER_4)0; +- +- for (y = 0; y < ycount; y++) +- for (n = 0; n < count; n++) +- for (x = 0; x < xcount; x++) +- /* dest[x,y] += a[x,n] * b[n,y] */ +- dest[x*rxstride + y*rystride] += +- abase[x*axstride + n*aystride] * +- bbase[n*bxstride + y*bystride]; +- } + else if (GFC_DESCRIPTOR_RANK (a) == 1) + { + const GFC_INTEGER_4 *restrict bbase_y; +@@ -1164,6 +1150,20 @@ matmul_i4_avx2 (gfc_array_i4 * const restrict retarray, + dest[y*rxstride] = s; + } + } ++ else if (axstride < aystride) ++ { ++ for (y = 0; y < ycount; y++) ++ for (x = 0; x < xcount; x++) ++ dest[x*rxstride + y*rystride] = (GFC_INTEGER_4)0; ++ ++ for (y = 0; y < ycount; y++) ++ for (n = 0; n < count; n++) ++ for (x = 0; x < xcount; x++) ++ /* dest[x,y] += a[x,n] * b[n,y] */ ++ dest[x*rxstride + y*rystride] += ++ abase[x*axstride + n*aystride] * ++ bbase[n*bxstride + y*bystride]; ++ } + else + { + const GFC_INTEGER_4 *restrict abase_x; +@@ -1693,20 +1693,6 @@ matmul_i4_avx512f (gfc_array_i4 * const restrict retarray, + } + } + } +- else if (axstride < aystride) +- { +- for (y = 0; y < ycount; y++) +- for (x = 0; x < xcount; x++) +- dest[x*rxstride + y*rystride] = (GFC_INTEGER_4)0; +- +- for (y = 0; y < ycount; y++) +- for (n = 0; n < count; n++) +- for (x = 0; x < xcount; x++) +- /* dest[x,y] += a[x,n] * b[n,y] */ +- dest[x*rxstride + y*rystride] += +- abase[x*axstride + n*aystride] * +- bbase[n*bxstride + y*bystride]; +- } + else if (GFC_DESCRIPTOR_RANK (a) == 1) + { + const GFC_INTEGER_4 *restrict bbase_y; +@@ -1721,6 +1707,20 @@ matmul_i4_avx512f (gfc_array_i4 * const restrict retarray, + dest[y*rxstride] = s; + } + } ++ else if (axstride < aystride) ++ { ++ for (y = 0; y < ycount; y++) ++ for (x = 0; x < xcount; x++) ++ dest[x*rxstride + y*rystride] = (GFC_INTEGER_4)0; ++ ++ for (y = 0; y < ycount; y++) ++ for (n = 0; n < count; n++) ++ for (x = 0; x < xcount; x++) ++ /* dest[x,y] += a[x,n] * b[n,y] */ ++ dest[x*rxstride + y*rystride] += ++ abase[x*axstride + n*aystride] * ++ bbase[n*bxstride + y*bystride]; ++ } + else + { + const GFC_INTEGER_4 *restrict abase_x; +@@ -2264,20 +2264,6 @@ matmul_i4_vanilla (gfc_array_i4 * const restrict retarray, + } + } + } +- else if (axstride < aystride) +- { +- for (y = 0; y < ycount; y++) +- for (x = 0; x < xcount; x++) +- dest[x*rxstride + y*rystride] = (GFC_INTEGER_4)0; +- +- for (y = 0; y < ycount; y++) +- for (n = 0; n < count; n++) +- for (x = 0; x < xcount; x++) +- /* dest[x,y] += a[x,n] * b[n,y] */ +- dest[x*rxstride + y*rystride] += +- abase[x*axstride + n*aystride] * +- bbase[n*bxstride + y*bystride]; +- } + else if (GFC_DESCRIPTOR_RANK (a) == 1) + { + const GFC_INTEGER_4 *restrict bbase_y; +@@ -2292,6 +2278,20 @@ matmul_i4_vanilla (gfc_array_i4 * const restrict retarray, + dest[y*rxstride] = s; + } + } ++ else if (axstride < aystride) ++ { ++ for (y = 0; y < ycount; y++) ++ for (x = 0; x < xcount; x++) ++ dest[x*rxstride + y*rystride] = (GFC_INTEGER_4)0; ++ ++ for (y = 0; y < ycount; y++) ++ for (n = 0; n < count; n++) ++ for (x = 0; x < xcount; x++) ++ /* dest[x,y] += a[x,n] * b[n,y] */ ++ dest[x*rxstride + y*rystride] += ++ abase[x*axstride + n*aystride] * ++ bbase[n*bxstride + y*bystride]; ++ } + else + { + const GFC_INTEGER_4 *restrict abase_x; +@@ -2895,20 +2895,6 @@ matmul_i4 (gfc_array_i4 * const restrict retarray, + } + } + } +- else if (axstride < aystride) +- { +- for (y = 0; y < ycount; y++) +- for (x = 0; x < xcount; x++) +- dest[x*rxstride + y*rystride] = (GFC_INTEGER_4)0; +- +- for (y = 0; y < ycount; y++) +- for (n = 0; n < count; n++) +- for (x = 0; x < xcount; x++) +- /* dest[x,y] += a[x,n] * b[n,y] */ +- dest[x*rxstride + y*rystride] += +- abase[x*axstride + n*aystride] * +- bbase[n*bxstride + y*bystride]; +- } + else if (GFC_DESCRIPTOR_RANK (a) == 1) + { + const GFC_INTEGER_4 *restrict bbase_y; +@@ -2923,6 +2909,20 @@ matmul_i4 (gfc_array_i4 * const restrict retarray, + dest[y*rxstride] = s; + } + } ++ else if (axstride < aystride) ++ { ++ for (y = 0; y < ycount; y++) ++ for (x = 0; x < xcount; x++) ++ dest[x*rxstride + y*rystride] = (GFC_INTEGER_4)0; ++ ++ for (y = 0; y < ycount; y++) ++ for (n = 0; n < count; n++) ++ for (x = 0; x < xcount; x++) ++ /* dest[x,y] += a[x,n] * b[n,y] */ ++ dest[x*rxstride + y*rystride] += ++ abase[x*axstride + n*aystride] * ++ bbase[n*bxstride + y*bystride]; ++ } + else + { + const GFC_INTEGER_4 *restrict abase_x; +--- a/src/libgfortran/generated/matmul_i8.c ++++ b/src/libgfortran/generated/matmul_i8.c +@@ -579,20 +579,6 @@ matmul_i8_avx (gfc_array_i8 * const restrict retarray, + } + } + } +- else if (axstride < aystride) +- { +- for (y = 0; y < ycount; y++) +- for (x = 0; x < xcount; x++) +- dest[x*rxstride + y*rystride] = (GFC_INTEGER_8)0; +- +- for (y = 0; y < ycount; y++) +- for (n = 0; n < count; n++) +- for (x = 0; x < xcount; x++) +- /* dest[x,y] += a[x,n] * b[n,y] */ +- dest[x*rxstride + y*rystride] += +- abase[x*axstride + n*aystride] * +- bbase[n*bxstride + y*bystride]; +- } + else if (GFC_DESCRIPTOR_RANK (a) == 1) + { + const GFC_INTEGER_8 *restrict bbase_y; +@@ -607,6 +593,20 @@ matmul_i8_avx (gfc_array_i8 * const restrict retarray, + dest[y*rxstride] = s; + } + } ++ else if (axstride < aystride) ++ { ++ for (y = 0; y < ycount; y++) ++ for (x = 0; x < xcount; x++) ++ dest[x*rxstride + y*rystride] = (GFC_INTEGER_8)0; ++ ++ for (y = 0; y < ycount; y++) ++ for (n = 0; n < count; n++) ++ for (x = 0; x < xcount; x++) ++ /* dest[x,y] += a[x,n] * b[n,y] */ ++ dest[x*rxstride + y*rystride] += ++ abase[x*axstride + n*aystride] * ++ bbase[n*bxstride + y*bystride]; ++ } + else + { + const GFC_INTEGER_8 *restrict abase_x; +@@ -1136,20 +1136,6 @@ matmul_i8_avx2 (gfc_array_i8 * const restrict retarray, + } + } + } +- else if (axstride < aystride) +- { +- for (y = 0; y < ycount; y++) +- for (x = 0; x < xcount; x++) +- dest[x*rxstride + y*rystride] = (GFC_INTEGER_8)0; +- +- for (y = 0; y < ycount; y++) +- for (n = 0; n < count; n++) +- for (x = 0; x < xcount; x++) +- /* dest[x,y] += a[x,n] * b[n,y] */ +- dest[x*rxstride + y*rystride] += +- abase[x*axstride + n*aystride] * +- bbase[n*bxstride + y*bystride]; +- } + else if (GFC_DESCRIPTOR_RANK (a) == 1) + { + const GFC_INTEGER_8 *restrict bbase_y; +@@ -1164,6 +1150,20 @@ matmul_i8_avx2 (gfc_array_i8 * const restrict retarray, + dest[y*rxstride] = s; + } + } ++ else if (axstride < aystride) ++ { ++ for (y = 0; y < ycount; y++) ++ for (x = 0; x < xcount; x++) ++ dest[x*rxstride + y*rystride] = (GFC_INTEGER_8)0; ++ ++ for (y = 0; y < ycount; y++) ++ for (n = 0; n < count; n++) ++ for (x = 0; x < xcount; x++) ++ /* dest[x,y] += a[x,n] * b[n,y] */ ++ dest[x*rxstride + y*rystride] += ++ abase[x*axstride + n*aystride] * ++ bbase[n*bxstride + y*bystride]; ++ } + else + { + const GFC_INTEGER_8 *restrict abase_x; +@@ -1693,20 +1693,6 @@ matmul_i8_avx512f (gfc_array_i8 * const restrict retarray, + } + } + } +- else if (axstride < aystride) +- { +- for (y = 0; y < ycount; y++) +- for (x = 0; x < xcount; x++) +- dest[x*rxstride + y*rystride] = (GFC_INTEGER_8)0; +- +- for (y = 0; y < ycount; y++) +- for (n = 0; n < count; n++) +- for (x = 0; x < xcount; x++) +- /* dest[x,y] += a[x,n] * b[n,y] */ +- dest[x*rxstride + y*rystride] += +- abase[x*axstride + n*aystride] * +- bbase[n*bxstride + y*bystride]; +- } + else if (GFC_DESCRIPTOR_RANK (a) == 1) + { + const GFC_INTEGER_8 *restrict bbase_y; +@@ -1721,6 +1707,20 @@ matmul_i8_avx512f (gfc_array_i8 * const restrict retarray, + dest[y*rxstride] = s; + } + } ++ else if (axstride < aystride) ++ { ++ for (y = 0; y < ycount; y++) ++ for (x = 0; x < xcount; x++) ++ dest[x*rxstride + y*rystride] = (GFC_INTEGER_8)0; ++ ++ for (y = 0; y < ycount; y++) ++ for (n = 0; n < count; n++) ++ for (x = 0; x < xcount; x++) ++ /* dest[x,y] += a[x,n] * b[n,y] */ ++ dest[x*rxstride + y*rystride] += ++ abase[x*axstride + n*aystride] * ++ bbase[n*bxstride + y*bystride]; ++ } + else + { + const GFC_INTEGER_8 *restrict abase_x; +@@ -2264,20 +2264,6 @@ matmul_i8_vanilla (gfc_array_i8 * const restrict retarray, + } + } + } +- else if (axstride < aystride) +- { +- for (y = 0; y < ycount; y++) +- for (x = 0; x < xcount; x++) +- dest[x*rxstride + y*rystride] = (GFC_INTEGER_8)0; +- +- for (y = 0; y < ycount; y++) +- for (n = 0; n < count; n++) +- for (x = 0; x < xcount; x++) +- /* dest[x,y] += a[x,n] * b[n,y] */ +- dest[x*rxstride + y*rystride] += +- abase[x*axstride + n*aystride] * +- bbase[n*bxstride + y*bystride]; +- } + else if (GFC_DESCRIPTOR_RANK (a) == 1) + { + const GFC_INTEGER_8 *restrict bbase_y; +@@ -2292,6 +2278,20 @@ matmul_i8_vanilla (gfc_array_i8 * const restrict retarray, + dest[y*rxstride] = s; + } + } ++ else if (axstride < aystride) ++ { ++ for (y = 0; y < ycount; y++) ++ for (x = 0; x < xcount; x++) ++ dest[x*rxstride + y*rystride] = (GFC_INTEGER_8)0; ++ ++ for (y = 0; y < ycount; y++) ++ for (n = 0; n < count; n++) ++ for (x = 0; x < xcount; x++) ++ /* dest[x,y] += a[x,n] * b[n,y] */ ++ dest[x*rxstride + y*rystride] += ++ abase[x*axstride + n*aystride] * ++ bbase[n*bxstride + y*bystride]; ++ } + else + { + const GFC_INTEGER_8 *restrict abase_x; +@@ -2895,20 +2895,6 @@ matmul_i8 (gfc_array_i8 * const restrict retarray, + } + } + } +- else if (axstride < aystride) +- { +- for (y = 0; y < ycount; y++) +- for (x = 0; x < xcount; x++) +- dest[x*rxstride + y*rystride] = (GFC_INTEGER_8)0; +- +- for (y = 0; y < ycount; y++) +- for (n = 0; n < count; n++) +- for (x = 0; x < xcount; x++) +- /* dest[x,y] += a[x,n] * b[n,y] */ +- dest[x*rxstride + y*rystride] += +- abase[x*axstride + n*aystride] * +- bbase[n*bxstride + y*bystride]; +- } + else if (GFC_DESCRIPTOR_RANK (a) == 1) + { + const GFC_INTEGER_8 *restrict bbase_y; +@@ -2923,6 +2909,20 @@ matmul_i8 (gfc_array_i8 * const restrict retarray, + dest[y*rxstride] = s; + } + } ++ else if (axstride < aystride) ++ { ++ for (y = 0; y < ycount; y++) ++ for (x = 0; x < xcount; x++) ++ dest[x*rxstride + y*rystride] = (GFC_INTEGER_8)0; ++ ++ for (y = 0; y < ycount; y++) ++ for (n = 0; n < count; n++) ++ for (x = 0; x < xcount; x++) ++ /* dest[x,y] += a[x,n] * b[n,y] */ ++ dest[x*rxstride + y*rystride] += ++ abase[x*axstride + n*aystride] * ++ bbase[n*bxstride + y*bystride]; ++ } + else + { + const GFC_INTEGER_8 *restrict abase_x; +--- a/src/libgfortran/generated/matmul_r10.c ++++ b/src/libgfortran/generated/matmul_r10.c +@@ -579,20 +579,6 @@ matmul_r10_avx (gfc_array_r10 * const restrict retarray, + } + } + } +- else if (axstride < aystride) +- { +- for (y = 0; y < ycount; y++) +- for (x = 0; x < xcount; x++) +- dest[x*rxstride + y*rystride] = (GFC_REAL_10)0; +- +- for (y = 0; y < ycount; y++) +- for (n = 0; n < count; n++) +- for (x = 0; x < xcount; x++) +- /* dest[x,y] += a[x,n] * b[n,y] */ +- dest[x*rxstride + y*rystride] += +- abase[x*axstride + n*aystride] * +- bbase[n*bxstride + y*bystride]; +- } + else if (GFC_DESCRIPTOR_RANK (a) == 1) + { + const GFC_REAL_10 *restrict bbase_y; +@@ -607,6 +593,20 @@ matmul_r10_avx (gfc_array_r10 * const restrict retarray, + dest[y*rxstride] = s; + } + } ++ else if (axstride < aystride) ++ { ++ for (y = 0; y < ycount; y++) ++ for (x = 0; x < xcount; x++) ++ dest[x*rxstride + y*rystride] = (GFC_REAL_10)0; ++ ++ for (y = 0; y < ycount; y++) ++ for (n = 0; n < count; n++) ++ for (x = 0; x < xcount; x++) ++ /* dest[x,y] += a[x,n] * b[n,y] */ ++ dest[x*rxstride + y*rystride] += ++ abase[x*axstride + n*aystride] * ++ bbase[n*bxstride + y*bystride]; ++ } + else + { + const GFC_REAL_10 *restrict abase_x; +@@ -1136,20 +1136,6 @@ matmul_r10_avx2 (gfc_array_r10 * const restrict retarray, + } + } + } +- else if (axstride < aystride) +- { +- for (y = 0; y < ycount; y++) +- for (x = 0; x < xcount; x++) +- dest[x*rxstride + y*rystride] = (GFC_REAL_10)0; +- +- for (y = 0; y < ycount; y++) +- for (n = 0; n < count; n++) +- for (x = 0; x < xcount; x++) +- /* dest[x,y] += a[x,n] * b[n,y] */ +- dest[x*rxstride + y*rystride] += +- abase[x*axstride + n*aystride] * +- bbase[n*bxstride + y*bystride]; +- } + else if (GFC_DESCRIPTOR_RANK (a) == 1) + { + const GFC_REAL_10 *restrict bbase_y; +@@ -1164,6 +1150,20 @@ matmul_r10_avx2 (gfc_array_r10 * const restrict retarray, + dest[y*rxstride] = s; + } + } ++ else if (axstride < aystride) ++ { ++ for (y = 0; y < ycount; y++) ++ for (x = 0; x < xcount; x++) ++ dest[x*rxstride + y*rystride] = (GFC_REAL_10)0; ++ ++ for (y = 0; y < ycount; y++) ++ for (n = 0; n < count; n++) ++ for (x = 0; x < xcount; x++) ++ /* dest[x,y] += a[x,n] * b[n,y] */ ++ dest[x*rxstride + y*rystride] += ++ abase[x*axstride + n*aystride] * ++ bbase[n*bxstride + y*bystride]; ++ } + else + { + const GFC_REAL_10 *restrict abase_x; +@@ -1693,20 +1693,6 @@ matmul_r10_avx512f (gfc_array_r10 * const restrict retarray, + } + } + } +- else if (axstride < aystride) +- { +- for (y = 0; y < ycount; y++) +- for (x = 0; x < xcount; x++) +- dest[x*rxstride + y*rystride] = (GFC_REAL_10)0; +- +- for (y = 0; y < ycount; y++) +- for (n = 0; n < count; n++) +- for (x = 0; x < xcount; x++) +- /* dest[x,y] += a[x,n] * b[n,y] */ +- dest[x*rxstride + y*rystride] += +- abase[x*axstride + n*aystride] * +- bbase[n*bxstride + y*bystride]; +- } + else if (GFC_DESCRIPTOR_RANK (a) == 1) + { + const GFC_REAL_10 *restrict bbase_y; +@@ -1721,6 +1707,20 @@ matmul_r10_avx512f (gfc_array_r10 * const restrict retarray, + dest[y*rxstride] = s; + } + } ++ else if (axstride < aystride) ++ { ++ for (y = 0; y < ycount; y++) ++ for (x = 0; x < xcount; x++) ++ dest[x*rxstride + y*rystride] = (GFC_REAL_10)0; ++ ++ for (y = 0; y < ycount; y++) ++ for (n = 0; n < count; n++) ++ for (x = 0; x < xcount; x++) ++ /* dest[x,y] += a[x,n] * b[n,y] */ ++ dest[x*rxstride + y*rystride] += ++ abase[x*axstride + n*aystride] * ++ bbase[n*bxstride + y*bystride]; ++ } + else + { + const GFC_REAL_10 *restrict abase_x; +@@ -2264,20 +2264,6 @@ matmul_r10_vanilla (gfc_array_r10 * const restrict retarray, + } + } + } +- else if (axstride < aystride) +- { +- for (y = 0; y < ycount; y++) +- for (x = 0; x < xcount; x++) +- dest[x*rxstride + y*rystride] = (GFC_REAL_10)0; +- +- for (y = 0; y < ycount; y++) +- for (n = 0; n < count; n++) +- for (x = 0; x < xcount; x++) +- /* dest[x,y] += a[x,n] * b[n,y] */ +- dest[x*rxstride + y*rystride] += +- abase[x*axstride + n*aystride] * +- bbase[n*bxstride + y*bystride]; +- } + else if (GFC_DESCRIPTOR_RANK (a) == 1) + { + const GFC_REAL_10 *restrict bbase_y; +@@ -2292,6 +2278,20 @@ matmul_r10_vanilla (gfc_array_r10 * const restrict retarray, + dest[y*rxstride] = s; + } + } ++ else if (axstride < aystride) ++ { ++ for (y = 0; y < ycount; y++) ++ for (x = 0; x < xcount; x++) ++ dest[x*rxstride + y*rystride] = (GFC_REAL_10)0; ++ ++ for (y = 0; y < ycount; y++) ++ for (n = 0; n < count; n++) ++ for (x = 0; x < xcount; x++) ++ /* dest[x,y] += a[x,n] * b[n,y] */ ++ dest[x*rxstride + y*rystride] += ++ abase[x*axstride + n*aystride] * ++ bbase[n*bxstride + y*bystride]; ++ } + else + { + const GFC_REAL_10 *restrict abase_x; +@@ -2895,20 +2895,6 @@ matmul_r10 (gfc_array_r10 * const restrict retarray, + } + } + } +- else if (axstride < aystride) +- { +- for (y = 0; y < ycount; y++) +- for (x = 0; x < xcount; x++) +- dest[x*rxstride + y*rystride] = (GFC_REAL_10)0; +- +- for (y = 0; y < ycount; y++) +- for (n = 0; n < count; n++) +- for (x = 0; x < xcount; x++) +- /* dest[x,y] += a[x,n] * b[n,y] */ +- dest[x*rxstride + y*rystride] += +- abase[x*axstride + n*aystride] * +- bbase[n*bxstride + y*bystride]; +- } + else if (GFC_DESCRIPTOR_RANK (a) == 1) + { + const GFC_REAL_10 *restrict bbase_y; +@@ -2923,6 +2909,20 @@ matmul_r10 (gfc_array_r10 * const restrict retarray, + dest[y*rxstride] = s; + } + } ++ else if (axstride < aystride) ++ { ++ for (y = 0; y < ycount; y++) ++ for (x = 0; x < xcount; x++) ++ dest[x*rxstride + y*rystride] = (GFC_REAL_10)0; ++ ++ for (y = 0; y < ycount; y++) ++ for (n = 0; n < count; n++) ++ for (x = 0; x < xcount; x++) ++ /* dest[x,y] += a[x,n] * b[n,y] */ ++ dest[x*rxstride + y*rystride] += ++ abase[x*axstride + n*aystride] * ++ bbase[n*bxstride + y*bystride]; ++ } + else + { + const GFC_REAL_10 *restrict abase_x; +--- a/src/libgfortran/generated/matmul_r16.c ++++ b/src/libgfortran/generated/matmul_r16.c +@@ -579,20 +579,6 @@ matmul_r16_avx (gfc_array_r16 * const restrict retarray, + } + } + } +- else if (axstride < aystride) +- { +- for (y = 0; y < ycount; y++) +- for (x = 0; x < xcount; x++) +- dest[x*rxstride + y*rystride] = (GFC_REAL_16)0; +- +- for (y = 0; y < ycount; y++) +- for (n = 0; n < count; n++) +- for (x = 0; x < xcount; x++) +- /* dest[x,y] += a[x,n] * b[n,y] */ +- dest[x*rxstride + y*rystride] += +- abase[x*axstride + n*aystride] * +- bbase[n*bxstride + y*bystride]; +- } + else if (GFC_DESCRIPTOR_RANK (a) == 1) + { + const GFC_REAL_16 *restrict bbase_y; +@@ -607,6 +593,20 @@ matmul_r16_avx (gfc_array_r16 * const restrict retarray, + dest[y*rxstride] = s; + } + } ++ else if (axstride < aystride) ++ { ++ for (y = 0; y < ycount; y++) ++ for (x = 0; x < xcount; x++) ++ dest[x*rxstride + y*rystride] = (GFC_REAL_16)0; ++ ++ for (y = 0; y < ycount; y++) ++ for (n = 0; n < count; n++) ++ for (x = 0; x < xcount; x++) ++ /* dest[x,y] += a[x,n] * b[n,y] */ ++ dest[x*rxstride + y*rystride] += ++ abase[x*axstride + n*aystride] * ++ bbase[n*bxstride + y*bystride]; ++ } + else + { + const GFC_REAL_16 *restrict abase_x; +@@ -1136,20 +1136,6 @@ matmul_r16_avx2 (gfc_array_r16 * const restrict retarray, + } + } + } +- else if (axstride < aystride) +- { +- for (y = 0; y < ycount; y++) +- for (x = 0; x < xcount; x++) +- dest[x*rxstride + y*rystride] = (GFC_REAL_16)0; +- +- for (y = 0; y < ycount; y++) +- for (n = 0; n < count; n++) +- for (x = 0; x < xcount; x++) +- /* dest[x,y] += a[x,n] * b[n,y] */ +- dest[x*rxstride + y*rystride] += +- abase[x*axstride + n*aystride] * +- bbase[n*bxstride + y*bystride]; +- } + else if (GFC_DESCRIPTOR_RANK (a) == 1) + { + const GFC_REAL_16 *restrict bbase_y; +@@ -1164,6 +1150,20 @@ matmul_r16_avx2 (gfc_array_r16 * const restrict retarray, + dest[y*rxstride] = s; + } + } ++ else if (axstride < aystride) ++ { ++ for (y = 0; y < ycount; y++) ++ for (x = 0; x < xcount; x++) ++ dest[x*rxstride + y*rystride] = (GFC_REAL_16)0; ++ ++ for (y = 0; y < ycount; y++) ++ for (n = 0; n < count; n++) ++ for (x = 0; x < xcount; x++) ++ /* dest[x,y] += a[x,n] * b[n,y] */ ++ dest[x*rxstride + y*rystride] += ++ abase[x*axstride + n*aystride] * ++ bbase[n*bxstride + y*bystride]; ++ } + else + { + const GFC_REAL_16 *restrict abase_x; +@@ -1693,20 +1693,6 @@ matmul_r16_avx512f (gfc_array_r16 * const restrict retarray, + } + } + } +- else if (axstride < aystride) +- { +- for (y = 0; y < ycount; y++) +- for (x = 0; x < xcount; x++) +- dest[x*rxstride + y*rystride] = (GFC_REAL_16)0; +- +- for (y = 0; y < ycount; y++) +- for (n = 0; n < count; n++) +- for (x = 0; x < xcount; x++) +- /* dest[x,y] += a[x,n] * b[n,y] */ +- dest[x*rxstride + y*rystride] += +- abase[x*axstride + n*aystride] * +- bbase[n*bxstride + y*bystride]; +- } + else if (GFC_DESCRIPTOR_RANK (a) == 1) + { + const GFC_REAL_16 *restrict bbase_y; +@@ -1721,6 +1707,20 @@ matmul_r16_avx512f (gfc_array_r16 * const restrict retarray, + dest[y*rxstride] = s; + } + } ++ else if (axstride < aystride) ++ { ++ for (y = 0; y < ycount; y++) ++ for (x = 0; x < xcount; x++) ++ dest[x*rxstride + y*rystride] = (GFC_REAL_16)0; ++ ++ for (y = 0; y < ycount; y++) ++ for (n = 0; n < count; n++) ++ for (x = 0; x < xcount; x++) ++ /* dest[x,y] += a[x,n] * b[n,y] */ ++ dest[x*rxstride + y*rystride] += ++ abase[x*axstride + n*aystride] * ++ bbase[n*bxstride + y*bystride]; ++ } + else + { + const GFC_REAL_16 *restrict abase_x; +@@ -2264,20 +2264,6 @@ matmul_r16_vanilla (gfc_array_r16 * const restrict retarray, + } + } + } +- else if (axstride < aystride) +- { +- for (y = 0; y < ycount; y++) +- for (x = 0; x < xcount; x++) +- dest[x*rxstride + y*rystride] = (GFC_REAL_16)0; +- +- for (y = 0; y < ycount; y++) +- for (n = 0; n < count; n++) +- for (x = 0; x < xcount; x++) +- /* dest[x,y] += a[x,n] * b[n,y] */ +- dest[x*rxstride + y*rystride] += +- abase[x*axstride + n*aystride] * +- bbase[n*bxstride + y*bystride]; +- } + else if (GFC_DESCRIPTOR_RANK (a) == 1) + { + const GFC_REAL_16 *restrict bbase_y; +@@ -2292,6 +2278,20 @@ matmul_r16_vanilla (gfc_array_r16 * const restrict retarray, + dest[y*rxstride] = s; + } + } ++ else if (axstride < aystride) ++ { ++ for (y = 0; y < ycount; y++) ++ for (x = 0; x < xcount; x++) ++ dest[x*rxstride + y*rystride] = (GFC_REAL_16)0; ++ ++ for (y = 0; y < ycount; y++) ++ for (n = 0; n < count; n++) ++ for (x = 0; x < xcount; x++) ++ /* dest[x,y] += a[x,n] * b[n,y] */ ++ dest[x*rxstride + y*rystride] += ++ abase[x*axstride + n*aystride] * ++ bbase[n*bxstride + y*bystride]; ++ } + else + { + const GFC_REAL_16 *restrict abase_x; +@@ -2895,20 +2895,6 @@ matmul_r16 (gfc_array_r16 * const restrict retarray, + } + } + } +- else if (axstride < aystride) +- { +- for (y = 0; y < ycount; y++) +- for (x = 0; x < xcount; x++) +- dest[x*rxstride + y*rystride] = (GFC_REAL_16)0; +- +- for (y = 0; y < ycount; y++) +- for (n = 0; n < count; n++) +- for (x = 0; x < xcount; x++) +- /* dest[x,y] += a[x,n] * b[n,y] */ +- dest[x*rxstride + y*rystride] += +- abase[x*axstride + n*aystride] * +- bbase[n*bxstride + y*bystride]; +- } + else if (GFC_DESCRIPTOR_RANK (a) == 1) + { + const GFC_REAL_16 *restrict bbase_y; +@@ -2923,6 +2909,20 @@ matmul_r16 (gfc_array_r16 * const restrict retarray, + dest[y*rxstride] = s; + } + } ++ else if (axstride < aystride) ++ { ++ for (y = 0; y < ycount; y++) ++ for (x = 0; x < xcount; x++) ++ dest[x*rxstride + y*rystride] = (GFC_REAL_16)0; ++ ++ for (y = 0; y < ycount; y++) ++ for (n = 0; n < count; n++) ++ for (x = 0; x < xcount; x++) ++ /* dest[x,y] += a[x,n] * b[n,y] */ ++ dest[x*rxstride + y*rystride] += ++ abase[x*axstride + n*aystride] * ++ bbase[n*bxstride + y*bystride]; ++ } + else + { + const GFC_REAL_16 *restrict abase_x; +--- a/src/libgfortran/generated/matmul_r4.c ++++ b/src/libgfortran/generated/matmul_r4.c +@@ -579,20 +579,6 @@ matmul_r4_avx (gfc_array_r4 * const restrict retarray, + } + } + } +- else if (axstride < aystride) +- { +- for (y = 0; y < ycount; y++) +- for (x = 0; x < xcount; x++) +- dest[x*rxstride + y*rystride] = (GFC_REAL_4)0; +- +- for (y = 0; y < ycount; y++) +- for (n = 0; n < count; n++) +- for (x = 0; x < xcount; x++) +- /* dest[x,y] += a[x,n] * b[n,y] */ +- dest[x*rxstride + y*rystride] += +- abase[x*axstride + n*aystride] * +- bbase[n*bxstride + y*bystride]; +- } + else if (GFC_DESCRIPTOR_RANK (a) == 1) + { + const GFC_REAL_4 *restrict bbase_y; +@@ -607,6 +593,20 @@ matmul_r4_avx (gfc_array_r4 * const restrict retarray, + dest[y*rxstride] = s; + } + } ++ else if (axstride < aystride) ++ { ++ for (y = 0; y < ycount; y++) ++ for (x = 0; x < xcount; x++) ++ dest[x*rxstride + y*rystride] = (GFC_REAL_4)0; ++ ++ for (y = 0; y < ycount; y++) ++ for (n = 0; n < count; n++) ++ for (x = 0; x < xcount; x++) ++ /* dest[x,y] += a[x,n] * b[n,y] */ ++ dest[x*rxstride + y*rystride] += ++ abase[x*axstride + n*aystride] * ++ bbase[n*bxstride + y*bystride]; ++ } + else + { + const GFC_REAL_4 *restrict abase_x; +@@ -1136,20 +1136,6 @@ matmul_r4_avx2 (gfc_array_r4 * const restrict retarray, + } + } + } +- else if (axstride < aystride) +- { +- for (y = 0; y < ycount; y++) +- for (x = 0; x < xcount; x++) +- dest[x*rxstride + y*rystride] = (GFC_REAL_4)0; +- +- for (y = 0; y < ycount; y++) +- for (n = 0; n < count; n++) +- for (x = 0; x < xcount; x++) +- /* dest[x,y] += a[x,n] * b[n,y] */ +- dest[x*rxstride + y*rystride] += +- abase[x*axstride + n*aystride] * +- bbase[n*bxstride + y*bystride]; +- } + else if (GFC_DESCRIPTOR_RANK (a) == 1) + { + const GFC_REAL_4 *restrict bbase_y; +@@ -1164,6 +1150,20 @@ matmul_r4_avx2 (gfc_array_r4 * const restrict retarray, + dest[y*rxstride] = s; + } + } ++ else if (axstride < aystride) ++ { ++ for (y = 0; y < ycount; y++) ++ for (x = 0; x < xcount; x++) ++ dest[x*rxstride + y*rystride] = (GFC_REAL_4)0; ++ ++ for (y = 0; y < ycount; y++) ++ for (n = 0; n < count; n++) ++ for (x = 0; x < xcount; x++) ++ /* dest[x,y] += a[x,n] * b[n,y] */ ++ dest[x*rxstride + y*rystride] += ++ abase[x*axstride + n*aystride] * ++ bbase[n*bxstride + y*bystride]; ++ } + else + { + const GFC_REAL_4 *restrict abase_x; +@@ -1693,20 +1693,6 @@ matmul_r4_avx512f (gfc_array_r4 * const restrict retarray, + } + } + } +- else if (axstride < aystride) +- { +- for (y = 0; y < ycount; y++) +- for (x = 0; x < xcount; x++) +- dest[x*rxstride + y*rystride] = (GFC_REAL_4)0; +- +- for (y = 0; y < ycount; y++) +- for (n = 0; n < count; n++) +- for (x = 0; x < xcount; x++) +- /* dest[x,y] += a[x,n] * b[n,y] */ +- dest[x*rxstride + y*rystride] += +- abase[x*axstride + n*aystride] * +- bbase[n*bxstride + y*bystride]; +- } + else if (GFC_DESCRIPTOR_RANK (a) == 1) + { + const GFC_REAL_4 *restrict bbase_y; +@@ -1721,6 +1707,20 @@ matmul_r4_avx512f (gfc_array_r4 * const restrict retarray, + dest[y*rxstride] = s; + } + } ++ else if (axstride < aystride) ++ { ++ for (y = 0; y < ycount; y++) ++ for (x = 0; x < xcount; x++) ++ dest[x*rxstride + y*rystride] = (GFC_REAL_4)0; ++ ++ for (y = 0; y < ycount; y++) ++ for (n = 0; n < count; n++) ++ for (x = 0; x < xcount; x++) ++ /* dest[x,y] += a[x,n] * b[n,y] */ ++ dest[x*rxstride + y*rystride] += ++ abase[x*axstride + n*aystride] * ++ bbase[n*bxstride + y*bystride]; ++ } + else + { + const GFC_REAL_4 *restrict abase_x; +@@ -2264,20 +2264,6 @@ matmul_r4_vanilla (gfc_array_r4 * const restrict retarray, + } + } + } +- else if (axstride < aystride) +- { +- for (y = 0; y < ycount; y++) +- for (x = 0; x < xcount; x++) +- dest[x*rxstride + y*rystride] = (GFC_REAL_4)0; +- +- for (y = 0; y < ycount; y++) +- for (n = 0; n < count; n++) +- for (x = 0; x < xcount; x++) +- /* dest[x,y] += a[x,n] * b[n,y] */ +- dest[x*rxstride + y*rystride] += +- abase[x*axstride + n*aystride] * +- bbase[n*bxstride + y*bystride]; +- } + else if (GFC_DESCRIPTOR_RANK (a) == 1) + { + const GFC_REAL_4 *restrict bbase_y; +@@ -2292,6 +2278,20 @@ matmul_r4_vanilla (gfc_array_r4 * const restrict retarray, + dest[y*rxstride] = s; + } + } ++ else if (axstride < aystride) ++ { ++ for (y = 0; y < ycount; y++) ++ for (x = 0; x < xcount; x++) ++ dest[x*rxstride + y*rystride] = (GFC_REAL_4)0; ++ ++ for (y = 0; y < ycount; y++) ++ for (n = 0; n < count; n++) ++ for (x = 0; x < xcount; x++) ++ /* dest[x,y] += a[x,n] * b[n,y] */ ++ dest[x*rxstride + y*rystride] += ++ abase[x*axstride + n*aystride] * ++ bbase[n*bxstride + y*bystride]; ++ } + else + { + const GFC_REAL_4 *restrict abase_x; +@@ -2895,20 +2895,6 @@ matmul_r4 (gfc_array_r4 * const restrict retarray, + } + } + } +- else if (axstride < aystride) +- { +- for (y = 0; y < ycount; y++) +- for (x = 0; x < xcount; x++) +- dest[x*rxstride + y*rystride] = (GFC_REAL_4)0; +- +- for (y = 0; y < ycount; y++) +- for (n = 0; n < count; n++) +- for (x = 0; x < xcount; x++) +- /* dest[x,y] += a[x,n] * b[n,y] */ +- dest[x*rxstride + y*rystride] += +- abase[x*axstride + n*aystride] * +- bbase[n*bxstride + y*bystride]; +- } + else if (GFC_DESCRIPTOR_RANK (a) == 1) + { + const GFC_REAL_4 *restrict bbase_y; +@@ -2923,6 +2909,20 @@ matmul_r4 (gfc_array_r4 * const restrict retarray, + dest[y*rxstride] = s; + } + } ++ else if (axstride < aystride) ++ { ++ for (y = 0; y < ycount; y++) ++ for (x = 0; x < xcount; x++) ++ dest[x*rxstride + y*rystride] = (GFC_REAL_4)0; ++ ++ for (y = 0; y < ycount; y++) ++ for (n = 0; n < count; n++) ++ for (x = 0; x < xcount; x++) ++ /* dest[x,y] += a[x,n] * b[n,y] */ ++ dest[x*rxstride + y*rystride] += ++ abase[x*axstride + n*aystride] * ++ bbase[n*bxstride + y*bystride]; ++ } + else + { + const GFC_REAL_4 *restrict abase_x; +--- a/src/libgfortran/generated/matmul_r8.c ++++ b/src/libgfortran/generated/matmul_r8.c +@@ -579,20 +579,6 @@ matmul_r8_avx (gfc_array_r8 * const restrict retarray, + } + } + } +- else if (axstride < aystride) +- { +- for (y = 0; y < ycount; y++) +- for (x = 0; x < xcount; x++) +- dest[x*rxstride + y*rystride] = (GFC_REAL_8)0; +- +- for (y = 0; y < ycount; y++) +- for (n = 0; n < count; n++) +- for (x = 0; x < xcount; x++) +- /* dest[x,y] += a[x,n] * b[n,y] */ +- dest[x*rxstride + y*rystride] += +- abase[x*axstride + n*aystride] * +- bbase[n*bxstride + y*bystride]; +- } + else if (GFC_DESCRIPTOR_RANK (a) == 1) + { + const GFC_REAL_8 *restrict bbase_y; +@@ -607,6 +593,20 @@ matmul_r8_avx (gfc_array_r8 * const restrict retarray, + dest[y*rxstride] = s; + } + } ++ else if (axstride < aystride) ++ { ++ for (y = 0; y < ycount; y++) ++ for (x = 0; x < xcount; x++) ++ dest[x*rxstride + y*rystride] = (GFC_REAL_8)0; ++ ++ for (y = 0; y < ycount; y++) ++ for (n = 0; n < count; n++) ++ for (x = 0; x < xcount; x++) ++ /* dest[x,y] += a[x,n] * b[n,y] */ ++ dest[x*rxstride + y*rystride] += ++ abase[x*axstride + n*aystride] * ++ bbase[n*bxstride + y*bystride]; ++ } + else + { + const GFC_REAL_8 *restrict abase_x; +@@ -1136,20 +1136,6 @@ matmul_r8_avx2 (gfc_array_r8 * const restrict retarray, + } + } + } +- else if (axstride < aystride) +- { +- for (y = 0; y < ycount; y++) +- for (x = 0; x < xcount; x++) +- dest[x*rxstride + y*rystride] = (GFC_REAL_8)0; +- +- for (y = 0; y < ycount; y++) +- for (n = 0; n < count; n++) +- for (x = 0; x < xcount; x++) +- /* dest[x,y] += a[x,n] * b[n,y] */ +- dest[x*rxstride + y*rystride] += +- abase[x*axstride + n*aystride] * +- bbase[n*bxstride + y*bystride]; +- } + else if (GFC_DESCRIPTOR_RANK (a) == 1) + { + const GFC_REAL_8 *restrict bbase_y; +@@ -1164,6 +1150,20 @@ matmul_r8_avx2 (gfc_array_r8 * const restrict retarray, + dest[y*rxstride] = s; + } + } ++ else if (axstride < aystride) ++ { ++ for (y = 0; y < ycount; y++) ++ for (x = 0; x < xcount; x++) ++ dest[x*rxstride + y*rystride] = (GFC_REAL_8)0; ++ ++ for (y = 0; y < ycount; y++) ++ for (n = 0; n < count; n++) ++ for (x = 0; x < xcount; x++) ++ /* dest[x,y] += a[x,n] * b[n,y] */ ++ dest[x*rxstride + y*rystride] += ++ abase[x*axstride + n*aystride] * ++ bbase[n*bxstride + y*bystride]; ++ } + else + { + const GFC_REAL_8 *restrict abase_x; +@@ -1693,20 +1693,6 @@ matmul_r8_avx512f (gfc_array_r8 * const restrict retarray, + } + } + } +- else if (axstride < aystride) +- { +- for (y = 0; y < ycount; y++) +- for (x = 0; x < xcount; x++) +- dest[x*rxstride + y*rystride] = (GFC_REAL_8)0; +- +- for (y = 0; y < ycount; y++) +- for (n = 0; n < count; n++) +- for (x = 0; x < xcount; x++) +- /* dest[x,y] += a[x,n] * b[n,y] */ +- dest[x*rxstride + y*rystride] += +- abase[x*axstride + n*aystride] * +- bbase[n*bxstride + y*bystride]; +- } + else if (GFC_DESCRIPTOR_RANK (a) == 1) + { + const GFC_REAL_8 *restrict bbase_y; +@@ -1721,6 +1707,20 @@ matmul_r8_avx512f (gfc_array_r8 * const restrict retarray, + dest[y*rxstride] = s; + } + } ++ else if (axstride < aystride) ++ { ++ for (y = 0; y < ycount; y++) ++ for (x = 0; x < xcount; x++) ++ dest[x*rxstride + y*rystride] = (GFC_REAL_8)0; ++ ++ for (y = 0; y < ycount; y++) ++ for (n = 0; n < count; n++) ++ for (x = 0; x < xcount; x++) ++ /* dest[x,y] += a[x,n] * b[n,y] */ ++ dest[x*rxstride + y*rystride] += ++ abase[x*axstride + n*aystride] * ++ bbase[n*bxstride + y*bystride]; ++ } + else + { + const GFC_REAL_8 *restrict abase_x; +@@ -2264,20 +2264,6 @@ matmul_r8_vanilla (gfc_array_r8 * const restrict retarray, + } + } + } +- else if (axstride < aystride) +- { +- for (y = 0; y < ycount; y++) +- for (x = 0; x < xcount; x++) +- dest[x*rxstride + y*rystride] = (GFC_REAL_8)0; +- +- for (y = 0; y < ycount; y++) +- for (n = 0; n < count; n++) +- for (x = 0; x < xcount; x++) +- /* dest[x,y] += a[x,n] * b[n,y] */ +- dest[x*rxstride + y*rystride] += +- abase[x*axstride + n*aystride] * +- bbase[n*bxstride + y*bystride]; +- } + else if (GFC_DESCRIPTOR_RANK (a) == 1) + { + const GFC_REAL_8 *restrict bbase_y; +@@ -2292,6 +2278,20 @@ matmul_r8_vanilla (gfc_array_r8 * const restrict retarray, + dest[y*rxstride] = s; + } + } ++ else if (axstride < aystride) ++ { ++ for (y = 0; y < ycount; y++) ++ for (x = 0; x < xcount; x++) ++ dest[x*rxstride + y*rystride] = (GFC_REAL_8)0; ++ ++ for (y = 0; y < ycount; y++) ++ for (n = 0; n < count; n++) ++ for (x = 0; x < xcount; x++) ++ /* dest[x,y] += a[x,n] * b[n,y] */ ++ dest[x*rxstride + y*rystride] += ++ abase[x*axstride + n*aystride] * ++ bbase[n*bxstride + y*bystride]; ++ } + else + { + const GFC_REAL_8 *restrict abase_x; +@@ -2895,20 +2895,6 @@ matmul_r8 (gfc_array_r8 * const restrict retarray, + } + } + } +- else if (axstride < aystride) +- { +- for (y = 0; y < ycount; y++) +- for (x = 0; x < xcount; x++) +- dest[x*rxstride + y*rystride] = (GFC_REAL_8)0; +- +- for (y = 0; y < ycount; y++) +- for (n = 0; n < count; n++) +- for (x = 0; x < xcount; x++) +- /* dest[x,y] += a[x,n] * b[n,y] */ +- dest[x*rxstride + y*rystride] += +- abase[x*axstride + n*aystride] * +- bbase[n*bxstride + y*bystride]; +- } + else if (GFC_DESCRIPTOR_RANK (a) == 1) + { + const GFC_REAL_8 *restrict bbase_y; +@@ -2923,6 +2909,20 @@ matmul_r8 (gfc_array_r8 * const restrict retarray, + dest[y*rxstride] = s; + } + } ++ else if (axstride < aystride) ++ { ++ for (y = 0; y < ycount; y++) ++ for (x = 0; x < xcount; x++) ++ dest[x*rxstride + y*rystride] = (GFC_REAL_8)0; ++ ++ for (y = 0; y < ycount; y++) ++ for (n = 0; n < count; n++) ++ for (x = 0; x < xcount; x++) ++ /* dest[x,y] += a[x,n] * b[n,y] */ ++ dest[x*rxstride + y*rystride] += ++ abase[x*axstride + n*aystride] * ++ bbase[n*bxstride + y*bystride]; ++ } + else + { + const GFC_REAL_8 *restrict abase_x; +--- a/src/libgfortran/generated/matmulavx128_c10.c ++++ b/src/libgfortran/generated/matmulavx128_c10.c +@@ -544,20 +544,6 @@ matmul_c10_avx128_fma3 (gfc_array_c10 * const restrict retarray, + } + } + } +- else if (axstride < aystride) +- { +- for (y = 0; y < ycount; y++) +- for (x = 0; x < xcount; x++) +- dest[x*rxstride + y*rystride] = (GFC_COMPLEX_10)0; +- +- for (y = 0; y < ycount; y++) +- for (n = 0; n < count; n++) +- for (x = 0; x < xcount; x++) +- /* dest[x,y] += a[x,n] * b[n,y] */ +- dest[x*rxstride + y*rystride] += +- abase[x*axstride + n*aystride] * +- bbase[n*bxstride + y*bystride]; +- } + else if (GFC_DESCRIPTOR_RANK (a) == 1) + { + const GFC_COMPLEX_10 *restrict bbase_y; +@@ -572,6 +558,20 @@ matmul_c10_avx128_fma3 (gfc_array_c10 * const restrict retarray, + dest[y*rxstride] = s; + } + } ++ else if (axstride < aystride) ++ { ++ for (y = 0; y < ycount; y++) ++ for (x = 0; x < xcount; x++) ++ dest[x*rxstride + y*rystride] = (GFC_COMPLEX_10)0; ++ ++ for (y = 0; y < ycount; y++) ++ for (n = 0; n < count; n++) ++ for (x = 0; x < xcount; x++) ++ /* dest[x,y] += a[x,n] * b[n,y] */ ++ dest[x*rxstride + y*rystride] += ++ abase[x*axstride + n*aystride] * ++ bbase[n*bxstride + y*bystride]; ++ } + else + { + const GFC_COMPLEX_10 *restrict abase_x; +@@ -1102,20 +1102,6 @@ matmul_c10_avx128_fma4 (gfc_array_c10 * const restrict retarray, + } + } + } +- else if (axstride < aystride) +- { +- for (y = 0; y < ycount; y++) +- for (x = 0; x < xcount; x++) +- dest[x*rxstride + y*rystride] = (GFC_COMPLEX_10)0; +- +- for (y = 0; y < ycount; y++) +- for (n = 0; n < count; n++) +- for (x = 0; x < xcount; x++) +- /* dest[x,y] += a[x,n] * b[n,y] */ +- dest[x*rxstride + y*rystride] += +- abase[x*axstride + n*aystride] * +- bbase[n*bxstride + y*bystride]; +- } + else if (GFC_DESCRIPTOR_RANK (a) == 1) + { + const GFC_COMPLEX_10 *restrict bbase_y; +@@ -1130,6 +1116,20 @@ matmul_c10_avx128_fma4 (gfc_array_c10 * const restrict retarray, + dest[y*rxstride] = s; + } + } ++ else if (axstride < aystride) ++ { ++ for (y = 0; y < ycount; y++) ++ for (x = 0; x < xcount; x++) ++ dest[x*rxstride + y*rystride] = (GFC_COMPLEX_10)0; ++ ++ for (y = 0; y < ycount; y++) ++ for (n = 0; n < count; n++) ++ for (x = 0; x < xcount; x++) ++ /* dest[x,y] += a[x,n] * b[n,y] */ ++ dest[x*rxstride + y*rystride] += ++ abase[x*axstride + n*aystride] * ++ bbase[n*bxstride + y*bystride]; ++ } + else + { + const GFC_COMPLEX_10 *restrict abase_x; +--- a/src/libgfortran/generated/matmulavx128_c16.c ++++ b/src/libgfortran/generated/matmulavx128_c16.c +@@ -544,20 +544,6 @@ matmul_c16_avx128_fma3 (gfc_array_c16 * const restrict retarray, + } + } + } +- else if (axstride < aystride) +- { +- for (y = 0; y < ycount; y++) +- for (x = 0; x < xcount; x++) +- dest[x*rxstride + y*rystride] = (GFC_COMPLEX_16)0; +- +- for (y = 0; y < ycount; y++) +- for (n = 0; n < count; n++) +- for (x = 0; x < xcount; x++) +- /* dest[x,y] += a[x,n] * b[n,y] */ +- dest[x*rxstride + y*rystride] += +- abase[x*axstride + n*aystride] * +- bbase[n*bxstride + y*bystride]; +- } + else if (GFC_DESCRIPTOR_RANK (a) == 1) + { + const GFC_COMPLEX_16 *restrict bbase_y; +@@ -572,6 +558,20 @@ matmul_c16_avx128_fma3 (gfc_array_c16 * const restrict retarray, + dest[y*rxstride] = s; + } + } ++ else if (axstride < aystride) ++ { ++ for (y = 0; y < ycount; y++) ++ for (x = 0; x < xcount; x++) ++ dest[x*rxstride + y*rystride] = (GFC_COMPLEX_16)0; ++ ++ for (y = 0; y < ycount; y++) ++ for (n = 0; n < count; n++) ++ for (x = 0; x < xcount; x++) ++ /* dest[x,y] += a[x,n] * b[n,y] */ ++ dest[x*rxstride + y*rystride] += ++ abase[x*axstride + n*aystride] * ++ bbase[n*bxstride + y*bystride]; ++ } + else + { + const GFC_COMPLEX_16 *restrict abase_x; +@@ -1102,20 +1102,6 @@ matmul_c16_avx128_fma4 (gfc_array_c16 * const restrict retarray, + } + } + } +- else if (axstride < aystride) +- { +- for (y = 0; y < ycount; y++) +- for (x = 0; x < xcount; x++) +- dest[x*rxstride + y*rystride] = (GFC_COMPLEX_16)0; +- +- for (y = 0; y < ycount; y++) +- for (n = 0; n < count; n++) +- for (x = 0; x < xcount; x++) +- /* dest[x,y] += a[x,n] * b[n,y] */ +- dest[x*rxstride + y*rystride] += +- abase[x*axstride + n*aystride] * +- bbase[n*bxstride + y*bystride]; +- } + else if (GFC_DESCRIPTOR_RANK (a) == 1) + { + const GFC_COMPLEX_16 *restrict bbase_y; +@@ -1130,6 +1116,20 @@ matmul_c16_avx128_fma4 (gfc_array_c16 * const restrict retarray, + dest[y*rxstride] = s; + } + } ++ else if (axstride < aystride) ++ { ++ for (y = 0; y < ycount; y++) ++ for (x = 0; x < xcount; x++) ++ dest[x*rxstride + y*rystride] = (GFC_COMPLEX_16)0; ++ ++ for (y = 0; y < ycount; y++) ++ for (n = 0; n < count; n++) ++ for (x = 0; x < xcount; x++) ++ /* dest[x,y] += a[x,n] * b[n,y] */ ++ dest[x*rxstride + y*rystride] += ++ abase[x*axstride + n*aystride] * ++ bbase[n*bxstride + y*bystride]; ++ } + else + { + const GFC_COMPLEX_16 *restrict abase_x; +--- a/src/libgfortran/generated/matmulavx128_c4.c ++++ b/src/libgfortran/generated/matmulavx128_c4.c +@@ -544,20 +544,6 @@ matmul_c4_avx128_fma3 (gfc_array_c4 * const restrict retarray, + } + } + } +- else if (axstride < aystride) +- { +- for (y = 0; y < ycount; y++) +- for (x = 0; x < xcount; x++) +- dest[x*rxstride + y*rystride] = (GFC_COMPLEX_4)0; +- +- for (y = 0; y < ycount; y++) +- for (n = 0; n < count; n++) +- for (x = 0; x < xcount; x++) +- /* dest[x,y] += a[x,n] * b[n,y] */ +- dest[x*rxstride + y*rystride] += +- abase[x*axstride + n*aystride] * +- bbase[n*bxstride + y*bystride]; +- } + else if (GFC_DESCRIPTOR_RANK (a) == 1) + { + const GFC_COMPLEX_4 *restrict bbase_y; +@@ -572,6 +558,20 @@ matmul_c4_avx128_fma3 (gfc_array_c4 * const restrict retarray, + dest[y*rxstride] = s; + } + } ++ else if (axstride < aystride) ++ { ++ for (y = 0; y < ycount; y++) ++ for (x = 0; x < xcount; x++) ++ dest[x*rxstride + y*rystride] = (GFC_COMPLEX_4)0; ++ ++ for (y = 0; y < ycount; y++) ++ for (n = 0; n < count; n++) ++ for (x = 0; x < xcount; x++) ++ /* dest[x,y] += a[x,n] * b[n,y] */ ++ dest[x*rxstride + y*rystride] += ++ abase[x*axstride + n*aystride] * ++ bbase[n*bxstride + y*bystride]; ++ } + else + { + const GFC_COMPLEX_4 *restrict abase_x; +@@ -1102,20 +1102,6 @@ matmul_c4_avx128_fma4 (gfc_array_c4 * const restrict retarray, + } + } + } +- else if (axstride < aystride) +- { +- for (y = 0; y < ycount; y++) +- for (x = 0; x < xcount; x++) +- dest[x*rxstride + y*rystride] = (GFC_COMPLEX_4)0; +- +- for (y = 0; y < ycount; y++) +- for (n = 0; n < count; n++) +- for (x = 0; x < xcount; x++) +- /* dest[x,y] += a[x,n] * b[n,y] */ +- dest[x*rxstride + y*rystride] += +- abase[x*axstride + n*aystride] * +- bbase[n*bxstride + y*bystride]; +- } + else if (GFC_DESCRIPTOR_RANK (a) == 1) + { + const GFC_COMPLEX_4 *restrict bbase_y; +@@ -1130,6 +1116,20 @@ matmul_c4_avx128_fma4 (gfc_array_c4 * const restrict retarray, + dest[y*rxstride] = s; + } + } ++ else if (axstride < aystride) ++ { ++ for (y = 0; y < ycount; y++) ++ for (x = 0; x < xcount; x++) ++ dest[x*rxstride + y*rystride] = (GFC_COMPLEX_4)0; ++ ++ for (y = 0; y < ycount; y++) ++ for (n = 0; n < count; n++) ++ for (x = 0; x < xcount; x++) ++ /* dest[x,y] += a[x,n] * b[n,y] */ ++ dest[x*rxstride + y*rystride] += ++ abase[x*axstride + n*aystride] * ++ bbase[n*bxstride + y*bystride]; ++ } + else + { + const GFC_COMPLEX_4 *restrict abase_x; +--- a/src/libgfortran/generated/matmulavx128_c8.c ++++ b/src/libgfortran/generated/matmulavx128_c8.c +@@ -544,20 +544,6 @@ matmul_c8_avx128_fma3 (gfc_array_c8 * const restrict retarray, + } + } + } +- else if (axstride < aystride) +- { +- for (y = 0; y < ycount; y++) +- for (x = 0; x < xcount; x++) +- dest[x*rxstride + y*rystride] = (GFC_COMPLEX_8)0; +- +- for (y = 0; y < ycount; y++) +- for (n = 0; n < count; n++) +- for (x = 0; x < xcount; x++) +- /* dest[x,y] += a[x,n] * b[n,y] */ +- dest[x*rxstride + y*rystride] += +- abase[x*axstride + n*aystride] * +- bbase[n*bxstride + y*bystride]; +- } + else if (GFC_DESCRIPTOR_RANK (a) == 1) + { + const GFC_COMPLEX_8 *restrict bbase_y; +@@ -572,6 +558,20 @@ matmul_c8_avx128_fma3 (gfc_array_c8 * const restrict retarray, + dest[y*rxstride] = s; + } + } ++ else if (axstride < aystride) ++ { ++ for (y = 0; y < ycount; y++) ++ for (x = 0; x < xcount; x++) ++ dest[x*rxstride + y*rystride] = (GFC_COMPLEX_8)0; ++ ++ for (y = 0; y < ycount; y++) ++ for (n = 0; n < count; n++) ++ for (x = 0; x < xcount; x++) ++ /* dest[x,y] += a[x,n] * b[n,y] */ ++ dest[x*rxstride + y*rystride] += ++ abase[x*axstride + n*aystride] * ++ bbase[n*bxstride + y*bystride]; ++ } + else + { + const GFC_COMPLEX_8 *restrict abase_x; +@@ -1102,20 +1102,6 @@ matmul_c8_avx128_fma4 (gfc_array_c8 * const restrict retarray, + } + } + } +- else if (axstride < aystride) +- { +- for (y = 0; y < ycount; y++) +- for (x = 0; x < xcount; x++) +- dest[x*rxstride + y*rystride] = (GFC_COMPLEX_8)0; +- +- for (y = 0; y < ycount; y++) +- for (n = 0; n < count; n++) +- for (x = 0; x < xcount; x++) +- /* dest[x,y] += a[x,n] * b[n,y] */ +- dest[x*rxstride + y*rystride] += +- abase[x*axstride + n*aystride] * +- bbase[n*bxstride + y*bystride]; +- } + else if (GFC_DESCRIPTOR_RANK (a) == 1) + { + const GFC_COMPLEX_8 *restrict bbase_y; +@@ -1130,6 +1116,20 @@ matmul_c8_avx128_fma4 (gfc_array_c8 * const restrict retarray, + dest[y*rxstride] = s; + } + } ++ else if (axstride < aystride) ++ { ++ for (y = 0; y < ycount; y++) ++ for (x = 0; x < xcount; x++) ++ dest[x*rxstride + y*rystride] = (GFC_COMPLEX_8)0; ++ ++ for (y = 0; y < ycount; y++) ++ for (n = 0; n < count; n++) ++ for (x = 0; x < xcount; x++) ++ /* dest[x,y] += a[x,n] * b[n,y] */ ++ dest[x*rxstride + y*rystride] += ++ abase[x*axstride + n*aystride] * ++ bbase[n*bxstride + y*bystride]; ++ } + else + { + const GFC_COMPLEX_8 *restrict abase_x; +--- a/src/libgfortran/generated/matmulavx128_i1.c ++++ b/src/libgfortran/generated/matmulavx128_i1.c +@@ -544,20 +544,6 @@ matmul_i1_avx128_fma3 (gfc_array_i1 * const restrict retarray, + } + } + } +- else if (axstride < aystride) +- { +- for (y = 0; y < ycount; y++) +- for (x = 0; x < xcount; x++) +- dest[x*rxstride + y*rystride] = (GFC_INTEGER_1)0; +- +- for (y = 0; y < ycount; y++) +- for (n = 0; n < count; n++) +- for (x = 0; x < xcount; x++) +- /* dest[x,y] += a[x,n] * b[n,y] */ +- dest[x*rxstride + y*rystride] += +- abase[x*axstride + n*aystride] * +- bbase[n*bxstride + y*bystride]; +- } + else if (GFC_DESCRIPTOR_RANK (a) == 1) + { + const GFC_INTEGER_1 *restrict bbase_y; +@@ -572,6 +558,20 @@ matmul_i1_avx128_fma3 (gfc_array_i1 * const restrict retarray, + dest[y*rxstride] = s; + } + } ++ else if (axstride < aystride) ++ { ++ for (y = 0; y < ycount; y++) ++ for (x = 0; x < xcount; x++) ++ dest[x*rxstride + y*rystride] = (GFC_INTEGER_1)0; ++ ++ for (y = 0; y < ycount; y++) ++ for (n = 0; n < count; n++) ++ for (x = 0; x < xcount; x++) ++ /* dest[x,y] += a[x,n] * b[n,y] */ ++ dest[x*rxstride + y*rystride] += ++ abase[x*axstride + n*aystride] * ++ bbase[n*bxstride + y*bystride]; ++ } + else + { + const GFC_INTEGER_1 *restrict abase_x; +@@ -1102,20 +1102,6 @@ matmul_i1_avx128_fma4 (gfc_array_i1 * const restrict retarray, + } + } + } +- else if (axstride < aystride) +- { +- for (y = 0; y < ycount; y++) +- for (x = 0; x < xcount; x++) +- dest[x*rxstride + y*rystride] = (GFC_INTEGER_1)0; +- +- for (y = 0; y < ycount; y++) +- for (n = 0; n < count; n++) +- for (x = 0; x < xcount; x++) +- /* dest[x,y] += a[x,n] * b[n,y] */ +- dest[x*rxstride + y*rystride] += +- abase[x*axstride + n*aystride] * +- bbase[n*bxstride + y*bystride]; +- } + else if (GFC_DESCRIPTOR_RANK (a) == 1) + { + const GFC_INTEGER_1 *restrict bbase_y; +@@ -1130,6 +1116,20 @@ matmul_i1_avx128_fma4 (gfc_array_i1 * const restrict retarray, + dest[y*rxstride] = s; + } + } ++ else if (axstride < aystride) ++ { ++ for (y = 0; y < ycount; y++) ++ for (x = 0; x < xcount; x++) ++ dest[x*rxstride + y*rystride] = (GFC_INTEGER_1)0; ++ ++ for (y = 0; y < ycount; y++) ++ for (n = 0; n < count; n++) ++ for (x = 0; x < xcount; x++) ++ /* dest[x,y] += a[x,n] * b[n,y] */ ++ dest[x*rxstride + y*rystride] += ++ abase[x*axstride + n*aystride] * ++ bbase[n*bxstride + y*bystride]; ++ } + else + { + const GFC_INTEGER_1 *restrict abase_x; +--- a/src/libgfortran/generated/matmulavx128_i16.c ++++ b/src/libgfortran/generated/matmulavx128_i16.c +@@ -544,20 +544,6 @@ matmul_i16_avx128_fma3 (gfc_array_i16 * const restrict retarray, + } + } + } +- else if (axstride < aystride) +- { +- for (y = 0; y < ycount; y++) +- for (x = 0; x < xcount; x++) +- dest[x*rxstride + y*rystride] = (GFC_INTEGER_16)0; +- +- for (y = 0; y < ycount; y++) +- for (n = 0; n < count; n++) +- for (x = 0; x < xcount; x++) +- /* dest[x,y] += a[x,n] * b[n,y] */ +- dest[x*rxstride + y*rystride] += +- abase[x*axstride + n*aystride] * +- bbase[n*bxstride + y*bystride]; +- } + else if (GFC_DESCRIPTOR_RANK (a) == 1) + { + const GFC_INTEGER_16 *restrict bbase_y; +@@ -572,6 +558,20 @@ matmul_i16_avx128_fma3 (gfc_array_i16 * const restrict retarray, + dest[y*rxstride] = s; + } + } ++ else if (axstride < aystride) ++ { ++ for (y = 0; y < ycount; y++) ++ for (x = 0; x < xcount; x++) ++ dest[x*rxstride + y*rystride] = (GFC_INTEGER_16)0; ++ ++ for (y = 0; y < ycount; y++) ++ for (n = 0; n < count; n++) ++ for (x = 0; x < xcount; x++) ++ /* dest[x,y] += a[x,n] * b[n,y] */ ++ dest[x*rxstride + y*rystride] += ++ abase[x*axstride + n*aystride] * ++ bbase[n*bxstride + y*bystride]; ++ } + else + { + const GFC_INTEGER_16 *restrict abase_x; +@@ -1102,20 +1102,6 @@ matmul_i16_avx128_fma4 (gfc_array_i16 * const restrict retarray, + } + } + } +- else if (axstride < aystride) +- { +- for (y = 0; y < ycount; y++) +- for (x = 0; x < xcount; x++) +- dest[x*rxstride + y*rystride] = (GFC_INTEGER_16)0; +- +- for (y = 0; y < ycount; y++) +- for (n = 0; n < count; n++) +- for (x = 0; x < xcount; x++) +- /* dest[x,y] += a[x,n] * b[n,y] */ +- dest[x*rxstride + y*rystride] += +- abase[x*axstride + n*aystride] * +- bbase[n*bxstride + y*bystride]; +- } + else if (GFC_DESCRIPTOR_RANK (a) == 1) + { + const GFC_INTEGER_16 *restrict bbase_y; +@@ -1130,6 +1116,20 @@ matmul_i16_avx128_fma4 (gfc_array_i16 * const restrict retarray, + dest[y*rxstride] = s; + } + } ++ else if (axstride < aystride) ++ { ++ for (y = 0; y < ycount; y++) ++ for (x = 0; x < xcount; x++) ++ dest[x*rxstride + y*rystride] = (GFC_INTEGER_16)0; ++ ++ for (y = 0; y < ycount; y++) ++ for (n = 0; n < count; n++) ++ for (x = 0; x < xcount; x++) ++ /* dest[x,y] += a[x,n] * b[n,y] */ ++ dest[x*rxstride + y*rystride] += ++ abase[x*axstride + n*aystride] * ++ bbase[n*bxstride + y*bystride]; ++ } + else + { + const GFC_INTEGER_16 *restrict abase_x; +--- a/src/libgfortran/generated/matmulavx128_i2.c ++++ b/src/libgfortran/generated/matmulavx128_i2.c +@@ -544,20 +544,6 @@ matmul_i2_avx128_fma3 (gfc_array_i2 * const restrict retarray, + } + } + } +- else if (axstride < aystride) +- { +- for (y = 0; y < ycount; y++) +- for (x = 0; x < xcount; x++) +- dest[x*rxstride + y*rystride] = (GFC_INTEGER_2)0; +- +- for (y = 0; y < ycount; y++) +- for (n = 0; n < count; n++) +- for (x = 0; x < xcount; x++) +- /* dest[x,y] += a[x,n] * b[n,y] */ +- dest[x*rxstride + y*rystride] += +- abase[x*axstride + n*aystride] * +- bbase[n*bxstride + y*bystride]; +- } + else if (GFC_DESCRIPTOR_RANK (a) == 1) + { + const GFC_INTEGER_2 *restrict bbase_y; +@@ -572,6 +558,20 @@ matmul_i2_avx128_fma3 (gfc_array_i2 * const restrict retarray, + dest[y*rxstride] = s; + } + } ++ else if (axstride < aystride) ++ { ++ for (y = 0; y < ycount; y++) ++ for (x = 0; x < xcount; x++) ++ dest[x*rxstride + y*rystride] = (GFC_INTEGER_2)0; ++ ++ for (y = 0; y < ycount; y++) ++ for (n = 0; n < count; n++) ++ for (x = 0; x < xcount; x++) ++ /* dest[x,y] += a[x,n] * b[n,y] */ ++ dest[x*rxstride + y*rystride] += ++ abase[x*axstride + n*aystride] * ++ bbase[n*bxstride + y*bystride]; ++ } + else + { + const GFC_INTEGER_2 *restrict abase_x; +@@ -1102,20 +1102,6 @@ matmul_i2_avx128_fma4 (gfc_array_i2 * const restrict retarray, + } + } + } +- else if (axstride < aystride) +- { +- for (y = 0; y < ycount; y++) +- for (x = 0; x < xcount; x++) +- dest[x*rxstride + y*rystride] = (GFC_INTEGER_2)0; +- +- for (y = 0; y < ycount; y++) +- for (n = 0; n < count; n++) +- for (x = 0; x < xcount; x++) +- /* dest[x,y] += a[x,n] * b[n,y] */ +- dest[x*rxstride + y*rystride] += +- abase[x*axstride + n*aystride] * +- bbase[n*bxstride + y*bystride]; +- } + else if (GFC_DESCRIPTOR_RANK (a) == 1) + { + const GFC_INTEGER_2 *restrict bbase_y; +@@ -1130,6 +1116,20 @@ matmul_i2_avx128_fma4 (gfc_array_i2 * const restrict retarray, + dest[y*rxstride] = s; + } + } ++ else if (axstride < aystride) ++ { ++ for (y = 0; y < ycount; y++) ++ for (x = 0; x < xcount; x++) ++ dest[x*rxstride + y*rystride] = (GFC_INTEGER_2)0; ++ ++ for (y = 0; y < ycount; y++) ++ for (n = 0; n < count; n++) ++ for (x = 0; x < xcount; x++) ++ /* dest[x,y] += a[x,n] * b[n,y] */ ++ dest[x*rxstride + y*rystride] += ++ abase[x*axstride + n*aystride] * ++ bbase[n*bxstride + y*bystride]; ++ } + else + { + const GFC_INTEGER_2 *restrict abase_x; +--- a/src/libgfortran/generated/matmulavx128_i4.c ++++ b/src/libgfortran/generated/matmulavx128_i4.c +@@ -544,20 +544,6 @@ matmul_i4_avx128_fma3 (gfc_array_i4 * const restrict retarray, + } + } + } +- else if (axstride < aystride) +- { +- for (y = 0; y < ycount; y++) +- for (x = 0; x < xcount; x++) +- dest[x*rxstride + y*rystride] = (GFC_INTEGER_4)0; +- +- for (y = 0; y < ycount; y++) +- for (n = 0; n < count; n++) +- for (x = 0; x < xcount; x++) +- /* dest[x,y] += a[x,n] * b[n,y] */ +- dest[x*rxstride + y*rystride] += +- abase[x*axstride + n*aystride] * +- bbase[n*bxstride + y*bystride]; +- } + else if (GFC_DESCRIPTOR_RANK (a) == 1) + { + const GFC_INTEGER_4 *restrict bbase_y; +@@ -572,6 +558,20 @@ matmul_i4_avx128_fma3 (gfc_array_i4 * const restrict retarray, + dest[y*rxstride] = s; + } + } ++ else if (axstride < aystride) ++ { ++ for (y = 0; y < ycount; y++) ++ for (x = 0; x < xcount; x++) ++ dest[x*rxstride + y*rystride] = (GFC_INTEGER_4)0; ++ ++ for (y = 0; y < ycount; y++) ++ for (n = 0; n < count; n++) ++ for (x = 0; x < xcount; x++) ++ /* dest[x,y] += a[x,n] * b[n,y] */ ++ dest[x*rxstride + y*rystride] += ++ abase[x*axstride + n*aystride] * ++ bbase[n*bxstride + y*bystride]; ++ } + else + { + const GFC_INTEGER_4 *restrict abase_x; +@@ -1102,20 +1102,6 @@ matmul_i4_avx128_fma4 (gfc_array_i4 * const restrict retarray, + } + } + } +- else if (axstride < aystride) +- { +- for (y = 0; y < ycount; y++) +- for (x = 0; x < xcount; x++) +- dest[x*rxstride + y*rystride] = (GFC_INTEGER_4)0; +- +- for (y = 0; y < ycount; y++) +- for (n = 0; n < count; n++) +- for (x = 0; x < xcount; x++) +- /* dest[x,y] += a[x,n] * b[n,y] */ +- dest[x*rxstride + y*rystride] += +- abase[x*axstride + n*aystride] * +- bbase[n*bxstride + y*bystride]; +- } + else if (GFC_DESCRIPTOR_RANK (a) == 1) + { + const GFC_INTEGER_4 *restrict bbase_y; +@@ -1130,6 +1116,20 @@ matmul_i4_avx128_fma4 (gfc_array_i4 * const restrict retarray, + dest[y*rxstride] = s; + } + } ++ else if (axstride < aystride) ++ { ++ for (y = 0; y < ycount; y++) ++ for (x = 0; x < xcount; x++) ++ dest[x*rxstride + y*rystride] = (GFC_INTEGER_4)0; ++ ++ for (y = 0; y < ycount; y++) ++ for (n = 0; n < count; n++) ++ for (x = 0; x < xcount; x++) ++ /* dest[x,y] += a[x,n] * b[n,y] */ ++ dest[x*rxstride + y*rystride] += ++ abase[x*axstride + n*aystride] * ++ bbase[n*bxstride + y*bystride]; ++ } + else + { + const GFC_INTEGER_4 *restrict abase_x; +--- a/src/libgfortran/generated/matmulavx128_i8.c ++++ b/src/libgfortran/generated/matmulavx128_i8.c +@@ -544,20 +544,6 @@ matmul_i8_avx128_fma3 (gfc_array_i8 * const restrict retarray, + } + } + } +- else if (axstride < aystride) +- { +- for (y = 0; y < ycount; y++) +- for (x = 0; x < xcount; x++) +- dest[x*rxstride + y*rystride] = (GFC_INTEGER_8)0; +- +- for (y = 0; y < ycount; y++) +- for (n = 0; n < count; n++) +- for (x = 0; x < xcount; x++) +- /* dest[x,y] += a[x,n] * b[n,y] */ +- dest[x*rxstride + y*rystride] += +- abase[x*axstride + n*aystride] * +- bbase[n*bxstride + y*bystride]; +- } + else if (GFC_DESCRIPTOR_RANK (a) == 1) + { + const GFC_INTEGER_8 *restrict bbase_y; +@@ -572,6 +558,20 @@ matmul_i8_avx128_fma3 (gfc_array_i8 * const restrict retarray, + dest[y*rxstride] = s; + } + } ++ else if (axstride < aystride) ++ { ++ for (y = 0; y < ycount; y++) ++ for (x = 0; x < xcount; x++) ++ dest[x*rxstride + y*rystride] = (GFC_INTEGER_8)0; ++ ++ for (y = 0; y < ycount; y++) ++ for (n = 0; n < count; n++) ++ for (x = 0; x < xcount; x++) ++ /* dest[x,y] += a[x,n] * b[n,y] */ ++ dest[x*rxstride + y*rystride] += ++ abase[x*axstride + n*aystride] * ++ bbase[n*bxstride + y*bystride]; ++ } + else + { + const GFC_INTEGER_8 *restrict abase_x; +@@ -1102,20 +1102,6 @@ matmul_i8_avx128_fma4 (gfc_array_i8 * const restrict retarray, + } + } + } +- else if (axstride < aystride) +- { +- for (y = 0; y < ycount; y++) +- for (x = 0; x < xcount; x++) +- dest[x*rxstride + y*rystride] = (GFC_INTEGER_8)0; +- +- for (y = 0; y < ycount; y++) +- for (n = 0; n < count; n++) +- for (x = 0; x < xcount; x++) +- /* dest[x,y] += a[x,n] * b[n,y] */ +- dest[x*rxstride + y*rystride] += +- abase[x*axstride + n*aystride] * +- bbase[n*bxstride + y*bystride]; +- } + else if (GFC_DESCRIPTOR_RANK (a) == 1) + { + const GFC_INTEGER_8 *restrict bbase_y; +@@ -1130,6 +1116,20 @@ matmul_i8_avx128_fma4 (gfc_array_i8 * const restrict retarray, + dest[y*rxstride] = s; + } + } ++ else if (axstride < aystride) ++ { ++ for (y = 0; y < ycount; y++) ++ for (x = 0; x < xcount; x++) ++ dest[x*rxstride + y*rystride] = (GFC_INTEGER_8)0; ++ ++ for (y = 0; y < ycount; y++) ++ for (n = 0; n < count; n++) ++ for (x = 0; x < xcount; x++) ++ /* dest[x,y] += a[x,n] * b[n,y] */ ++ dest[x*rxstride + y*rystride] += ++ abase[x*axstride + n*aystride] * ++ bbase[n*bxstride + y*bystride]; ++ } + else + { + const GFC_INTEGER_8 *restrict abase_x; +--- a/src/libgfortran/generated/matmulavx128_r10.c ++++ b/src/libgfortran/generated/matmulavx128_r10.c +@@ -544,20 +544,6 @@ matmul_r10_avx128_fma3 (gfc_array_r10 * const restrict retarray, + } + } + } +- else if (axstride < aystride) +- { +- for (y = 0; y < ycount; y++) +- for (x = 0; x < xcount; x++) +- dest[x*rxstride + y*rystride] = (GFC_REAL_10)0; +- +- for (y = 0; y < ycount; y++) +- for (n = 0; n < count; n++) +- for (x = 0; x < xcount; x++) +- /* dest[x,y] += a[x,n] * b[n,y] */ +- dest[x*rxstride + y*rystride] += +- abase[x*axstride + n*aystride] * +- bbase[n*bxstride + y*bystride]; +- } + else if (GFC_DESCRIPTOR_RANK (a) == 1) + { + const GFC_REAL_10 *restrict bbase_y; +@@ -572,6 +558,20 @@ matmul_r10_avx128_fma3 (gfc_array_r10 * const restrict retarray, + dest[y*rxstride] = s; + } + } ++ else if (axstride < aystride) ++ { ++ for (y = 0; y < ycount; y++) ++ for (x = 0; x < xcount; x++) ++ dest[x*rxstride + y*rystride] = (GFC_REAL_10)0; ++ ++ for (y = 0; y < ycount; y++) ++ for (n = 0; n < count; n++) ++ for (x = 0; x < xcount; x++) ++ /* dest[x,y] += a[x,n] * b[n,y] */ ++ dest[x*rxstride + y*rystride] += ++ abase[x*axstride + n*aystride] * ++ bbase[n*bxstride + y*bystride]; ++ } + else + { + const GFC_REAL_10 *restrict abase_x; +@@ -1102,20 +1102,6 @@ matmul_r10_avx128_fma4 (gfc_array_r10 * const restrict retarray, + } + } + } +- else if (axstride < aystride) +- { +- for (y = 0; y < ycount; y++) +- for (x = 0; x < xcount; x++) +- dest[x*rxstride + y*rystride] = (GFC_REAL_10)0; +- +- for (y = 0; y < ycount; y++) +- for (n = 0; n < count; n++) +- for (x = 0; x < xcount; x++) +- /* dest[x,y] += a[x,n] * b[n,y] */ +- dest[x*rxstride + y*rystride] += +- abase[x*axstride + n*aystride] * +- bbase[n*bxstride + y*bystride]; +- } + else if (GFC_DESCRIPTOR_RANK (a) == 1) + { + const GFC_REAL_10 *restrict bbase_y; +@@ -1130,6 +1116,20 @@ matmul_r10_avx128_fma4 (gfc_array_r10 * const restrict retarray, + dest[y*rxstride] = s; + } + } ++ else if (axstride < aystride) ++ { ++ for (y = 0; y < ycount; y++) ++ for (x = 0; x < xcount; x++) ++ dest[x*rxstride + y*rystride] = (GFC_REAL_10)0; ++ ++ for (y = 0; y < ycount; y++) ++ for (n = 0; n < count; n++) ++ for (x = 0; x < xcount; x++) ++ /* dest[x,y] += a[x,n] * b[n,y] */ ++ dest[x*rxstride + y*rystride] += ++ abase[x*axstride + n*aystride] * ++ bbase[n*bxstride + y*bystride]; ++ } + else + { + const GFC_REAL_10 *restrict abase_x; +--- a/src/libgfortran/generated/matmulavx128_r16.c ++++ b/src/libgfortran/generated/matmulavx128_r16.c +@@ -544,20 +544,6 @@ matmul_r16_avx128_fma3 (gfc_array_r16 * const restrict retarray, + } + } + } +- else if (axstride < aystride) +- { +- for (y = 0; y < ycount; y++) +- for (x = 0; x < xcount; x++) +- dest[x*rxstride + y*rystride] = (GFC_REAL_16)0; +- +- for (y = 0; y < ycount; y++) +- for (n = 0; n < count; n++) +- for (x = 0; x < xcount; x++) +- /* dest[x,y] += a[x,n] * b[n,y] */ +- dest[x*rxstride + y*rystride] += +- abase[x*axstride + n*aystride] * +- bbase[n*bxstride + y*bystride]; +- } + else if (GFC_DESCRIPTOR_RANK (a) == 1) + { + const GFC_REAL_16 *restrict bbase_y; +@@ -572,6 +558,20 @@ matmul_r16_avx128_fma3 (gfc_array_r16 * const restrict retarray, + dest[y*rxstride] = s; + } + } ++ else if (axstride < aystride) ++ { ++ for (y = 0; y < ycount; y++) ++ for (x = 0; x < xcount; x++) ++ dest[x*rxstride + y*rystride] = (GFC_REAL_16)0; ++ ++ for (y = 0; y < ycount; y++) ++ for (n = 0; n < count; n++) ++ for (x = 0; x < xcount; x++) ++ /* dest[x,y] += a[x,n] * b[n,y] */ ++ dest[x*rxstride + y*rystride] += ++ abase[x*axstride + n*aystride] * ++ bbase[n*bxstride + y*bystride]; ++ } + else + { + const GFC_REAL_16 *restrict abase_x; +@@ -1102,20 +1102,6 @@ matmul_r16_avx128_fma4 (gfc_array_r16 * const restrict retarray, + } + } + } +- else if (axstride < aystride) +- { +- for (y = 0; y < ycount; y++) +- for (x = 0; x < xcount; x++) +- dest[x*rxstride + y*rystride] = (GFC_REAL_16)0; +- +- for (y = 0; y < ycount; y++) +- for (n = 0; n < count; n++) +- for (x = 0; x < xcount; x++) +- /* dest[x,y] += a[x,n] * b[n,y] */ +- dest[x*rxstride + y*rystride] += +- abase[x*axstride + n*aystride] * +- bbase[n*bxstride + y*bystride]; +- } + else if (GFC_DESCRIPTOR_RANK (a) == 1) + { + const GFC_REAL_16 *restrict bbase_y; +@@ -1130,6 +1116,20 @@ matmul_r16_avx128_fma4 (gfc_array_r16 * const restrict retarray, + dest[y*rxstride] = s; + } + } ++ else if (axstride < aystride) ++ { ++ for (y = 0; y < ycount; y++) ++ for (x = 0; x < xcount; x++) ++ dest[x*rxstride + y*rystride] = (GFC_REAL_16)0; ++ ++ for (y = 0; y < ycount; y++) ++ for (n = 0; n < count; n++) ++ for (x = 0; x < xcount; x++) ++ /* dest[x,y] += a[x,n] * b[n,y] */ ++ dest[x*rxstride + y*rystride] += ++ abase[x*axstride + n*aystride] * ++ bbase[n*bxstride + y*bystride]; ++ } + else + { + const GFC_REAL_16 *restrict abase_x; +--- a/src/libgfortran/generated/matmulavx128_r4.c ++++ b/src/libgfortran/generated/matmulavx128_r4.c +@@ -544,20 +544,6 @@ matmul_r4_avx128_fma3 (gfc_array_r4 * const restrict retarray, + } + } + } +- else if (axstride < aystride) +- { +- for (y = 0; y < ycount; y++) +- for (x = 0; x < xcount; x++) +- dest[x*rxstride + y*rystride] = (GFC_REAL_4)0; +- +- for (y = 0; y < ycount; y++) +- for (n = 0; n < count; n++) +- for (x = 0; x < xcount; x++) +- /* dest[x,y] += a[x,n] * b[n,y] */ +- dest[x*rxstride + y*rystride] += +- abase[x*axstride + n*aystride] * +- bbase[n*bxstride + y*bystride]; +- } + else if (GFC_DESCRIPTOR_RANK (a) == 1) + { + const GFC_REAL_4 *restrict bbase_y; +@@ -572,6 +558,20 @@ matmul_r4_avx128_fma3 (gfc_array_r4 * const restrict retarray, + dest[y*rxstride] = s; + } + } ++ else if (axstride < aystride) ++ { ++ for (y = 0; y < ycount; y++) ++ for (x = 0; x < xcount; x++) ++ dest[x*rxstride + y*rystride] = (GFC_REAL_4)0; ++ ++ for (y = 0; y < ycount; y++) ++ for (n = 0; n < count; n++) ++ for (x = 0; x < xcount; x++) ++ /* dest[x,y] += a[x,n] * b[n,y] */ ++ dest[x*rxstride + y*rystride] += ++ abase[x*axstride + n*aystride] * ++ bbase[n*bxstride + y*bystride]; ++ } + else + { + const GFC_REAL_4 *restrict abase_x; +@@ -1102,20 +1102,6 @@ matmul_r4_avx128_fma4 (gfc_array_r4 * const restrict retarray, + } + } + } +- else if (axstride < aystride) +- { +- for (y = 0; y < ycount; y++) +- for (x = 0; x < xcount; x++) +- dest[x*rxstride + y*rystride] = (GFC_REAL_4)0; +- +- for (y = 0; y < ycount; y++) +- for (n = 0; n < count; n++) +- for (x = 0; x < xcount; x++) +- /* dest[x,y] += a[x,n] * b[n,y] */ +- dest[x*rxstride + y*rystride] += +- abase[x*axstride + n*aystride] * +- bbase[n*bxstride + y*bystride]; +- } + else if (GFC_DESCRIPTOR_RANK (a) == 1) + { + const GFC_REAL_4 *restrict bbase_y; +@@ -1130,6 +1116,20 @@ matmul_r4_avx128_fma4 (gfc_array_r4 * const restrict retarray, + dest[y*rxstride] = s; + } + } ++ else if (axstride < aystride) ++ { ++ for (y = 0; y < ycount; y++) ++ for (x = 0; x < xcount; x++) ++ dest[x*rxstride + y*rystride] = (GFC_REAL_4)0; ++ ++ for (y = 0; y < ycount; y++) ++ for (n = 0; n < count; n++) ++ for (x = 0; x < xcount; x++) ++ /* dest[x,y] += a[x,n] * b[n,y] */ ++ dest[x*rxstride + y*rystride] += ++ abase[x*axstride + n*aystride] * ++ bbase[n*bxstride + y*bystride]; ++ } + else + { + const GFC_REAL_4 *restrict abase_x; +--- a/src/libgfortran/generated/matmulavx128_r8.c ++++ b/src/libgfortran/generated/matmulavx128_r8.c +@@ -544,20 +544,6 @@ matmul_r8_avx128_fma3 (gfc_array_r8 * const restrict retarray, + } + } + } +- else if (axstride < aystride) +- { +- for (y = 0; y < ycount; y++) +- for (x = 0; x < xcount; x++) +- dest[x*rxstride + y*rystride] = (GFC_REAL_8)0; +- +- for (y = 0; y < ycount; y++) +- for (n = 0; n < count; n++) +- for (x = 0; x < xcount; x++) +- /* dest[x,y] += a[x,n] * b[n,y] */ +- dest[x*rxstride + y*rystride] += +- abase[x*axstride + n*aystride] * +- bbase[n*bxstride + y*bystride]; +- } + else if (GFC_DESCRIPTOR_RANK (a) == 1) + { + const GFC_REAL_8 *restrict bbase_y; +@@ -572,6 +558,20 @@ matmul_r8_avx128_fma3 (gfc_array_r8 * const restrict retarray, + dest[y*rxstride] = s; + } + } ++ else if (axstride < aystride) ++ { ++ for (y = 0; y < ycount; y++) ++ for (x = 0; x < xcount; x++) ++ dest[x*rxstride + y*rystride] = (GFC_REAL_8)0; ++ ++ for (y = 0; y < ycount; y++) ++ for (n = 0; n < count; n++) ++ for (x = 0; x < xcount; x++) ++ /* dest[x,y] += a[x,n] * b[n,y] */ ++ dest[x*rxstride + y*rystride] += ++ abase[x*axstride + n*aystride] * ++ bbase[n*bxstride + y*bystride]; ++ } + else + { + const GFC_REAL_8 *restrict abase_x; +@@ -1102,20 +1102,6 @@ matmul_r8_avx128_fma4 (gfc_array_r8 * const restrict retarray, + } + } + } +- else if (axstride < aystride) +- { +- for (y = 0; y < ycount; y++) +- for (x = 0; x < xcount; x++) +- dest[x*rxstride + y*rystride] = (GFC_REAL_8)0; +- +- for (y = 0; y < ycount; y++) +- for (n = 0; n < count; n++) +- for (x = 0; x < xcount; x++) +- /* dest[x,y] += a[x,n] * b[n,y] */ +- dest[x*rxstride + y*rystride] += +- abase[x*axstride + n*aystride] * +- bbase[n*bxstride + y*bystride]; +- } + else if (GFC_DESCRIPTOR_RANK (a) == 1) + { + const GFC_REAL_8 *restrict bbase_y; +@@ -1130,6 +1116,20 @@ matmul_r8_avx128_fma4 (gfc_array_r8 * const restrict retarray, + dest[y*rxstride] = s; + } + } ++ else if (axstride < aystride) ++ { ++ for (y = 0; y < ycount; y++) ++ for (x = 0; x < xcount; x++) ++ dest[x*rxstride + y*rystride] = (GFC_REAL_8)0; ++ ++ for (y = 0; y < ycount; y++) ++ for (n = 0; n < count; n++) ++ for (x = 0; x < xcount; x++) ++ /* dest[x,y] += a[x,n] * b[n,y] */ ++ dest[x*rxstride + y*rystride] += ++ abase[x*axstride + n*aystride] * ++ bbase[n*bxstride + y*bystride]; ++ } + else + { + const GFC_REAL_8 *restrict abase_x; +--- a/src/libgfortran/io/write_float.def ++++ b/src/libgfortran/io/write_float.def +@@ -389,7 +389,8 @@ build_float_string (st_parameter_dt *dtp, const fnode *f, char *buffer, + updown: + + rchar = '0'; +- if (ft != FMT_F && w > 0 && d == 0 && p == 0) ++ /* Do not reset nbefore for FMT_F and FMT_EN. */ ++ if (ft != FMT_F && ft !=FMT_EN && w > 0 && d == 0 && p == 0) + nbefore = 1; + /* Scan for trailing zeros to see if we really need to round it. */ + for(i = nbefore + nafter; i < ndigits; i++) +--- a/src/libgfortran/m4/iall.m4 ++++ b/src/libgfortran/m4/iall.m4 +@@ -35,7 +35,7 @@ ARRAY_FUNCTION(0, + ` result &= *src;') + + MASKED_ARRAY_FUNCTION(0, +-` result = 0;', ++` result = ('rtype_name`) -1;', + ` if (*msrc) + result &= *src;') + +--- a/src/libgfortran/m4/matmul_internal.m4 ++++ b/src/libgfortran/m4/matmul_internal.m4 +@@ -495,20 +495,6 @@ sinclude(`matmul_asm_'rtype_code`.m4')dnl + } + } + } +- else if (axstride < aystride) +- { +- for (y = 0; y < ycount; y++) +- for (x = 0; x < xcount; x++) +- dest[x*rxstride + y*rystride] = ('rtype_name`)0; +- +- for (y = 0; y < ycount; y++) +- for (n = 0; n < count; n++) +- for (x = 0; x < xcount; x++) +- /* dest[x,y] += a[x,n] * b[n,y] */ +- dest[x*rxstride + y*rystride] += +- abase[x*axstride + n*aystride] * +- bbase[n*bxstride + y*bystride]; +- } + else if (GFC_DESCRIPTOR_RANK (a) == 1) + { + const 'rtype_name` *restrict bbase_y; +@@ -523,6 +509,20 @@ sinclude(`matmul_asm_'rtype_code`.m4')dnl + dest[y*rxstride] = s; + } + } ++ else if (axstride < aystride) ++ { ++ for (y = 0; y < ycount; y++) ++ for (x = 0; x < xcount; x++) ++ dest[x*rxstride + y*rystride] = ('rtype_name`)0; ++ ++ for (y = 0; y < ycount; y++) ++ for (n = 0; n < count; n++) ++ for (x = 0; x < xcount; x++) ++ /* dest[x,y] += a[x,n] * b[n,y] */ ++ dest[x*rxstride + y*rystride] += ++ abase[x*axstride + n*aystride] * ++ bbase[n*bxstride + y*bystride]; ++ } + else + { + const 'rtype_name` *restrict abase_x; +--- a/src/libgomp/ChangeLog ++++ b/src/libgomp/ChangeLog +@@ -1,3 +1,48 @@ ++2020-11-02 Thomas Schwinge ++ ++ Backported from master: ++ 2020-11-02 Thomas Schwinge ++ ++ PR testsuite/80219 ++ PR testsuite/85303 ++ * testsuite/lib/libgomp.exp (libgomp_init): Set ++ 'gcc_warning_prefix', 'gcc_error_prefix'. ++ ++2020-09-17 Jakub Jelinek ++ ++ Backported from master: ++ 2020-08-08 Jakub Jelinek ++ Tobias Burnus ++ ++ PR fortran/93553 ++ * testsuite/libgomp.fortran/pr93553.f90: New test. ++ ++2020-09-17 Jakub Jelinek ++ ++ Backported from master: ++ 2020-04-07 Jakub Jelinek ++ ++ PR c++/93931 ++ * testsuite/libgomp.c++/pr93931.C: New test. ++ ++2020-09-17 Jakub Jelinek ++ ++ Backported from master: ++ 2020-03-17 Jakub Jelinek ++ ++ PR middle-end/93566 ++ * testsuite/libgomp.c/pr93566.c: New test. ++ ++2020-06-04 Thomas Schwinge ++ ++ * testsuite/libgomp.oacc-fortran/error_stop-1.f: Initialize before ++ the checkpoint. ++ * testsuite/libgomp.oacc-fortran/error_stop-2.f: Likewise. ++ * testsuite/libgomp.oacc-fortran/error_stop-3.f: Likewise. ++ * testsuite/libgomp.oacc-fortran/stop-1.f: Likewise. ++ * testsuite/libgomp.oacc-fortran/stop-2.f: Likewise. ++ * testsuite/libgomp.oacc-fortran/stop-3.f: Likewise. ++ + 2020-03-04 Release Manager + + * GCC 8.4.0 released. +--- a/src/libgomp/testsuite/lib/libgomp.exp ++++ b/src/libgomp/testsuite/lib/libgomp.exp +@@ -248,6 +248,12 @@ proc libgomp_init { args } { + if { $offload_additional_options != "" } { + lappend ALWAYS_CFLAGS "additional_flags=${offload_additional_options}" + } ++ ++ # Tell warning from error diagnostics. This fits for C, C++, and Fortran. ++ global gcc_warning_prefix ++ set gcc_warning_prefix "\[Ww\]arning:" ++ global gcc_error_prefix ++ set gcc_error_prefix "(\[Ff\]atal )?\[Ee\]rror:" + } + + # +new file mode 100644 +--- /dev/null ++++ b/src/libgomp/testsuite/libgomp.c++/pr93931.C +@@ -0,0 +1,120 @@ ++// PR c++/93931 ++// { dg-do run } ++// { dg-options "-O2 -std=c++14" } ++ ++extern "C" void abort (); ++ ++void ++sink (int &x) ++{ ++ int *volatile p; ++ p = &x; ++ (*p)++; ++} ++ ++int ++foo () ++{ ++ int r = 0; ++ [&r] () { ++#pragma omp parallel for reduction(+ : r) ++ for (int i = 0; i < 1024; ++i) ++ r += i; ++ } (); ++ return r; ++} ++ ++int ++bar () ++{ ++ int l = 0; ++ [&l] () { ++#pragma omp parallel for lastprivate (l) ++ for (int i = 0; i < 1024; ++i) ++ l = i; ++ } (); ++ return l; ++} ++ ++void ++baz () ++{ ++ int f = 18; ++ [&f] () { ++#pragma omp parallel for firstprivate (f) ++ for (int i = 0; i < 1024; ++i) ++ { ++ sink (f); ++ f += 3; ++ sink (f); ++ if (f != 23) ++ abort (); ++ sink (f); ++ f -= 7; ++ sink (f); ++ } ++ } (); ++ if (f != 18) ++ abort (); ++} ++ ++int ++qux () ++{ ++ int r = 0; ++ [&] () { ++#pragma omp parallel for reduction(+ : r) ++ for (int i = 0; i < 1024; ++i) ++ r += i; ++ } (); ++ return r; ++} ++ ++int ++corge () ++{ ++ int l = 0; ++ [&] () { ++#pragma omp parallel for lastprivate (l) ++ for (int i = 0; i < 1024; ++i) ++ l = i; ++ } (); ++ return l; ++} ++ ++void ++garply () ++{ ++ int f = 18; ++ [&] () { ++#pragma omp parallel for firstprivate (f) ++ for (int i = 0; i < 1024; ++i) ++ { ++ sink (f); ++ f += 3; ++ sink (f); ++ if (f != 23) ++ abort (); ++ sink (f); ++ f -= 7; ++ sink (f); ++ } ++ } (); ++ if (f != 18) ++ abort (); ++} ++ ++int ++main () ++{ ++ if (foo () != 1024 * 1023 / 2) ++ abort (); ++ if (bar () != 1023) ++ abort (); ++ baz (); ++ if (qux () != 1024 * 1023 / 2) ++ abort (); ++ if (corge () != 1023) ++ abort (); ++ garply (); ++} +new file mode 100644 +--- /dev/null ++++ b/src/libgomp/testsuite/libgomp.c/pr93566.c +@@ -0,0 +1,113 @@ ++/* PR middle-end/93566 */ ++/* { dg-additional-options "-std=c99" } */ ++ ++extern void abort (void); ++ ++void ++foo (int *x) ++{ ++ void nest (void) { ++ #pragma omp parallel for reduction(+:x[:10]) ++ for (int i = 0; i < 1024; i++) ++ for (int j = 0; j < 10; j++) ++ x[j] += j * i; ++ } ++ nest (); ++ for (int i = 0; i < 10; i++) ++ if (x[i] != 1023 * 1024 / 2 * i) ++ abort (); ++} ++ ++void ++bar (void) ++{ ++ int x[10] = {}; ++ void nest (void) { ++ #pragma omp parallel for reduction(+:x[:10]) ++ for (int i = 0; i < 1024; i++) ++ for (int j = 0; j < 10; j++) ++ x[j] += j * i; ++ } ++ nest (); ++ for (int i = 0; i < 10; i++) ++ if (x[i] != 1023 * 1024 / 2 * i) ++ abort (); ++} ++ ++void ++baz (void) ++{ ++ int x[10] = {}; ++ void nest (void) { ++ #pragma omp parallel for reduction(+:x[2:5]) ++ for (int i = 0; i < 1024; i++) ++ for (int j = 2; j < 7; j++) ++ x[j] += j * i; ++ } ++ nest (); ++ for (int i = 2; i < 7; i++) ++ if (x[i] != 1023 * 1024 / 2 * i) ++ abort (); ++} ++ ++void ++qux (int *x) ++{ ++ void nest (void) { x++; } ++ nest (); ++ #pragma omp parallel for reduction(+:x[:9]) ++ for (int i = 0; i < 1024; i++) ++ for (int j = 0; j < 9; j++) ++ x[j] += j * i; ++ nest (); ++ for (int i = 0; i < 9; i++) ++ if (x[i - 1] != 1023 * 1024 / 2 * i) ++ abort (); ++} ++ ++void ++quux (void) ++{ ++ int x[10]; ++ void nest (void) { for (int i = 0; i < 10; i++) x[i] = 0; } ++ int nest2 (int i) { return x[i]; } ++ nest (); ++ #pragma omp parallel for reduction(+:x[:7]) ++ for (int i = 0; i < 1024; i++) ++ for (int j = 0; j < 7; j++) ++ x[j] += j * i; ++ for (int i = 0; i < 7; i++) ++ if (nest2 (i) != 1023 * 1024 / 2 * i) ++ abort (); ++} ++ ++void ++corge (void) ++{ ++ int x[10]; ++ void nest (void) { for (int i = 0; i < 10; i++) x[i] = 0; } ++ int nest2 (int i) { return x[i]; } ++ nest (); ++ #pragma omp parallel for reduction(+:x[2:4]) ++ for (int i = 0; i < 1024; i++) ++ for (int j = 2; j < 6; j++) ++ x[j] += j * i; ++ for (int i = 2; i < 6; i++) ++ if (nest2 (i) != 1023 * 1024 / 2 * i) ++ abort (); ++} ++ ++int ++main () ++{ ++ int a[10] = {}; ++ foo (a); ++ bar (); ++ baz (); ++ for (int i = 0; i < 10; i++) ++ a[i] = 0; ++ qux (a); ++ quux (); ++ corge (); ++ return 0; ++} +new file mode 100644 +--- /dev/null ++++ b/src/libgomp/testsuite/libgomp.fortran/pr93553.f90 +@@ -0,0 +1,21 @@ ++program p ++ implicit none ++ integer :: x(8) = 0 ++ call sub(x) ++end ++subroutine sub(x) ++ implicit none ++ integer i ++ integer :: x(8) ++ integer :: c(8) = [(11*i, i=1,8)] ++ call s ++ if (any (x /= c)) stop 1 ++contains ++ subroutine s ++ integer :: i ++ !$omp parallel do reduction(+:x) ++ do i = 1, 8 ++ x(i) = c(i) ++ end do ++ end ++end +--- a/src/libgomp/testsuite/libgomp.oacc-fortran/error_stop-1.f ++++ b/src/libgomp/testsuite/libgomp.oacc-fortran/error_stop-1.f +@@ -3,6 +3,10 @@ + PROGRAM MAIN + IMPLICIT NONE + ++! Initialize before the checkpoint, in case this produces any output. ++!$ACC PARALLEL ++!$ACC END PARALLEL ++ + PRINT *, "CheCKpOInT" + !$ACC PARALLEL + ERROR STOP +--- a/src/libgomp/testsuite/libgomp.oacc-fortran/error_stop-2.f ++++ b/src/libgomp/testsuite/libgomp.oacc-fortran/error_stop-2.f +@@ -3,6 +3,10 @@ + PROGRAM MAIN + IMPLICIT NONE + ++! Initialize before the checkpoint, in case this produces any output. ++!$ACC PARALLEL ++!$ACC END PARALLEL ++ + PRINT *, "CheCKpOInT" + !$ACC PARALLEL + ERROR STOP 35 +--- a/src/libgomp/testsuite/libgomp.oacc-fortran/error_stop-3.f ++++ b/src/libgomp/testsuite/libgomp.oacc-fortran/error_stop-3.f +@@ -3,6 +3,10 @@ + PROGRAM MAIN + IMPLICIT NONE + ++! Initialize before the checkpoint, in case this produces any output. ++!$ACC PARALLEL ++!$ACC END PARALLEL ++ + PRINT *, "CheCKpOInT" + !$ACC PARALLEL + ERROR STOP "SiGN" +--- a/src/libgomp/testsuite/libgomp.oacc-fortran/stop-1.f ++++ b/src/libgomp/testsuite/libgomp.oacc-fortran/stop-1.f +@@ -3,6 +3,10 @@ + PROGRAM MAIN + IMPLICIT NONE + ++! Initialize before the checkpoint, in case this produces any output. ++!$ACC PARALLEL ++!$ACC END PARALLEL ++ + PRINT *, "CheCKpOInT" + !$ACC PARALLEL + STOP +--- a/src/libgomp/testsuite/libgomp.oacc-fortran/stop-2.f ++++ b/src/libgomp/testsuite/libgomp.oacc-fortran/stop-2.f +@@ -3,6 +3,10 @@ + PROGRAM MAIN + IMPLICIT NONE + ++! Initialize before the checkpoint, in case this produces any output. ++!$ACC PARALLEL ++!$ACC END PARALLEL ++ + PRINT *, "CheCKpOInT" + !$ACC PARALLEL + STOP 35 +--- a/src/libgomp/testsuite/libgomp.oacc-fortran/stop-3.f ++++ b/src/libgomp/testsuite/libgomp.oacc-fortran/stop-3.f +@@ -3,6 +3,10 @@ + PROGRAM MAIN + IMPLICIT NONE + ++! Initialize before the checkpoint, in case this produces any output. ++!$ACC PARALLEL ++!$ACC END PARALLEL ++ + PRINT *, "CheCKpOInT" + !$ACC PARALLEL + STOP "SiGN" +--- a/src/libiberty/ChangeLog ++++ b/src/libiberty/ChangeLog +@@ -1,3 +1,12 @@ ++2020-03-04 H.J. Lu ++ ++ Backport from master ++ 2020-03-02 H.J. Lu ++ ++ PR lto/93966 ++ * simple-object.c (handle_lto_debug_sections): Also copy ++ .note.gnu.property section. ++ + 2020-03-04 Release Manager + + * GCC 8.4.0 released. +--- a/src/libiberty/simple-object.c ++++ b/src/libiberty/simple-object.c +@@ -288,6 +288,9 @@ handle_lto_debug_sections (const char *name) + /* Copy over .note.GNU-stack section under the same name if present. */ + else if (strcmp (name, ".note.GNU-stack") == 0) + return strcpy (newname, name); ++ /* Copy over .note.gnu.property section under the same name if present. */ ++ else if (strcmp (name, ".note.gnu.property") == 0) ++ return strcpy (newname, name); + /* Copy over .comment section under the same name if present. Solaris + ld uses them to relax its checking of ELF gABI access rules for + COMDAT sections in objects produced by GCC. */ +--- a/src/libstdc++-v3/ChangeLog ++++ b/src/libstdc++-v3/ChangeLog +@@ -1,3 +1,180 @@ ++2020-11-16 Jonathan Wakely ++ ++ Backported from master: ++ 2020-08-28 Jonathan Wakely ++ ++ PR libstdc++/92978 ++ * include/std/numeric (__abs_integral): Replace with ... ++ (__detail::__absu): New function template that returns an ++ unsigned type, guaranteeing it can represent the most ++ negative signed value. ++ (__detail::__gcd, __detail::__lcm): Require arguments to ++ be unsigned and therefore already non-negative. ++ (gcd, lcm): Convert arguments to absolute value as unsigned ++ type before calling __detail::__gcd or __detail::__lcm. ++ * include/experimental/numeric (gcd, lcm): Likewise. ++ * testsuite/26_numerics/gcd/gcd_neg.cc: Adjust expected ++ errors. ++ * testsuite/26_numerics/lcm/lcm_neg.cc: Likewise. ++ * testsuite/26_numerics/gcd/92978.cc: New test. ++ * testsuite/26_numerics/lcm/92978.cc: New test. ++ * testsuite/experimental/numeric/92978.cc: New test. ++ ++2020-11-09 Jonathan Wakely ++ ++ Backported from master: ++ 2020-11-05 Jonathan Wakely ++ ++ PR libstdc++/97731 ++ * src/filesystem/dir.cc (recursive_directory_iterator): Call the ++ right overload of _Dir::advance. ++ * testsuite/experimental/filesystem/iterators/97731.cc: New test. ++ ++2020-10-08 Jonathan Wakely ++ ++ Backported from master: ++ 2020-10-07 Jonathan Wakely ++ ++ * include/bits/random.h (seed_seq(initializer_list)): Rename ++ parameter to use reserved name. ++ * testsuite/17_intro/names.cc: Check "il". ++ ++2020-09-22 Jonathan Wakely ++ ++ Backported from master: ++ 2020-08-26 Jonathan Wakely ++ ++ PR libstdc++/96803 ++ * include/std/tuple ++ (_Tuple_impl(allocator_arg_t, Alloc, const _Tuple_impl&)): ++ Replace parameter pack with a type parameter and a pack and pass ++ the first type to __use_alloc. ++ * testsuite/20_util/tuple/cons/96803.cc: New test. ++ ++2020-09-11 Jonathan Wakely ++ ++ Backported from master: ++ 2020-03-18 Jonathan Wakely ++ ++ PR libstdc++/94033 ++ * include/std/type_traits (__is_nt_default_constructible_atom): Remove. ++ (__is_nt_default_constructible_impl): Remove. ++ (__is_nothrow_default_constructible_impl): Remove. ++ (__is_nt_constructible_impl): Add bool template parameter. Adjust ++ partial specializations. ++ (__is_nothrow_constructible_impl): Replace class template with alias ++ template. ++ (is_nothrow_default_constructible): Derive from alias template ++ __is_nothrow_constructible_impl instead of ++ __is_nothrow_default_constructible_impl. ++ * testsuite/20_util/is_nothrow_constructible/94003.cc: New test. ++ * testsuite/20_util/is_nothrow_default_constructible/96999.cc: New file. ++ ++2020-09-11 Jonathan Wakely ++ ++ PR libstdc++/71960 ++ * include/experimental/string_view (basic_string_view): ++ Enable debug assertions. ++ * include/std/string_view (basic_string_view): ++ Likewise. ++ ++2020-08-10 Jonathan Wakely ++ ++ * src/c++17/Makefile.in: Remove unused file. ++ ++2020-08-07 Jonathan Wakely ++ ++ Backported from master: ++ 2020-03-12 Jonathan Wakely ++ ++ * testsuite/27_io/filesystem/operations/last_write_time.cc: Fixes for ++ filesystems that silently truncate timestamps. ++ * testsuite/experimental/filesystem/operations/last_write_time.cc: ++ Likewise. ++ ++2020-08-07 Jonathan Wakely ++ ++ Backported from master: ++ 2019-01-10 Jonathan Wakely ++ ++ * testsuite/27_io/filesystem/operations/last_write_time.cc: Fix ++ test failures on targets with 32-bit time_t. ++ ++2020-08-07 Jonathan Wakely ++ ++ Backported from master: ++ 2020-03-21 Jonathan Wakely ++ ++ PR libstdc++/93245 ++ * include/experimental/bits/fs_path.h (path::generic_string()): ++ Return the generic format not the native format. ++ * testsuite/experimental/filesystem/path/generic/generic_string.cc: ++ Improve test coverage. ++ ++2020-08-07 Jonathan Wakely ++ ++ Backported from master: ++ 2020-03-21 Jonathan Wakely ++ ++ PR libstdc++/94242 ++ * include/bits/fs_path.h (path::_S_str_convert): Replace first ++ parameter with basic_string_view so that strings with different ++ allocators can be accepted. ++ (path::generic_string()): Use basic_string object that uses the ++ right allocator type. ++ * testsuite/27_io/filesystem/path/generic/94242.cc: New test. ++ * testsuite/27_io/filesystem/path/generic/generic_string.cc: Improve ++ test coverage. ++ ++2020-08-06 Jonathan Wakely ++ ++ Backported from master: ++ 2020-08-06 Jonathan Wakely ++ ++ PR libstdc++/96484 ++ * src/filesystem/ops.cc (fs::read_symlink): Return an error ++ immediately for non-symlinks. ++ * src/filesystem/std-ops.cc (fs::read_symlink): Likewise. ++ ++2020-07-21 Jonathan Wakely ++ ++ Backported from master: ++ 2019-01-28 Jonathan Wakely ++ ++ PR libstdc++/68737 ++ * config/locale/generic/c_locale.h (__convert_from_v) ++ [_GLIBCXX_USE_C99_STDIO]: Also check _GLIBCXX_HAVE_BROKEN_VSNPRINTF. ++ * config/os/hpux/os_defines.h: Define _GLIBCXX_HAVE_BROKEN_VSNPRINTF. ++ * include/bits/locale_facets.tcc (num_put::_M_insert_float) ++ [_GLIBCXX_USE_C99_STDIO]: Also check _GLIBCXX_HAVE_BROKEN_VSNPRINTF. ++ ++2020-05-06 Jonathan Wakely ++ ++ * doc/xml/manual/abi.xml (abi.versioning.history): Update 8.0.0 to ++ 8.1.0 in list of versions. ++ * doc/html/*: Regenerate. ++ ++2020-05-04 Jonathan Wakely ++ ++ * doc/xml/faq.xml: Use working link for SGI STL FAQ. ++ * doc/html/*: Regenerate. ++ ++2020-04-21 Jonathan Wakely ++ ++ * doc/xml/manual/status_cxx2017.xml: Fix name of feature test macro. ++ * doc/html/*: Regenerate. ++ ++2020-04-03 Jonathan Wakely ++ ++ Backport from mainline ++ 2020-04-03 Jonathan Wakely ++ ++ PR libstdc++/93960 ++ * include/bits/ptr_traits.h (__to_address): Add special case for debug ++ iterators, to avoid dereferenceable check. ++ * testsuite/20_util/to_address/1_neg.cc: Adjust dg-error line number. ++ * testsuite/20_util/to_address/debug.cc: New test. ++ + 2020-03-04 Release Manager + + * GCC 8.4.0 released. +--- a/src/libstdc++-v3/config/locale/generic/c_locale.h ++++ b/src/libstdc++-v3/config/locale/generic/c_locale.h +@@ -70,7 +70,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION + __builtin_va_list __args; + __builtin_va_start(__args, __fmt); + +-#if _GLIBCXX_USE_C99_STDIO ++#if _GLIBCXX_USE_C99_STDIO && !_GLIBCXX_HAVE_BROKEN_VSNPRINTF + const int __ret = __builtin_vsnprintf(__out, __size, __fmt, __args); + #else + const int __ret = __builtin_vsprintf(__out, __fmt, __args); +--- a/src/libstdc++-v3/config/os/hpux/os_defines.h ++++ b/src/libstdc++-v3/config/os/hpux/os_defines.h +@@ -109,4 +109,9 @@ typedef long int __padding_type; + #if defined (__hppa__) + #define _GLIBCXX_HAVE_BROKEN_STRTOLD 1 + #endif ++ ++// The vnsprintf function returns -1 when the buffer is too small. ++// See PR libstdc++/68737. ++#define _GLIBCXX_HAVE_BROKEN_VSNPRINTF 1 ++ + #endif +--- a/src/libstdc++-v3/doc/html/faq.html ++++ b/src/libstdc++-v3/doc/html/faq.html +@@ -194,7 +194,7 @@ + information is available on the homepage (including how to browse + the list archives); to send a message to the list, + use . +-

++

+ If you have a question that you think should be included + here, or if you have a question about a question/answer + here, please send email to the libstdc++ mailing list, as above. +@@ -246,8 +246,8 @@ + development tools. It may be necessary to install extra + development packages to get the headers, or the documentation, or + the source: please consult your vendor for details. +-

+- To build and install from the GNU GCC sources, please consult the ++

++ To build and install from the GNU GCC sources, please consult the + setup + documentation for detailed + instructions. You may wish to browse those files ahead +@@ -268,7 +268,7 @@ +

+ Libstdc++ comes with its own validation testsuite, which includes + conformance testing, regression testing, ABI testing, and +- performance testing. Please consult the ++ performance testing. Please consult the + testing + documentation for GCC and + Testing in the libstdc++ +@@ -424,12 +424,12 @@ +

Note

This answer is old and probably no longer be relevant.

+ By default we try to support the C99 long long type. + This requires that certain functions from your C library be present. +-

++

+ Up through release 3.0.2 the platform-specific tests performed by + libstdc++ were too general, resulting in a conservative approach + to enabling the long long code paths. The most + commonly reported platform affected was Solaris. +-

++

+ This has been fixed for libstdc++ releases greater than 3.0.3. +

4.3.

+ _XOPEN_SOURCE and _GNU_SOURCE are always defined? +@@ -484,7 +484,7 @@ + and later. A patch went in just after the 3.3 release to + make mips* use the generic implementation instead. You can also + configure for mipsel-elf as a workaround. +-

++

+ The mips*-*-linux* port continues to use the MIPS II routines, and more + work in this area is expected. +

4.7.

+@@ -510,7 +510,7 @@ + enable wchar_t and C++ library structures + like wstring were present. This impacted Solaris, + Darwin, and BSD variants, and is fixed in libstdc++ versions post 4.1.0. +-

++

+

5.1. + What works already? +
5.2. +@@ -526,8 +526,8 @@ + platforms. Also dependent on the underlying platform is support + for wchar_t and long long specializations, + and details of thread support. +-

+- Long answer: See the implementation status pages for ++

++ Long answer: See the implementation status pages for + C++98, + TR1, + C++11, +@@ -536,7 +536,7 @@ +

5.2.

+ Bugs in the ISO C++ language or library specification +

+- Unfortunately, there are some. ++ Unfortunately, there are some. +

+ For those people who are not part of the ISO Library Group + (i.e., nearly all of us needing to read this page in the first +@@ -560,7 +560,7 @@ + or an older version of the GNU compilers. Third, you can find more + information on the libstdc++ and the GCC mailing lists: search + these lists with terms describing your issue. +-

++

+ Before reporting a bug, please examine the + bugs database, with the + component set to “c++”. +@@ -813,7 +813,7 @@ + and backwards + compatibility documentation. +

+- The FAQ ++ The FAQ + for SGI's STL is still recommended reading. +

7.4.

+ Extensions and Backward Compatibility +--- a/src/libstdc++-v3/doc/html/manual/abi.html ++++ b/src/libstdc++-v3/doc/html/manual/abi.html +@@ -110,7 +110,7 @@ compatible. + has the same filename and DT_SONAME as the + preceding release. +

It is versioned as follows: +-

  • GCC 3.0.0: libstdc++.so.3.0.0

  • GCC 3.0.1: libstdc++.so.3.0.1

  • GCC 3.0.2: libstdc++.so.3.0.2

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

  • GCC 3.0.4: libstdc++.so.3.0.4

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

  • GCC 3.1.1: libstdc++.so.4.0.1

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

  • GCC 3.2.1: libstdc++.so.5.0.1

  • GCC 3.2.2: libstdc++.so.5.0.2

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

  • GCC 3.3.0: libstdc++.so.5.0.4

  • GCC 3.3.1: libstdc++.so.5.0.5

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

  • GCC 3.4.1: libstdc++.so.6.0.1

  • GCC 3.4.2: libstdc++.so.6.0.2

  • GCC 3.4.3: libstdc++.so.6.0.3

  • GCC 4.0.0: libstdc++.so.6.0.4

  • GCC 4.0.1: libstdc++.so.6.0.5

  • GCC 4.0.2: libstdc++.so.6.0.6

  • GCC 4.0.3: libstdc++.so.6.0.7

  • GCC 4.1.0: libstdc++.so.6.0.7

  • GCC 4.1.1: libstdc++.so.6.0.8

  • GCC 4.2.0: libstdc++.so.6.0.9

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

  • GCC 4.2.2: libstdc++.so.6.0.9

  • GCC 4.3.0: libstdc++.so.6.0.10

  • GCC 4.4.0: libstdc++.so.6.0.11

  • GCC 4.4.1: libstdc++.so.6.0.12

  • GCC 4.4.2: libstdc++.so.6.0.13

  • GCC 4.5.0: libstdc++.so.6.0.14

  • GCC 4.6.0: libstdc++.so.6.0.15

  • GCC 4.6.1: libstdc++.so.6.0.16

  • GCC 4.7.0: libstdc++.so.6.0.17

  • GCC 4.8.0: libstdc++.so.6.0.18

  • GCC 4.8.3: libstdc++.so.6.0.19

  • GCC 4.9.0: libstdc++.so.6.0.20

  • GCC 5.1.0: libstdc++.so.6.0.21

  • GCC 6.1.0: libstdc++.so.6.0.22

  • GCC 7.1.0: libstdc++.so.6.0.23

  • GCC 7.2.0: libstdc++.so.6.0.24

  • GCC 8.0.0: libstdc++.so.6.0.25

++

  • GCC 3.0.0: libstdc++.so.3.0.0

  • GCC 3.0.1: libstdc++.so.3.0.1

  • GCC 3.0.2: libstdc++.so.3.0.2

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

  • GCC 3.0.4: libstdc++.so.3.0.4

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

  • GCC 3.1.1: libstdc++.so.4.0.1

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

  • GCC 3.2.1: libstdc++.so.5.0.1

  • GCC 3.2.2: libstdc++.so.5.0.2

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

  • GCC 3.3.0: libstdc++.so.5.0.4

  • GCC 3.3.1: libstdc++.so.5.0.5

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

  • GCC 3.4.1: libstdc++.so.6.0.1

  • GCC 3.4.2: libstdc++.so.6.0.2

  • GCC 3.4.3: libstdc++.so.6.0.3

  • GCC 4.0.0: libstdc++.so.6.0.4

  • GCC 4.0.1: libstdc++.so.6.0.5

  • GCC 4.0.2: libstdc++.so.6.0.6

  • GCC 4.0.3: libstdc++.so.6.0.7

  • GCC 4.1.0: libstdc++.so.6.0.7

  • GCC 4.1.1: libstdc++.so.6.0.8

  • GCC 4.2.0: libstdc++.so.6.0.9

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

  • GCC 4.2.2: libstdc++.so.6.0.9

  • GCC 4.3.0: libstdc++.so.6.0.10

  • GCC 4.4.0: libstdc++.so.6.0.11

  • GCC 4.4.1: libstdc++.so.6.0.12

  • GCC 4.4.2: libstdc++.so.6.0.13

  • GCC 4.5.0: libstdc++.so.6.0.14

  • GCC 4.6.0: libstdc++.so.6.0.15

  • GCC 4.6.1: libstdc++.so.6.0.16

  • GCC 4.7.0: libstdc++.so.6.0.17

  • GCC 4.8.0: libstdc++.so.6.0.18

  • GCC 4.8.3: libstdc++.so.6.0.19

  • GCC 4.9.0: libstdc++.so.6.0.20

  • GCC 5.1.0: libstdc++.so.6.0.21

  • GCC 6.1.0: libstdc++.so.6.0.22

  • GCC 7.1.0: libstdc++.so.6.0.23

  • GCC 7.2.0: libstdc++.so.6.0.24

  • GCC 8.1.0: libstdc++.so.6.0.25

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

+ Note 2: Not strictly required. +@@ -128,7 +128,7 @@ compatible. + GLIBCPP_3.2 for symbols that were introduced in the GCC 3.2.0 + release.) If a particular release is not listed, it has the same + version labels as the preceding release. +-

  • GCC 3.0.0: (Error, not versioned)

  • GCC 3.0.1: (Error, not versioned)

  • GCC 3.0.2: (Error, not versioned)

  • GCC 3.0.3: (Error, not versioned)

  • GCC 3.0.4: (Error, not versioned)

  • GCC 3.1.0: GLIBCPP_3.1, CXXABI_1

  • GCC 3.1.1: GLIBCPP_3.1, CXXABI_1

  • GCC 3.2.0: GLIBCPP_3.2, CXXABI_1.2

  • GCC 3.2.1: GLIBCPP_3.2.1, CXXABI_1.2

  • GCC 3.2.2: GLIBCPP_3.2.2, CXXABI_1.2

  • GCC 3.2.3: GLIBCPP_3.2.2, CXXABI_1.2

  • GCC 3.3.0: GLIBCPP_3.2.2, CXXABI_1.2.1

  • GCC 3.3.1: GLIBCPP_3.2.3, CXXABI_1.2.1

  • GCC 3.3.2: GLIBCPP_3.2.3, CXXABI_1.2.1

  • GCC 3.3.3: GLIBCPP_3.2.3, CXXABI_1.2.1

  • GCC 3.4.0: GLIBCXX_3.4, CXXABI_1.3

  • GCC 3.4.1: GLIBCXX_3.4.1, CXXABI_1.3

  • GCC 3.4.2: GLIBCXX_3.4.2

  • GCC 3.4.3: GLIBCXX_3.4.3

  • GCC 4.0.0: GLIBCXX_3.4.4, CXXABI_1.3.1

  • GCC 4.0.1: GLIBCXX_3.4.5

  • GCC 4.0.2: GLIBCXX_3.4.6

  • GCC 4.0.3: GLIBCXX_3.4.7

  • GCC 4.1.1: GLIBCXX_3.4.8

  • GCC 4.2.0: GLIBCXX_3.4.9

  • GCC 4.3.0: GLIBCXX_3.4.10, CXXABI_1.3.2

  • GCC 4.4.0: GLIBCXX_3.4.11, CXXABI_1.3.3

  • GCC 4.4.1: GLIBCXX_3.4.12, CXXABI_1.3.3

  • GCC 4.4.2: GLIBCXX_3.4.13, CXXABI_1.3.3

  • GCC 4.5.0: GLIBCXX_3.4.14, CXXABI_1.3.4

  • GCC 4.6.0: GLIBCXX_3.4.15, CXXABI_1.3.5

  • GCC 4.6.1: GLIBCXX_3.4.16, CXXABI_1.3.5

  • GCC 4.7.0: GLIBCXX_3.4.17, CXXABI_1.3.6

  • GCC 4.8.0: GLIBCXX_3.4.18, CXXABI_1.3.7

  • GCC 4.8.3: GLIBCXX_3.4.19, CXXABI_1.3.7

  • GCC 4.9.0: GLIBCXX_3.4.20, CXXABI_1.3.8

  • GCC 5.1.0: GLIBCXX_3.4.21, CXXABI_1.3.9

  • GCC 6.1.0: GLIBCXX_3.4.22, CXXABI_1.3.10

  • GCC 7.1.0: GLIBCXX_3.4.23, CXXABI_1.3.11

  • GCC 7.2.0: GLIBCXX_3.4.24, CXXABI_1.3.11

  • GCC 8.0.0: GLIBCXX_3.4.25, CXXABI_1.3.11

  • Incremental bumping of a compiler pre-defined macro, ++

    • GCC 3.0.0: (Error, not versioned)

    • GCC 3.0.1: (Error, not versioned)

    • GCC 3.0.2: (Error, not versioned)

    • GCC 3.0.3: (Error, not versioned)

    • GCC 3.0.4: (Error, not versioned)

    • GCC 3.1.0: GLIBCPP_3.1, CXXABI_1

    • GCC 3.1.1: GLIBCPP_3.1, CXXABI_1

    • GCC 3.2.0: GLIBCPP_3.2, CXXABI_1.2

    • GCC 3.2.1: GLIBCPP_3.2.1, CXXABI_1.2

    • GCC 3.2.2: GLIBCPP_3.2.2, CXXABI_1.2

    • GCC 3.2.3: GLIBCPP_3.2.2, CXXABI_1.2

    • GCC 3.3.0: GLIBCPP_3.2.2, CXXABI_1.2.1

    • GCC 3.3.1: GLIBCPP_3.2.3, CXXABI_1.2.1

    • GCC 3.3.2: GLIBCPP_3.2.3, CXXABI_1.2.1

    • GCC 3.3.3: GLIBCPP_3.2.3, CXXABI_1.2.1

    • GCC 3.4.0: GLIBCXX_3.4, CXXABI_1.3

    • GCC 3.4.1: GLIBCXX_3.4.1, CXXABI_1.3

    • GCC 3.4.2: GLIBCXX_3.4.2

    • GCC 3.4.3: GLIBCXX_3.4.3

    • GCC 4.0.0: GLIBCXX_3.4.4, CXXABI_1.3.1

    • GCC 4.0.1: GLIBCXX_3.4.5

    • GCC 4.0.2: GLIBCXX_3.4.6

    • GCC 4.0.3: GLIBCXX_3.4.7

    • GCC 4.1.1: GLIBCXX_3.4.8

    • GCC 4.2.0: GLIBCXX_3.4.9

    • GCC 4.3.0: GLIBCXX_3.4.10, CXXABI_1.3.2

    • GCC 4.4.0: GLIBCXX_3.4.11, CXXABI_1.3.3

    • GCC 4.4.1: GLIBCXX_3.4.12, CXXABI_1.3.3

    • GCC 4.4.2: GLIBCXX_3.4.13, CXXABI_1.3.3

    • GCC 4.5.0: GLIBCXX_3.4.14, CXXABI_1.3.4

    • GCC 4.6.0: GLIBCXX_3.4.15, CXXABI_1.3.5

    • GCC 4.6.1: GLIBCXX_3.4.16, CXXABI_1.3.5

    • GCC 4.7.0: GLIBCXX_3.4.17, CXXABI_1.3.6

    • GCC 4.8.0: GLIBCXX_3.4.18, CXXABI_1.3.7

    • GCC 4.8.3: GLIBCXX_3.4.19, CXXABI_1.3.7

    • GCC 4.9.0: GLIBCXX_3.4.20, CXXABI_1.3.8

    • GCC 5.1.0: GLIBCXX_3.4.21, CXXABI_1.3.9

    • GCC 6.1.0: GLIBCXX_3.4.22, CXXABI_1.3.10

    • GCC 7.1.0: GLIBCXX_3.4.23, CXXABI_1.3.11

    • GCC 7.2.0: GLIBCXX_3.4.24, CXXABI_1.3.11

    • GCC 8.1.0: GLIBCXX_3.4.25, CXXABI_1.3.11

  • Incremental bumping of a compiler pre-defined macro, + __GXX_ABI_VERSION. This macro is defined as the version of the + compiler v3 ABI, with g++ 3.0 being version 100. This macro will + be automatically defined whenever g++ is used (the curious can +--- a/src/libstdc++-v3/doc/html/manual/status.html ++++ b/src/libstdc++-v3/doc/html/manual/status.html +@@ -689,7 +689,7 @@ Feature-testing recommendations for C++. + + P0077R2 + +- 7.1 __cpp_lib_is_callable >= 201603 has_unique_object_representations ++ 7.1 __cpp_lib_is_invocable >= 201703 has_unique_object_representations + + P0258R2 + +--- a/src/libstdc++-v3/doc/xml/faq.xml ++++ b/src/libstdc++-v3/doc/xml/faq.xml +@@ -2,9 +2,9 @@ + +

    + +- ++ + Frequently Asked Questions +- ++ + + + 2008-2018 +@@ -36,7 +36,7 @@ + exactly how far the project has come, or just want the latest + bleeding-edge code, the up-to-date source can be cloned via + Git. +- ++ + + + N.B. The library is called libstdc++ not stdlibc++. +@@ -58,7 +58,7 @@ + (as the Draft Standard used to say) incomplet and + incorrekt, and many suffered from limitations of the compilers + that used them. +- ++ + + The GNU compiler collection + (gcc, g++, etc) is widely +@@ -68,7 +68,7 @@ + the rapid development and near-legendary + portability + that are the hallmarks of an open-source project are applied to libstdc++. +- ++ + + All of the standard classes and functions from C++98/C++03, C++11 and C++14 + (such as string, +@@ -100,7 +100,7 @@ + archives, is open to everyone. You can read instructions for + doing so on the GCC mailing lists page. + If you have questions, ideas, code, or are just curious, sign up! +- ++ + + + +@@ -115,7 +115,7 @@ + Nathan Myers gave the best of all possible answers, responding to + a Usenet article asking this question: Sooner, if you + help. +- ++ + + + +@@ -135,7 +135,7 @@ + anybody who is willing to help write documentation, for example, + or has found a bug in code that we all thought was working and is + willing to provide details, is more than welcome! +- ++ + + + +@@ -152,7 +152,7 @@ + being developed. + It should not be used for new projects, and won't even compile with + recent releases of GCC (or most other C++ compilers). +- ++ + + More information can be found in the + Backwards +@@ -175,13 +175,13 @@ + information is available on the homepage (including how to browse + the list archives); to send a message to the list, + use libstdc++@gcc.gnu.org. +- ++ + +- ++ + If you have a question that you think should be included + here, or if you have a question about a question/answer + here, please send email to the libstdc++ mailing list, as above. +- ++ + + + +@@ -201,7 +201,7 @@ + + See our license description + for these and related questions. +- ++ + + + +@@ -215,7 +215,7 @@ + + No. The special exception permits use of the library in + proprietary applications. +- ++ + + + +@@ -235,7 +235,7 @@ + are expanded inside the code that uses the library. So to allow people + to replace the library code, someone using the library would have to + distribute their own source, rendering the LGPL equivalent to the GPL. +- ++ + + + +@@ -249,7 +249,7 @@ + + None. We encourage such programs to be released as free software, + but we won't punish you or sue you if you choose otherwise. +- ++ + + + +@@ -271,14 +271,14 @@ + development tools. It may be necessary to install extra + development packages to get the headers, or the documentation, or + the source: please consult your vendor for details. +- +- +- To build and install from the GNU GCC sources, please consult the ++ ++ ++ To build and install from the GNU GCC sources, please consult the + setup + documentation for detailed + instructions. You may wish to browse those files ahead + of time to get a feel for what's required. +- ++ + + + +@@ -313,12 +313,12 @@ + + Libstdc++ comes with its own validation testsuite, which includes + conformance testing, regression testing, ABI testing, and +- performance testing. Please consult the ++ performance testing. Please consult the + testing + documentation for GCC and + Testing in the libstdc++ + manual for more details. +- ++ + + If you find bugs in the testsuite programs themselves, or if you + think of a new test program that should be added to the suite, +@@ -432,7 +432,7 @@ + using anything from the rest of the library, such as IOStreams + or vectors, then you'll still need pieces from + libstdc++.a. +- ++ + + + +@@ -465,7 +465,7 @@ + is only possible to a certain extent; the object files in question contain + template classes and template functions, pre-instantiated, and + splitting those up causes severe maintenance headaches. +- ++ + + On supported platforms, libstdc++ takes advantage of garbage + collection in the GNU linker to get a result similar to separating +@@ -495,12 +495,12 @@ + + + Perhaps. +- ++ + + Since the goal of ISO Standardization is for all C++ + implementations to be able to share code, libstdc++ should be + usable under any ISO-compliant compiler, at least in theory. +- ++ + + However, the reality is that libstdc++ is targeted and optimized + for GCC/G++. This means that often libstdc++ uses specific, +@@ -515,7 +515,7 @@ + been known to work with versions of the EDG C++ compiler, and + vendor-specific proprietary C++ compilers such as the Intel ICC + C++ compiler. +- ++ + + + +@@ -533,16 +533,16 @@ + + By default we try to support the C99 long long type. + This requires that certain functions from your C library be present. +- +- ++ ++ + Up through release 3.0.2 the platform-specific tests performed by + libstdc++ were too general, resulting in a conservative approach + to enabling the long long code paths. The most + commonly reported platform affected was Solaris. +- +- ++ ++ + This has been fixed for libstdc++ releases greater than 3.0.3. +- ++ + + + +@@ -651,10 +651,10 @@ + make mips* use the generic implementation instead. You can also + configure for mipsel-elf as a workaround. + +- ++ + The mips*-*-linux* port continues to use the MIPS II routines, and more + work in this area is expected. +- ++ + + + +@@ -700,9 +700,9 @@ + enable wchar_t and C++ library structures + like wstring were present. This impacted Solaris, + Darwin, and BSD variants, and is fixed in libstdc++ versions post 4.1.0. +- +- +- ++ ++ ++ + + + +@@ -728,14 +728,14 @@ + for wchar_t and long long specializations, + and details of thread support. + +- +- Long answer: See the implementation status pages for ++ ++ Long answer: See the implementation status pages for + C++98, + TR1, + C++11, + C++14, and + C++17. +- ++ + + + +@@ -747,7 +747,7 @@ + + + +- Unfortunately, there are some. ++ Unfortunately, there are some. + + + For those people who are not part of the ISO Library Group +@@ -758,7 +758,7 @@ + website. + Many of these issues have resulted in + code changes in libstdc++. +- ++ + + If you think you've discovered a new bug that is not listed, + please post a message describing your problem to the author of +@@ -784,12 +784,12 @@ + or an older version of the GNU compilers. Third, you can find more + information on the libstdc++ and the GCC mailing lists: search + these lists with terms describing your issue. +- +- ++ ++ + Before reporting a bug, please examine the + bugs database, with the + component set to c++. +- ++ + + + +@@ -824,7 +824,7 @@ + fs.close(); + fs.open("a_new_file"); + +- ++ + + All operations on the re-opened fs would fail, or at + least act very strangely, especially if fs reached the +@@ -840,7 +840,7 @@ + of DR #409 and + open() + now calls clear() on success. +- ++ + + + +@@ -859,7 +859,7 @@ + necessarily trying to be OO. The option also enforces outdated guidelines + from old editions of the books, and the advice isn't all relevant to + modern C++ (especially C++11 and later). +- ++ + + We do, however, try to have libstdc++ sources as clean as possible. If + you see some simple changes that pacify +@@ -889,7 +889,7 @@ + sums + things up here. The collisions with vector/string iterator + types have been fixed for 3.1. +- ++ + + + +@@ -947,7 +947,7 @@ + checks, is available in the + Diagnostics. + chapter of the manual. +- ++ + + + +@@ -1013,7 +1013,7 @@ + want to test the library for memory leaks please read + Tips for memory leak hunting + first. +- ++ + + + +@@ -1028,7 +1028,7 @@ + See + the Containers + chapter. +- ++ + + + +@@ -1056,7 +1056,7 @@ + fixes. Bugs have a way of being reintroduced; if an old bug + creeps back in, it will be caught immediately by the testsuite - + but only if such a test exists. +- ++ + + + +@@ -1150,9 +1150,9 @@ + compatibility documentation. + + +- The FAQ ++ The FAQ + for SGI's STL is still recommended reading. +- ++ + + + +@@ -1165,7 +1165,7 @@ + + + See the link on backwards compatibility and link on evolution. +- ++ + + + +@@ -1206,7 +1206,7 @@ + + Please refer to the Contributing + section in our manual. +- ++ + + + +@@ -1272,7 +1272,7 @@ + so they may later be changed. Deciding which, and implementing + the decisions, must happen before you can reasonably document a + candidate C++ ABI that encompasses the standard library. +- ++ + + + +@@ -1302,7 +1302,7 @@ + + See Shrink-to-fit + strings for a similar solution for strings. +- ++ + + + +--- a/src/libstdc++-v3/doc/xml/manual/abi.xml ++++ b/src/libstdc++-v3/doc/xml/manual/abi.xml +@@ -267,7 +267,7 @@ compatible. + GCC 6.1.0: libstdc++.so.6.0.22 + GCC 7.1.0: libstdc++.so.6.0.23 + GCC 7.2.0: libstdc++.so.6.0.24 +- GCC 8.0.0: libstdc++.so.6.0.25 ++ GCC 8.1.0: libstdc++.so.6.0.25 + + + Note 1: Error should be libstdc++.so.3.0.3. +@@ -337,7 +337,7 @@ compatible. + GCC 6.1.0: GLIBCXX_3.4.22, CXXABI_1.3.10 + GCC 7.1.0: GLIBCXX_3.4.23, CXXABI_1.3.11 + GCC 7.2.0: GLIBCXX_3.4.24, CXXABI_1.3.11 +- GCC 8.0.0: GLIBCXX_3.4.25, CXXABI_1.3.11 ++ GCC 8.1.0: GLIBCXX_3.4.25, CXXABI_1.3.11 + + + +--- a/src/libstdc++-v3/doc/xml/manual/status_cxx2017.xml ++++ b/src/libstdc++-v3/doc/xml/manual/status_cxx2017.xml +@@ -458,7 +458,7 @@ Feature-testing recommendations for C++. + + + 7.1 +- __cpp_lib_is_callable >= 201603 ++ __cpp_lib_is_invocable >= 201703 + + + +--- a/src/libstdc++-v3/include/bits/fs_path.h ++++ b/src/libstdc++-v3/include/bits/fs_path.h +@@ -477,7 +477,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11 + + template + static basic_string<_CharT, _Traits, _Allocator> +- _S_str_convert(const string_type&, const _Allocator& __a); ++ _S_str_convert(basic_string_view, const _Allocator&); + + static bool _S_is_dir_sep(value_type __ch) + { +@@ -873,7 +873,8 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11 + + template + std::basic_string<_CharT, _Traits, _Allocator> +- path::_S_str_convert(const string_type& __str, const _Allocator& __a) ++ path::_S_str_convert(basic_string_view __str, ++ const _Allocator& __a) + { + if (__str.size() == 0) + return std::basic_string<_CharT, _Traits, _Allocator>(__a); +@@ -971,7 +972,9 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11 + #else + const value_type __slash = '/'; + #endif +- string_type __str(__a); ++ using _Alloc2 = typename allocator_traits<_Allocator>::template ++ rebind_alloc; ++ basic_string, _Alloc2> __str(__a); + + if (_M_type == _Type::_Root_dir) + __str.assign(1, __slash); +@@ -983,7 +986,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11 + { + if (__add_slash) + __str += __slash; +- __str += __elem._M_pathname; ++ __str += basic_string_view(__elem._M_pathname); + __add_slash = __elem._M_type == _Type::_Filename; + } + } +--- a/src/libstdc++-v3/include/bits/locale_facets.tcc ++++ b/src/libstdc++-v3/include/bits/locale_facets.tcc +@@ -992,7 +992,7 @@ _GLIBCXX_BEGIN_NAMESPACE_LDBL + char __fbuf[16]; + __num_base::_S_format_float(__io, __fbuf, __mod); + +-#if _GLIBCXX_USE_C99_STDIO ++#if _GLIBCXX_USE_C99_STDIO && !_GLIBCXX_HAVE_BROKEN_VSNPRINTF + // Precision is always used except for hexfloat format. + const bool __use_prec = + (__io.flags() & ios_base::floatfield) != ios_base::floatfield; +--- a/src/libstdc++-v3/include/bits/ptr_traits.h ++++ b/src/libstdc++-v3/include/bits/ptr_traits.h +@@ -34,6 +34,10 @@ + + #include + ++#if __cplusplus > 201703L ++namespace __gnu_debug { struct _Safe_iterator_base; } ++#endif ++ + namespace std _GLIBCXX_VISIBILITY(default) + { + _GLIBCXX_BEGIN_NAMESPACE_VERSION +@@ -169,7 +173,12 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION + template + constexpr auto + __to_address(const _Ptr& __ptr, _None...) noexcept +- { return std::__to_address(__ptr.operator->()); } ++ { ++ if constexpr (is_base_of_v<__gnu_debug::_Safe_iterator_base, _Ptr>) ++ return std::__to_address(__ptr.base().operator->()); ++ else ++ return std::__to_address(__ptr.operator->()); ++ } + + /** + * @brief Obtain address referenced by a pointer to an object +--- a/src/libstdc++-v3/include/bits/random.h ++++ b/src/libstdc++-v3/include/bits/random.h +@@ -5968,7 +5968,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION + { } + + template +- seed_seq(std::initializer_list<_IntType> il); ++ seed_seq(std::initializer_list<_IntType> __il); + + template + seed_seq(_InputIterator __begin, _InputIterator __end); +--- a/src/libstdc++-v3/include/experimental/bits/fs_path.h ++++ b/src/libstdc++-v3/include/experimental/bits/fs_path.h +@@ -932,29 +932,51 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11 + inline std::u32string + path::u32string() const { return string(); } + +-#ifndef _GLIBCXX_FILESYSTEM_IS_WINDOWS + template + inline std::basic_string<_CharT, _Traits, _Allocator> + path::generic_string(const _Allocator& __a) const +- { return string<_CharT, _Traits, _Allocator>(__a); } ++ { ++#ifdef _GLIBCXX_FILESYSTEM_IS_WINDOWS ++ const _CharT __slash = is_same<_CharT, wchar_t>::value ++ ? _CharT(L'/') ++ : _CharT('/'); // Assume value is correct for the encoding. ++#else ++ const _CharT __slash = _CharT('/'); ++#endif ++ basic_string<_CharT, _Traits, _Allocator> __str(__a); ++ __str.reserve(_M_pathname.size()); ++ bool __add_slash = false; ++ for (auto& __elem : *this) ++ { ++ if (__elem._M_type == _Type::_Root_dir) ++ { ++ __str += __slash; ++ continue; ++ } ++ if (__add_slash) ++ __str += __slash; ++ __str += __elem.string<_CharT, _Traits, _Allocator>(__a); ++ __add_slash = __elem._M_type == _Type::_Filename; ++ } ++ return __str; ++ } + + inline std::string +- path::generic_string() const { return string(); } ++ path::generic_string() const { return generic_string(); } + + #if _GLIBCXX_USE_WCHAR_T + inline std::wstring +- path::generic_wstring() const { return wstring(); } ++ path::generic_wstring() const { return generic_string(); } + #endif + + inline std::string +- path::generic_u8string() const { return u8string(); } ++ path::generic_u8string() const { return generic_string(); } + + inline std::u16string +- path::generic_u16string() const { return u16string(); } ++ path::generic_u16string() const { return generic_string(); } + + inline std::u32string +- path::generic_u32string() const { return u32string(); } +-#endif ++ path::generic_u32string() const { return generic_string(); } + + inline int + path::compare(const string_type& __s) const { return compare(path(__s)); } +--- a/src/libstdc++-v3/include/experimental/numeric ++++ b/src/libstdc++-v3/include/experimental/numeric +@@ -53,15 +53,19 @@ inline namespace fundamentals_v2 + /// Greatest common divisor + template + constexpr common_type_t<_Mn, _Nn> +- gcd(_Mn __m, _Nn __n) ++ gcd(_Mn __m, _Nn __n) noexcept + { +- static_assert(is_integral_v<_Mn>, "gcd arguments are integers"); +- static_assert(is_integral_v<_Nn>, "gcd arguments are integers"); +- static_assert(!is_same_v, bool>, +- "gcd arguments are not bools"); +- static_assert(!is_same_v, bool>, +- "gcd arguments are not bools"); +- return std::__detail::__gcd(__m, __n); ++ static_assert(is_integral_v<_Mn>, ++ "std::experimental::gcd arguments must be integers"); ++ static_assert(is_integral_v<_Nn>, ++ "std::experimental::gcd arguments must be integers"); ++ static_assert(_Mn(2) != _Mn(1), ++ "std::experimental::gcd arguments must not be bool"); ++ static_assert(_Nn(2) != _Nn(1), ++ "std::experimental::gcd arguments must not be bool"); ++ using _Up = make_unsigned_t>; ++ return std::__detail::__gcd(std::__detail::__absu<_Up>(__m), ++ std::__detail::__absu<_Up>(__n)); + } + + /// Least common multiple +@@ -69,13 +73,17 @@ inline namespace fundamentals_v2 + constexpr common_type_t<_Mn, _Nn> + lcm(_Mn __m, _Nn __n) + { +- static_assert(is_integral_v<_Mn>, "lcm arguments are integers"); +- static_assert(is_integral_v<_Nn>, "lcm arguments are integers"); +- static_assert(!is_same_v, bool>, +- "lcm arguments are not bools"); +- static_assert(!is_same_v, bool>, +- "lcm arguments are not bools"); +- return std::__detail::__lcm(__m, __n); ++ static_assert(is_integral_v<_Mn>, ++ "std::experimental::lcm arguments must be integers"); ++ static_assert(is_integral_v<_Nn>, ++ "std::experimental::lcm arguments must be integers"); ++ static_assert(_Mn(2) != _Mn(1), ++ "std::experimental::lcm arguments must not be bool"); ++ static_assert(_Nn(2) != _Nn(1), ++ "std::experimental::lcm arguments must not be bool"); ++ using _Up = make_unsigned_t>; ++ return std::__detail::__lcm(std::__detail::__absu<_Up>(__m), ++ std::__detail::__absu<_Up>(__n)); + } + } // namespace fundamentals_v2 + } // namespace experimental +--- a/src/libstdc++-v3/include/experimental/string_view ++++ b/src/libstdc++-v3/include/experimental/string_view +@@ -178,8 +178,7 @@ inline namespace fundamentals_v1 + constexpr const _CharT& + operator[](size_type __pos) const + { +- // TODO: Assert to restore in a way compatible with the constexpr. +- // __glibcxx_assert(__pos < this->_M_len); ++ __glibcxx_assert(__pos < this->_M_len); + return *(this->_M_str + __pos); + } + +@@ -198,16 +197,14 @@ inline namespace fundamentals_v1 + constexpr const _CharT& + front() const + { +- // TODO: Assert to restore in a way compatible with the constexpr. +- // __glibcxx_assert(this->_M_len > 0); ++ __glibcxx_assert(this->_M_len > 0); + return *this->_M_str; + } + + constexpr const _CharT& + back() const + { +- // TODO: Assert to restore in a way compatible with the constexpr. +- // __glibcxx_assert(this->_M_len > 0); ++ __glibcxx_assert(this->_M_len > 0); + return *(this->_M_str + this->_M_len - 1); + } + +--- a/src/libstdc++-v3/include/std/numeric ++++ b/src/libstdc++-v3/include/std/numeric +@@ -60,6 +60,7 @@ + #include + #include + #include ++#include + + #ifdef _GLIBCXX_PARALLEL + # include +@@ -83,38 +84,38 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION + + namespace __detail + { +- // std::abs is not constexpr and doesn't support unsigned integers. +- template +- constexpr +- enable_if_t<__and_, is_signed<_Tp>>::value, _Tp> +- __abs_integral(_Tp __val) +- { return __val < 0 ? -__val : __val; } +- +- template +- constexpr +- enable_if_t<__and_, is_unsigned<_Tp>>::value, _Tp> +- __abs_integral(_Tp __val) +- { return __val; } ++ // std::abs is not constexpr, doesn't support unsigned integers, ++ // and std::abs(std::numeric_limits::min()) is undefined. ++ template ++ constexpr _Up ++ __absu(_Tp __val) ++ { ++ static_assert(is_unsigned<_Up>::value, "result type must be unsigned"); ++ static_assert(sizeof(_Up) >= sizeof(_Tp), ++ "result type must be at least as wide as the input type"); ++ return __val < 0 ? -(_Up)__val : (_Up)__val; ++ } + +- void __abs_integral(bool) = delete; ++ template void __absu(bool) = delete; + +- template +- constexpr common_type_t<_Mn, _Nn> +- __gcd(_Mn __m, _Nn __n) ++ // GCD implementation ++ template ++ constexpr _Tp ++ __gcd(_Tp __m, _Tp __n) + { +- return __m == 0 ? __detail::__abs_integral(__n) +- : __n == 0 ? __detail::__abs_integral(__m) +- : __detail::__gcd(__n, __m % __n); ++ static_assert(is_unsigned<_Tp>::value, "type must be unsigned"); ++ return __m == 0 ? __n ++ : __n == 0 ? __m ++ : __detail::__gcd(__n, _Tp(__m % __n)); + } + +- /// Least common multiple +- template +- constexpr common_type_t<_Mn, _Nn> +- __lcm(_Mn __m, _Nn __n) ++ // LCM implementation ++ template ++ constexpr _Tp ++ __lcm(_Tp __m, _Tp __n) + { + return (__m != 0 && __n != 0) +- ? (__detail::__abs_integral(__m) / __detail::__gcd(__m, __n)) +- * __detail::__abs_integral(__n) ++ ? (__m / __detail::__gcd(__m, __n)) * __n + : 0; + } + } // namespace __detail +@@ -129,29 +130,29 @@ namespace __detail + /// Greatest common divisor + template + constexpr common_type_t<_Mn, _Nn> +- gcd(_Mn __m, _Nn __n) ++ gcd(_Mn __m, _Nn __n) noexcept + { +- static_assert(is_integral_v<_Mn>, "gcd arguments are integers"); +- static_assert(is_integral_v<_Nn>, "gcd arguments are integers"); +- static_assert(!is_same_v, bool>, +- "gcd arguments are not bools"); +- static_assert(!is_same_v, bool>, +- "gcd arguments are not bools"); +- return __detail::__gcd(__m, __n); ++ static_assert(is_integral_v<_Mn>, "std::gcd arguments must be integers"); ++ static_assert(is_integral_v<_Nn>, "std::gcd arguments must be integers"); ++ static_assert(_Mn(2) != _Mn(1), "std::gcd arguments must not be bool"); ++ static_assert(_Nn(2) != _Nn(1), "std::gcd arguments must not be bool"); ++ using _Up = make_unsigned_t>; ++ return __detail::__gcd(__detail::__absu<_Up>(__m), ++ __detail::__absu<_Up>(__n)); + } + + /// Least common multiple + template + constexpr common_type_t<_Mn, _Nn> +- lcm(_Mn __m, _Nn __n) ++ lcm(_Mn __m, _Nn __n) noexcept + { +- static_assert(is_integral_v<_Mn>, "lcm arguments are integers"); +- static_assert(is_integral_v<_Nn>, "lcm arguments are integers"); +- static_assert(!is_same_v, bool>, +- "lcm arguments are not bools"); +- static_assert(!is_same_v, bool>, +- "lcm arguments are not bools"); +- return __detail::__lcm(__m, __n); ++ static_assert(is_integral_v<_Mn>, "std::lcm arguments must be integers"); ++ static_assert(is_integral_v<_Nn>, "std::lcm arguments must be integers"); ++ static_assert(_Mn(2) == 2, "std::lcm arguments must not be bool"); ++ static_assert(_Nn(2) == 2, "std::lcm arguments must not be bool"); ++ using _Up = make_unsigned_t>; ++ return __detail::__lcm(__detail::__absu<_Up>(__m), ++ __detail::__absu<_Up>(__n)); + } + + #endif // C++17 +--- a/src/libstdc++-v3/include/std/string_view ++++ b/src/libstdc++-v3/include/std/string_view +@@ -169,8 +169,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION + constexpr const _CharT& + operator[](size_type __pos) const noexcept + { +- // TODO: Assert to restore in a way compatible with the constexpr. +- // __glibcxx_assert(__pos < this->_M_len); ++ __glibcxx_assert(__pos < this->_M_len); + return *(this->_M_str + __pos); + } + +@@ -187,16 +186,14 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION + constexpr const _CharT& + front() const noexcept + { +- // TODO: Assert to restore in a way compatible with the constexpr. +- // __glibcxx_assert(this->_M_len > 0); ++ __glibcxx_assert(this->_M_len > 0); + return *this->_M_str; + } + + constexpr const _CharT& + back() const noexcept + { +- // TODO: Assert to restore in a way compatible with the constexpr. +- // __glibcxx_assert(this->_M_len > 0); ++ __glibcxx_assert(this->_M_len > 0); + return *(this->_M_str + this->_M_len - 1); + } + +--- a/src/libstdc++-v3/include/std/tuple ++++ b/src/libstdc++-v3/include/std/tuple +@@ -271,13 +271,13 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION + _Base(__use_alloc<_Head, _Alloc, _Head>(__a), + std::forward<_Head>(_M_head(__in))) { } + +- template ++ template + _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, +- const _Tuple_impl<_Idx, _UElements...>& __in) ++ const _Tuple_impl<_Idx, _UHead, _UTails...>& __in) + : _Inherited(__tag, __a, +- _Tuple_impl<_Idx, _UElements...>::_M_tail(__in)), +- _Base(__use_alloc<_Head, _Alloc, _Head>(__a), +- _Tuple_impl<_Idx, _UElements...>::_M_head(__in)) { } ++ _Tuple_impl<_Idx, _UHead, _UTails...>::_M_tail(__in)), ++ _Base(__use_alloc<_Head, _Alloc, const _UHead&>(__a), ++ _Tuple_impl<_Idx, _UHead, _UTails...>::_M_head(__in)) { } + + template + _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, +@@ -410,7 +410,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION + template + _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, + const _Tuple_impl<_Idx, _UHead>& __in) +- : _Base(__use_alloc<_Head, _Alloc, _Head>(__a), ++ : _Base(__use_alloc<_Head, _Alloc, const _UHead&>(__a), + _Tuple_impl<_Idx, _UHead>::_M_head(__in)) { } + + template +--- a/src/libstdc++-v3/include/std/type_traits ++++ b/src/libstdc++-v3/include/std/type_traits +@@ -915,55 +915,48 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION + : public __is_move_constructible_impl<_Tp> + { }; + +- template +- struct __is_nt_default_constructible_atom +- : public integral_constant ++ template ++ struct __is_nt_constructible_impl ++ : public false_type + { }; + +- template::value> +- struct __is_nt_default_constructible_impl; ++ template ++ struct __is_nt_constructible_impl ++ : public __bool_constant()...))> ++ { }; + +- template +- struct __is_nt_default_constructible_impl<_Tp, true> +- : public __and_<__is_array_known_bounds<_Tp>, +- __is_nt_default_constructible_atom::type>> ++ template ++ struct __is_nt_constructible_impl ++ : public __bool_constant(std::declval<_Arg>()))> + { }; + + template +- struct __is_nt_default_constructible_impl<_Tp, false> +- : public __is_nt_default_constructible_atom<_Tp> ++ struct __is_nt_constructible_impl ++ : public __bool_constant + { }; + +- /// is_nothrow_default_constructible +- template +- struct is_nothrow_default_constructible +- : public __and_, +- __is_nt_default_constructible_impl<_Tp>> ++ template ++ struct __is_nt_constructible_impl ++ : public __bool_constant::type())> + { }; + + template +- struct __is_nt_constructible_impl +- : public integral_constant()...))> +- { }; ++ using __is_nothrow_constructible_impl ++ = __is_nt_constructible_impl<__is_constructible(_Tp, _Args...), ++ _Tp, _Args...>; + +- template +- struct __is_nt_constructible_impl<_Tp, _Arg> +- : public integral_constant(declval<_Arg>()))> ++ /// is_nothrow_constructible ++ template ++ struct is_nothrow_constructible ++ : public __is_nothrow_constructible_impl<_Tp, _Args...>::type + { }; + ++ /// is_nothrow_default_constructible + template +- struct __is_nt_constructible_impl<_Tp> +- : public is_nothrow_default_constructible<_Tp> ++ struct is_nothrow_default_constructible ++ : public __is_nothrow_constructible_impl<_Tp>::type + { }; + +- /// is_nothrow_constructible +- template +- struct is_nothrow_constructible +- : public __and_, +- __is_nt_constructible_impl<_Tp, _Args...>> +- { }; + + template::value> + struct __is_nothrow_copy_constructible_impl; +deleted file mode 100644 +--- a/src/libstdc++-v3/src/c++17/Makefile.in ++++ /dev/null +@@ -1,754 +0,0 @@ +-# 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: +--- a/src/libstdc++-v3/src/filesystem/dir.cc ++++ b/src/libstdc++-v3/src/filesystem/dir.cc +@@ -181,16 +181,16 @@ struct fs::recursive_directory_iterator::_Dir_stack : std::stack<_Dir> + + fs::recursive_directory_iterator:: + recursive_directory_iterator(const path& p, directory_options options, +- error_code* ec) ++ error_code* ecptr) + : _M_options(options), _M_pending(true) + { +- if (ec) +- ec->clear(); + if (DIR* dirp = ::opendir(p.c_str())) + { ++ if (ecptr) ++ ecptr->clear(); + auto sp = std::make_shared<_Dir_stack>(); + sp->push(_Dir{ dirp, p }); +- if (sp->top().advance(ec)) ++ if (ecptr ? sp->top().advance(*ecptr) : sp->top().advance()) + _M_dirs.swap(sp); + } + else +@@ -198,14 +198,18 @@ recursive_directory_iterator(const path& p, directory_options options, + const int err = errno; + if (err == EACCES + && is_set(options, fs::directory_options::skip_permission_denied)) +- return; ++ { ++ if (ecptr) ++ ecptr->clear(); ++ return; ++ } + +- if (!ec) ++ if (!ecptr) + _GLIBCXX_THROW_OR_ABORT(filesystem_error( + "recursive directory iterator cannot open directory", p, + std::error_code(err, std::generic_category()))); + +- ec->assign(err, std::generic_category()); ++ ecptr->assign(err, std::generic_category()); + } + } + +--- a/src/libstdc++-v3/src/filesystem/ops.cc ++++ b/src/libstdc++-v3/src/filesystem/ops.cc +@@ -987,6 +987,12 @@ fs::path fs::read_symlink(const path& p, error_code& ec) + ec.assign(errno, std::generic_category()); + return result; + } ++ else if (!fs::is_symlink(make_file_status(st))) ++ { ++ ec.assign(EINVAL, std::generic_category()); ++ return result; ++ } ++ + std::string buf(st.st_size ? st.st_size + 1 : 128, '\0'); + do + { +--- a/src/libstdc++-v3/src/filesystem/std-ops.cc ++++ b/src/libstdc++-v3/src/filesystem/std-ops.cc +@@ -1248,6 +1248,12 @@ fs::path fs::read_symlink(const path& p, error_code& ec) + ec.assign(errno, std::generic_category()); + return result; + } ++ else if (!fs::is_symlink(make_file_status(st))) ++ { ++ ec.assign(EINVAL, std::generic_category()); ++ return result; ++ } ++ + std::string buf(st.st_size ? st.st_size + 1 : 128, '\0'); + do + { +--- a/src/libstdc++-v3/testsuite/17_intro/names.cc ++++ b/src/libstdc++-v3/testsuite/17_intro/names.cc +@@ -104,6 +104,11 @@ + #define uses_allocator ( + #endif + ++#if __cplusplus < 201402L ++// defines operator""il ++#define il ( ++#endif ++ + #if __cplusplus < 201703L + // defines to_chars_result::ptr and to_chars_result::ec + #define ec ( +new file mode 100644 +--- /dev/null ++++ b/src/libstdc++-v3/testsuite/20_util/is_nothrow_constructible/94003.cc +@@ -0,0 +1,46 @@ ++// Copyright (C) 2020 Free Software Foundation, Inc. ++// ++// This file is part of the GNU ISO C++ Library. This library is free ++// software; you can redistribute it and/or modify it under the ++// terms of the GNU General Public License as published by the ++// Free Software Foundation; either version 3, or (at your option) ++// any later version. ++ ++// This library is distributed in the hope that it will be useful, ++// but WITHOUT ANY WARRANTY; without even the implied warranty of ++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++// GNU General Public License for more details. ++ ++// You should have received a copy of the GNU General Public License along ++// with this library; see the file COPYING3. If not see ++// . ++ ++// { dg-options "-std=gnu++17" } ++// { dg-do compile { target c++17 } } ++ ++#include ++#include ++ ++template struct abc {}; ++ ++template ++ ++struct future : public abc>> {}; ++ ++class mutation { ++ mutation(); ++ friend class std::optional; ++}; ++ ++using mutation_opt = std::optional; ++ ++future foo(); ++ ++template future consume_partitions() { ++ return foo(); ++} ++ ++future bar() { return consume_partitions(); } ++ ++future zed(); ++future apply_counter_update() { return zed(); } +new file mode 100644 +--- /dev/null ++++ b/src/libstdc++-v3/testsuite/20_util/is_nothrow_default_constructible/96999.cc +@@ -0,0 +1,54 @@ ++// Copyright (C) 2020 Free Software Foundation, Inc. ++// ++// This file is part of the GNU ISO C++ Library. This library is free ++// software; you can redistribute it and/or modify it under the ++// terms of the GNU General Public License as published by the ++// Free Software Foundation; either version 3, or (at your option) ++// any later version. ++ ++// This library is distributed in the hope that it will be useful, ++// but WITHOUT ANY WARRANTY; without even the implied warranty of ++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++// GNU General Public License for more details. ++ ++// You should have received a copy of the GNU General Public License along ++// with this library; see the file COPYING3. If not see ++// . ++ ++// { dg-options "-std=gnu++17" } ++// { dg-do compile { target c++17 } } ++ ++// PR libstdc++/96999 ++ ++#include ++#include ++ ++struct Foo { ++public: ++ explicit Foo(int) noexcept {} ++ Foo(Foo &&) noexcept = default; ++ Foo &operator=(Foo &&) = default; ++private: ++ Foo() noexcept {} ++}; ++ ++struct Boo { ++public: ++ explicit Boo(int) noexcept {} ++ Boo(Boo &&) noexcept = default; ++ Boo &operator=(Boo &&) = default; ++private: ++ Boo() noexcept {} ++}; ++ ++ ++template ++std::variant g(int v, int x) { ++ return v == 0 ? std::variant{Foo{x}} : ++ std::variant{Boo{x}}; ++} ++ ++int main() ++{ ++ std::variant, std::string> err{std::string("aaa")}; ++} +--- a/src/libstdc++-v3/testsuite/20_util/to_address/1_neg.cc ++++ b/src/libstdc++-v3/testsuite/20_util/to_address/1_neg.cc +@@ -17,7 +17,7 @@ + + // { dg-options "-std=gnu++2a" } + // { dg-do compile { target c++2a } } +-// { dg-error "not a function pointer" "" { target *-*-* } 153 } ++// { dg-error "not a function pointer" "" { target *-*-* } 157 } + + #include + +new file mode 100644 +--- /dev/null ++++ b/src/libstdc++-v3/testsuite/20_util/to_address/debug.cc +@@ -0,0 +1,36 @@ ++// Copyright (C) 2020 Free Software Foundation, Inc. ++// ++// This file is part of the GNU ISO C++ Library. This library is free ++// software; you can redistribute it and/or modify it under the ++// terms of the GNU General Public License as published by the ++// Free Software Foundation; either version 3, or (at your option) ++// any later version. ++ ++// This library is distributed in the hope that it will be useful, ++// but WITHOUT ANY WARRANTY; without even the implied warranty of ++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++// GNU General Public License for more details. ++ ++// You should have received a copy of the GNU General Public License along ++// with this library; see the file COPYING3. If not see ++// . ++ ++// { dg-options "-std=gnu++2a" } ++// { dg-do run { target c++2a } } ++ ++#include ++#include ++ ++void ++test01() ++{ ++ __gnu_debug::vector v{1, 2, 3}; ++ auto p = std::to_address(v.end()); ++ VERIFY( p == v.data() + v.size() ); ++} ++ ++int ++main() ++{ ++ test01(); ++} +new file mode 100644 +--- /dev/null ++++ b/src/libstdc++-v3/testsuite/20_util/tuple/cons/96803.cc +@@ -0,0 +1,62 @@ ++// Copyright (C) 2020 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 ++ ++struct X ++{ ++ using allocator_type = std::allocator; ++ ++ X(X&&) { } ++ X(std::allocator_arg_t, const allocator_type&, X&&) { } ++ ++ explicit X(int) { } ++ explicit X(int, allocator_type) { } ++}; ++ ++void ++test01() ++{ ++ // PR libstdc++/96803 ++ // std::tuple chooses wrong constructor for uses-allocator construction ++ std::tuple o; ++ std::tuple nok(std::allocator_arg, std::allocator(), o); ++ ++ std::tuple oo; ++ std::tuple nn(std::allocator_arg, std::allocator(), oo); ++} ++ ++struct Y ++{ ++ using allocator_type = std::allocator; ++ ++ Y(const X&) { } ++ Y(const X&, const allocator_type&) { } ++ ++ Y(X&&) { } ++ Y(std::allocator_arg_t, const allocator_type&, X&&) { } ++}; ++ ++void ++test02() ++{ ++ std::tuple o{1, 1}; ++ std::tuple oo(std::allocator_arg, std::allocator(), o); ++} +new file mode 100644 +--- /dev/null ++++ b/src/libstdc++-v3/testsuite/26_numerics/gcd/92978.cc +@@ -0,0 +1,41 @@ ++// Copyright (C) 2020 Free Software Foundation, Inc. ++// ++// This file is part of the GNU ISO C++ Library. This library is free ++// software; you can redistribute it and/or modify it under the ++// terms of the GNU General Public License as published by the ++// Free Software Foundation; either version 3, or (at your option) ++// any later version. ++ ++// This library is distributed in the hope that it will be useful, ++// but WITHOUT ANY WARRANTY; without even the implied warranty of ++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++// GNU General Public License for more details. ++ ++// You should have received a copy of the GNU General Public License along ++// with this library; see the file COPYING3. If not see ++// . ++ ++// { dg-options "-std=gnu++17" } ++// { dg-do compile { target c++17 } } ++ ++#include ++#include ++ ++void ++test01() ++{ ++ // PR libstdc++/92978 ++ static_assert( std::gcd(-120, 10U) == 10 ); ++ static_assert( std::gcd(120U, -10) == 10 ); ++} ++ ++void ++test02() ++{ ++ // |INT_MIN| should not be undefined, as long as it fits in the result type. ++ static_assert( std::gcd(INT_MIN, 0LL) == 1LL+INT_MAX ); ++ static_assert( std::gcd(0LL, INT_MIN) == 1LL+INT_MAX ); ++ static_assert( std::gcd(INT_MIN, 0LL + INT_MIN) == 1LL + INT_MAX ); ++ static_assert( std::gcd(INT_MIN, 1LL + INT_MAX) == 1LL + INT_MAX ); ++ static_assert( std::gcd(SHRT_MIN, 1U + SHRT_MAX) == 1U + SHRT_MAX ); ++} +--- a/src/libstdc++-v3/testsuite/26_numerics/gcd/gcd_neg.cc ++++ b/src/libstdc++-v3/testsuite/26_numerics/gcd/gcd_neg.cc +@@ -46,9 +46,9 @@ test01() + std::gcd(0.1, 0.1); // { dg-error "from here" } + } + +-// { dg-error "integers" "" { target *-*-* } 134 } +-// { dg-error "integers" "" { target *-*-* } 135 } +-// { dg-error "not bools" "" { target *-*-* } 136 } +-// { dg-error "not bools" "" { target *-*-* } 138 } ++// { dg-error "must be integers" "" { target *-*-* } 135 } ++// { dg-error "must be integers" "" { target *-*-* } 136 } ++// { dg-error "must not be bool" "" { target *-*-* } 137 } ++// { dg-error "must not be bool" "" { target *-*-* } 138 } + // { dg-prune-output "deleted function" } +-// { dg-prune-output "invalid operands" } ++// { dg-prune-output "incomplete type .*make_unsigned" } +new file mode 100644 +--- /dev/null ++++ b/src/libstdc++-v3/testsuite/26_numerics/lcm/92978.cc +@@ -0,0 +1,28 @@ ++// Copyright (C) 2020 Free Software Foundation, Inc. ++// ++// This file is part of the GNU ISO C++ Library. This library is free ++// software; you can redistribute it and/or modify it under the ++// terms of the GNU General Public License as published by the ++// Free Software Foundation; either version 3, or (at your option) ++// any later version. ++ ++// This library is distributed in the hope that it will be useful, ++// but WITHOUT ANY WARRANTY; without even the implied warranty of ++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++// GNU General Public License for more details. ++ ++// You should have received a copy of the GNU General Public License along ++// with this library; see the file COPYING3. If not see ++// . ++ ++// { dg-options "-std=gnu++17" } ++// { dg-do compile { target c++17 } } ++ ++#include ++ ++void ++test01() ++{ ++ // PR libstdc++/92978 ++ static_assert( std::lcm(-42, 21U) == 42U ); ++} +--- a/src/libstdc++-v3/testsuite/26_numerics/lcm/lcm_neg.cc ++++ b/src/libstdc++-v3/testsuite/26_numerics/lcm/lcm_neg.cc +@@ -46,9 +46,9 @@ test01() + std::lcm(0.1, 0.1); // { dg-error "from here" } + } + +-// { dg-error "integers" "" { target *-*-* } 148 } +-// { dg-error "integers" "" { target *-*-* } 149 } +-// { dg-error "not bools" "" { target *-*-* } 150 } +-// { dg-error "not bools" "" { target *-*-* } 152 } ++// { dg-error "must be integers" "" { target *-*-* } 149 } ++// { dg-error "must be integers" "" { target *-*-* } 150 } ++// { dg-error "must not be bool" "" { target *-*-* } 151 } ++// { dg-error "must not be bool" "" { target *-*-* } 152 } + // { dg-prune-output "deleted function" } +-// { dg-prune-output "invalid operands" } ++// { dg-prune-output "incomplete type .*make_unsigned" } +--- a/src/libstdc++-v3/testsuite/27_io/filesystem/operations/last_write_time.cc ++++ b/src/libstdc++-v3/testsuite/27_io/filesystem/operations/last_write_time.cc +@@ -22,6 +22,7 @@ + // 15.25 Permissions [fs.op.last_write_time] + + #include ++#include + #include + #include + +@@ -31,9 +32,12 @@ + #if _GLIBCXX_HAVE_UTIME_H + # include + #endif ++#include + + using time_type = std::filesystem::file_time_type; + ++namespace chrono = std::chrono; ++ + void + test01() + { +@@ -66,10 +70,15 @@ test01() + + auto end_of_time = time_type::duration::max(); + auto last_second +- = std::chrono::duration_cast(end_of_time).count(); ++ = chrono::duration_cast(end_of_time).count(); + if (last_second > std::numeric_limits::max()) +- return; // can't test overflow ++ { ++ puts("Range of time_t is smaller than range of chrono::file_clock, " ++ "can't test for overflow on this target."); ++ return; ++ } + ++ // Set mtime to a date past the maximum possible file_time_type: + #if _GLIBCXX_USE_UTIMENSAT + struct ::timespec ts[2]; + ts[0].tv_sec = 0; +@@ -83,25 +92,34 @@ test01() + times.actime = std::numeric_limits::max() - 1; + VERIFY( !::utime(p.c_str(), ×) ); + #else ++ puts("No utimensat or utime, giving up."); + return; + #endif + ++ // Try to read back the impossibly-large mtime: + mtime = last_write_time(p, ec); +- VERIFY( ec ); +- VERIFY( ec == std::make_error_code(std::errc::value_too_large) ); +- VERIFY( mtime == time_type::min() ); ++ // Some filesystems (e.g. XFS) silently truncate distant times to ++ // the time_t epochalypse, Jan 19 2038, so we won't get an error when ++ // reading it back: ++ if (ec) ++ { ++ VERIFY( ec == std::make_error_code(std::errc::value_too_large) ); ++ VERIFY( mtime == time_type::min() ); ++ } ++ else ++ puts("No overflow error, filesystem may not support 64-bit time_t."); + + #if __cpp_exceptions +- caught = false; ++ // Once more, with exceptions: + try { +- mtime = last_write_time(p); +- } catch (std::system_error const& e) { +- caught = true; +- ec = e.code(); ++ auto mtime2 = last_write_time(p); ++ // If it didn't throw, expect to have read back the same value: ++ VERIFY( mtime2 == mtime ); ++ } catch (std::filesystem::filesystem_error const& e) { ++ // If it did throw, expect the error_code to be the same: ++ VERIFY( e.code() == ec ); ++ VERIFY( e.path1() == p ); + } +- VERIFY( caught ); +- VERIFY( ec ); +- VERIFY( ec == std::make_error_code(std::errc::value_too_large) ); + #endif + } + +@@ -110,7 +128,7 @@ bool approx_equal(time_type file_time, time_type expected) + auto delta = expected - file_time; + if (delta < delta.zero()) + delta = -delta; +- return delta < std::chrono::seconds(1); ++ return delta < chrono::seconds(1); + } + + void +@@ -123,32 +141,67 @@ test02() + std::error_code ec; + time_type time; + ++ ec = bad_ec; + time = last_write_time(f.path); ++ last_write_time(f.path, time, ec); ++ VERIFY( !ec ); ++ VERIFY( approx_equal(last_write_time(f.path), time) ); ++ + ec = bad_ec; ++ time -= chrono::milliseconds(1000 * 60 * 10 + 15); + last_write_time(f.path, time, ec); + VERIFY( !ec ); + VERIFY( approx_equal(last_write_time(f.path), time) ); + + ec = bad_ec; +- time -= std::chrono::milliseconds(1000 * 60 * 10 + 15); ++ time += chrono::milliseconds(1000 * 60 * 20 + 15); + last_write_time(f.path, time, ec); + VERIFY( !ec ); + VERIFY( approx_equal(last_write_time(f.path), time) ); + ++ if (std::numeric_limits::max() ++ < std::numeric_limits::max()) ++ return; // file clock's epoch is out of range for 32-bit time_t ++ ++ using sys_time_32b ++ = chrono::time_point>; ++ auto duration_until_2038 = sys_time_32b::max() - sys_time_32b::clock::now(); ++ auto file_time_2038 = time_type::clock::now() + duration_until_2038; ++ + ec = bad_ec; +- time += std::chrono::milliseconds(1000 * 60 * 20 + 15); ++ time = file_time_2038 - chrono::seconds(1); ++ // Assume all filesystems can store times that fit in 32-bit time_t ++ // (i.e. up to Jan 19 2038) + last_write_time(f.path, time, ec); + VERIFY( !ec ); + VERIFY( approx_equal(last_write_time(f.path), time) ); + ++ // Check whether the filesystem supports times larger than 32-bit time_t: ++ time += chrono::seconds(60); ++ last_write_time(f.path, time, ec); ++ if (ec || !approx_equal(last_write_time(f.path), time)) ++ { ++ puts("Filesystem seems to truncate times past Jan 19 2038, giving up."); ++ return; // Tests below will fail on this filesystem ++ } ++ + ec = bad_ec; ++ // The file clock's epoch: + time = time_type(); + last_write_time(f.path, time, ec); + VERIFY( !ec ); + VERIFY( approx_equal(last_write_time(f.path), time) ); + + ec = bad_ec; +- time -= std::chrono::milliseconds(1000 * 60 * 10 + 15); ++ // A time after the epoch ++ time += chrono::milliseconds(1000 * 60 * 10 + 15); ++ last_write_time(f.path, time, ec); ++ VERIFY( !ec ); ++ VERIFY( approx_equal(last_write_time(f.path), time) ); ++ ++ ec = bad_ec; ++ // A time before than the epoch ++ time -= chrono::milliseconds(1000 * 60 * 20 + 15); + last_write_time(f.path, time, ec); + VERIFY( !ec ); + VERIFY( approx_equal(last_write_time(f.path), time) ); +new file mode 100644 +--- /dev/null ++++ b/src/libstdc++-v3/testsuite/27_io/filesystem/path/generic/94242.cc +@@ -0,0 +1,53 @@ ++// { dg-options "-std=gnu++17 -lstdc++fs" } ++// { dg-do run { target c++17 } } ++// { dg-require-filesystem-ts "" } ++ ++// Copyright (C) 2020 Free Software Foundation, Inc. ++// ++// This file is part of the GNU ISO C++ Library. This library is free ++// software; you can redistribute it and/or modify it under the ++// terms of the GNU General Public License as published by the ++// Free Software Foundation; either version 3, or (at your option) ++// any later version. ++ ++// This library is distributed in the hope that it will be useful, ++// but WITHOUT ANY WARRANTY; without even the implied warranty of ++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++// GNU General Public License for more details. ++ ++// You should have received a copy of the GNU General Public License along ++// with this library; see the file COPYING3. If not see ++// . ++ ++// C++17 30.10.7.4.7 path generic format observers [fs.path.generic.obs] ++ ++#include ++#include ++ ++using std::filesystem::path; ++using __gnu_test::SimpleAllocator; ++ ++void ++test01() ++{ ++ path p = "//foo//bar//."; ++ using C = path::value_type; ++ auto g = p.generic_string, SimpleAllocator>(); ++ VERIFY( g == path("/foo/bar/.").c_str() ); ++} ++ ++void ++test02() ++{ ++ path p = "//foo//bar//."; ++ using C = char16_t; ++ auto g = p.generic_string, SimpleAllocator>(); ++ VERIFY( g == u"/foo/bar/." ); ++} ++ ++int ++main() ++{ ++ test01(); ++ test02(); ++} +--- a/src/libstdc++-v3/testsuite/27_io/filesystem/path/generic/generic_string.cc ++++ b/src/libstdc++-v3/testsuite/27_io/filesystem/path/generic/generic_string.cc +@@ -22,6 +22,7 @@ + // C++17 30.10.7.4.7 path generic format observers [fs.path.generic.obs] + + #include ++#include + #include + + using std::filesystem::path; +@@ -35,11 +36,15 @@ test01() + #ifdef __CYGWIN__ + VERIFY( path("//a").generic_string() == "//a" ); + VERIFY( path("//a/").generic_string() == "//a/" ); ++ VERIFY( path("//a//").generic_string() == "//a/" ); + VERIFY( path("//a/b").generic_string() == "//a/b" ); ++ VERIFY( path("//a//b").generic_string() == "//a/b" ); + #else + VERIFY( path("//a").generic_string() == "/a" ); + VERIFY( path("//a/").generic_string() == "/a/" ); ++ VERIFY( path("//a//").generic_string() == "/a/" ); + VERIFY( path("//a/b").generic_string() == "/a/b" ); ++ VERIFY( path("//a//b").generic_string() == "/a/b" ); + #endif + VERIFY( path("/a//b").generic_string() == "/a/b" ); + VERIFY( path("/a//b/").generic_string() == "/a/b/" ); +@@ -47,8 +52,38 @@ test01() + VERIFY( path("/a//b//.").generic_string() == "/a/b/." ); + } + ++void ++test02() ++{ ++ if constexpr (path::preferred_separator == L'\\') ++ { ++ // PR libstdc++/93244 ++ VERIFY( path("C:\\foo\\bar").generic_string() == "C:/foo/bar" ); ++ VERIFY( path("C://foo//bar").generic_string() == "C:/foo/bar" ); ++ } ++} ++ ++void ++test03() ++{ ++ for (path p : { "a///b//c", "/a//b//c", "a:b//c" }) ++ { ++ // A path constructed from the generic format string should compare equal ++ // to the original, because they represent the same path. ++ // For GCC 8 this only works for some paths, because LWG 2936 is not ++ // implemented on the branch, so e.g. "/" and "//" compare not equal ++ VERIFY( path(p.generic_string()) == p ); ++ VERIFY( path(p.generic_wstring()) == p ); ++ VERIFY( path(p.generic_u8string()) == p ); ++ VERIFY( path(p.generic_u16string()) == p ); ++ VERIFY( path(p.generic_u32string()) == p ); ++ } ++} ++ + int + main() + { + test01(); ++ test02(); ++ test03(); + } +new file mode 100644 +--- /dev/null ++++ b/src/libstdc++-v3/testsuite/experimental/filesystem/iterators/97731.cc +@@ -0,0 +1,49 @@ ++// Copyright (C) 2020 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 ++ ++bool used_custom_readdir = false; ++ ++extern "C" void* readdir(void*) ++{ ++ used_custom_readdir = true; ++ errno = EIO; ++ return nullptr; ++} ++ ++void ++test01() ++{ ++ using std::experimental::filesystem::recursive_directory_iterator; ++ std::error_code ec; ++ recursive_directory_iterator it(".", ec); ++ if (used_custom_readdir) ++ VERIFY( ec.value() == EIO ); ++} ++ ++int ++main() ++{ ++ test01(); ++} +--- a/src/libstdc++-v3/testsuite/experimental/filesystem/operations/last_write_time.cc ++++ b/src/libstdc++-v3/testsuite/experimental/filesystem/operations/last_write_time.cc +@@ -22,6 +22,7 @@ + // 15.25 Permissions [fs.op.last_write_time] + + #include ++#include + #include + #include + +@@ -31,9 +32,12 @@ + #if _GLIBCXX_HAVE_UTIME_H + # include + #endif ++#include + + using time_type = std::experimental::filesystem::file_time_type; + ++namespace chrono = std::chrono; ++ + void + test01() + { +@@ -66,10 +70,15 @@ test01() + + auto end_of_time = time_type::duration::max(); + auto last_second +- = std::chrono::duration_cast(end_of_time).count(); ++ = chrono::duration_cast(end_of_time).count(); + if (last_second > std::numeric_limits::max()) +- return; // can't test overflow ++ { ++ puts("Range of time_t is smaller than range of chrono::file_clock, " ++ "can't test for overflow on this target."); ++ return; ++ } + ++ // Set mtime to a date past the maximum possible file_time_type: + #if _GLIBCXX_USE_UTIMENSAT + struct ::timespec ts[2]; + ts[0].tv_sec = 0; +@@ -83,25 +92,34 @@ test01() + times.actime = std::numeric_limits::max() - 1; + VERIFY( !::utime(p.c_str(), ×) ); + #else ++ puts("No utimensat or utime, giving up."); + return; + #endif + ++ // Try to read back the impossibly-large mtime: + mtime = last_write_time(p, ec); +- VERIFY( ec ); +- VERIFY( ec == std::make_error_code(std::errc::value_too_large) ); +- VERIFY( mtime == time_type::min() ); ++ // Some filesystems (e.g. XFS) silently truncate distant times to ++ // the time_t epochalypse, Jan 19 2038, so we won't get an error when ++ // reading it back: ++ if (ec) ++ { ++ VERIFY( ec == std::make_error_code(std::errc::value_too_large) ); ++ VERIFY( mtime == time_type::min() ); ++ } ++ else ++ puts("No overflow error, filesystem may not support 64-bit time_t."); + + #if __cpp_exceptions +- caught = false; ++ // Once more, with exceptions: + try { +- mtime = last_write_time(p); +- } catch (std::system_error const& e) { +- caught = true; +- ec = e.code(); ++ auto mtime2 = last_write_time(p); ++ // If it didn't throw, expect to have read back the same value: ++ VERIFY( mtime2 == mtime ); ++ } catch (std::experimental::filesystem::filesystem_error const& e) { ++ // If it did throw, expect the error_code to be the same: ++ VERIFY( e.code() == ec ); ++ VERIFY( e.path1() == p ); + } +- VERIFY( caught ); +- VERIFY( ec ); +- VERIFY( ec == std::make_error_code(std::errc::value_too_large) ); + #endif + } + +@@ -110,7 +128,7 @@ bool approx_equal(time_type file_time, time_type expected) + auto delta = expected - file_time; + if (delta < delta.zero()) + delta = -delta; +- return delta < std::chrono::seconds(1); ++ return delta < chrono::seconds(1); + } + + void +@@ -118,31 +136,37 @@ test02() + { + // write times + ++ const std::error_code bad_ec = make_error_code(std::errc::invalid_argument); + __gnu_test::scoped_file f; + std::error_code ec; + time_type time; + ++ ec = bad_ec; + time = last_write_time(f.path); + last_write_time(f.path, time, ec); + VERIFY( !ec ); + VERIFY( approx_equal(last_write_time(f.path), time) ); + +- time -= std::chrono::milliseconds(1000 * 60 * 10 + 15); ++ ec = bad_ec; ++ time -= chrono::milliseconds(1000 * 60 * 10 + 15); + last_write_time(f.path, time, ec); + VERIFY( !ec ); + VERIFY( approx_equal(last_write_time(f.path), time) ); + +- time += std::chrono::milliseconds(1000 * 60 * 20 + 15); ++ ec = bad_ec; ++ time += chrono::milliseconds(1000 * 60 * 20 + 15); + last_write_time(f.path, time, ec); + VERIFY( !ec ); + VERIFY( approx_equal(last_write_time(f.path), time) ); + ++ ec = bad_ec; + time = time_type(); + last_write_time(f.path, time, ec); + VERIFY( !ec ); + VERIFY( approx_equal(last_write_time(f.path), time) ); + +- time -= std::chrono::milliseconds(1000 * 60 * 10 + 15); ++ ec = bad_ec; ++ time -= chrono::milliseconds(1000 * 60 * 10 + 15); + last_write_time(f.path, time, ec); + VERIFY( !ec ); + VERIFY( approx_equal(last_write_time(f.path), time) ); +--- a/src/libstdc++-v3/testsuite/experimental/filesystem/path/generic/generic_string.cc ++++ b/src/libstdc++-v3/testsuite/experimental/filesystem/path/generic/generic_string.cc +@@ -23,27 +23,55 @@ + + #include + #include +-#include ++#include + + using std::experimental::filesystem::path; + + void + test01() + { +- for (const path& p : __gnu_test::test_paths) ++ __gnu_test::compare_paths( path("///a//b///").generic_string(), "/a/b/." ); ++ __gnu_test::compare_paths( path("///a//b").generic_u16string(), "/a/b" ); ++ __gnu_test::compare_paths( path("//a//b").generic_u16string(), "//a/b" ); ++} ++ ++using __gnu_test::SimpleAllocator; ++ ++void ++test02() ++{ ++ path p = "//foo//bar//."; ++ using C = char16_t; ++ auto g = p.generic_string, SimpleAllocator>(); ++ VERIFY( g == u"//foo/bar/." ); ++} ++ ++ ++void ++test03() ++{ ++ for (path p : { "/a///b//c", "///a//b//c", "a:b//c", "a://b///c" }) + { +- path p2(p), p3; +- p2.swap(p3); +- VERIFY( p2 == path() ); +- VERIFY( p3 == p ); +- p2.swap(p3); +- VERIFY( p2 == p ); +- VERIFY( p3 == path() ); ++ // A path constructed from the generic format string should compare equal ++ // to the original, because they represent the same path. ++ VERIFY( path(p.generic_string()) == p ); ++ VERIFY( path(p.generic_wstring()) == p ); ++ VERIFY( path(p.generic_u8string()) == p ); ++ VERIFY( path(p.generic_u16string()) == p ); ++ VERIFY( path(p.generic_u32string()) == p ); + } ++ ++ // Except when the original consists entirely of a root-directory with ++ // multiple slashes, because path("///").native() is "///" but the ++ // generic format string is "/". In the Filesystem TS path::compare just ++ // compares native strings, so path("///") != path("/"). ++ VERIFY( path("///").generic_string() == "/" ); + } + + int + main() + { + test01(); ++ test02(); ++ test03(); + } +new file mode 100644 +--- /dev/null ++++ b/src/libstdc++-v3/testsuite/experimental/numeric/92978.cc +@@ -0,0 +1,48 @@ ++// Copyright (C) 2020 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++14 } } ++ ++#include ++#include ++ ++void ++test01() ++{ ++ // PR libstdc++/92978 ++ static_assert( std::experimental::gcd(-120, 10U) == 10, ++ "mixed signed/unsigned" ); ++ static_assert( std::experimental::gcd(120U, -10) == 10, ++ "mixed signed/unsigned" ); ++ ++ static_assert( std::experimental::lcm(-42, 21U) == 42U ); ++} ++ ++void ++test02() ++{ ++ static_assert( std::experimental::gcd(INT_MIN, 0LL) == 1LL+INT_MAX, ++ "|INT_MIN| should not be undefined as long as it fits in the result" ); ++ static_assert( std::experimental::gcd(0LL, INT_MIN) == 1LL+INT_MAX, ++ "|INT_MIN| should not be undefined" ); ++ static_assert( std::experimental::gcd(INT_MIN, 0LL + INT_MIN) == 1LL + INT_MAX, ++ "|INT_MIN| should not be undefined" ); ++ static_assert( std::experimental::gcd(INT_MIN, 1LL + INT_MAX) == 1LL + INT_MAX, ++ "|INT_MIN| should not be undefined" ); ++ static_assert( std::experimental::gcd(SHRT_MIN, 1U + SHRT_MAX) == 1U + SHRT_MAX, ++ "|SHRT_MIN| should not be undefined" ); ++} +--- a/src/maintainer-scripts/ChangeLog ++++ b/src/maintainer-scripts/ChangeLog +@@ -1,3 +1,15 @@ ++2020-09-17 Jakub Jelinek ++ ++ Backported from master: ++ 2020-03-17 Jakub Jelinek ++ ++ * gcc_release (upload_files): Without -l, pass -m 755 to the mkdir ++ command invoked through ssh. ++ ++2020-03-04 Jakub Jelinek ++ ++ * gcc_release: Add support for -b local-git-repo argument. ++ + 2020-03-04 Release Manager + + * GCC 8.4.0 released. +--- a/src/maintainer-scripts/gcc_release ++++ b/src/maintainer-scripts/gcc_release +@@ -9,7 +9,7 @@ + # Contents: + # Script to create a GCC release. + # +-# Copyright (c) 2001-2018 Free Software Foundation. ++# Copyright (c) 2001-2020 Free Software Foundation. + # + # This file is part of GCC. + # +@@ -78,6 +78,7 @@ Options: + -p previous-tarball Location of a previous tarball (to generate diff files). + -t tag Tag to mark the release in git. + -u username Username for upload operations. ++ -b local-git-repo Local git repository to speed up cloning. + EOF + exit 1 + } +@@ -103,8 +104,14 @@ build_sources() { + changedir "${WORKING_DIRECTORY}" + + # Check out the sources. +- ${GIT} clone -q -b "${GITBRANCH}" "${GITROOT}" "`basename ${SOURCE_DIRECTORY}`" || \ +- error "Could not check out release sources" ++ if [ -n "${GIT_REFERENCE}" ]; then ++ ${GIT} clone -q --dissociate --reference "${GIT_REFERENCE}" \ ++ -b "${GITBRANCH}" "${GITROOT}" "`basename ${SOURCE_DIRECTORY}`" || \ ++ error "Could not check out release sources" ++ else ++ ${GIT} clone -q -b "${GITBRANCH}" "${GITROOT}" "`basename ${SOURCE_DIRECTORY}`" || \ ++ error "Could not check out release sources" ++ fi + + # If this is a final release, make sure that the ChangeLogs + # and version strings are updated. +@@ -391,7 +398,7 @@ upload_files() { + # Make sure the directory exists on the server. + if [ $LOCAL -eq 0 ]; then + ${SSH} -l ${GCC_USERNAME} ${GCC_HOSTNAME} \ +- mkdir -p "${FTP_PATH}/diffs" ++ mkdir -m 755 -p "${FTP_PATH}/diffs" + UPLOAD_PATH="${GCC_USERNAME}@${GCC_HOSTNAME}:${FTP_PATH}" + else + mkdir -p "${FTP_PATH}/diffs" \ +@@ -567,6 +574,9 @@ TAG="" + # The old tarballs from which to generate diffs. + OLD_TARS="" + ++# Local gcc git checkout to speed up git cloning. ++GIT_REFERENCE="" ++ + # The directory that will be used to construct the release. The + # release itself will be placed in a subdirectory of this directory. + DESTINATION=${HOME} +@@ -613,7 +623,7 @@ TAR="${TAR:-tar}" + ######################################################################## + + # Parse the options. +-while getopts "d:fr:u:t:p:s:l" ARG; do ++while getopts "d:fr:u:t:p:s:lb:" ARG; do + case $ARG in + d) DESTINATION="${OPTARG}";; + r) RELEASE="${OPTARG}";; +@@ -631,6 +641,7 @@ while getopts "d:fr:u:t:p:s:l" ARG; do + if [ ! -f ${OPTARG} ]; then + error "-p argument must name a tarball" + fi;; ++ b) GIT_REFERENCE="${OPTARG}";; + \?) usage;; + esac + done diff --git a/debian/patches/go-testsuite.diff b/debian/patches/go-testsuite.diff new file mode 100644 index 0000000..6fb3d21 --- /dev/null +++ b/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. diff --git a/debian/patches/hurd-changes.diff b/debian/patches/hurd-changes.diff new file mode 100644 index 0000000..2b368da --- /dev/null +++ b/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 (révision 182461) ++++ b/src/gcc/config.gcc (copie de travail) +@@ -583,7 +583,7 @@ + *-*-linux* | frv-*-*linux* | *-*-kfreebsd*-gnu | *-*-knetbsd*-gnu | *-*-kopensolaris*-gnu) + :;; + *-*-gnu*) +- native_system_header_dir=/include ++ # native_system_header_dir=/include + ;; + esac + # glibc / uclibc / bionic switch. diff --git a/debian/patches/ia64-disable-selective-scheduling.diff b/debian/patches/ia64-disable-selective-scheduling.diff new file mode 100644 index 0000000..e75b3c0 --- /dev/null +++ b/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, diff --git a/debian/patches/ignore-pie-specs-when-not-enabled.diff b/debian/patches/ignore-pie-specs-when-not-enabled.diff new file mode 100644 index 0000000..8f5cc09 --- /dev/null +++ b/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); + diff --git a/debian/patches/kfreebsd-decimal-float.diff b/debian/patches/kfreebsd-decimal-float.diff new file mode 100644 index 0000000..82be702 --- /dev/null +++ b/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 diff --git a/debian/patches/kfreebsd-unwind.diff b/debian/patches/kfreebsd-unwind.diff new file mode 100644 index 0000000..ec611c3 --- /dev/null +++ b/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 */ diff --git a/debian/patches/libasan-sparc.diff b/debian/patches/libasan-sparc.diff new file mode 100644 index 0000000..4b52ac2 --- /dev/null +++ b/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 + diff --git a/debian/patches/libffi-mips.diff b/debian/patches/libffi-mips.diff new file mode 100644 index 0000000..b1c5b0c --- /dev/null +++ b/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 diff --git a/debian/patches/libffi-mipsen-r6.diff b/debian/patches/libffi-mipsen-r6.diff new file mode 100644 index 0000000..caf43ec --- /dev/null +++ b/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); + diff --git a/debian/patches/libffi-pax.diff b/debian/patches/libffi-pax.diff new file mode 100644 index 0000000..e8666f8 --- /dev/null +++ b/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); + diff --git a/debian/patches/libffi-race-condition.diff b/debian/patches/libffi-race-condition.diff new file mode 100644 index 0000000..686ec79 --- /dev/null +++ b/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 diff --git a/debian/patches/libffi-riscv.diff b/debian/patches/libffi-riscv.diff new file mode 100644 index 0000000..2213a86 --- /dev/null +++ b/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 diff --git a/debian/patches/libffi-riscv64-go.diff b/debian/patches/libffi-riscv64-go.diff new file mode 100644 index 0000000..04c6162 --- /dev/null +++ b/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 diff --git a/debian/patches/libffi-ro-eh_frame_sect.diff b/debian/patches/libffi-ro-eh_frame_sect.diff new file mode 100644 index 0000000..c860143 --- /dev/null +++ b/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 diff --git a/debian/patches/libgo-cleanfiles.diff b/debian/patches/libgo-cleanfiles.diff new file mode 100644 index 0000000..6e2b135 --- /dev/null +++ b/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 + diff --git a/debian/patches/libgo-revert-timeout-exp.diff b/debian/patches/libgo-revert-timeout-exp.diff new file mode 100644 index 0000000..b74eaed --- /dev/null +++ b/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 } { diff --git a/debian/patches/libgo-setcontext-config.diff b/debian/patches/libgo-setcontext-config.diff new file mode 100644 index 0000000..6fb9dc9 --- /dev/null +++ b/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]) diff --git a/debian/patches/libgo-testsuite.diff b/debian/patches/libgo-testsuite.diff new file mode 100644 index 0000000..0358366 --- /dev/null +++ b/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 + + diff --git a/debian/patches/libgomp-kfreebsd-testsuite.diff b/debian/patches/libgomp-kfreebsd-testsuite.diff new file mode 100644 index 0000000..acac273 --- /dev/null +++ b/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); diff --git a/debian/patches/libgomp-omp_h-multilib.diff b/debian/patches/libgomp-omp_h-multilib.diff new file mode 100644 index 0000000..e93f55b --- /dev/null +++ b/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 + diff --git a/debian/patches/libitm-no-fortify-source.diff b/debian/patches/libitm-no-fortify-source.diff new file mode 100644 index 0000000..8f15964 --- /dev/null +++ b/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 + diff --git a/debian/patches/libjit-ldflags.diff b/debian/patches/libjit-ldflags.diff new file mode 100644 index 0000000..6a5def8 --- /dev/null +++ b/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) diff --git a/debian/patches/libphobos-zlib.diff b/debian/patches/libphobos-zlib.diff new file mode 100644 index 0000000..9792299 --- /dev/null +++ b/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]) + ]) diff --git a/debian/patches/libstdc++-doclink.diff b/debian/patches/libstdc++-doclink.diff new file mode 100644 index 0000000..99abf1e --- /dev/null +++ b/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 diff --git a/debian/patches/libstdc++-futex.diff b/debian/patches/libstdc++-futex.diff new file mode 100644 index 0000000..3c92203 --- /dev/null +++ b/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 () diff --git a/debian/patches/libstdc++-man-3cxx.diff b/debian/patches/libstdc++-man-3cxx.diff new file mode 100644 index 0000000..de2e36b --- /dev/null +++ b/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 :: diff --git a/debian/patches/libstdc++-no-testsuite.diff b/debian/patches/libstdc++-no-testsuite.diff new file mode 100644 index 0000000..771bf7a --- /dev/null +++ b/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 \ diff --git a/debian/patches/libstdc++-nothumb-check.diff b/debian/patches/libstdc++-nothumb-check.diff new file mode 100644 index 0000000..6c665a2 --- /dev/null +++ b/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 diff --git a/debian/patches/libstdc++-pic.diff b/debian/patches/libstdc++-pic.diff new file mode 100644 index 0000000..0498316 --- /dev/null +++ b/debian/patches/libstdc++-pic.diff @@ -0,0 +1,91 @@ +# DP: Build and install libstdc++_pic.a library. + +--- a/src/libstdc++-v3/src/Makefile.am ++++ b/src/libstdc++-v3/src/Makefile.am +@@ -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 +--- a/src/libstdc++-v3/src/Makefile.in ++++ b/src/libstdc++-v3/src/Makefile.in +@@ -536,6 +536,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. +@@ -834,7 +836,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 + +@@ -885,11 +887,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 \ +@@ -1022,6 +1024,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 ; \ +@@ -1033,6 +1036,11 @@ install-debug: build-debug + (cd ${debugdir} && $(MAKE) CXXFLAGS='$(DEBUG_FLAGS)' \ + toolexeclibdir=$(glibcxx_toolexeclibdir)/debug install) ; + ++install-exec-local: $(STAMP_INSTALL_PIC) ++$(STAMP_INSTALL_PIC): ++ $(MKDIR_P) $(DESTDIR)$(toolexeclibdir) ++ $(INSTALL_DATA) .libs/libstdc++convenience.a $(DESTDIR)$(toolexeclibdir)/libstdc++_pic.a ++ + # Tell versions [3.59,3.63) of GNU make to not export all variables. + # Otherwise a system limit (for SysV at least) may be exceeded. + .NOEXPORT: diff --git a/debian/patches/libstdc++-test-installed.diff b/debian/patches/libstdc++-test-installed.diff new file mode 100644 index 0000000..a0ebd59 --- /dev/null +++ b/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] diff --git a/debian/patches/linaro-issue2575.diff b/debian/patches/linaro-issue2575.diff new file mode 100644 index 0000000..97bf780 --- /dev/null +++ b/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; + + } diff --git a/debian/patches/note-gnu-stack.diff b/debian/patches/note-gnu-stack.diff new file mode 100644 index 0000000..866895b --- /dev/null +++ b/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 diff --git a/debian/patches/powerpcspe_nofprs.diff b/debian/patches/powerpcspe_nofprs.diff new file mode 100644 index 0000000..7b4b204 --- /dev/null +++ b/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 diff --git a/debian/patches/powerpcspe_remove_many.diff b/debian/patches/powerpcspe_remove_many.diff new file mode 100644 index 0000000..89cd708 --- /dev/null +++ b/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 "" + diff --git a/debian/patches/pr39491.diff b/debian/patches/pr39491.diff new file mode 100644 index 0000000..4c51820 --- /dev/null +++ b/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 diff --git a/debian/patches/pr66368.diff b/debian/patches/pr66368.diff new file mode 100644 index 0000000..0d04687 --- /dev/null +++ b/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 \ diff --git a/debian/patches/pr67590.diff b/debian/patches/pr67590.diff new file mode 100644 index 0000000..317d48d --- /dev/null +++ b/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= diff --git a/debian/patches/pr67899.diff b/debian/patches/pr67899.diff new file mode 100644 index 0000000..0f2ebd0 --- /dev/null +++ b/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; + }; diff --git a/debian/patches/pr81829.diff b/debian/patches/pr81829.diff new file mode 100644 index 0000000..472e3d0 --- /dev/null +++ b/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; + diff --git a/debian/patches/pr87338.diff b/debian/patches/pr87338.diff new file mode 100644 index 0000000..145e019 --- /dev/null +++ b/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 diff --git a/debian/patches/pr87808.diff b/debian/patches/pr87808.diff new file mode 100644 index 0000000..441e76b --- /dev/null +++ b/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_OBJS = attribs.o \ + 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 +@@ -38,6 +38,7 @@ along with GCC; see the file COPYING3. + #include "fold-const.h" + #include "gcc.h" + #include "diagnostic.h" ++#include "file-find.h" + + #include + +@@ -2497,7 +2498,31 @@ void + 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 = { 0, 0, "exec" }; ++ ++ prefix_from_env ("PATH", &path); ++ gcc_driver_file = find_a_file (&path, gcc_driver_name, X_OK); ++ if (gcc_driver_file == NULL) ++ { ++ char *str = concat ("GCC_EXEC_PREFIX=", ++ FALLBACK_GCC_EXEC_PREFIX, NULL); ++ ::putenv (str); ++ log ("gcc driver %s not found, using fallback GCC_EXEC_PREFIX=%s", ++ gcc_driver_name, FALLBACK_GCC_EXEC_PREFIX); ++ } ++ } ++#endif ++ + driver d (true, /* can_finalize */ + false); /* debug */ + int result = d.main (argvec->length (), diff --git a/debian/patches/pr88419-revert.diff b/debian/patches/pr88419-revert.diff new file mode 100644 index 0000000..9e40626 --- /dev/null +++ b/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 +@@ -25995,10 +25995,8 @@ make_auto (void) + 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})); +-}; diff --git a/debian/patches/pr90050.diff b/debian/patches/pr90050.diff new file mode 100644 index 0000000..fb5ed33 --- /dev/null +++ b/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"] diff --git a/debian/patches/pr90714.diff b/debian/patches/pr90714.diff new file mode 100644 index 0000000..3d4a36f --- /dev/null +++ b/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 diff --git a/debian/patches/rename-info-files.diff b/debian/patches/rename-info-files.diff new file mode 100644 index 0000000..3019775 --- /dev/null +++ b/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)" > $@ diff --git a/debian/patches/skip-bootstrap-multilib.diff b/debian/patches/skip-bootstrap-multilib.diff new file mode 100644 index 0000000..46402d2 --- /dev/null +++ b/debian/patches/skip-bootstrap-multilib.diff @@ -0,0 +1,45 @@ +# DP: Skip non-default multilib and libstdc++-v3 debug builds in bootstrap builds + +--- a/src/config-ml.in ++++ b/src/config-ml.in +@@ -479,6 +479,17 @@ esac + # Tests like `if [ -n "$multidirs" ]' require it. + multidirs=`echo "$multidirs" | sed -e 's/^[ ][ ]*//' -e 's/[ ][ ]*$//' -e 's/[ ][ ]*/ /g'` + ++# stage1 and stage2 builds of the non-default multilib configurations ++# are not needed; skip these to save some build time. ++if [ -f ../../stage_final ] && [ -f ../../stage_current ]; then ++ stage_final=`cat ../../stage_final` ++ stage_current=`cat ../../stage_current` ++ if [ "$stage_current" != "$stage_final" ]; then ++ echo "Skip `basename $ml_realsrcdir` non-default multilibs for bootstrap stage $stage_current" ++ multidirs= ++ fi ++fi ++ + # Add code to library's top level makefile to handle building the multilib + # subdirs. + +--- a/src/libstdc++-v3/acinclude.m4 ++++ b/src/libstdc++-v3/acinclude.m4 +@@ -2904,7 +2904,20 @@ dnl + AC_DEFUN([GLIBCXX_ENABLE_DEBUG], [ + AC_MSG_CHECKING([for additional debug build]) + GLIBCXX_ENABLE(libstdcxx-debug,$1,,[build extra debug library]) ++ if test x$enable_libstdcxx_debug = xyes; then ++ if test -f $toplevel_builddir/../stage_final && test -f $toplevel_builddir/../stage_current; then ++ stage_final=`cat $toplevel_builddir/../stage_final` ++ stage_current=`cat $toplevel_builddir/../stage_current` ++ if test x$stage_current != x$stage_final ; then ++ skip_debug_build=yes ++ enable_libstdcxx_debug=no ++ fi ++ fi ++ fi + AC_MSG_RESULT($enable_libstdcxx_debug) ++ if test x$skip_debug_build = xyes ; then ++ AC_MSG_NOTICE([Skip libstdc++-v3 debug build for bootstrap stage $stage_current]) ++ fi + GLIBCXX_CONDITIONAL(GLIBCXX_BUILD_DEBUG, test $enable_libstdcxx_debug = yes) + ]) + diff --git a/debian/patches/sparc64-biarch-long-double-128.diff b/debian/patches/sparc64-biarch-long-double-128.diff new file mode 100644 index 0000000..8cf8e2d --- /dev/null +++ b/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}}} \ diff --git a/debian/patches/src_gcc_config_i386_gnu.h.diff b/debian/patches/src_gcc_config_i386_gnu.h.diff new file mode 100644 index 0000000..16f8c9f --- /dev/null +++ b/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 diff --git a/debian/patches/src_libgo_go_crypto.diff b/debian/patches/src_libgo_go_crypto.diff new file mode 100644 index 0000000..c43e2ee --- /dev/null +++ b/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. ++} diff --git a/debian/patches/src_libgo_go_go_build_syslist.go.diff b/debian/patches/src_libgo_go_go_build_syslist.go.diff new file mode 100644 index 0000000..8024400 --- /dev/null +++ b/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" diff --git a/debian/patches/src_libgo_go_net.diff b/debian/patches/src_libgo_go_net.diff new file mode 100644 index 0000000..e22ace0 --- /dev/null +++ b/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 ++} diff --git a/debian/patches/src_libgo_go_os.diff b/debian/patches/src_libgo_go_os.diff new file mode 100644 index 0000000..e998838 --- /dev/null +++ b/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 ++} diff --git a/debian/patches/src_libgo_go_runtime.diff b/debian/patches/src_libgo_go_runtime.diff new file mode 100644 index 0000000..579a591 --- /dev/null +++ b/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 ++} diff --git a/debian/patches/src_libgo_go_syscall.diff b/debian/patches/src_libgo_go_syscall.diff new file mode 100644 index 0000000..eaddbd4 --- /dev/null +++ b/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" diff --git a/debian/patches/src_libgo_go_syscall_syscall_errno.go.diff b/debian/patches/src_libgo_go_syscall_syscall_errno.go.diff new file mode 100644 index 0000000..589a107 --- /dev/null +++ b/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)) diff --git a/debian/patches/src_libgo_go_syscall_syscall_gnu_test.go.diff b/debian/patches/src_libgo_go_syscall_syscall_gnu_test.go.diff new file mode 100644 index 0000000..742d7f9 --- /dev/null +++ b/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") ++ } ++} diff --git a/debian/patches/src_libgo_runtime.diff b/debian/patches/src_libgo_runtime.diff new file mode 100644 index 0000000..2449c6b --- /dev/null +++ b/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); diff --git a/debian/patches/src_libgo_testsuite_gotest.diff b/debian/patches/src_libgo_testsuite_gotest.diff new file mode 100644 index 0000000..4b0532f --- /dev/null +++ b/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 diff --git a/debian/patches/sys-auxv-header.diff b/debian/patches/sys-auxv-header.diff new file mode 100644 index 0000000..b0b4705 --- /dev/null +++ b/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 header file. */ ++#ifndef USED_FOR_TARGET ++#undef HAVE_SYS_AUXV_H ++#endif ++ ++ + /* Define to 1 if you have the header file. */ + #ifndef USED_FOR_TARGET + #undef HAVE_SYS_FILE_H +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 + #endif + ++#ifdef HAVE_SYS_AUXV_H ++# include ++#endif ++ + #if defined (__APPLE__) || (__FreeBSD__) + # include + # include diff --git a/debian/patches/t-libunwind-elf-Wl-z-defs.diff b/debian/patches/t-libunwind-elf-Wl-z-defs.diff new file mode 100644 index 0000000..cec9db0 --- /dev/null +++ b/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 \ diff --git a/debian/patches/testsuite-glibc-warnings.diff b/debian/patches/testsuite-glibc-warnings.diff new file mode 100644 index 0000000..b1353f0 --- /dev/null +++ b/debian/patches/testsuite-glibc-warnings.diff @@ -0,0 +1,18 @@ +# DP: fix testcases that triggered -Wunused-result with glibc +# DP: Author: Steve Beattie +--- + src/gcc/testsuite/c-c++-common/cilk-plus/AN/comma_exp.c | 2 +- + src/gcc/testsuite/c-c++-common/tsan/fd_pipe_race.c | 1 + + 2 files changed, 2 insertions(+), 1 deletion(-) + +Index: b/src/gcc/testsuite/c-c++-common/tsan/fd_pipe_race.c +=================================================================== +--- a/src/gcc/testsuite/c-c++-common/tsan/fd_pipe_race.c ++++ b/src/gcc/testsuite/c-c++-common/tsan/fd_pipe_race.c +@@ -1,5 +1,5 @@ + /* { dg-shouldfail "tsan" } */ +-/* { dg-additional-options "-ldl" } */ ++/* { dg-additional-options "-Wno-unused-result -ldl" } */ + + #include + #include diff --git a/debian/patches/testsuite-hardening-format.diff b/debian/patches/testsuite-hardening-format.diff new file mode 100644 index 0000000..8c0d9b1 --- /dev/null +++ b/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 +# DP: Ubuntu: https://bugs.launchpad.net/bugs/344502 + +dir= +if [ $# -eq 3 -a "$2" = '-d' ]; then + pdir="-d $3" + dir="$3/" +elif [ $# -ne 1 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi +case "$1" in + -patch) + patch $pdir -f --no-backup-if-mismatch -p1 < $0 + #cd ${dir}gcc && autoconf + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p1 < $0 + #rm ${dir}gcc/configure + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +--- + src/gcc/testsuite/c-c++-common/torture/vector-compare-1.c | 1 + + src/gcc/testsuite/g++.dg/abi/pragma-pack1.C | 2 ++ + src/gcc/testsuite/g++.dg/abi/regparm1.C | 1 + + src/gcc/testsuite/g++.dg/cpp0x/constexpr-tuple.C | 1 + + src/gcc/testsuite/g++.dg/torture/pr51436.C | 1 + + src/gcc/testsuite/g++.old-deja/g++.law/weak.C | 2 +- + src/gcc/testsuite/g++.old-deja/g++.other/std1.C | 1 + + src/gcc/testsuite/gcc.c-torture/execute/vfprintf-chk-1.x | 5 +++++ + src/gcc/testsuite/gcc.c-torture/execute/vprintf-chk-1.x | 5 +++++ + src/gcc/testsuite/gcc.dg/charset/builtin2.c | 2 +- + src/gcc/testsuite/gcc.dg/format/format.exp | 2 +- + src/gcc/testsuite/gcc.dg/ipa/ipa-sra-1.c | 2 +- + src/gcc/testsuite/gcc.dg/lto/20090218-2_0.c | 2 ++ + src/gcc/testsuite/gcc.dg/pr30473.c | 2 +- + src/gcc/testsuite/gcc.dg/pr38902.c | 2 +- + src/gcc/testsuite/gcc.dg/pr59418.c | 2 +- + src/gcc/testsuite/gcc.dg/torture/tls/tls-test.c | 2 +- + src/gcc/testsuite/gcc.dg/tree-ssa/builtin-fprintf-1.c | 2 +- + src/gcc/testsuite/gcc.dg/tree-ssa/builtin-fprintf-chk-1.c | 2 +- + src/gcc/testsuite/gcc.dg/tree-ssa/builtin-printf-1.c | 2 +- + src/gcc/testsuite/gcc.dg/tree-ssa/builtin-printf-chk-1.c | 2 +- + src/gcc/testsuite/gcc.dg/tree-ssa/builtin-vfprintf-1.c | 2 +- + src/gcc/testsuite/gcc.dg/tree-ssa/builtin-vfprintf-chk-1.c | 2 +- + src/gcc/testsuite/gcc.dg/tree-ssa/builtin-vprintf-1.c | 2 +- + src/gcc/testsuite/gcc.dg/tree-ssa/builtin-vprintf-chk-1.c | 2 +- + src/gcc/testsuite/gcc.dg/tree-ssa/isolate-4.c | 2 +- + src/gcc/testsuite/objc.dg/torture/strings/const-str-3.m | 2 +- + 28 files changed, 40 insertions(+), 18 deletions(-) + +Index: b/src/gcc/testsuite/gcc.c-torture/execute/vfprintf-chk-1.x +=================================================================== +--- /dev/null ++++ b/src/gcc/testsuite/gcc.c-torture/execute/vfprintf-chk-1.x +@@ -0,0 +1,5 @@ ++# Implement "/* { dg-options "-U_FORITFY_SOURCE" } */", due to ++# http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20567 ++ ++set additional_flags "-U_FORTIFY_SOURCE" ++return 0 +Index: b/src/gcc/testsuite/gcc.c-torture/execute/vprintf-chk-1.x +=================================================================== +--- /dev/null ++++ b/src/gcc/testsuite/gcc.c-torture/execute/vprintf-chk-1.x +@@ -0,0 +1,5 @@ ++# Implement "/* { dg-options "-U_FORITFY_SOURCE" } */", due to ++# http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20567 ++ ++set additional_flags "-U_FORTIFY_SOURCE" ++return 0 +Index: b/src/gcc/testsuite/gcc.dg/charset/builtin2.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/charset/builtin2.c ++++ b/src/gcc/testsuite/gcc.dg/charset/builtin2.c +@@ -3,7 +3,7 @@ + + /* { dg-do compile } */ + /* { dg-require-iconv "IBM1047" } */ +-/* { dg-options "-O2 -fexec-charset=IBM1047" } */ ++/* { dg-options "-O2 -fexec-charset=IBM1047 -Wno-format" } */ + /* { dg-final { scan-assembler-not "printf" } } */ + /* { dg-final { scan-assembler-not "fprintf" } } */ + /* { dg-final { scan-assembler-not "sprintf" } } */ +Index: b/src/gcc/testsuite/gcc.dg/format/format.exp +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/format/format.exp ++++ b/src/gcc/testsuite/gcc.dg/format/format.exp +@@ -26,7 +26,7 @@ load_lib gcc-dg.exp + load_lib torture-options.exp + + torture-init +-set-torture-options [list { } { -DWIDE } ] ++set-torture-options [list { -Wformat=0 } { -DWIDE -Wformat=0 } ] + + dg-init + gcc-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.\[cS\]]] "" "" +Index: b/src/gcc/testsuite/gcc.dg/pr30473.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/pr30473.c ++++ b/src/gcc/testsuite/gcc.dg/pr30473.c +@@ -1,7 +1,7 @@ + /* PR middle-end/30473 */ + /* Make sure this doesn't ICE. */ + /* { dg-do compile } */ +-/* { dg-options "-O2" } */ ++/* { dg-options "-O2 -Wno-format" } */ + + extern int sprintf (char *, const char *, ...); + +Index: b/src/gcc/testsuite/gcc.dg/pr38902.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/pr38902.c ++++ b/src/gcc/testsuite/gcc.dg/pr38902.c +@@ -1,6 +1,6 @@ + /* PR target/38902 */ + /* { dg-do run } */ +-/* { dg-options "-O2 -fstack-protector" } */ ++/* { dg-options "-O2 -fstack-protector -Wno-format" } */ + /* { dg-require-effective-target fstack_protector } */ + + #ifdef DEBUG +Index: b/src/gcc/testsuite/gcc.dg/pr59418.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/pr59418.c ++++ b/src/gcc/testsuite/gcc.dg/pr59418.c +@@ -2,7 +2,7 @@ + /* Reported by Ryan Mansfield */ + + /* { dg-do compile } */ +-/* { dg-options "-Os -g" } */ ++/* { dg-options "-Os -g -Wno-format-zero-length" } */ + /* { dg-options "-march=armv7-a+fp -mfloat-abi=hard -Os -g" { target { arm*-*-* && { ! arm_thumb1 } } } } */ + + extern int printf (const char *__format, ...); +Index: b/src/gcc/testsuite/gcc.dg/ipa/ipa-sra-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/ipa/ipa-sra-1.c ++++ b/src/gcc/testsuite/gcc.dg/ipa/ipa-sra-1.c +@@ -1,5 +1,5 @@ + /* { dg-do run } */ +-/* { dg-options "-O2 -fipa-sra -fdump-tree-eipa_sra-details" } */ ++/* { dg-options "-O2 -fipa-sra -fdump-tree-eipa_sra-details -Wformat=0" } */ + + struct bovid + { +Index: b/src/gcc/testsuite/gcc.dg/lto/20090218-2_0.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/lto/20090218-2_0.c ++++ b/src/gcc/testsuite/gcc.dg/lto/20090218-2_0.c +@@ -1,3 +1,5 @@ ++/* { dg-lto-options "-Wno-nonnull" } */ ++ + void set_mem_alias_set (); + void emit_push_insn () { + set_mem_alias_set (); +Index: b/src/gcc/testsuite/c-c++-common/torture/vector-compare-1.c +=================================================================== +--- a/src/gcc/testsuite/c-c++-common/torture/vector-compare-1.c ++++ b/src/gcc/testsuite/c-c++-common/torture/vector-compare-1.c +@@ -1,4 +1,5 @@ + /* { dg-do run } */ ++/* { dg-options "-Wformat=0" } */ + #define vector(elcount, type) \ + __attribute__((vector_size((elcount)*sizeof(type)))) type + +Index: b/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-vprintf-chk-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-vprintf-chk-1.c ++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-vprintf-chk-1.c +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -fdump-tree-fab1" } */ ++/* { dg-options "-O2 -fdump-tree-fab1 -Wno-format-zero-length" } */ + + #include + +Index: b/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-vprintf-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-vprintf-1.c ++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-vprintf-1.c +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -fdump-tree-fab1" } */ ++/* { dg-options "-O2 -fdump-tree-fab1 -Wno-format-zero-length" } */ + + #include + +Index: b/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-printf-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-printf-1.c ++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-printf-1.c +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -fdump-tree-fab1" } */ ++/* { dg-options "-O2 -fdump-tree-fab1 -Wno-format-zero-length" } */ + + extern int printf (const char *, ...); + volatile int vi0, vi1, vi2, vi3, vi4, vi5, vi6, vi7, vi8, vi9, via; +Index: b/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-printf-chk-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-printf-chk-1.c ++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-printf-chk-1.c +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -fdump-tree-fab1" } */ ++/* { dg-options "-O2 -fdump-tree-fab1 -Wno-format-zero-length" } */ + + extern int __printf_chk (int, const char *, ...); + volatile int vi0, vi1, vi2, vi3, vi4, vi5, vi6, vi7, vi8, vi9, via; +Index: b/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-fprintf-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-fprintf-1.c ++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-fprintf-1.c +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -fdump-tree-fab1" } */ ++/* { dg-options "-O2 -fdump-tree-fab1 -Wno-format-zero-length" } */ + + typedef struct { int i; } FILE; + FILE *fp; +Index: b/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-fprintf-chk-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-fprintf-chk-1.c ++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-fprintf-chk-1.c +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -fdump-tree-fab1" } */ ++/* { dg-options "-O2 -fdump-tree-fab1 -Wno-format-zero-length" } */ + + typedef struct { int i; } FILE; + FILE *fp; +Index: b/src/gcc/testsuite/gcc.dg/torture/tls/tls-test.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/torture/tls/tls-test.c ++++ b/src/gcc/testsuite/gcc.dg/torture/tls/tls-test.c +@@ -1,7 +1,7 @@ + /* { dg-do run } */ + /* { dg-require-effective-target tls } */ + /* { dg-require-effective-target pthread } */ +-/* { dg-options "-pthread" } */ ++/* { dg-options "-pthread -Wformat=0" } */ + + #include + extern int printf (char *,...); +Index: b/src/gcc/testsuite/objc.dg/torture/strings/const-str-3.m +=================================================================== +--- a/src/gcc/testsuite/objc.dg/torture/strings/const-str-3.m ++++ b/src/gcc/testsuite/objc.dg/torture/strings/const-str-3.m +@@ -2,7 +2,7 @@ + /* Developed by Markus Hitter . */ + /* { dg-do run } */ + /* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */ +-/* { dg-options "-fconstant-string-class=Foo" } */ ++/* { dg-options "-fconstant-string-class=Foo -Wno-format-security" } */ + /* { dg-options "-mno-constant-cfstrings -fconstant-string-class=Foo" { target *-*-darwin* } } */ + + #include "../../../objc-obj-c++-shared/objc-test-suite-types.h" +Index: b/src/gcc/testsuite/g++.dg/abi/pragma-pack1.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/abi/pragma-pack1.C ++++ b/src/gcc/testsuite/g++.dg/abi/pragma-pack1.C +@@ -1,5 +1,7 @@ + // PR c++/7046 + ++// { dg-options "-Wformat=0" } ++ + extern "C" int printf (const char *, ...); + + #pragma pack(4) +Index: b/src/gcc/testsuite/g++.dg/abi/regparm1.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/abi/regparm1.C ++++ b/src/gcc/testsuite/g++.dg/abi/regparm1.C +@@ -1,6 +1,7 @@ + // PR c++/29911 (9381) + // { dg-do run { target i?86-*-* x86_64-*-* } } + // { dg-require-effective-target c++11 } ++// { dg-options "-Wformat=0" } + + extern "C" int printf(const char *, ...); + +Index: b/src/gcc/testsuite/g++.dg/cpp0x/constexpr-tuple.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp0x/constexpr-tuple.C ++++ b/src/gcc/testsuite/g++.dg/cpp0x/constexpr-tuple.C +@@ -1,5 +1,6 @@ + // PR c++/53202 + // { dg-do run { target c++11 } } ++// { dg-options "-Wformat=0" } + + #include + +Index: b/src/gcc/testsuite/g++.dg/torture/pr51436.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/torture/pr51436.C ++++ b/src/gcc/testsuite/g++.dg/torture/pr51436.C +@@ -1,4 +1,5 @@ + /* { dg-do compile } */ ++/* { dg-options "-Wno-nonnull" } */ + /* { dg-additional-options "-Wno-return-type" } */ + + typedef __SIZE_TYPE__ size_t; +Index: b/src/gcc/testsuite/g++.old-deja/g++.law/weak.C +=================================================================== +--- a/src/gcc/testsuite/g++.old-deja/g++.law/weak.C ++++ b/src/gcc/testsuite/g++.old-deja/g++.law/weak.C +@@ -1,6 +1,6 @@ + // { dg-do link { target i?86-*-linux* i?86-*-gnu* x86_64-*-linux* } } + // { dg-require-effective-target static } +-// { dg-options "-static" } ++// { dg-options "-static -Wno-nonnull" } + // Bug: g++ fails to instantiate operator<<. + + // libc-5.4.xx has __IO_putc in its static C library, which can conflict +Index: b/src/gcc/testsuite/g++.old-deja/g++.other/std1.C +=================================================================== +--- a/src/gcc/testsuite/g++.old-deja/g++.other/std1.C ++++ b/src/gcc/testsuite/g++.old-deja/g++.other/std1.C +@@ -1,4 +1,5 @@ + // { dg-do assemble } ++// { dg-options "-Wno-nonnull" } + // Origin: Mark Mitchell + + extern "C" int memcmp (const void * __s1, +Index: b/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-vfprintf-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-vfprintf-1.c ++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-vfprintf-1.c +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -fdump-tree-fab1" } */ ++/* { dg-options "-O2 -fdump-tree-fab1 -Wno-format-zero-length" } */ + + #include + +Index: b/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-vfprintf-chk-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-vfprintf-chk-1.c ++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-vfprintf-chk-1.c +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -fdump-tree-fab1" } */ ++/* { dg-options "-O2 -fdump-tree-fab1 -Wno-format-zero-length" } */ + + #include + diff --git a/debian/patches/testsuite-hardening-printf-types.diff b/debian/patches/testsuite-hardening-printf-types.diff new file mode 100644 index 0000000..248cb5e --- /dev/null +++ b/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 +# DP: Ubuntu: https://bugs.launchpad.net/bugs/344502 + +Index: b/src/gcc/testsuite/g++.dg/ext/align1.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/ext/align1.C ++++ b/src/gcc/testsuite/g++.dg/ext/align1.C +@@ -16,6 +16,7 @@ float f1 __attribute__ ((aligned)); + int + main (void) + { +- printf ("%d %d\n", __alignof (a1), __alignof (f1)); ++ // "%td" is not allowed by ISO C++, so use %p with a void * cast ++ printf ("%p %p\n", (void*)__alignof (a1), (void*)__alignof (f1)); + return (__alignof (a1) < __alignof (f1)); + } +Index: b/src/gcc/testsuite/g++.old-deja/g++.law/operators28.C +=================================================================== +--- a/src/gcc/testsuite/g++.old-deja/g++.law/operators28.C ++++ b/src/gcc/testsuite/g++.old-deja/g++.law/operators28.C +@@ -14,7 +14,8 @@ void* new_test::operator new(size_t sz, + { + void *p; + +- printf("%d %d %d\n", sz, count, type); ++ // ISO C++ does not support format size modifier "z", so use a cast ++ printf("%u %d %d\n", (unsigned int)sz, count, type); + + p = new char[sz * count]; + ((new_test *)p)->type = type; +Index: b/src/gcc/testsuite/gcc.dg/torture/matrix-2.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/torture/matrix-2.c ++++ b/src/gcc/testsuite/gcc.dg/torture/matrix-2.c +@@ -42,7 +42,7 @@ main (int argc, char **argv) + } + for (i = 0; i < ARCHnodes; i++) + for (j = 0; j < 3; j++) +- printf ("%x\n",vel[i][j]); ++ printf ("%p\n",vel[i][j]); + /*if (i!=1 || j!=1)*/ + /*if (i==1 && j==1) + continue; +@@ -82,14 +82,14 @@ mem_init (void) + for (j = 0; j < 3; j++) + { + vel[i][j] = (int *) malloc (ARCHnodes1 * sizeof (int)); +- printf ("%x %d %d\n",vel[i][j], ARCHnodes1, sizeof (int)); ++ printf ("%p %d %d\n",vel[i][j], ARCHnodes1, (int)sizeof (int)); + } + } + for (i = 0; i < ARCHnodes; i++) + { + for (j = 0; j < 3; j++) + { +- printf ("%x\n",vel[i][j]); ++ printf ("%p\n",vel[i][j]); + } + } + +@@ -98,7 +98,7 @@ mem_init (void) + { + for (j = 0; j < 3; j++) + { +- printf ("%x\n",vel[i][j]); ++ printf ("%p\n",vel[i][j]); + /*for (k = 0; k < ARCHnodes1; k++) + { + vel[i][j][k] = d; +Index: b/src/gcc/testsuite/gcc.dg/packed-vla.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/packed-vla.c ++++ b/src/gcc/testsuite/gcc.dg/packed-vla.c +@@ -18,8 +18,8 @@ int func(int levels) + int b[4]; + } __attribute__ ((__packed__)) foo; + +- printf("foo %d\n", sizeof(foo)); +- printf("bar %d\n", sizeof(bar)); ++ printf("foo %d\n", (int)sizeof(foo)); ++ printf("bar %d\n", (int)sizeof(bar)); + + if (sizeof (foo) != sizeof (bar)) + abort (); +Index: b/src/gcc/testsuite/g++.dg/opt/alias2.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/opt/alias2.C ++++ b/src/gcc/testsuite/g++.dg/opt/alias2.C +@@ -30,14 +30,14 @@ public: + + + _Deque_base::~_Deque_base() { +- printf ("bb %x %x\n", this, *_M_start._M_node); ++ printf ("bb %p %x\n", this, *_M_start._M_node); + } + + void + _Deque_base::_M_initialize_map() + { + yy = 0x123; +- printf ("aa %x %x\n", this, yy); ++ printf ("aa %p %x\n", this, yy); + + _M_start._M_node = &yy; + _M_start._M_cur = yy; +Index: b/src/gcc/testsuite/g++.old-deja/g++.abi/vbase1.C +=================================================================== +--- a/src/gcc/testsuite/g++.old-deja/g++.abi/vbase1.C ++++ b/src/gcc/testsuite/g++.old-deja/g++.abi/vbase1.C +@@ -33,7 +33,7 @@ struct VBase + void Offset () const + { + printf ("VBase\n"); +- printf (" VBase::member %d\n", &this->VBase::member - (int *)this); ++ printf (" VBase::member %d\n", (int)(&this->VBase::member - (int *)this)); + } + }; + +@@ -55,8 +55,8 @@ struct VDerived : virtual VBase + void Offset () const + { + printf ("VDerived\n"); +- printf (" VBase::member %d\n", &this->VBase::member - (int *)this); +- printf (" VDerived::member %d\n", &this->VDerived::member - (int *)this); ++ printf (" VBase::member %d\n", (int)(&this->VBase::member - (int *)this)); ++ printf (" VDerived::member %d\n", (int)(&this->VDerived::member - (int *)this)); + } + }; + struct B : virtual VBase +@@ -65,8 +65,8 @@ struct B : virtual VBase + void Offset () const + { + printf ("B\n"); +- printf (" VBase::member %d\n", &this->VBase::member - (int *)this); +- printf (" B::member %d\n", &this->B::member - (int *)this); ++ printf (" VBase::member %d\n", (int)(&this->VBase::member - (int *)this)); ++ printf (" B::member %d\n", (int)(&this->B::member - (int *)this)); + } + }; + struct MostDerived : B, virtual VDerived +@@ -75,10 +75,10 @@ struct MostDerived : B, virtual VDerived + void Offset () const + { + printf ("MostDerived\n"); +- printf (" VBase::member %d\n", &this->VBase::member - (int *)this); +- printf (" B::member %d\n", &this->B::member - (int *)this); +- printf (" VDerived::member %d\n", &this->VDerived::member - (int *)this); +- printf (" MostDerived::member %d\n", &this->MostDerived::member - (int *)this); ++ printf (" VBase::member %d\n", (int)(&this->VBase::member - (int *)this)); ++ printf (" B::member %d\n", (int)(&this->B::member - (int *)this)); ++ printf (" VDerived::member %d\n", (int)(&this->VDerived::member - (int *)this)); ++ printf (" MostDerived::member %d\n", (int)(&this->MostDerived::member - (int *)this)); + } + }; + +@@ -95,10 +95,10 @@ int main () + if (ctorVDerived != &dum.VDerived::member) + return 24; + +- printf (" VBase::member %d\n", &dum.VBase::member - this_); +- printf (" B::member %d\n", &dum.B::member - this_); +- printf (" VDerived::member %d\n", &dum.VDerived::member - this_); +- printf (" MostDerived::member %d\n", &dum.MostDerived::member - this_); ++ printf (" VBase::member %d\n", (int)(&dum.VBase::member - this_)); ++ printf (" B::member %d\n", (int)(&dum.B::member - this_)); ++ printf (" VDerived::member %d\n", (int)(&dum.VDerived::member - this_)); ++ printf (" MostDerived::member %d\n", (int)(&dum.MostDerived::member - this_)); + dum.MostDerived::Offset (); + dum.B::Offset (); + dum.VDerived::Offset (); +Index: b/src/gcc/testsuite/g++.old-deja/g++.brendan/template8.C +=================================================================== +--- a/src/gcc/testsuite/g++.old-deja/g++.brendan/template8.C ++++ b/src/gcc/testsuite/g++.old-deja/g++.brendan/template8.C +@@ -15,6 +15,6 @@ int main(){ + + Double_alignt<20000> heap; + +- printf(" &heap.array[0] = %d, &heap.for_alignt = %d\n", &heap.array[0], &heap.for_alignt); ++ printf(" &heap.array[0] = %p, &heap.for_alignt = %p\n", (void*)&heap.array[0], (void*)&heap.for_alignt); + + } +Index: b/src/gcc/testsuite/g++.old-deja/g++.eh/ptr1.C +=================================================================== +--- a/src/gcc/testsuite/g++.old-deja/g++.eh/ptr1.C ++++ b/src/gcc/testsuite/g++.old-deja/g++.eh/ptr1.C +@@ -16,7 +16,7 @@ int main() + } + + catch (E *&e) { +- printf ("address of e is 0x%lx\n", (__SIZE_TYPE__)e); ++ printf ("address of e is %p\n", (void *)e); + return !((__SIZE_TYPE__)e != 5 && e->x == 5); + } + return 2; +Index: b/src/gcc/testsuite/g++.old-deja/g++.jason/access23.C +=================================================================== +--- a/src/gcc/testsuite/g++.old-deja/g++.jason/access23.C ++++ b/src/gcc/testsuite/g++.old-deja/g++.jason/access23.C +@@ -42,19 +42,19 @@ public: + void DoSomething() { + PUB_A = 0; + Foo::A = 0; +- printf("%x\n",pX); ++ printf("%p\n",pX); + Foo::PUB.A = 0; +- printf("%x\n",PUB.pX); ++ printf("%p\n",PUB.pX); + B = 0; +- printf("%x\n",Foo::pY); ++ printf("%p\n",Foo::pY); + PRT_A = 0; + PRT.B = 0; +- printf("%x\n",Foo::PRT.pY); ++ printf("%p\n",Foo::PRT.pY); + PRV_A = 0; // { dg-error "" } + Foo::C = 0; // { dg-error "" } +- printf("%x\n",pZ); // { dg-error "" } ++ printf("%p\n",pZ); // { dg-error "" } + Foo::PRV.C = 0; // { dg-error "" } +- printf("%x\n",PRV.pZ); // { dg-error "" } ++ printf("%p\n",PRV.pZ); // { dg-error "" } + } + }; + +@@ -64,17 +64,17 @@ int main() + + a.PUB_A = 0; + a.A = 0; +- printf("%x\n",a.pX); ++ printf("%p\n",a.pX); + a.PRT_A = 0; // { dg-error "" } + a.B = 0; // { dg-error "" } +- printf("%x\n",a.pY); // { dg-error "" } ++ printf("%p\n",a.pY); // { dg-error "" } + a.PRV_A = 0; // { dg-error "" } + a.C = 0; // { dg-error "" } +- printf("%x\n",a.pZ); // { dg-error "" } ++ printf("%p\n",a.pZ); // { dg-error "" } + a.PUB.A = 0; +- printf("%x\n",a.PUB.pX); ++ printf("%p\n",a.PUB.pX); + a.PRT.B = 0; // { dg-error "" } +- printf("%x\n",a.PRT.pY); // { dg-error "" } ++ printf("%p\n",a.PRT.pY); // { dg-error "" } + a.PRV.C = 0; // { dg-error "" } +- printf("%x\n",a.PRV.pZ); // { dg-error "" } ++ printf("%p\n",a.PRV.pZ); // { dg-error "" } + } +Index: b/src/gcc/testsuite/g++.old-deja/g++.law/cvt8.C +=================================================================== +--- a/src/gcc/testsuite/g++.old-deja/g++.law/cvt8.C ++++ b/src/gcc/testsuite/g++.old-deja/g++.law/cvt8.C +@@ -20,12 +20,12 @@ struct B { + B::operator const A&() const { + static A a; + a.i = i; +- printf("convert B to A at %x\n", &a); ++ printf("convert B to A at %p\n", (void*)&a); + return a; + } + + void f(A &a) { // { dg-message "" } in passing argument +- printf("A at %x is %d\n", &a, a.i); ++ printf("A at %p is %d\n", (void*)&a, a.i); + } + + int main() { +Index: b/src/gcc/testsuite/g++.old-deja/g++.mike/net35.C +=================================================================== +--- a/src/gcc/testsuite/g++.old-deja/g++.mike/net35.C ++++ b/src/gcc/testsuite/g++.old-deja/g++.mike/net35.C +@@ -17,10 +17,10 @@ public: + + int main() { + C c; +- printf("&c.x = %x\n", &c.x); +- printf("&c.B1::x = %x\n", &c.B1::x); +- printf("&c.B2::x = %x\n", &c.B2::x); +- printf("&c.A::x = %x\n", &c.A::x); ++ printf("&c.x = %p\n", (void*)&c.x); ++ printf("&c.B1::x = %p\n", (void*)&c.B1::x); ++ printf("&c.B2::x = %p\n", (void*)&c.B2::x); ++ printf("&c.A::x = %p\n", (void*)&c.A::x); + if (&c.x != &c.B1::x + || &c.x != &c.B2::x + || &c.x != &c.A::x) +Index: b/src/gcc/testsuite/g++.old-deja/g++.mike/offset1.C +=================================================================== +--- a/src/gcc/testsuite/g++.old-deja/g++.mike/offset1.C ++++ b/src/gcc/testsuite/g++.old-deja/g++.mike/offset1.C +@@ -6,7 +6,7 @@ int fail = 0; + class Foo { + public: + virtual void setName() { +- printf("Foo at %x\n", this); ++ printf("Foo at %p\n", (void*)this); + if (vp != (void*)this) + fail = 1; + } +@@ -15,7 +15,7 @@ public: + class Bar : public Foo { + public: + virtual void init(int argc, char **argv) { +- printf("Bar's Foo at %x\n", (Foo*)this); ++ printf("Bar's Foo at %p\n", (void*)(Foo*)this); + vp = (void*)(Foo*)this; + setName(); + } +Index: b/src/gcc/testsuite/g++.old-deja/g++.mike/p12306.C +=================================================================== +--- a/src/gcc/testsuite/g++.old-deja/g++.mike/p12306.C ++++ b/src/gcc/testsuite/g++.old-deja/g++.mike/p12306.C +@@ -18,7 +18,7 @@ public: + if (ptr2 != &(*this).slist) + fail = 6; + +- if (0) printf("at %x %x\n", (RWSlistIterator*)this, &(*this).slist); ++ if (0) printf("at %p %p\n", (void*)(RWSlistIterator*)this, (void*)&(*this).slist); + } + }; + +@@ -54,14 +54,14 @@ Sim_Event_Manager::Sim_Event_Manager () + void Sim_Event_Manager::post_event () { + ptr1 = (RWSlistIterator*)&last_posted_event_position_; + ptr2 = &((RWSlistIterator*)&last_posted_event_position_)->slist; +- if (0) printf("at %x %x\n", (RWSlistIterator*)&last_posted_event_position_, +- &((RWSlistIterator*)&last_posted_event_position_)->slist); ++ if (0) printf("at %p %p\n", (void*)(RWSlistIterator*)&last_posted_event_position_, ++ (void*)&((RWSlistIterator*)&last_posted_event_position_)->slist); + if (ptr1 != (RWSlistIterator*)&last_posted_event_position_) + fail = 1; + if (ptr2 != &((RWSlistIterator&)last_posted_event_position_).slist) + fail = 2; +- if (0) printf("at %x ?%x\n", (RWSlistIterator*)&last_posted_event_position_, +- &((RWSlistIterator&)last_posted_event_position_).slist); ++ if (0) printf("at %p ?%p\n", (void*)(RWSlistIterator*)&last_posted_event_position_, ++ (void*)&((RWSlistIterator&)last_posted_event_position_).slist); + if (ptr1 != (RWSlistIterator*)&last_posted_event_position_) + fail = 3; + if (ptr2 != &((RWSlistIterator&)last_posted_event_position_).slist) +Index: b/src/gcc/testsuite/g++.old-deja/g++.mike/p3579.C +=================================================================== +--- a/src/gcc/testsuite/g++.old-deja/g++.mike/p3579.C ++++ b/src/gcc/testsuite/g++.old-deja/g++.mike/p3579.C +@@ -7,26 +7,26 @@ int num_x; + + class Y { + public: +- Y () { printf("Y() this: %x\n", this); } +- ~Y () { printf("~Y() this: %x\n", this); } ++ Y () { printf("Y() this: %p\n", (void*)this); } ++ ~Y () { printf("~Y() this: %p\n", (void*)this); } + }; + + class X { + public: + X () { + ++num_x; +- printf("X() this: %x\n", this); ++ printf("X() this: %p\n", (void*)this); + Y y; + *this = (X) y; + } + +- X (const Y & yy) { printf("X(const Y&) this: %x\n", this); ++num_x; } ++ X (const Y & yy) { printf("X(const Y&) this: %p\n", (void*)this); ++num_x; } + X & operator = (const X & xx) { +- printf("X.op=(X&) this: %x\n", this); ++ printf("X.op=(X&) this: %p\n", (void*)this); + return *this; + } + +- ~X () { printf("~X() this: %x\n", this); --num_x; } ++ ~X () { printf("~X() this: %p\n", (void*)this); --num_x; } + }; + + int main (int, char **) { +Index: b/src/gcc/testsuite/g++.old-deja/g++.mike/p3708a.C +=================================================================== +--- a/src/gcc/testsuite/g++.old-deja/g++.mike/p3708a.C ++++ b/src/gcc/testsuite/g++.old-deja/g++.mike/p3708a.C +@@ -38,7 +38,7 @@ public: + virtual void xx(int doit) { + --num; + if (ptr != this) +- printf("FAIL\n%x != %x\n", ptr, this); ++ printf("FAIL\n%p != %p\n", ptr, (void*)this); + printf ("C is destructed.\n"); + B::xx (0); + if (doit) A::xx (1); +Index: b/src/gcc/testsuite/g++.old-deja/g++.mike/p3708b.C +=================================================================== +--- a/src/gcc/testsuite/g++.old-deja/g++.mike/p3708b.C ++++ b/src/gcc/testsuite/g++.old-deja/g++.mike/p3708b.C +@@ -48,7 +48,7 @@ public: + virtual void xx(int doit) { + --num; + if (ptr != this) { +- printf("FAIL\n%x != %x\n", ptr, this); ++ printf("FAIL\n%p != %p\n", ptr, (void*)this); + exit(1); + } + printf ("D is destructed.\n"); +Index: b/src/gcc/testsuite/g++.old-deja/g++.mike/p3708.C +=================================================================== +--- a/src/gcc/testsuite/g++.old-deja/g++.mike/p3708.C ++++ b/src/gcc/testsuite/g++.old-deja/g++.mike/p3708.C +@@ -38,7 +38,7 @@ public: + virtual void xx(int doit) { + --num; + if (ptr != this) +- printf("FAIL\n%x != %x\n", ptr, this); ++ printf("FAIL\n%p != %p\n", ptr, (void*)this); + printf ("C is destructed.\n"); + B::xx (0); + if (doit) A::xx (1); +Index: b/src/gcc/testsuite/g++.old-deja/g++.mike/p646.C +=================================================================== +--- a/src/gcc/testsuite/g++.old-deja/g++.mike/p646.C ++++ b/src/gcc/testsuite/g++.old-deja/g++.mike/p646.C +@@ -35,20 +35,20 @@ int foo::si = 0; + foo::foo () + { + si++; +- printf ("new foo @ 0x%x; now %d foos\n", this, si); ++ printf ("new foo @ %p; now %d foos\n", (void*)this, si); + } + + foo::foo (const foo &other) + { + si++; +- printf ("another foo @ 0x%x; now %d foos\n", this, si); ++ printf ("another foo @ %p; now %d foos\n", (void*)this, si); + *this = other; + } + + foo::~foo () + { + si--; +- printf ("deleted foo @ 0x%x; now %d foos\n", this, si); ++ printf ("deleted foo @ %p; now %d foos\n", (void*)this, si); + } + + int +Index: b/src/gcc/testsuite/g++.old-deja/g++.mike/p710.C +=================================================================== +--- a/src/gcc/testsuite/g++.old-deja/g++.mike/p710.C ++++ b/src/gcc/testsuite/g++.old-deja/g++.mike/p710.C +@@ -30,7 +30,7 @@ class B + virtual ~B() {} + void operator delete(void*,size_t s) + { +- printf("B::delete() %d\n",s); ++ printf("B::delete() %u\n",(unsigned int)s); + } + void operator delete(void*){} + }; +Index: b/src/gcc/testsuite/g++.old-deja/g++.mike/p789a.C +=================================================================== +--- a/src/gcc/testsuite/g++.old-deja/g++.mike/p789a.C ++++ b/src/gcc/testsuite/g++.old-deja/g++.mike/p789a.C +@@ -13,10 +13,10 @@ struct foo + int x; + foo () { + x = count++; +- printf("this %d = %x\n", x, (void *)this); ++ printf("this %d = %p\n", x, (void *)this); + } + virtual ~foo () { +- printf("this %d = %x\n", x, (void *)this); ++ printf("this %d = %p\n", x, (void *)this); + --count; + } + }; +@@ -31,7 +31,7 @@ int main () + { + for (int j = 0; j < 3; j++) + { +- printf("&a[%d][%d] = %x\n", i, j, (void *)&array[i][j]); ++ printf("&a[%d][%d] = %p\n", i, j, (void *)&array[i][j]); + } + } + // The count should be nine, if not, fail the test. +Index: b/src/gcc/testsuite/g++.old-deja/g++.mike/pmf2.C +=================================================================== +--- a/src/gcc/testsuite/g++.old-deja/g++.mike/pmf2.C ++++ b/src/gcc/testsuite/g++.old-deja/g++.mike/pmf2.C +@@ -42,7 +42,7 @@ B_table b; + bar jar; + + int main() { +- printf("ptr to B_table=%x, ptr to A_table=%x\n",&b,(A_table*)&b); ++ printf("ptr to B_table=%p, ptr to A_table=%p\n",(void*)&b,(void*)(A_table*)&b); + B_table::B_ti_fn z = &B_table::func1; + int j = 1; + jar.call_fn_fn1(j,(void *)&z); +Index: b/src/gcc/testsuite/g++.old-deja/g++.mike/temp.C +=================================================================== +--- a/src/gcc/testsuite/g++.old-deja/g++.mike/temp.C ++++ b/src/gcc/testsuite/g++.old-deja/g++.mike/temp.C +@@ -7,11 +7,11 @@ class T { + public: + T() { + i = 1; +- printf("T() at %x\n", this); ++ printf("T() at %p\n", (void*)this); + } + T(const T& o) { + i = o.i; +- printf("T(const T&) at %x <-- %x\n", this, &o); ++ printf("T(const T&) at %p <-- %p\n", (void*)this, (void*)&o); + } + T operator +(const T& o) { + T r; +@@ -21,7 +21,7 @@ public: + operator int () { + return i; + } +- ~T() { printf("~T() at %x\n", this); } ++ ~T() { printf("~T() at %p\n", (void*)this); } + } s, b; + + int foo() { return getenv("TEST") == 0; } +Index: b/src/gcc/testsuite/g++.old-deja/g++.other/temporary1.C +=================================================================== +--- a/src/gcc/testsuite/g++.old-deja/g++.other/temporary1.C ++++ b/src/gcc/testsuite/g++.old-deja/g++.other/temporary1.C +@@ -5,16 +5,16 @@ int c, d; + class Foo + { + public: +- Foo() { printf("Foo() 0x%08lx\n", (__SIZE_TYPE__)this); ++c; } +- Foo(Foo const &) { printf("Foo(Foo const &) 0x%08lx\n", (__SIZE_TYPE__)this); } +- ~Foo() { printf("~Foo() 0x%08lx\n", (__SIZE_TYPE__)this); ++d; } ++ Foo() { printf("Foo() %p\n", (void*)this); ++c; } ++ Foo(Foo const &) { printf("Foo(Foo const &) %p\n", (void*)this); } ++ ~Foo() { printf("~Foo() %p\n", (void*)this); ++d; } + }; + + // Bar creates constructs a temporary Foo() as a default + class Bar + { + public: +- Bar(Foo const & = Foo()) { printf("Bar(Foo const &) 0x%08lx\n", (__SIZE_TYPE__)this); } ++ Bar(Foo const & = Foo()) { printf("Bar(Foo const &) %p\n", (void*)this); } + }; + + void fakeRef(Bar *) +Index: b/src/gcc/testsuite/g++.old-deja/g++.other/virtual8.C +=================================================================== +--- a/src/gcc/testsuite/g++.old-deja/g++.other/virtual8.C ++++ b/src/gcc/testsuite/g++.old-deja/g++.other/virtual8.C +@@ -4,7 +4,7 @@ extern "C" int printf (const char*, ...) + struct A + { + virtual void f () { +- printf ("%x\n", this); ++ printf ("%p\n", (void*)this); + } + }; + +Index: b/src/gcc/testsuite/g++.old-deja/g++.pt/memtemp23.C +=================================================================== +--- a/src/gcc/testsuite/g++.old-deja/g++.pt/memtemp23.C ++++ b/src/gcc/testsuite/g++.old-deja/g++.pt/memtemp23.C +@@ -13,7 +13,7 @@ struct S + + template + void f(U u) +- { printf ("In S::f(U)\nsizeof(U) == %d\n", sizeof(u)); } ++ { printf ("In S::f(U)\nsizeof(U) == %d\n", (int)sizeof(u)); } + + int c[16]; + }; +Index: b/src/gcc/testsuite/g++.old-deja/g++.pt/memtemp24.C +=================================================================== +--- a/src/gcc/testsuite/g++.old-deja/g++.pt/memtemp24.C ++++ b/src/gcc/testsuite/g++.old-deja/g++.pt/memtemp24.C +@@ -13,7 +13,7 @@ struct S + + template + void f(U u) +- { printf ("In S::f(U)\nsizeof(U) == %d\n", sizeof(u)); } ++ { printf ("In S::f(U)\nsizeof(U) == %d\n", (int)sizeof(u)); } + + int c[16]; + }; +Index: b/src/gcc/testsuite/g++.old-deja/g++.pt/memtemp25.C +=================================================================== +--- a/src/gcc/testsuite/g++.old-deja/g++.pt/memtemp25.C ++++ b/src/gcc/testsuite/g++.old-deja/g++.pt/memtemp25.C +@@ -6,7 +6,7 @@ template + struct S + { + template +- void f(U u) { printf ("%d\n", sizeof (U)); } ++ void f(U u) { printf ("%d\n", (int)sizeof (U)); } + + int i[4]; + }; +Index: b/src/gcc/testsuite/g++.old-deja/g++.pt/memtemp26.C +=================================================================== +--- a/src/gcc/testsuite/g++.old-deja/g++.pt/memtemp26.C ++++ b/src/gcc/testsuite/g++.old-deja/g++.pt/memtemp26.C +@@ -16,7 +16,7 @@ template + template + void S::f(U u) + { +- printf ("%d\n", sizeof (U)); ++ printf ("%d\n", (int)sizeof (U)); + } + + +Index: b/src/gcc/testsuite/g++.old-deja/g++.pt/t39.C +=================================================================== +--- a/src/gcc/testsuite/g++.old-deja/g++.pt/t39.C ++++ b/src/gcc/testsuite/g++.old-deja/g++.pt/t39.C +@@ -10,9 +10,9 @@ struct frob { + + template + void frob::print () { +- printf ("this = %08x\n", this); +- printf (" ptr = %08x\n", ptr); +- printf (" values = %x %x %x ...\n", ptr[0], ptr[1], ptr[2]); ++ printf ("this = %p\n", (void*)this); ++ printf (" ptr = %p\n", (void*)ptr); ++ printf (" values = %x %x %x ...\n", (int)ptr[0], (int)ptr[1], (int)ptr[2]); + } + + static int x[10]; +Index: b/src/gcc/testsuite/g++.old-deja/g++.robertl/eb17.C +=================================================================== +--- a/src/gcc/testsuite/g++.old-deja/g++.robertl/eb17.C ++++ b/src/gcc/testsuite/g++.old-deja/g++.robertl/eb17.C +@@ -44,15 +44,15 @@ int main() + A * a = new B; + B * b = dynamic_cast(a); + +- printf("%p\n",b); // (*2*) ++ printf("%p\n",(void*)b); // (*2*) + b->print(); + + a = b; +- printf("%p\n",a); ++ printf("%p\n",(void*)a); + a->print(); + + a = a->clone(); +- printf("%p\n",a); ++ printf("%p\n",(void*)a); + a->print(); // (*1*) + + return 0; +Index: b/src/gcc/testsuite/gcc.dg/pch/inline-4.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/pch/inline-4.c ++++ b/src/gcc/testsuite/gcc.dg/pch/inline-4.c +@@ -1,6 +1,6 @@ + #include "inline-4.h" + extern int printf (const char *, ...); + int main(void) { +- printf (getstring()); ++ printf ("%s", getstring()); + return 0; + } diff --git a/debian/patches/testsuite-hardening-updates.diff b/debian/patches/testsuite-hardening-updates.diff new file mode 100644 index 0000000..33a38a9 --- /dev/null +++ b/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 +Index: b/src/gcc/testsuite/gcc.dg/superblock.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/superblock.c ++++ b/src/gcc/testsuite/gcc.dg/superblock.c +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -fno-asynchronous-unwind-tables -fsched2-use-superblocks -fdump-rtl-sched2 -fdump-rtl-bbro" } */ ++/* { dg-options "-O2 -fno-asynchronous-unwind-tables -fsched2-use-superblocks -fdump-rtl-sched2 -fdump-rtl-bbro -fno-stack-protector" } */ + /* { dg-require-effective-target scheduling } */ + + typedef int aligned __attribute__ ((aligned (64))); +Index: b/src/gcc/testsuite/gcc.dg/stack-usage-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/stack-usage-1.c ++++ b/src/gcc/testsuite/gcc.dg/stack-usage-1.c +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-fstack-usage" } */ ++/* { dg-options "-fstack-usage -fno-stack-protector" } */ + /* nvptx doesn't have a reg allocator, and hence no stack usage data. */ + /* { dg-skip-if "" { nvptx-*-* } } */ + +Index: b/src/gcc/testsuite/gcc.target/i386/sw-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/sw-1.c ++++ b/src/gcc/testsuite/gcc.target/i386/sw-1.c +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -mtune=generic -fshrink-wrap -fdump-rtl-pro_and_epilogue" } */ ++/* { dg-options "-O2 -mtune=generic -fshrink-wrap -fdump-rtl-pro_and_epilogue -fno-stack-protector" } */ + /* { dg-skip-if "No shrink-wrapping preformed" { x86_64-*-mingw* } } */ + + #include +Index: b/src/gcc/testsuite/gcc.dg/fstack-protector-strong.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/fstack-protector-strong.c ++++ b/src/gcc/testsuite/gcc.dg/fstack-protector-strong.c +@@ -1,7 +1,7 @@ + /* Test that stack protection is done on chosen functions. */ + + /* { dg-do compile { target i?86-*-* x86_64-*-* rs6000-*-* s390x-*-* } } */ +-/* { dg-options "-O2 -fstack-protector-strong" } */ ++/* { dg-options "-O2 -fstack-protector-strong -U_FORTIFY_SOURCE" } */ + + /* This test checks the presence of __stack_chk_fail function in assembler. + * Compiler generates _stack_chk_fail_local (wrapper) calls instead for PIC. +Index: b/src/gcc/testsuite/g++.dg/fstack-protector-strong.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/fstack-protector-strong.C ++++ b/src/gcc/testsuite/g++.dg/fstack-protector-strong.C +@@ -1,7 +1,7 @@ + /* Test that stack protection is done on chosen functions. */ + + /* { dg-do compile { target i?86-*-* x86_64-*-* } } */ +-/* { dg-options "-O2 -fstack-protector-strong" } */ ++/* { dg-options "-O2 -fstack-protector-strong -U_FORTIFY_SOURCE" } */ + + /* This test checks the presence of __stack_chk_fail function in assembler. + * Compiler generates _stack_chk_fail_local (wrapper) calls instead for PIC. +Index: b/src/gcc/testsuite/gcc.c-torture/execute/memset-1.x +=================================================================== +--- /dev/null ++++ b/src/gcc/testsuite/gcc.c-torture/execute/memset-1.x +@@ -0,0 +1,5 @@ ++# Implement "/* { dg-options "-U_FORITFY_SOURCE" } */", due to ++# http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20567 ++ ++set additional_flags "-U_FORTIFY_SOURCE" ++return 0 diff --git a/debian/patches/verbose-lto-linker.diff b/debian/patches/verbose-lto-linker.diff new file mode 100644 index 0000000..7b6066a --- /dev/null +++ b/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 diff --git a/debian/porting.html b/debian/porting.html new file mode 100644 index 0000000..2fe5477 --- /dev/null +++ b/debian/porting.html @@ -0,0 +1,30 @@ + + +Porting libstdc++-v3 + + + + + + + +

    Porting libstdc++-v3

    +
    +


    +Node: Top, +Next: , +Up: (dir) +
    +
    + +The documentation in this file was removed, because it is licencensed +under a non DFSG conforming licencse. + + diff --git a/debian/reduce-test-diff.awk b/debian/reduce-test-diff.awk new file mode 100644 index 0000000..0e438de --- /dev/null +++ b/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 +} diff --git a/debian/rules b/debian/rules new file mode 100755 index 0000000..8741921 --- /dev/null +++ b/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 diff --git a/debian/rules.conf b/debian/rules.conf new file mode 100644 index 0000000..bd607ad --- /dev/null +++ b/debian/rules.conf @@ -0,0 +1,1365 @@ +# -*- 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) +ifeq ($(libgcc_basename),gcc) + DEB_LIBGCC_VERSION := $(DEB_EVERSION) +else + DEB_LIBGCC_VERSION := $(DEB_VERSION) +endif + +_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 := lib$(libgcc_basename)$(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),vivid)) + BINUTILSBDV = 2.25-3~ + else ifneq (,$(filter $(distrelease),precise)) + BINUTILSBDV = 2.22-6~ + else ifneq (,$(filter $(distrelease),trusty)) + BINUTILSBDV = 2.24-5~ + else ifneq (,$(filter $(distrelease),jessie)) + BINUTILSBDV = 2.25-7~ + else ifneq (,$(filter $(distrelease),xenial)) + BINUTILSBDV = 2.26.1 + else ifneq (,$(filter $(distrelease),stretch zesty)) + BINUTILSBDV = 2.28 + else ifneq (,$(filter $(distrelease),artful)) + BINUTILSBDV = 2.29.1 + else ifneq (,$(filter $(distrelease),bionic)) + BINUTILSBDV = 2.30 + else + BINUTILSBDV = 2.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 +ifeq (,$(filter $(distrelease), wheezy jessie stretch buster precise trusty xenial bionic eoan focal)) + LIBC_BIARCH_BUILD_DEP := $(subst gcc1,gcc-s1,$(LIBC_BIARCH_BUILD_DEP)) +endif +else + LIBC_BUILD_DEP = $(LIBC_DEV_DEP), + ifneq ($(LIBC_BIARCH_DEV_DEP),) + LIBC_BIARCH_BUILD_DEP = $(LIBC_BIARCH_DEV_DEP), + else + LIBC_BIARCH_BUILD_DEP = + endif +endif + +# needed for the include/asm symlink to run the testsuite for +# non default multilibs +ifneq (,$(multilib_archs)) + GCC_MULTILIB_BUILD_DEP = g++-multilib [$(multilib_archs)]$(pf_ncross), +endif + +LIBUNWIND_DEV_DEP := libunwind8-dev$(LS)$(AQ) +LIBUNWIND_BUILD_DEP := $(LIBUNWIND_DEV_DEP) [ia64], +LIBATOMIC_OPS_BUILD_DEP := libatomic-ops-dev$(LS) [ia64], +ifneq ($(DEB_TARGET_ARCH),ia64) + LIBUNWIND_DEV_DEP := # nothing +else ifneq (,$(filter $(DEB_STAGE),stage1 stage2)) + LIBUNWIND_DEV_DEP := # nothing +endif + +ifneq (,$(filter $(distrelease),lenny etch squeeze dapper hardy jaunty karmic lucid maverick natty)) + GMP_BUILD_DEP = libgmp3-dev | libgmp-dev (>= 2:5.0.1~), + MPFR_BUILD_DEP = libmpfr-dev, +else + GMP_BUILD_DEP = libgmp-dev (>= 2:5.0.1~), + MPFR_BUILD_DEP = libmpfr-dev (>= 3.0.0-9~), +endif + +ISL_BUILD_DEP = libisl-dev, +ifneq (,$(filter $(distrelease),cosmic buster sid experimental)) + ISL_BUILD_DEP = libisl-dev (>= 0.20), +endif + +ifneq (,$(filter $(distrelease),lenny etch squeeze wheezy dapper hardy jaunty karmic lucid maverick natty oneiric precise quantal raring)) + MPC_BUILD_DEP = libmpc-dev, +else + MPC_BUILD_DEP = libmpc-dev (>= 1.0), +endif + +SOURCE_BUILD_DEP := +ifeq (,$(findstring gcc,$(PKGSOURCE))) + SOURCE_BUILD_DEP := gcc-$(BASE_VERSION)-source (>= $(GCC_SOURCE_VERSION)), gcc-$(BASE_VERSION)-source (<< $(NEXT_GCC_SOURCE_VERSION)), +endif + +ifneq (,$(filter $(distrelease),squeeze wheezy lucid precise)) + CHECK_BUILD_DEP := dejagnu [$(check_no_archs)], +else + CHECK_BUILD_DEP := dejagnu [$(check_no_archs)] , +endif + +AUTO_BUILD_DEP := m4, libtool, +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 powerpcspe ppc64 ppc64el m68k riscv64 sh4 sparc64 s390x x32 +ifeq (,$(filter $(distrelease),squeeze wheezy jessie stretch buster lucid precise xenial bionic cosmic disco)) + any_archs := $(filter-out mips, $(any_archs)) +endif +ifeq (,$(filter $(distrelease),squeeze wheezy jessie stretch buster lucid precise xenial bionic cosmic disco)) + any_archs := $(filter-out powerpcspe, $(any_archs)) +endif +ifeq (yes,$(MIPS_R6_ENABLED)) + any_archs += mipsn32el mipsr6 mipsr6el mips64r6 mips64r6el mipsn32r6 mipsn32r6el +endif +ifeq (,$(filter $(DEB_HOST_ARCH),$(any_archs))) +any_archs += $(DEB_HOST_ARCH) +endif + +arch_gnutype_map := $(foreach a,$(any_archs),$(a)=$(shell CC=true dpkg-architecture -f -a$(a) -qDEB_HOST_GNU_TYPE)) +_gnu_type = $(subst $1=,,$(filter $1=%,$(arch_gnutype_map))) +_gnu_suffix = -$(subst _,-,$(call _gnu_type,$1)) + +ifneq (,$(filter $(distrelease),lenny etch squeeze wheezy wheezy dapper hardy jaunty karmic lucid maverick natty oneiric precise quantal raring saucy trusty utopic vivid)) + DEBHELPER_BUILD_DEP = debhelper (>= 9), + TARGET_TOOL_BUILD_DEP = bash, # non-empty line + pf_cross = + pf_ncross = +else + DEBHELPER_BUILD_DEP = debhelper (>= 9.20141010), + TARGET_TOOL_BUILD_DEP = \ + $(foreach a, $(any_archs), \ + g++-$(BASE_VERSION)$(call _gnu_suffix,$(a)) [$(a)] , \ + $(if $(filter $(a), avr),, \ + gobjc-$(BASE_VERSION)$(call _gnu_suffix,$(a)) [$(a)] ,) \ + gfortran-$(BASE_VERSION)$(call _gnu_suffix,$(a)) [$(a)] , \ + $(if $(filter $(a), s390 sh4),, \ + gdc-$(BASE_VERSION)$(call _gnu_suffix,$(a)) [$(a)] ,) \ + $(if $(filter $(a), hppa m68k sh4),, \ + gccgo-$(BASE_VERSION)$(call _gnu_suffix,$(a)) [$(a)] ,) \ + $(if $(filter $(a), m68k),, \ + gnat-$(BASE_VERSION)$(call _gnu_suffix,$(a)) [$(a)] ,) \ + ) + 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 gompnvptx +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=$(subst gcc,$(libgcc_basename),$(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 diff --git a/debian/rules.d/binary-ada.mk b/debian/rules.d/binary-ada.mk new file mode 100644 index 0000000..be765cd --- /dev/null +++ b/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),$(libgcc_basename)$(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),$(libgcc_basename)$(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) diff --git a/debian/rules.d/binary-base.mk b/debian/rules.d/binary-base.mk new file mode 100644 index 0000000..bac6087 --- /dev/null +++ b/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 $@ diff --git a/debian/rules.d/binary-brig.mk b/debian/rules.d/binary-brig.mk new file mode 100644 index 0000000..8278988 --- /dev/null +++ b/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) diff --git a/debian/rules.d/binary-cpp.mk b/debian/rules.d/binary-cpp.mk new file mode 100644 index 0000000..cbeeb26 --- /dev/null +++ b/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) diff --git a/debian/rules.d/binary-cxx.mk b/debian/rules.d/binary-cxx.mk new file mode 100644 index 0000000..aaa3235 --- /dev/null +++ b/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) diff --git a/debian/rules.d/binary-d.mk b/debian/rules.d/binary-d.mk new file mode 100644 index 0000000..fcddfd9 --- /dev/null +++ b/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),$(libgcc_basename)$(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) diff --git a/debian/rules.d/binary-fixincl.mk b/debian/rules.d/binary-fixincl.mk new file mode 100644 index 0000000..08ea877 --- /dev/null +++ b/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) diff --git a/debian/rules.d/binary-fortran.mk b/debian/rules.d/binary-fortran.mk new file mode 100644 index 0000000..8b96653 --- /dev/null +++ b/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),$(libgcc_basename)$(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) + diff --git a/debian/rules.d/binary-gcc.mk b/debian/rules.d/binary-gcc.mk new file mode 100644 index 0000000..5c4638f --- /dev/null +++ b/debian/rules.d/binary-gcc.mk @@ -0,0 +1,363 @@ +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 \ + $(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 +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) diff --git a/debian/rules.d/binary-go.mk b/debian/rules.d/binary-go.mk new file mode 100644 index 0000000..d5aa11a --- /dev/null +++ b/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) + $(if $(with_dbg),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),$(libgcc_basename)$(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) diff --git a/debian/rules.d/binary-hppa64.mk b/debian/rules.d/binary-hppa64.mk new file mode 100644 index 0000000..36f91f5 --- /dev/null +++ b/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 $@ diff --git a/debian/rules.d/binary-libasan.mk b/debian/rules.d/binary-libasan.mk new file mode 100644 index 0000000..89e82ba --- /dev/null +++ b/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),$(libgcc_basename)$(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) diff --git a/debian/rules.d/binary-libatomic.mk b/debian/rules.d/binary-libatomic.mk new file mode 100644 index 0000000..3ab03c0 --- /dev/null +++ b/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) diff --git a/debian/rules.d/binary-libcc1.mk b/debian/rules.d/binary-libcc1.mk new file mode 100644 index 0000000..1dba145 --- /dev/null +++ b/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) diff --git a/debian/rules.d/binary-libgcc.mk b/debian/rules.d/binary-libgcc.mk new file mode 100644 index 0000000..cf7849d --- /dev/null +++ b/debian/rules.d/binary-libgcc.mk @@ -0,0 +1,334 @@ +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 + +p_lgcc = lib$(libgcc_basename)$(GCC_SONAME)$(cross_lib_arch) +p_lgccdbg = lib$(libgcc_basename)$(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; \ + rm -f $(d)/$(3)/libgcc_s.so; \ + ( \ + echo '/* GNU ld script'; \ + echo ' Use a trivial linker script instead of a symlink. */'; \ + echo 'GROUP ( libgcc_s.so.$(GCC_SONAME) )'; \ + ) > $(d)/$(3)/libgcc_s.so; \ + else \ + mv $(4)/libgcc_s.so $(d)/$(3)/libgcc_s.so; \ + fi + ) + $(dh_compat2) dh_movefiles -p$(2) \ + $(3)/{libgcc*,libgcov.a,*.o} \ + $(if $(1),,$(gcc_lib_dir)/include/*.h $(gcc_lib_dir)/include/sanitizer/*.h) # Only move headers for the "main" package + $(if $(1),, for h in libgccjit.h libgccjit++.h; do \ + if [ -f debian/$(2)/$(gcc_lib_dir)/include/$$h ]; then \ + mv debian/$(2)/$(gcc_lib_dir)/include/$$h $(d)/$(gcc_lib_dir)/include/.; \ + fi; done) + + : # 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).epoch + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) +endef + +do_libgcc = $(call __do_libgcc,lib$(1)gcc$(GCC_SONAME),$(1),$(2)) +# ---------------------------------------------------------------------- + +$(binary_stamp)-libgcc: $(install_dependencies) + $(call do_libgcc,,) + +$(binary_stamp)-lib64gcc: $(install_dependencies) + $(call do_libgcc,64,) + +$(binary_stamp)-lib32gcc: $(install_dependencies) + $(call do_libgcc,32,) + +$(binary_stamp)-libn32gcc: $(install_dependencies) + $(call do_libgcc,n32,) + +$(binary_stamp)-libx32gcc: $(install_dependencies) + $(call do_libgcc,x32,) + +$(binary_stamp)-libhfgcc: $(install_dependencies) + $(call do_libgcc,hf) + +$(binary_stamp)-libsfgcc: $(install_dependencies) + $(call do_libgcc,sf) + +$(binary_stamp)-libgcc-dev: $(install_dependencies) + $(call do_gcc_devels,) + +$(binary_stamp)-lib64gcc-dev: $(install_dependencies) + $(call do_gcc_devels,64) + +$(binary_stamp)-lib32gcc-dev: $(install_dependencies) + $(call do_gcc_devels,32) + +$(binary_stamp)-libn32gcc-dev: $(install_dependencies) + $(call do_gcc_devels,n32) + +$(binary_stamp)-libx32gcc-dev: $(install_dependencies) + $(call do_gcc_devels,x32) + +$(binary_stamp)-libhfgcc-dev: $(install_dependencies) + $(call do_gcc_devels,hf) + +$(binary_stamp)-libsfgcc-dev: $(install_dependencies) + $(call do_gcc_devels,sf) + diff --git a/debian/rules.d/binary-libgccjit.mk b/debian/rules.d/binary-libgccjit.mk new file mode 100644 index 0000000..de41f2f --- /dev/null +++ b/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 $@ diff --git a/debian/rules.d/binary-libgomp.mk b/debian/rules.d/binary-libgomp.mk new file mode 100644 index 0000000..6c53718 --- /dev/null +++ b/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),$(libgcc_basename)$(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) diff --git a/debian/rules.d/binary-libhsail.mk b/debian/rules.d/binary-libhsail.mk new file mode 100644 index 0000000..26b8353 --- /dev/null +++ b/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),$(libgcc_basename)$(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) diff --git a/debian/rules.d/binary-libitm.mk b/debian/rules.d/binary-libitm.mk new file mode 100644 index 0000000..3ec7743 --- /dev/null +++ b/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) diff --git a/debian/rules.d/binary-liblsan.mk b/debian/rules.d/binary-liblsan.mk new file mode 100644 index 0000000..e7150bd --- /dev/null +++ b/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),$(libgcc_basename)$(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) diff --git a/debian/rules.d/binary-libmpx.mk b/debian/rules.d/binary-libmpx.mk new file mode 100644 index 0000000..2d4bad1 --- /dev/null +++ b/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) diff --git a/debian/rules.d/binary-libobjc.mk b/debian/rules.d/binary-libobjc.mk new file mode 100644 index 0000000..d93308a --- /dev/null +++ b/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),$(libgcc_basename)$(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) + diff --git a/debian/rules.d/binary-libquadmath.mk b/debian/rules.d/binary-libquadmath.mk new file mode 100644 index 0000000..81ec23e --- /dev/null +++ b/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) diff --git a/debian/rules.d/binary-libssp.mk b/debian/rules.d/binary-libssp.mk new file mode 100644 index 0000000..e2c873a --- /dev/null +++ b/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) diff --git a/debian/rules.d/binary-libstdcxx.mk b/debian/rules.d/binary-libstdcxx.mk new file mode 100644 index 0000000..985c918 --- /dev/null +++ b/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),$(libgcc_basename)$(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),$(libgcc_basename)$(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),$(libgcc_basename)$(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) diff --git a/debian/rules.d/binary-libtsan.mk b/debian/rules.d/binary-libtsan.mk new file mode 100644 index 0000000..908253a --- /dev/null +++ b/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),$(libgcc_basename)$(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) diff --git a/debian/rules.d/binary-libubsan.mk b/debian/rules.d/binary-libubsan.mk new file mode 100644 index 0000000..7a6f880 --- /dev/null +++ b/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),$(libgcc_basename)$(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) diff --git a/debian/rules.d/binary-libvtv.mk b/debian/rules.d/binary-libvtv.mk new file mode 100644 index 0000000..b195f47 --- /dev/null +++ b/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),$(libgcc_basename)$(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) diff --git a/debian/rules.d/binary-neon.mk b/debian/rules.d/binary-neon.mk new file mode 100644 index 0000000..83ff60c --- /dev/null +++ b/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 $@ diff --git a/debian/rules.d/binary-nof.mk b/debian/rules.d/binary-nof.mk new file mode 100644 index 0000000..fa5408a --- /dev/null +++ b/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) diff --git a/debian/rules.d/binary-nvptx.mk b/debian/rules.d/binary-nvptx.mk new file mode 100644 index 0000000..ebce8fe --- /dev/null +++ b/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) diff --git a/debian/rules.d/binary-objc.mk b/debian/rules.d/binary-objc.mk new file mode 100644 index 0000000..b5cd216 --- /dev/null +++ b/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) diff --git a/debian/rules.d/binary-objcxx.mk b/debian/rules.d/binary-objcxx.mk new file mode 100644 index 0000000..4f6d8e1 --- /dev/null +++ b/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) diff --git a/debian/rules.d/binary-snapshot.mk b/debian/rules.d/binary-snapshot.mk new file mode 100644 index 0000000..3b7baab --- /dev/null +++ b/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) diff --git a/debian/rules.d/binary-softfloat.mk b/debian/rules.d/binary-softfloat.mk new file mode 100644 index 0000000..6badfcc --- /dev/null +++ b/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) diff --git a/debian/rules.d/binary-source.mk b/debian/rules.d/binary-source.mk new file mode 100644 index 0000000..f09acc6 --- /dev/null +++ b/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 $@ diff --git a/debian/rules.defs b/debian/rules.defs new file mode 100644 index 0000000..075e288 --- /dev/null +++ b/debian/rules.defs @@ -0,0 +1,2185 @@ +# -*- 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 + 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 + ifneq (,$(filter $(DEB_HOST_ARCH), alpha 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 + + # Don't bother with lto in GCC 8, takes ages to build ... + with_lto_build := + + # FIXME: newer binutils needed? + ifneq (,$(filter $(distrelease),precise trusty xenial)) + 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)) + 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? + +# with a newer GCC present, depend on libgcc-sN instead of libgccN +ifeq ($(with_common_libs),yes) + libgcc_basename = gcc +else + libgcc_basename = gcc-s +endif + +# build -dbg packages (with_dbg is empty when -dbg package are not built) +ifneq (,$(filter $(distrelease),wheezy jessie stretch buster precise trusty 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 + pie_archs += riscv64 +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))) diff --git a/debian/rules.parameters b/debian/rules.parameters new file mode 100644 index 0000000..28c39b2 --- /dev/null +++ b/debian/rules.parameters @@ -0,0 +1,41 @@ +# configuration parameters taken from upstream source files +GCC_VERSION := 8.4.0 +NEXT_GCC_VERSION := 8.4.1 +BASE_VERSION := 8 +SOURCE_VERSION := 8.4.0-5 +DEB_VERSION := 8.4.0-5 +DEB_EVERSION := 1:8.4.0-5 +DEB_GDC_VERSION := 8.4.0-5 +DEB_SOVERSION := 5 +DEB_SOEVERSION := 1:5 +DEB_LIBGCC_SOVERSION := +DEB_LIBGCC_VERSION := 8.4.0-5 +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 diff --git a/debian/rules.patch b/debian/rules.patch new file mode 100644 index 0000000..4839c74 --- /dev/null +++ b/debian/rules.patch @@ -0,0 +1,415 @@ +# -*- 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 = \ + $(if $(with_linaro_branch),gcc-linaro-revert-r270683) \ + $(if $(with_linaro_branch),gcc-linaro) \ + $(if $(with_linaro_branch),gcc-linaro-no-macros) \ + +# git-updates \ + +ifneq ($(GFDL_INVARIANT_FREE),yes) + debian_patches += \ + $(if $(with_linaro_branch),gcc-linaro-doc) \ + rename-info-files \ + gcc-fuse-ld-lld-doc \ + +# git-doc-updates \ +# $(if $(with_linaro_branch),,git-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 + + : # only needed when we have changes, and currently fails with autogen 5.18 + : #cd $(srcdir)/fixincludes && ./genfixes + + sync + echo -n $(autoconf_dirs) | xargs -d ' ' -L 1 -P $(USE_CPUS) -I{} \ + sh -c 'echo "Running autoconf$(autoconf_version) in {}..." ; \ + cd $(CURDIR)/{} && rm -f configure && \ + AUTOM4TE=/usr/bin/autom4te$(autoconf_version) autoconf$(autoconf_version)' + + for i in $(debian_patches) $(hardening_patches); do \ + echo -e "\n$$i:" >> pxxx; \ + sed -n 's/^# *DP: */ /p' $(patchdir)/$$i.diff >> pxxx; \ + done +# -$(srcdir)/move-if-change pxxx $@ + + : # generate the distro-defaults.h header + rm -f $(srcdir)/gcc/distro-defaults.h + echo '/* distro specific configuration injected by the distro build. */' \ + >> $(srcdir)/gcc/distro-defaults.h +ifeq ($(with_async_unwind),yes) + echo '#define DIST_DEFAULT_ASYNC_UNWIND 1' \ + >> $(srcdir)/gcc/distro-defaults.h +endif +ifeq ($(with_ssp)-$(with_ssp_default),yes-yes) + echo '#define DIST_DEFAULT_SSP 1' \ + >> $(srcdir)/gcc/distro-defaults.h + ifeq (,$(filter $(distrelease),dapper hardy lucid maverick natty oneiric precise quantal raring saucy trusty)) + echo '#define DIST_DEFAULT_SSP_STRONG 1' \ + >> $(srcdir)/gcc/distro-defaults.h + endif + echo '#define DIST_DEFAULT_FORMAT_SECURITY 1' \ + >> $(srcdir)/gcc/distro-defaults.h +endif +ifneq (,$(filter $(derivative),Ubuntu)) + ifneq (,$(findstring gcc-9, $(PKGSOURCE))) +# FIXME: this is directly patched +# echo '#define DIST_DEFAULT_FORTIFY_SOURCE 1' \ +# >> $(srcdir)/gcc/distro-defaults.h + endif + ifeq ($(with_stack_clash),yes) + echo '#define DIST_DEFAULT_STACK_CLASH 1' \ + >> $(srcdir)/gcc/distro-defaults.h + endif + ifeq ($(with_cf_protection),yes) + echo '#define DIST_DEFAULT_CF_PROTECTION 1' \ + >> $(srcdir)/gcc/distro-defaults.h + endif +else ifneq (,$(filter $(derivative),Debian)) + ifneq (,$(findstring gcc-9, $(PKGSOURCE))) + endif +endif + + mv pxxx $@ + +unpatch: + QUILT_PATCHES=$(patchdir) \ + quilt --quiltrc /dev/null pop -a -R || test $$? = 2 + rm -rf .pc + +update-patches: $(series_stamp) + export QUILT_PATCHES=$(patchdir); \ + export QUILT_REFRESH_ARGS="--no-timestamps --no-index -pab"; \ + export QUILT_DIFF_ARGS="--no-timestamps --no-index -pab"; \ + while quilt push; do quilt refresh; done + +patch: $(patch_stamp) +.PHONY: patch series quilt autotools diff --git a/debian/rules.sonames b/debian/rules.sonames new file mode 100644 index 0000000..021a7b0 --- /dev/null +++ b/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) diff --git a/debian/rules.source b/debian/rules.source new file mode 100644 index 0000000..a11b595 --- /dev/null +++ b/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) + diff --git a/debian/rules.unpack b/debian/rules.unpack new file mode 100644 index 0000000..a11fec9 --- /dev/null +++ b/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 diff --git a/debian/rules2 b/debian/rules2 new file mode 100644 index 0000000..7bb4ef2 --- /dev/null +++ b/debian/rules2 @@ -0,0 +1,2622 @@ +#! /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 +e; \ + $(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)); \ + echo $$? > ../status + + 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 + + + : # 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 = lib$(libgcc_basename)$(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 + rm -rf $(d)/$(PF)/$(libdir)/gcc/hppa64-linux-gnu/$(versiondir)/include-fixed +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 + rm -rf $(d)/$(gcc_lib_dir)/include-fixed + +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 + + mv $(d)/$(gcc_lib_dir)/include-fixed/{limits,syslimits}.h \ + $(d)/$(gcc_lib_dir)/include/. + rm -rf $(d)/$(gcc_lib_dir)/include-fixed + +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 + + mv $(d_hppa64)/$(PF)/lib/gcc/hppa64-linux-gnu/$(BASE_VERSION)/include-fixed/{limits,syslimits}.h \ + $(d_hppa64)/$(PF)/lib/gcc/hppa64-linux-gnu/$(BASE_VERSION)/include/. + rm -rf $(d_hppa64)/$(PF)/lib/gcc/hppa64-linux-gnu/$(BASE_VERSION)/include-fixed + +ifeq ($(versioned_packages),yes) + for i in cpp gcc-ar gcc-nm gcc-ranlib; do \ + mv -f $(d_hppa64)/$(PF)/bin/hppa64-linux-gnu-$$i \ + $(d_hppa64)/$(PF)/bin/hppa64-linux-gnu-$$i$(pkg_ver); \ + done +endif + mkdir -p $(d_hppa64)/$(PF)/share/man/man1 + for i in gcc-ar gcc-nm gcc-ranlib; do \ + ln -sf $$i$(pkg_ver).1.gz \ + $(d_hppa64)/$(PF)/share/man/man1/hppa64-linux-gnu-$$i$(pkg_ver).1.gz; \ + done +ifneq ($(GFDL_INVARIANT_FREE),yes) + for i in cpp gcc; do \ + ln -sf $$i$(pkg_ver).1.gz \ + $(d_hppa64)/$(PF)/share/man/man1/hppa64-linux-gnu-$$i$(pkg_ver).1.gz; \ + done +endif + + : # remove '*.la' and '*.lai' files, not shipped in any package. + find $(d_hppa64) -name '*.la' -o -name '*.lai' | xargs -r rm -f + + : # remove rpath settings from binaries and shared libs + for i in $$(chrpath -k $(d_hppa64)/$(PF)/bin/* $(d_hppa64)/$(PFL)/lib*/lib*.so.* \ + $(d_hppa64)/$(gcc_lib_dir)/plugin/* \ + $(if $(filter $(with_multiarch_lib),yes), \ + $(d_hppa64)/$(PF)/lib/$(DEB_TARGET_MULTIARCH)/lib*.so.*) \ + 2>/dev/null | awk -F: '/R(UN)?PATH=/ {print $$1}'); \ + do \ + [ -h $$i ] && continue; \ + chrpath --delete $$i; \ + echo "removed RPATH/RUNPATH: $$i"; \ + done + + touch $(install_hppa64_stamp) + +$(install_neon_stamp): $(build_neon_stamp) + dh_testdir + dh_testroot + rm -rf $(d_neon) + mkdir -p $(d_neon)/$(PF) + + $(SET_PATH) \ + $(MAKE) -C $(builddir_neon) \ + $(call pass_vars, CC $(flags_to_pass)) \ + DESTDIR=$(CURDIR)/$(d_neon) \ + install + touch $(install_neon_stamp) + +# ---------------------------------------------------------------------- +# Build architecture-dependent files here. +debian/arch_binaries.all: $(foreach i,$(arch_binaries),$(binary_stamp)-$(i)) + cd debian; xargs -r du -s < arch_binaries | sort -nr | awk '{print $$2}' \ + > arch_binaries.tmp + mv debian/arch_binaries.tmp debian/arch_binaries + sed -i 's/ /\n/g' debian/arch_binaries.epoch || touch debian/arch_binaries.epoch + cat debian/arch_binaries debian/arch_binaries.epoch > debian/arch_binaries.all + +# see #879054 for the "test ! -s" tests, needed for the rtlibs stage +binary-arch: debian/arch_binaries.all + test ! -s debian/arch_binaries.all || \ + dh_compress $(foreach p,$(shell echo `cat debian/arch_binaries.all`),-p$(p)) \ + -X.log.xz -X.sum.xz -X.c -X.txt -X.tag -X.map -XREADME.Bugs +ifeq ($(i586_symlinks),yes) + cd debian; \ + test ! -s arch_binaries || \ + for x in $$(find `cat arch_binaries` -type l -name 'i686-*'); do \ + link=$$(echo $$x | sed 's/i686-/i586-/'); \ + tgt=$$(basename $$x); \ + echo "Adding symlink: $$link -> $$tgt"; \ + rm -f $$link; cp -a $$x $$link; \ + done +endif + test ! -s debian/arch_binaries.all || \ + dh_fixperms $(foreach p,$(shell echo `cat debian/arch_binaries.all`),-p$(p)) + test ! -s debian/arch_binaries || \ + dh_gencontrol $(foreach p,$(shell echo `cat debian/arch_binaries`),-p$(p)) \ + -- -v$(DEB_VERSION) $(common_substvars) + @set -e; \ + pkgs='$(strip $(foreach p,$(shell echo `cat debian/arch_binaries.epoch`),-p$(p)))'; \ + if [ -n "$$pkgs" ]; then \ + echo dh_gencontrol $$pkgs -- -v$(DEB_EVERSION) $(common_substvars); \ + dh_gencontrol $$pkgs -- -v$(DEB_EVERSION) $(common_substvars); \ + fi + test ! -s debian/arch_binaries.all || \ + dh_installdeb $(foreach p,$(shell echo `cat debian/arch_binaries.all`),-p$(p)) + test ! -s debian/arch_binaries.all || \ + dh_md5sums $(foreach p,$(shell echo `cat debian/arch_binaries.all`),-p$(p)) + test ! -s debian/arch_binaries.all || \ + dh_builddeb $(foreach p,$(shell echo `cat debian/arch_binaries.all`),-p$(p)) +ifeq ($(with_check),yes) + @echo Done +# : # Send Email about sucessfull build. +# # cat raw-test-summary | sh; echo "Sent mail to $(S_EMAIL)" +endif + + : # remove empty directories, when all components are in place + -find $(d) -type d -empty -delete + + @echo "Listing installed files not included in any package:" + -find $(d) ! -type d + + @echo XXXXX `date -R` + +# ---------------------------------------------------------------------- +# Build architecture-independent files here. +debian/indep_binaries.all: $(foreach i,$(indep_binaries),$(binary_stamp)-$(i)) + cd debian; xargs -r du -s < indep_binaries | sort -nr | awk '{print $$2}' \ + > indep_binaries.tmp + mv debian/indep_binaries.tmp debian/indep_binaries + sed -i 's/ /\n/g' debian/indep_binaries.epoch || touch debian/indep_binaries.epoch + cat debian/indep_binaries debian/indep_binaries.epoch > debian/indep_binaries.all + +binary-indep: debian/indep_binaries.all + dh_compress $(foreach p,$(shell echo `cat debian/indep_binaries.all`),-p$(p)) \ + -X.log.xz -X.sum.xz -X.c -X.txt -X.tag -X.map -XREADME.Bugs + dh_fixperms $(foreach p,$(shell echo `cat debian/indep_binaries.all`),-p$(p)) + : # the export should be harmless for the binary indep packages of a native build + export DEB_HOST_ARCH=$(TARGET); \ + dh_gencontrol $(foreach p,$(shell echo `cat debian/indep_binaries`),-p$(p)) \ + -- -v$(DEB_VERSION) $(common_substvars) + @set -e; \ + export DEB_HOST_ARCH=$(TARGET); \ + pkgs='$(strip $(foreach p,$(shell echo `cat debian/indep_binaries.epoch`),-p$(p)))'; \ + if [ -n "$$pkgs" ]; then \ + echo dh_gencontrol $$pkgs -- -v$(DEB_EVERSION) $(common_substvars); \ + dh_gencontrol $$pkgs -- -v$(DEB_EVERSION) $(common_substvars); \ + fi + +ifneq (,$(filter $(DEB_TARGET_ARCH), mips mipsel mips64 mips64el mipsn32 mipsn32el)) + for p in `cat debian/indep_binaries debian/indep_binaries.epoch`; do \ + p=$${p#-p*}; \ + case "$$p" in \ + lib64*) echo mangle $$p; sed -i -r '/^(Dep|Rec|Sug)/s/libn?32[^,]+(, *|$$)//g;/^(Dep|Rec|Sug)/s/$(p_lgcc)/$(p_l64gcc)/;/^(Dep|Rec|Sug)/s/ *, *$$//' debian/$$p/DEBIAN/control;; \ + libn32*) echo mangle $$p; sed -i -r '/^(Dep|Rec|Sug)/s/lib64[^,]+(, *|$$)//g;/^(Dep|Rec|Sug)/s/$(p_lgcc)/$(p_ln32gcc)/;/^(Dep|Rec|Sug)/s/ *, *$$//' debian/$$p/DEBIAN/control;; \ + esac; \ + done +endif + + dh_installdeb $(foreach p,$(shell echo `cat debian/indep_binaries.all`),-p$(p)) + dh_md5sums $(foreach p,$(shell echo `cat debian/indep_binaries.all`),-p$(p)) + dh_builddeb $(foreach p,$(shell echo `cat debian/indep_binaries.all`),-p$(p)) + + @echo XXXXX `date -R` + +source diff: + @echo >&2 'source and diff are obsolete - use dpkg-source -b'; false + +binary: binary-indep binary-arch +.PHONY: build clean binary-indep binary-arch binary +.PRECIOUS: $(stampdir)/%-stamp debian/indep_binaries.all debian/arch_binaries.all diff --git a/debian/runcheck.sh b/debian/runcheck.sh new file mode 100644 index 0000000..c7d6cfb --- /dev/null +++ b/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 diff --git a/debian/source/format b/debian/source/format new file mode 100644 index 0000000..d3827e7 --- /dev/null +++ b/debian/source/format @@ -0,0 +1 @@ +1.0 diff --git a/debian/source/lintian-overrides b/debian/source/lintian-overrides new file mode 100644 index 0000000..ade6144 --- /dev/null +++ b/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 diff --git a/debian/tests/control b/debian/tests/control new file mode 100644 index 0000000..5a76338 --- /dev/null +++ b/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 diff --git a/debian/tests/libc-link b/debian/tests/libc-link new file mode 100644 index 0000000..2e01d9e --- /dev/null +++ b/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" diff --git a/debian/tests/libgfortran-link b/debian/tests/libgfortran-link new file mode 100644 index 0000000..69d9264 --- /dev/null +++ b/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" diff --git a/debian/tests/libgnat-link b/debian/tests/libgnat-link new file mode 100644 index 0000000..ecc81ef --- /dev/null +++ b/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" diff --git a/debian/tests/libgo-link b/debian/tests/libgo-link new file mode 100644 index 0000000..88d57c5 --- /dev/null +++ b/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" diff --git a/debian/tests/libgomp-link b/debian/tests/libgomp-link new file mode 100644 index 0000000..0c191fa --- /dev/null +++ b/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" diff --git a/debian/tests/libstdcxx-link b/debian/tests/libstdcxx-link new file mode 100644 index 0000000..123fa09 --- /dev/null +++ b/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" diff --git a/debian/tests/runtime-libs b/debian/tests/runtime-libs new file mode 100644 index 0000000..e4e9fc6 --- /dev/null +++ b/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" diff --git a/debian/tests/shlib-build b/debian/tests/shlib-build new file mode 100644 index 0000000..7ab4954 --- /dev/null +++ b/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" diff --git a/debian/watch b/debian/watch new file mode 100644 index 0000000..feadb32 --- /dev/null +++ b/debian/watch @@ -0,0 +1,3 @@ +version=2 +ftp://gcc.gnu.org/pub/gcc/releases/gcc-(8\.[\d\.]*)/ \ + gcc-([\d\.]+)\.tar\.xz debian uupdate